/**
  * 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;
 }