Example #1
0
 public static function reorder($criterion_id, $fromId = null, $fromOldPosition = null, $oldPositionId = null)
 {
     if (!is_numeric($criterion_id)) {
         return false;
     }
     $modelQuestion = new Model_Question();
     $orderBy = 0;
     $where = array('CriterionId = ?' => $criterion_id);
     $order = array('Designation ASC');
     $questions = $modelQuestion->getAll($where, $order);
     $newPositionRowId = null;
     if ($fromId) {
         $newPositionRow = $modelQuestion->getQuestionById($fromId);
         $newPositionRowId = $newPositionRow->getId() ? $newPositionRow->getId() : null;
     }
     if ($fromOldPosition) {
         $fromOldPosition = $fromOldPosition ? $fromOldPosition : null;
     }
     $toPositionRowId = null;
     if ($oldPositionId) {
         $toPositionRow = $modelQuestion->getQuestionById($oldPositionId);
         $toPositionRowId = $toPositionRow->getId() ? $toPositionRow->getId() : null;
         $toNewPosition = $toPositionRow->getDesignation() ? $toPositionRow->getDesignation() : null;
     }
     if (!is_object($questions) && !(count($questions) > 0)) {
         return false;
     }
     foreach ($questions as $questionRow) {
         $orderBy++;
         if ($questionRow->getId() == $newPositionRowId) {
             // não editar $newPositionRowId
             continue;
         }
         $data['parent_id'] = $criterion_id;
         $data['question_type_id'] = $questionRow->getQuestionTypeId();
         $data['parent_question_id'] = $questionRow->getParentQuestionId();
         $data['value'] = $questionRow->getValue();
         $data['supporting_text'] = $questionRow->getSupportingText();
         $data['version'] = $questionRow->getVersion();
         $data['status'] = $questionRow->getStatus();
         $data['designation'] = $orderBy;
         if ($questionRow->getId() == $toPositionRowId) {
             $questionRow->setId($toPositionRowId);
             $data['designation'] = $toNewPosition + ($fromOldPosition <= $toNewPosition ? -1 : +1);
         }
         $modelQuestion->updateQuestion($questionRow, $data);
     }
     return true;
 }