示例#1
0
 public function __construct($id_or_array = NULL)
 {
     global $g_itemperson_fields;
     $this->fields =& $g_itemperson_fields;
     /**
      *  this->_type holds a string for the current type
      *  which is used for accessing db-tables and
      *  form-parameter-passing (therefore it has to be lowercase)
      */
     $this->_type = strtolower(get_class($this));
     /**
      * add default fields if not overwritten by derived class
      */
     if (!$this->fields) {
         global $g_itemperson_fields;
         $this->fields =& $g_itemperson_fields;
     }
     /**
      * if array is passed, create a new empty object with default-values
      */
     parent::__construct();
     if (is_array($id_or_array)) {
         parent::__construct();
         foreach ($id_or_array as $key => $value) {
             is_null($this->{$key});
             ### cause E_NOTICE on undefined properties
             $this->{$key} = $value;
         }
     } else {
         if (is_int($id_or_array)) {
             parent::__construct($id_or_array);
         } else {
             trigger_error("can't construct zero-id item", E_USER_WARNING);
             parent::__construct();
             return NULL;
         }
     }
 }
$feedback = ["score" => $_POST["score"], "comment" => $_POST["comment"]];
if (ValidationOperator::hasEmtpyFields($feedback)) {
    // Create a session for all inputs so that they can be recovered after the page returns
    SessionOperator::setFormInput($feedback);
    // Redirect back
    HelperOperator::redirectTo($redirectUrl);
}
$auctionId = $_POST["auctionId"];
$creatorId = SessionOperator::getUser()->getUserId();
//get the id of receiver
$receiverUsername = $_POST["receiverUsername"];
/* @var DbUser $receiver */
$receiver = DbUser::withConditions("WHERE username = '******'")->first();
//check receiver exists AND there is no existing feedback (we only allow one)
if ($receiver == null or DbFeedback::withConditions("WHERE auctionId = " . $auctionId . " AND creatorId = " . $creatorId . " AND receiverId = " . $receiver->getId())->exists()) {
    HelperOperator::redirectTo($redirectUrl);
}
// Create Feedback
$now = new DateTime("now", new DateTimeZone(TIMEZONE));
$feedback = new DbFeedback(array("auctionId" => $_POST["auctionId"], "creatorId" => SessionOperator::getUser()->getUserId(), "receiverId" => $receiver->getId(), "score" => $_POST["score"], "comment" => $_POST["comment"], "time" => $now->format('Y-m-d H:i:s')));
$feedback->create();
// Notify receiver
$auction = DbAuction::find($auctionId);
$item = DbItem::find($auction->getField("itemId"));
$comment = "You received a feedback from \"" . SessionOperator::getUser()->getUserName() . "\" in your participation in \"";
$comment .= $item->getField("itemName") . " - " . $item->getField("itemBrand") . "\".";
QueryOperator::addNotification($receiver->getId(), $comment, QueryOperator::NOTIFICATION_FEEDBACK_RECEIVED);
// Set feedback session
SessionOperator::setNotification(SessionOperator::FEEDBACK_SENT);
// Return to page
HelperOperator::redirectTo($redirectUrl);
示例#3
0
 /**
  * create empty project-item or querry database
  */
 public function __construct($id_or_array = NULL)
 {
     /**
      *  this->_type holds a string for the current type
      *  which is used for accessing db-tables and
      *  form-parameter-passing (therefore it has to be lowercase)
      */
     $this->_type = strtolower(get_class($this));
     /**
      * add default fields if not overwritten by derived class
      */
     if (!$this->fields) {
         global $g_item_fields;
         $this->fields =& $g_item_fields;
     }
     /**
      * if array is passed, create a new empty object with default-values
      */
     if (is_array($id_or_array)) {
         parent::__construct();
         foreach ($id_or_array as $key => $value) {
             is_null($this->{$key});
             ### cause E_NOTICE on undefined properties
             $this->_values_org[$key] = $this->{$key} = $value;
         }
     } else {
         if (is_int($id_or_array) || (is_string($id_or_array) and $id_or_array !== "0")) {
             parent::__construct();
             # call constructor to initialize members from field-array
             $id = intval($id_or_array);
             # construction-param was an id
             if (!$id) {
                 return;
             }
             global $g_item_fields;
             $dbh = new DB_Mysql();
             $str_download_fields = "";
             $str_delimiter = '';
             foreach ($g_item_fields as $f) {
                 $str_download_fields .= $str_delimiter . $f->name;
                 $str_delimiter = ',';
             }
             $prefix = confGet('DB_TABLE_PREFIX');
             $query = "SELECT {$str_download_fields} from {$prefix}item WHERE id = {$id}";
             $data = $dbh->prepare($query)->execute()->fetch_assoc();
             if ($data) {
                 foreach ($data as $attr => $value) {
                     is_null($this->{$attr});
                     # cause E_NOTICE if member not defined
                     $this->_values_org[$attr] = $this->{$attr} = $value;
                 }
             } else {
                 /**
                  * this might happen very often (like when searching for id)
                  */
                 #trigger_error("item id='$id' not found in table", E_USER_WARNING);
                 unset($this);
                 #@@@ not sure if abort called construction like this works
                 return NULL;
             }
             #--- now find the other fields in the appropriate table ---
             if ($this->_type && $this->_type != 'dbprojectitem') {
                 $dbh = new DB_Mysql();
                 $str_download_fields = "";
                 $str_delimiter = '';
                 foreach ($this->fields as $f) {
                     #--- ignore project item fields ---
                     if (!isset($g_item_fields[$f->name])) {
                         $str_download_fields .= $str_delimiter . $f->name;
                         $str_delimiter = ',';
                     }
                 }
                 $prefix = confGet('DB_TABLE_PREFIX');
                 $query = "SELECT {$str_download_fields} from {$prefix}{$this->_type} WHERE id = {$id}";
                 $data = $dbh->prepare($query)->execute()->fetch_assoc();
                 if ($data) {
                     foreach ($data as $attr => $value) {
                         is_null($this->{$attr});
                         # cause E_NOTICE if member not defined
                         $this->_values_org[$attr] = $this->{$attr} = $value;
                     }
                 } else {
                     trigger_error("item #{$id} not found in db-table '{$this->_type}'", E_USER_WARNING);
                     return NULL;
                 }
             }
         } else {
             /**
              * this error might occure frequently
              */
             #trigger_error("can't construct zero-id item",E_USER_WARNING);
             parent::__construct();
             return NULL;
         }
     }
 }
/**
 * @param $auction DbAuction
 * @return mixed
 */
function getSellerId($auction)
{
    $itemId = $auction->getField("itemId");
    $item = DbItem::find($itemId);
    return $item->getField("userId");
}
/**
 * @param $auction DbAuction
 * @param $userIds array
 * @return mixed
 */
function listUserIdsWithoutAuctionOwner($auction, $userIds)
{
    $item = DbItem::find($auction->getField("itemId"));
    $ownerId = DbUser::find($item->getField("userId"))->getId();
    $key = array_search($ownerId, $userIds);
    unset($userIds[$key]);
    return $userIds;
}
    $profileImage = "/images/profile_images/" . $profileImage;
}
for ($i = 0; $i < $numUsers; $i++) {
    $user = new DbUser(array("username" => $faker->userName . $faker->numberBetween(0, 100), "email" => $faker->email, "firstName" => $faker->firstName, "lastName" => $faker->lastName, "address" => $faker->address, "postcode" => $faker->postcode, "city" => $faker->city, "countryId" => $faker->randomElement(array(229, 14, 33)), "password" => password_hash("1111111111", PASSWORD_BCRYPT), "verified" => 1, "image" => $faker->randomElement($profileImages)));
    $user->create();
    $numItemsForUser = $faker->numberBetween(0, $maxItemsPerUser - 1);
    for ($z = 0; $z < $numItemsForUser; $z++) {
        $catName = $faker->randomElement(array_keys($catsAndItemNames));
        $itemCatId = array_search($catName, array_keys($catsAndItemNames)) + 1;
        /*if($faker->boolean(1)){
        
                    $itemName = $faker->randomElement($catsAndItemNames[$catName]);
                }else{*/
        $itemName = $faker->randomElement($itemData)["Name"];
        //}
        $item = new DbItem(array("userId" => $user->getId(), "itemName" => $itemName, "itemBrand" => $faker->randomElement($itemData)["Brand Name"], "categoryId" => $itemCatId, "conditionId" => $faker->numberBetween(1, 4), "itemDescription" => $faker->sentences(3, true), "image" => $faker->randomElement($itemImages)));
        $item->create();
        $numAuctionForItem = $faker->numberBetween(0, $maxAuctionsPerItem - 1);
        for ($x = 0; $x < $numAuctionForItem; $x++) {
            $startPrice = 0.5 * $faker->numberBetween(1, 200);
            if ($faker->boolean($chanceOfGettingTrue = 80)) {
                $reservePrice = $startPrice + 0.5 * $faker->numberBetween(1, 200);
            } else {
                $reservePrice = 0;
            }
            $startTime = $faker->dateTimeBetween('-2 weeks', '+2 months');
            $endTime = new DateTime($startTime->format('Y-m-d H:i:s'));
            $endTime->add(date_interval_create_from_date_string("7 days"));
            //$endTime = $faker->dateTimeBetween('+1 day', '+15 days');
            if ($faker->boolean(20)) {
                $quantity = $faker->numberBetween(1, 10);