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);
/** * 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);