/**
  * Updates this entry solution.
  *
  * @param	string				$message
  * @param	string				$state
  * @param	array				$options
  * @param	MessageAttachmentListEditor	$attachmentList
  */
 public function update($message, $state, $options = array(), $attachmentList = null)
 {
     // get number of attachments
     $attachmentsAmount = $attachmentList !== null ? count($attachmentList->getAttachments($this->solutionID)) : 0;
     $sql = "UPDATE\twcf" . WCF_N . "_contest_solution\n\t\t\tSET\tmessage = '" . escapeString($message) . "',\n\t\t\t\tstate = '" . escapeString($state) . "',\n\t\t\t\tattachments = " . $attachmentsAmount . ",\n\t\t\t\tenableSmilies = " . (isset($options['enableSmilies']) ? $options['enableSmilies'] : 1) . ",\n\t\t\t\tenableHtml = " . (isset($options['enableHtml']) ? $options['enableHtml'] : 0) . ",\n\t\t\t\tenableBBCodes = " . (isset($options['enableBBCodes']) ? $options['enableBBCodes'] : 1) . "\n\t\t\tWHERE\tsolutionID = " . intval($this->solutionID);
     WCF::getDB()->sendQuery($sql);
     // update attachments
     if ($attachmentList != null) {
         $attachmentList->findEmbeddedAttachments($message);
     }
 }
 /**
  * Updates this price.
  *
  * @param	string				$subject
  * @param	string				$message
  * @param	string				$secretMessage
  * @param	string				$state
  * @param	MessageAttachmentListEditor	$attachmentList
  */
 public function update($subject, $message, $secretMessage, $state, $attachmentList = null)
 {
     // get number of attachments
     $attachments = $attachmentList !== null ? $attachmentList->getAttachments($this->priceID) : array();
     $attachmentsAmount = count($attachments);
     $tmp = array_keys($attachments);
     $attachmentID = count($tmp) ? $attachments[$tmp[0]]->attachmentID : 0;
     $sql = "UPDATE\twcf" . WCF_N . "_contest_price\n\t\t\tSET\tsubject = '" . escapeString($subject) . "',\n\t\t\t\tmessage = '" . escapeString($message) . "',\n\t\t\t\tsecretMessage = '" . escapeString($secretMessage) . "',\n\t\t\t\tstate = '" . escapeString($state) . "',\n\t\t\t\tattachments = " . $attachmentsAmount . ",\n\t\t\t\tattachmentID = " . intval($attachmentID) . "\n\t\t\tWHERE\tpriceID = " . intval($this->priceID);
     WCF::getDB()->sendQuery($sql);
     // update attachments
     if ($attachmentList != null) {
         $attachmentList->findEmbeddedAttachments($message);
     }
 }
 /**
  * @see Form::submit()
  */
 public function submit()
 {
     // call submit event
     EventHandler::fireAction($this, 'submit');
     $this->readFormParameters();
     try {
         // attachment handling
         if ($this->showAttachments) {
             $this->attachmentListEditor->handleRequest();
         }
         // poll handling
         if ($this->showPoll) {
             $this->pollEditor->readParams();
         }
         // preview
         if ($this->preview) {
             require_once WCF_DIR . 'lib/data/message/bbcode/AttachmentBBCode.class.php';
             AttachmentBBCode::setAttachments($this->attachmentListEditor->getSortedAttachments());
             WCF::getTPL()->assign('preview', PostEditor::createPreview($this->subject, $this->text, $this->enableSmilies, $this->enableHtml, $this->enableBBCodes));
         }
         // send message or save as draft
         if ($this->send) {
             $this->validate();
             // no errors
             $this->save();
         }
     } catch (UserInputException $e) {
         $this->errorField = $e->getField();
         $this->errorType = $e->getType();
     }
 }
 /**
  * @see	Form::submit()
  */
 public function submit()
 {
     // call submit event
     EventHandler::fireAction($this, 'submit');
     try {
         // attachment handling
         if ($this->showAttachments) {
             $this->attachmentListEditor->handleRequest();
         }
         // send message or save as draft
         if ($this->send) {
             $this->validate();
             // no errors
             $this->save();
         }
     } catch (UserInputException $e) {
         $this->errorField = $e->getField();
         $this->errorType = $e->getType();
     }
 }
 /**
  * Deletes this entry.
  */
 public function delete()
 {
     // delete solutions
     $sql = "DELETE FROM\twcf" . WCF_N . "_contest_solution\n\t\t\tWHERE\t\tcontestID = " . intval($this->contestID);
     WCF::getDB()->sendQuery($sql);
     // delete entry
     $sql = "DELETE FROM\twcf" . WCF_N . "_contest\n\t\t\tWHERE\t\tcontestID = " . intval($this->contestID);
     WCF::getDB()->sendQuery($sql);
     // delete entry to class and update class counters
     $this->setClasses(array());
     // delete entry to participant
     $sql = "DELETE FROM\twcf" . WCF_N . "_contest_participant\n\t\t\tWHERE\t\tcontestID = " . intval($this->contestID);
     WCF::getDB()->sendQuery($sql);
     // delete entry to jury
     $sql = "DELETE FROM\twcf" . WCF_N . "_contest_jury\n\t\t\tWHERE\t\tcontestID = " . intval($this->contestID);
     WCF::getDB()->sendQuery($sql);
     // delete entry to price
     $sql = "DELETE FROM\twcf" . WCF_N . "_contest_price\n\t\t\tWHERE\t\tcontestID = " . intval($this->contestID);
     WCF::getDB()->sendQuery($sql);
     // delete entry to sponsor
     $sql = "DELETE FROM\twcf" . WCF_N . "_contest_sponsor\n\t\t\tWHERE\t\tcontestID = " . intval($this->contestID);
     WCF::getDB()->sendQuery($sql);
     // delete events
     $sql = "DELETE FROM\twcf" . WCF_N . "_contest_event\n\t\t\tWHERE\t\tcontestID = " . intval($this->contestID);
     WCF::getDB()->sendQuery($sql);
     // delete tags
     if (MODULE_TAGGING) {
         require_once WCF_DIR . 'lib/data/tag/TagEngine.class.php';
         $taggable = TagEngine::getInstance()->getTaggable('de.easy-coding.wcf.contest.entry');
         $sql = "DELETE FROM\twcf" . WCF_N . "_tag_to_object\n\t\t\t\tWHERE \t\ttaggableID = " . $taggable->getTaggableID() . "\n\t\t\t\t\t\tAND objectID = " . intval($this->contestID);
         WCF::getDB()->registerShutdownUpdate($sql);
     }
     // delete attachments
     if ($this->attachments > 0) {
         require_once WCF_DIR . 'lib/data/attachment/MessageAttachmentListEditor.class.php';
         $attachmentList = new MessageAttachmentListEditor($this->contestID, 'contestEntry');
         $attachmentList->deleteAll();
     }
 }
 /**
  * Deletes the data of the specified messages completely.
  * 
  * @param	string		$pmIDs
  */
 protected static function deleteData($pmIDs)
 {
     // delete recipients
     $sql = "DELETE FROM\twcf" . WCF_N . "_pm_to_user\n\t\t\tWHERE\t\tpmID IN (" . $pmIDs . ")";
     WCF::getDB()->sendQuery($sql);
     // delete messages
     $sql = "DELETE FROM\twcf" . WCF_N . "_pm\n\t\t\tWHERE\t\tpmID IN (" . $pmIDs . ")";
     WCF::getDB()->sendQuery($sql);
     // delete pm hashes
     $sql = "DELETE FROM\twcf" . WCF_N . "_pm_hash\n\t\t\tWHERE\t\tpmID IN (" . $pmIDs . ")";
     WCF::getDB()->registerShutdownUpdate($sql);
     // delete attachments
     require_once WCF_DIR . 'lib/data/attachment/MessageAttachmentListEditor.class.php';
     $attachmentList = new MessageAttachmentListEditor(explode(',', $pmIDs), 'pm', WCF::getPackageID('com.woltlab.wcf.data.message.pm'));
     $attachmentList->deleteAll();
 }
 /**
  * Deletes all posts with the given post ids.
  */
 public static function deleteAllCompletely($postIDs, $deleteAttachments = true, $deletePolls = true, $updateUserStats = true)
 {
     if (empty($postIDs)) {
         return;
     }
     // delete attachments
     if ($deleteAttachments) {
         require_once WCF_DIR . 'lib/data/attachment/MessageAttachmentListEditor.class.php';
         $attachment = new MessageAttachmentListEditor(explode(',', $postIDs));
         $attachment->deleteAll();
     }
     // delete polls
     if ($deletePolls) {
         require_once WCF_DIR . 'lib/data/message/poll/PollEditor.class.php';
         PollEditor::deleteAll($postIDs);
     }
     // update user posts & activity points
     if ($updateUserStats) {
         self::updateUserStats($postIDs, 'delete');
     }
     // delete sql data
     self::deleteData($postIDs);
 }