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