Example #1
0
 /**
  * Link submissions to presentation
  *
  * @param	Core_Resource_Submission_Set $submissions RowSet of submissionsview
  * @param	Zend_Config		$config		Form values passed as config
  * @return	Zend_Db_Statement_Pdo on success, false on failure
  */
 public function linkSubmissions(Core_Resource_Submission_Set $submissions, Zend_Config $config)
 {
     if ($submissions->count() === 0) {
         return false;
     }
     $db = $this->getAdapter();
     $conferenceId = $this->getConferenceId();
     foreach ($submissions as $submission) {
         $submissionIds[] = $submission->submission_id;
         $values[] = "(" . $conferenceId . ',' . $submission->submission_id . ',' . $db->quote($submission->title) . ")";
     }
     $values = implode(',', $values);
     $submissionIds = implode(',', $submissionIds);
     try {
         if ($config->_overwrite) {
             $this->delete($db->quoteInto('conference_id = ?', $conferenceId));
         }
         $query = "INSERT INTO " . $this->_name . "(conference_id, submission_id, title) VALUES " . $values;
         $query = $db->query($query);
         // get newly inserted presentations
         $query = "select p.presentation_id, s.user_id, s.session_id, p.submission_id, s.file_id from presentations p " . "left join vw_submissions s on (p.submission_id = s.submission_id) where p.submission_id IN (" . $submissionIds . ")";
         $collection = $db->fetchAll($query);
         foreach ($collection as $value) {
             $valuesPu[$value['presentation_id']] = $value['user_id'];
             $valuesSp[] = "(" . $value['session_id'] . "," . $value['presentation_id'] . "," . "999)";
             $valuesPf[] = "(" . $value['file_id'] . "," . $value['presentation_id'] . ")";
             $valuesF[] = $value['file_id'];
         }
         // insert session presentation links
         if ($config->link_sessions) {
             $db->query("insert into sessions_presentations (session_id, presentation_id, displayorder) values " . implode(',', $valuesSp));
         }
         // insert file presentation links
         if ($config->link_files) {
             $db->query("insert into presentations_files (file_id, presentation_id) values " . implode(',', $valuesPf));
             // update filetype to paper
             $db->update('files', array('filetype' => 4), array('file_id IN (?)' => $valuesF));
         }
         return $valuesPu;
     } catch (Exception $e) {
         throw new TA_Model_Exception($e->getMessage());
     }
 }
Example #2
0
 /**
  * Get a list of reviews indexed by submission_id
  *
  * @param	Core_Resource_Submission_Set	$submissions
  * @param	integer		$userId			User id of reviewer to filter by
  * @param	boolean		$groupUserId	Group list by user_id instead of review_id
  * @return array
  */
 public function getReviewsIndexedBySubmission(Core_Resource_Submission_Set $submissions, $userId = null, $groupUserId = false)
 {
     $list = array();
     foreach ($this->getResource('reviews')->getReviewsIndexedBySubmission($userId) as $review) {
         $submission = current(array_filter($submissions->toArray(), function ($val) use($review) {
             return $val['submission_id'] == $review['submission_id'];
         }));
         if ($groupUserId) {
             $list[$review['submission_id']][$review['user_id']] = $review;
         } else {
             $list[$review['submission_id']][$review['review_id']] = $review;
         }
     }
     return $list;
 }