/** * Creates a new sponsor. * * @param integer $contestID * @param integer $userID * @param integer $groupID * @param string $state * @return ContestSponsorEditor */ public static function create($contestID, $userID, $groupID, $state) { // check primary keys $existing = self::find($contestID, $userID, $groupID); if ($existing) { $update = false; if ($existing->state == 'invited' && $state == 'applied' || $existing->state == 'applied' && $state == 'invited') { $state = 'accepted'; $update = true; } else { if ($state != $existing->state) { $update = true; } } if ($update) { $existing->update($contestID, $userID, $groupID, $state); } return $existing; } $sql = "INSERT INTO\twcf" . WCF_N . "_contest_sponsor\n\t\t\t\t\t(contestID, userID, groupID, state, time)\n\t\t\tVALUES\t\t(" . intval($contestID) . ", " . intval($userID) . ", " . intval($groupID) . ", '" . escapeString($state) . "', " . TIME_NOW . ")"; WCF::getDB()->sendQuery($sql); // get new id $sponsorID = WCF::getDB()->getInsertID("wcf" . WCF_N . "_contest_sponsor", 'sponsorID'); // update entry $sql = "UPDATE\twcf" . WCF_N . "_contest\n\t\t\tSET\tsponsors = sponsors + 1\n\t\t\tWHERE\tcontestID = " . intval($contestID); WCF::getDB()->sendQuery($sql); // sent event require_once WCF_DIR . 'lib/data/contest/event/ContestEventEditor.class.php'; require_once WCF_DIR . 'lib/data/contest/owner/ContestOwner.class.php'; ContestEventEditor::create($contestID, $userID, $groupID, __CLASS__, array('state' => $state, 'sponsorID' => $sponsorID, 'owner' => ContestOwner::get($userID, $groupID)->getName())); return new ContestSponsorEditor($sponsorID); }
/** * Updates this participant. * * @param integer $contestID * @param integer $userID * @param integer $groupID * @param string $state */ public function update($contestID, $userID, $groupID, $state) { $sql = "UPDATE\twcf" . WCF_N . "_contest_participant\n\t\t\tSET\tcontestID = " . intval($contestID) . ", \n\t\t\t\tuserID = " . intval($userID) . ", \n\t\t\t\tgroupID = " . intval($groupID) . ", \n\t\t\t\tstate = '" . escapeString($state) . "'\n\t\t\tWHERE\tparticipantID = " . intval($this->participantID); WCF::getDB()->sendQuery($sql); // send event require_once WCF_DIR . 'lib/data/contest/owner/ContestOwner.class.php'; require_once WCF_DIR . 'lib/data/contest/event/ContestEventEditor.class.php'; ContestEventEditor::create($contestID, $userID, $groupID, __CLASS__, array('state' => $state, 'participantID' => $this->participantID, 'owner' => ContestOwner::get($userID, $groupID)->getName())); }
/** * Creates a new entry comment. * * @param integer $solutionID * @param string $comment * @param integer $userID * @param string $username * @param integer $time * @return ContestSolutionCommentEditor */ public static function create($solutionID, $comment, $userID, $username, $time = TIME_NOW) { $sql = "INSERT INTO\twcf" . WCF_N . "_contest_solution_comment\n\t\t\t\t\t(solutionID, userID, username, comment, time)\n\t\t\tVALUES\t\t(" . intval($solutionID) . ", " . intval($userID) . ", '" . escapeString($username) . "', '" . escapeString($comment) . "', " . $time . ")"; WCF::getDB()->sendQuery($sql); // get id $commentID = WCF::getDB()->getInsertID("wcf" . WCF_N . "_contest_solution_comment", 'commentID'); // update entry $sql = "UPDATE\twcf" . WCF_N . "_contest_solution\n\t\t\tSET\tcomments = comments + 1\n\t\t\tWHERE\tsolutionID = " . intval($solutionID); WCF::getDB()->sendQuery($sql); // sent event require_once WCF_DIR . 'lib/data/contest/event/ContestEventEditor.class.php'; require_once WCF_DIR . 'lib/data/contest/owner/ContestOwner.class.php'; ContestEventEditor::create($solutionID, $userID, $groupID = 0, __CLASS__, array('commentID' => $commentID, 'owner' => ContestOwner::get($userID, $groupID)->getName())); return new ContestSolutionCommentEditor($commentID); }
/** * Creates a new entry rating. * * @param integer $solutionID * @param integer $optionID * @param integer $score * @param integer $userID * @param integer $time * @return ContestSolutionRatingEditor */ public static function create($solutionID, $optionID, $score, $userID, $time = TIME_NOW) { $sql = "INSERT INTO\twcf" . WCF_N . "_contest_solution_rating\n\t\t\t\t\t(solutionID, userID, optionID, score, time)\n\t\t\tVALUES\t\t(" . intval($solutionID) . ", " . intval($userID) . ", " . intval($optionID) . ", " . intval($score) . ", " . $time . ")"; WCF::getDB()->sendQuery($sql); // get id $ratingID = WCF::getDB()->getInsertID("wcf" . WCF_N . "_contest_solution_rating", 'ratingID'); // update entry $sql = "UPDATE\twcf" . WCF_N . "_contest_solution\n\t\t\tSET\tratings = ratings + 1\n\t\t\tWHERE\tsolutionID = " . intval($solutionID); WCF::getDB()->sendQuery($sql); // sent event require_once WCF_DIR . 'lib/data/contest/event/ContestEventEditor.class.php'; require_once WCF_DIR . 'lib/data/contest/owner/ContestOwner.class.php'; ContestEventEditor::create($solutionID, $userID, $groupID = 0, __CLASS__, array('ratingID' => $ratingID, 'owner' => ContestOwner::get($userID, $groupID)->getName())); return new ContestSolutionRatingEditor($ratingID); }
/** * Creates a new entry jurytalk. * * @param integer $contestID * @param string $message * @param integer $userID * @param string $username * @param integer $time * @return ContestJurytalkEditor */ public static function create($contestID, $message, $userID, $username, $time = TIME_NOW) { $sql = "INSERT INTO\twcf" . WCF_N . "_contest_jurytalk\n\t\t\t\t\t(contestID, userID, username, message, time)\n\t\t\tVALUES\t\t(" . intval($contestID) . ", " . intval($userID) . ", '" . escapeString($username) . "', '" . escapeString($message) . "', " . $time . ")"; WCF::getDB()->sendQuery($sql); // get id $jurytalkID = WCF::getDB()->getInsertID("wcf" . WCF_N . "_contest_jurytalk", 'jurytalkID'); // update entry $sql = "UPDATE\twcf" . WCF_N . "_contest\n\t\t\tSET\tjurytalks = jurytalks + 1\n\t\t\tWHERE\tcontestID = " . intval($contestID); WCF::getDB()->sendQuery($sql); // sent event require_once WCF_DIR . 'lib/data/contest/event/ContestEventEditor.class.php'; require_once WCF_DIR . 'lib/data/contest/owner/ContestOwner.class.php'; ContestEventEditor::create($contestID, $userID, $groupID = 0, __CLASS__, array('jurytalkID' => $jurytalkID, 'owner' => ContestOwner::get($userID, $groupID = 0)->getName())); return new ContestJurytalkEditor($jurytalkID); }
/** * Updates this price and set the solution winner. * * @param integer $solutionID */ public function pick($solutionID, $position) { $sql = "UPDATE\twcf" . WCF_N . "_contest_price\n\t\t\tSET\tsolutionID = " . intval($solutionID) . ",\n\t\t\t\tposition = " . intval($position) . "\n\t\t\tWHERE\tpriceID = " . intval($this->priceID); WCF::getDB()->sendQuery($sql); // update pick times require_once WCF_DIR . 'lib/data/contest/solution/ContestSolutionEditor.class.php'; $solution = new ContestSolutionEditor($solutionID); $solution->updatePickTime(TIME_NOW); // update price expirations, next winner may only have 24 hours from now on require_once WCF_DIR . 'lib/data/contest/ContestEditor.class.php'; $contest = new ContestEditor($this->contestID); $contest->updatePickTimes(); // TODO: send secretMessage to winner if ($this->secretMessage) { // use notification api if (false) { require_once WCF_DIR . 'lib/data/contest/event/ContestEventEditor.class.php'; $owner = $this->getOwner(); ContestEventEditor::create($this->contestID, $owner->userID, $owner->groupID, 'ContestPriceSecretMessage', array('priceID' => $this->priceID, 'owner' => $owner->getName())); } // TODO: remove after notification api is implemented // TODO: missing translation if ($solution->getOwner()->userID) { $mail = new Mail($solution->getOwner()->email, 'easy-coding Gewinnspiel - du hast gewonnen', 'Hallo ' . $solution->getOwner()->getName() . ', du hast soeben einen Preis beim easy-coding Gewinnspiel gewählt. Der Sponsor hat dir dazu einen Hinweis mit folgendem Inhalt hinterlassen: ' . $this->secretMessage . ' Vielen Dank für die Teilnahme beim Gewinnspiel, Torben Brodt'); $mail->addBCC(MAIL_ADMIN_ADDRESS); $mail->send(); } } // TODO: pricepick: send event to sponsor if (false) { require_once WCF_DIR . 'lib/data/contest/event/ContestEventEditor.class.php'; $owner = $this->getOwner(); ContestEventEditor::create($this->contestID, $owner->userID, $owner->groupID, 'ContestPricePick', array('priceID' => $this->priceID, 'owner' => $owner->getName())); } }
public function testReflectionAPI() { require_once WCF_DIR . 'lib/data/contest/event/ContestEventEditor.class.php'; $this->deleteArray[] = $event = ContestEventEditor::create($contestID = 0, $userID = 0, $groupID = 0, $eventName = __METHOD__ . '.eventName'); $this->callAllMethodsWithoutRequiredParameters($event); }
/** * updates state * * @param $state string */ public function updateState($state) { // update data $sql = "UPDATE\twcf" . WCF_N . "_contest\n\t\t\tSET\tstate = '" . escapeString($state) . "'\n\t\t\tWHERE\tcontestID = " . intval($this->contestID); WCF::getDB()->sendQuery($sql); // if state is changed to closed, then update timestamps, when winners have to pick prices if ($state == 'closed') { // winners cannot choose prices on their own, so give prices now if ($this->enablePricechoice) { $nextSolution = $this->updatePickTimes(); } else { $this->updatePricechoices(); // notify all participants that contest is finished if (false) { require_once WCF_DIR . 'lib/data/contest/event/ContestEventEditor.class.php'; $owner = $this->getOwner(); ContestEventEditor::create($contestID, $owner->userID, $owner->groupID, 'ContestState', array('priceID' => $priceID, 'owner' => $owner->getName())); } } } }
/** * Sends notification */ public function sendPickNotification() { // use notification api if (false) { require_once WCF_DIR . 'lib/data/contest/event/ContestEventEditor.class.php'; $owner = $this->getOwner(); ContestEventEditor::create($contestID, $owner->userID, $owner->groupID, 'ContestPriceExpire', array('priceID' => $priceID, 'owner' => $owner->getName())); } // use mail if participant is single user // TODO: remove after notification api is implemented // TODO: missing translation if ($this->getOwner()->userID) { require_once WCF_DIR . 'lib/data/mail/Mail.class.php'; $mail = new Mail($this->getOwner()->email, 'easy-coding Gewinnspiel - du hast gewonnen', 'Hallo ' . $this->getOwner()->getName() . ', du gehörst zu den glücklichen Gewinnern beim easy-coding Gewinnspiel. Bitte suche dir innerhalb von 24h auf folgender Seite einen Preis aus: ' . PAGE_URL . '/index.php?page=ContestPrice&contestID=' . $this->contestID . ' Vielen Dank für die Teilnahme beim Gewinnspiel, Torben Brodt'); $mail->addBCC(MAIL_ADMIN_ADDRESS); $mail->send(); } }