Ejemplo n.º 1
0
 /**
  * Creates the list of objects. Sets the parameter $p_hasNextElements to
  * true if this list is limited and elements still exist in the original
  * list (from which this was truncated) after the last element of this
  * list.
  *
  * @param int $p_start
  * @param int $p_limit
  * @param bool $p_hasNextElements
  * @return array
  */
 protected function CreateList($p_start = 0, $p_limit = 0, array $p_parameters, &$p_count)
 {
     $operator = new Operator('is');
     $context = CampTemplate::singleton()->context();
     $comparisonOperation = new ComparisonOperation('fk_debate_nr', $operator, $context->debate->number);
     $this->m_constraints[] = $comparisonOperation;
     $comparisonOperation = new ComparisonOperation('fk_language_id', $operator, $context->debate->language_id);
     $this->m_constraints[] = $comparisonOperation;
     $debateAnswersList = DebateAnswer::GetList($this->m_constraints, $this->m_order, $p_start, $p_limit, $p_count);
     $metaDebateAnswersList = array();
     foreach ($debateAnswersList as $debateAnswer) {
         /* @var $debateAnswer DebateAnswer */
         $voted = $debateAnswer->getDebate()->setUserId($context->user->identifier)->getAlreadyVoted($debateAnswer->getNumber());
         $metaDebateAnswersList[] = new MetaDebateAnswer($debateAnswer->getLanguageId(), $debateAnswer->getDebateNumber(), $debateAnswer->getNumber(), $voted);
     }
     return $metaDebateAnswersList;
 }
Ejemplo n.º 2
0
camp_load_translation_strings("plugin_debate");
if (!SecurityToken::isValid()) {
    camp_html_display_error(getGS('Invalid security token!'));
    exit;
}
// Check permissions
if (!$g_user->hasPermission('plugin_debate_admin')) {
    camp_html_display_error(getGS('You do not have the right to manage debates.'));
    exit;
}
$f_debate_nr = Input::Get('f_debate_nr', 'int');
$f_fk_language_id = Input::Get('f_fk_language_id', 'int');
$f_answers = Input::Get('f_answer', 'array');
$f_copy_statistics = Input::Get('f_copy_statistics', 'boolean');
$data = array('title' => Input::Get('f_title', 'string'), 'question' => Input::Get('f_question', 'string'), 'date_begin' => Input::Get('f_date_begin', 'string'), 'date_end' => Input::Get('f_date_end', 'string'), 'votes_per_user' => Input::Get('f_votes_per_user', 'int'));
foreach ($f_answers as $answer) {
    if (isset($answer['number']) && !empty($answer['number']) && strlen($answer['text'])) {
        $DebateAnswer = new DebateAnswer($f_fk_language_id, $f_debate_nr, $answer['number']);
        $answers[] = array('number' => $answer['number'], 'text' => $answer['text'], 'nr_of_votes' => $f_copy_statistics ? $DebateAnswer->getProperty('nr_of_votes') : 0, 'value' => $f_copy_statistics ? $DebateAnswer->getProperty('value') : 0);
    }
}
$source = new Debate($f_fk_language_id, $f_debate_nr);
$copy = $source->createCopy($data, $answers);
/*
foreach($translation->getAnswers() as $answer) {
    $answer->setProperty('answer', $f_answers[$answer->getNumber()]);
}
*/
header("Location: index.php");
exit;
Ejemplo n.º 3
0
 /**
  * Create a copy of an answer set.
  *
  * @param int $p_fk_debate_nr
  * @param int $p_parent_nr
  * @param array $p_answers
  * @return Article
  */
 function CreateCopySet($p_debate_nr, $p_language_id, $p_parent_nr)
 {
     $ParentDebate = new Debate($p_language_id, $p_parent_nr);
     $parentAnswers = $ParentDebate->getAnswers();
     foreach ($parentAnswers as $ParentDebateAnswer) {
         $TargetDebateAnswer = new DebateAnswer($p_language_id, $p_debate_nr, $ParentDebateAnswer->getNumber());
         if ($TargetDebateAnswer->exists()) {
             $parentDebateAnswerAttachments = $ParentDebateAnswer->getDebateAnswerAttachments();
             foreach ($parentDebateAnswerAttachments as $ParentDebateAnswerAttachment) {
                 $TargetDebateAnswerAttachment = new DebateAnswerAttachment($p_debate_nr, $ParentDebateAnswerAttachment->getProperty('fk_debateanswer_nr'), $ParentDebateAnswerAttachment->getProperty('fk_attachment_id'));
                 $TargetDebateAnswerAttachment->create();
             }
         }
     }
 }
Ejemplo n.º 4
0
 /**
  * Get array of answer objects for an debate
  *
  * @return array
  */
 public function getAnswers()
 {
     return DebateAnswer::getAnswers($this->m_data['debate_nr'], $this->m_data['fk_language_id']);
 }
Ejemplo n.º 5
0
        case 4:
            // UPLOAD_ERR_NO_FILE
            camp_html_display_error(getGS("You must select a file to upload."), null, true);
            break;
        case 6:
            // UPLOAD_ERR_NO_TMP_DIR
        // UPLOAD_ERR_NO_TMP_DIR
        case 7:
            // UPLOAD_ERR_CANT_WRITE
            camp_html_display_error(getGS("There was a problem uploading the file."), null, true);
            break;
    }
} else {
    camp_html_display_error(getGS("The file exceeds the allowed max file size."), null, true);
}
$DebateAnswer = new DebateAnswer($f_fk_language_id, $f_debate_nr, $f_debateanswer_nr);
if (!$DebateAnswer->exists()) {
    camp_html_display_error(getGS("Debate Answer \$1 does not exist.", $f_debateanswer_nr), null, true);
    exit;
}
$description = new Translation(@$f_language_id);
$description->create($f_description);
$attributes = array();
$attributes['fk_description_id'] = $description->getPhraseId();
$attributes['fk_user_id'] = $g_user->getUserId();
if ($f_language_specific == "yes") {
    $attributes['fk_language_id'] = @$f_language_id;
}
if ($f_content_disposition == "attachment") {
    $attributes['content_disposition'] = "attachment";
}
Ejemplo n.º 6
0
 /**
  * Performs the action; returns true on success, false on error.
  *
  * @param $p_context - the current context object
  * @return bool
  */
 public function takeAction(CampContext &$p_context)
 {
     $user = null;
     if ($p_context->user instanceof MetaUser) {
         $user = $p_context->user->identifier;
     }
     if ($this->m_debate instanceof Debate) {
         $this->m_debate->setUserId($user);
     } else {
         return false;
     }
     if (!$this->m_debate->isVotable()) {
         $this->m_error = new PEAR_Error('Debate is not votable.', ACTION_DEBATE_ERR_NOT_VOTABLE);
         return false;
     }
     if (!is_object($this->m_debate)) {
         return false;
     }
     // vote the debate
     $DebateAnswer = new DebateAnswer($this->m_properties['debate_language_id'], $this->m_properties['debate_nr'], $this->m_properties['debateanswer_nr'], $user);
     $DebateAnswer->vote($this->m_properties['value']);
     // reset the f_debateanswer(_$nr) context vars
     $p_context->default_url->reset_parameter('f_debateanswer_nr');
     $p_context->url->reset_parameter('f_debateanswer_nr');
     foreach ($this->m_debate->getAnswers() as $DebateAnswer) {
         $nr = $DebateAnswer->getNumber();
         $p_context->default_url->reset_parameter('f_debateanswer_' . $nr);
         $p_context->url->reset_parameter('f_debateanswer_' . $nr);
     }
     $p_context->debatejustvoted = new MetaDebateAnswer($this->m_properties['debate_language_id'], $this->m_properties['debate_nr'], $this->m_properties['debateanswer_nr']);
     $this->m_error = ACTION_OK;
     return true;
 }
Ejemplo n.º 7
0
 /**
  * Gets an issue list based on the given parameters.
  *
  * @param array $p_parameters
  *    An array of ComparisonOperation objects
  * @param string $p_order
  *    An array of columns and directions to order by
  * @param integer $p_count
  *    The count of answers.
  *
  * @return array $issuesList
  *    An array of Issue objects
  */
 public static function GetList(array $p_parameters, $p_order = null, $p_start = 0, $p_limit = 0, &$p_count)
 {
     global $g_ado_db;
     $hasDebateNr = false;
     $hasLanguageId = fase;
     $selectClauseObj = new SQLSelectClause();
     if (!is_array($p_parameters)) {
         return null;
     }
     // adodb::selectLimit() interpretes -1 as unlimited
     if ($p_limit == 0) {
         $p_limit = -1;
     }
     // sets the where conditions
     foreach ($p_parameters as $param) {
         $comparisonOperation = self::ProcessListParameters($param);
         if (empty($comparisonOperation)) {
             continue;
         }
         if (strpos($comparisonOperation['left'], 'debate_nr') !== false) {
             $hasDebateNr = true;
         }
         if (strpos($comparisonOperation['left'], 'language_id') !== false) {
             $hasLanguageId = true;
         }
         $whereCondition = $g_ado_db->escapeOperation($comparisonOperation);
         $selectClauseObj->addWhere($whereCondition);
     }
     // validates whether publication identifier was given
     if ($hasDebateNr == false) {
         CampTemplate::singleton()->trigger_error('missed parameter Debate Number in statement list_debateanswers');
         return;
     }
     // validates whether language identifier was given
     if ($hasLanguageId == false) {
         CampTemplate::singleton()->trigger_error('missed parameter Language Identifier in statement list_debateanswers');
         return;
     }
     // sets the columns to be fetched
     $tmpDebateAnswer = new DebateAnswer();
     $columnNames = $tmpDebateAnswer->getColumnNames(true);
     foreach ($columnNames as $columnName) {
         $selectClauseObj->addColumn($columnName);
     }
     // sets the main table for the query
     $mainTblName = $tmpDebateAnswer->getDbTableName();
     $selectClauseObj->setTable($mainTblName);
     unset($tmpDebateAnswer);
     if (!is_array($p_order)) {
         $p_order = array();
     }
     // sets the ORDER BY condition
     $p_order = count($p_order) > 0 ? $p_order : DebateAnswer::$s_defaultOrder;
     $order = DebateAnswer::ProcessListOrder($p_order);
     foreach ($order as $orderColumn => $orderDirection) {
         $selectClauseObj->addOrderBy($orderColumn . ' ' . $orderDirection);
     }
     $sqlQuery = $selectClauseObj->buildQuery();
     // count all available results
     $countRes = $g_ado_db->Execute($sqlQuery);
     $p_count = $countRes->recordCount();
     //get the wanted rows
     $debateAnswerRes = $g_ado_db->Execute($sqlQuery);
     // builds the array of debate objects
     $debateAnswersList = array();
     while ($debateAnswer = $debateAnswerRes->FetchRow()) {
         $debateAnswerObj = new DebateAnswer($debateAnswer['fk_language_id'], $debateAnswer['fk_debate_nr'], $debateAnswer['nr_answer']);
         if ($debateAnswerObj->exists()) {
             $debateAnswersList[] = $debateAnswerObj;
         }
     }
     return $debateAnswersList;
 }
Ejemplo n.º 8
0
    $debate->setProperty('allow_not_logged_in', $f_allow_not_logged_in);
    foreach ($f_answers as $nr_answer => $text) {
        if (trim($text) != '') {
            $answer = new DebateAnswer($f_fk_language_id, $f_debate_nr, $nr_answer);
            if ($answer->exists()) {
                $answer->setProperty('answer', $text);
            } else {
                $answer->create($text);
            }
        }
    }
    DebateAnswer::SyncNrOfAnswers($f_fk_language_id, $f_debate_nr);
} else {
    // create new debate
    $debate = new Debate($f_fk_language_id);
    $f_date_begin = strftime("%F %H:%M:%S", strtotime($f_date_begin . " " . $f_time_begin));
    $f_date_end = strftime("%F %H:%M:%S", strtotime($f_date_end . " " . $f_time_end));
    $success = $debate->create($f_title, $f_question, $f_date_begin, $f_date_end, $f_nr_of_answers, $f_votes_per_user);
    if ($success) {
        $debate->setProperty('is_extended', $f_is_extended);
        foreach ($f_answers as $nr_answer => $text) {
            if (trim($text) != '') {
                $answer = new DebateAnswer($f_fk_language_id, $debate->getNumber(), $nr_answer);
                $success = $answer->create($text);
            }
        }
    }
}
$f_from = Input::Get('f_from', 'string', 'index.php');
header('Location: ' . $f_from);
exit;