コード例 #1
0
ファイル: Debate.php プロジェクト: nidzix/Newscoop
 /**
  * Create a copy of an debate.
  *
  * @param string $p_title
  * @param string $p_question
  * @param array $p_answers
  * @return Debate
  */
 public function createCopy($p_data, $p_answers)
 {
     // Construct the duplicate debate object.
     $debate_copy = new Debate();
     $debate_copy->m_data['debate_nr'] = Debate::generatePollNumber();
     $debate_copy->m_data['parent_debate_nr'] = $this->m_data['debate_nr'];
     $debate_copy->m_data['fk_language_id'] = $this->m_data['fk_language_id'];
     // Create the record
     $values = array('title' => $p_data['title'], 'question' => $p_data['question'], 'date_begin' => $p_data['date_begin'], 'date_end' => $p_data['date_end'], 'nr_of_answers' => count($p_answers), 'votes_per_user' => $p_data['votes_per_user']);
     $success = $debate_copy->__create($values);
     if (!$success) {
         return false;
     }
     // create an set of answers
     DebateAnswer::CreateCopySet($debate_copy->getNumber(), $this->m_data['fk_language_id'], $this->m_data['debate_nr'], $p_answers);
     $debate_copy->triggerStatistics();
     /*
     if (function_exists("camp_load_translation_strings")) {
         camp_load_translation_strings("api");
     }
     $logtext = getGS('Article #$1 "$2" ($3) translated to "$5" ($4)',
         $this->getArticleNumber(), $this->getTitle(), $this->getLanguageName(),
         $articleCopy->getTitle(), $articleCopy->getLanguageName());
     Log::Message($logtext, null, 31);
     */
     return $debate_copy;
 }
コード例 #2
0
ファイル: DebateAnswer.php プロジェクト: nidzix/Newscoop
 public function vote($p_value = 1)
 {
     if (!settype($p_value, 'float')) {
         return false;
     }
     $debate = $this->getDebate();
     $voted = $debate->getAlreadyVoted($this->getProperty('nr_answer'));
     $debate->userVote($this->getProperty('nr_answer'));
     if (!is_null($voted) && $voted != $this->getProperty('nr_answer')) {
         $otherAnswer = new DebateAnswer($this->getProperty('fk_language_id'), $this->getProperty('fk_debate_nr'), $voted);
         $otherAnswer->setProperty('nr_of_votes', $otherAnswer->getProperty('nr_of_votes') - 1);
         $otherValueVotes = $otherAnswer->getProperty('value') - $p_value;
         $otherAnswer->setProperty('value', $otherValueVotes < 0 ? 0 : $otherValueVotes);
         $otherNrVotes = $otherAnswer->getProperty('nr_of_votes');
         $otherAnswer->setProperty('average_value', $otherNrVotes != 0 ? $otherAnswer->getProperty('value') / $otherNrVotes : 0);
         $this->setProperty('nr_of_votes', $this->getProperty('nr_of_votes') + 1);
         $this->setProperty('value', $this->getProperty('value') + $p_value);
         $this->setProperty('average_value', $this->getProperty('value') / $this->getProperty('nr_of_votes'));
     } elseif (is_null($voted)) {
         $this->setProperty('nr_of_votes', $this->getProperty('nr_of_votes') + 1);
         $this->setProperty('value', $this->getProperty('value') + $p_value);
         $this->setProperty('average_value', $this->getProperty('value') / $this->getProperty('nr_of_votes'));
     }
     $debate->increaseUserVoteCount();
     Debate::triggerStatistics($this->m_data['fk_debate_nr']);
 }