/** * Creates a new contest entry. * * @param integer $userID * @param integer $groupID * @param string $subject * @param string $message * @param array $options * @param integer $classIDArray * @param integer $participants * @param integer $jurys * @param integer $prices * @param integer $sponsors * @param MessageAttachmentListEditor $attachmentList * @return ContestEditor */ public static function create($userID, $groupID, $subject, $message, $options = array(), $state = 'private', $classIDArray = array(), $participants = array(), $jurys = array(), $prices = array(), $sponsors = array(), $attachmentList = null) { // get number of attachments $attachmentsAmount = $attachmentList !== null ? count($attachmentList->getAttachments()) : 0; // save entry $sql = "INSERT INTO\twcf" . WCF_N . "_contest\n\t\t\t\t\t(userID, groupID, subject, message, time, attachments, enableSmilies, enableHtml,\n\t\t\t\t\tenableBBCodes, enableSolution, enableOpenSolution, enableParticipantCheck,\n\t\t\t\t\tenablePricechoice, priceExpireSeconds, enableSponsorCheck)\n\t\t\tVALUES\t\t(" . intval($userID) . ", " . intval($groupID) . ", '" . escapeString($subject) . "', '" . escapeString($message) . "', \n\t\t\t\t\t" . TIME_NOW . ", " . $attachmentsAmount . ",\n\t\t\t\t\t" . (isset($options['enableSmilies']) ? $options['enableSmilies'] : 1) . ",\n\t\t\t\t\t" . (isset($options['enableHtml']) ? $options['enableHtml'] : 0) . ",\n\t\t\t\t\t" . (isset($options['enableBBCodes']) ? $options['enableBBCodes'] : 0) . ",\n\t\t\t\t\t" . (isset($options['enableSolution']) ? $options['enableSolution'] : 0) . ",\n\t\t\t\t\t" . (isset($options['enableOpenSolution']) ? $options['enableOpenSolution'] : 0) . ",\n\t\t\t\t\t" . (isset($options['enableParticipantCheck']) ? $options['enableParticipantCheck'] : 0) . ",\n\t\t\t\t\t" . (isset($options['enablePricechoice']) ? $options['enablePricechoice'] : 0) . ",\n\t\t\t\t\t" . (isset($options['priceExpireSeconds']) ? $options['priceExpireSeconds'] : 0) . ",\n\t\t\t\t\t" . (isset($options['enableSponsorCheck']) ? $options['enableSponsorCheck'] : 0) . ")"; WCF::getDB()->sendQuery($sql); // get id $contestID = WCF::getDB()->getInsertID("wcf" . WCF_N . "_contest", 'contestID'); // 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('contestID' => $contestID, 'state' => $state, 'owner' => ContestOwner::get($userID, $groupID)->getName())); // get new object $entry = new self($contestID); // update classes if (count($classIDArray) > 0) { $entry->setClasses($classIDArray); } // update participants $entry->setParticipants($participants); // update jurys $entry->setJurys($jurys); // update prices $sponsorID = 0; if (count($sponsors) > 0 || count($prices) > 0) { if (count($prices)) { $sponsorID = $entry->setSponsors($sponsors, $userID, $groupID); } else { $entry->setSponsors($sponsors); $sponsorID = 0; } } // update prices $entry->setPrices($prices, $sponsorID); // update attachments if ($attachmentList !== null) { $attachmentList->updateContainerID($contestID); $attachmentList->findEmbeddedAttachments($message); } // return object return $entry; }