/** * Copy all the questions from one query to another * * @param Inquiry $from_rec the query to copy from * @param Inquiry $to_rec the query to copy to */ protected function duplicate_questions(Inquiry $from_rec, Inquiry $to_rec) { // get source questions $q = Doctrine_Query::create()->from('Question q'); $q->where('q.ques_inq_id = ?', $from_rec->inq_id); $permission_types = array(Question::$TYPE_PERMISSION, Question::$TYPE_PERMISSION_HIDDEN); $default_question_templates = array(Question::$TKEY_FIRSTNAME, Question::$TKEY_LASTNAME, Question::$TKEY_EMAIL, Question::$TKEY_ZIP); $results = $q->execute(); foreach ($results as $idx => $ques_rec) { if (!in_array($ques_rec->ques_template, $default_question_templates) && !in_array($ques_rec->ques_type, $permission_types)) { $new_question = new Question(); $new_question->ques_inq_id = $to_rec->inq_id; AIR2_QueryBuilder::copy_question($new_question, $ques_rec->ques_uuid); $this->air_save($new_question); } } }
/** * Create * * @param array $data * @return Question $q */ protected function air_create($data) { if (!isset($data['ques_template']) && !isset($data['duplicate'])) { throw new Rframe_Exception(Rframe::BAD_DATA, "Missing required param: ques_template OR duplicate"); } if (isset($data['ques_template']) && $data['ques_template'] == 'fileupload') { if ($this->parent_rec->has_file_upload_question()) { throw new Rframe_Exception(Rframe::BAD_DATA, "Only one file upload question allowed per query"); } } $q = new Question(); $q->ques_inq_id = $this->parent_rec->inq_id; // rethrow as api exceptions try { if (isset($data['ques_template'])) { AIR2_QueryBuilder::make_question($q, $data['ques_template']); } elseif (isset($data['duplicate'])) { AIR2_QueryBuilder::copy_question($q, $data['duplicate']); } } catch (Exception $e) { throw new Rframe_Exception(RFrame::BAD_DATA, $e->getMessage()); } // optionally fix the whole sequence if (isset($data['resequence'])) { $this->_fix_sequence($q, $data['resequence']); } return $q; }