00001 <?php
00002
00015
00016
00017
00018 class SectionEditorsDAO extends DAO {
00027 function insertEditor($journalId, $sectionId, $userId, $canReview, $canEdit) {
00028 return $this->update(
00029 'INSERT INTO section_editors
00030 (journal_id, section_id, user_id, can_review, can_edit)
00031 VALUES
00032 (?, ?, ?, ?, ?)',
00033 array(
00034 $journalId,
00035 $sectionId,
00036 $userId,
00037 $canReview?1:0,
00038 $canEdit?1:0
00039 )
00040 );
00041 }
00042
00049 function deleteEditor($journalId, $sectionId, $userId) {
00050 return $this->update(
00051 'DELETE FROM section_editors WHERE journal_id = ? AND section_id = ? AND user_id = ?',
00052 array(
00053 $journalId,
00054 $sectionId,
00055 $userId
00056 )
00057 );
00058 }
00059
00066 function &getEditorsBySectionId($journalId, $sectionId) {
00067 $users = array();
00068
00069 $userDao = &DAORegistry::getDAO('UserDAO');
00070
00071 $result = &$this->retrieve(
00072 'SELECT u.*, e.can_review AS can_review, e.can_edit AS can_edit FROM users AS u, section_editors AS e WHERE u.user_id = e.user_id AND e.journal_id = ? AND e.section_id = ? ORDER BY last_name, first_name',
00073 array($journalId, $sectionId)
00074 );
00075
00076 while (!$result->EOF) {
00077 $row = $result->GetRowAssoc(false);
00078 $users[] = array(
00079 'user' => $userDao->_returnUserFromRow($row),
00080 'canReview' => $row['can_review'],
00081 'canEdit' => $row['can_edit']
00082 );
00083 $result->moveNext();
00084 }
00085
00086 $result->Close();
00087 unset($result);
00088
00089 return $users;
00090 }
00091
00098 function &getEditorsNotInSection($journalId, $sectionId) {
00099 $users = array();
00100
00101 $userDao = &DAORegistry::getDAO('UserDAO');
00102
00103 $result = &$this->retrieve(
00104 'SELECT u.*
00105 FROM users u
00106 LEFT JOIN roles r ON (r.user_id = u.user_id)
00107 LEFT JOIN section_editors e ON (e.user_id = u.user_id AND e.journal_id = r.journal_id AND e.section_id = ?)
00108 WHERE r.journal_id = ? AND
00109 r.role_id = ? AND
00110 e.section_id IS NULL
00111 ORDER BY last_name, first_name',
00112 array($sectionId, $journalId, ROLE_ID_SECTION_EDITOR)
00113 );
00114
00115 while (!$result->EOF) {
00116 $users[] = &$userDao->_returnUserFromRow($result->GetRowAssoc(false));
00117 $result->moveNext();
00118 }
00119
00120 $result->Close();
00121 unset($result);
00122
00123 return $users;
00124 }
00125
00131 function deleteEditorsBySectionId($sectionId, $journalId = null) {
00132 if (isset($journalId)) return $this->update(
00133 'DELETE FROM section_editors WHERE journal_id = ? AND section_id = ?',
00134 array($journalId, $sectionId)
00135 );
00136 else return $this->update(
00137 'DELETE FROM section_editors WHERE section_id = ?',
00138 $sectionId
00139 );
00140 }
00141
00146 function deleteEditorsByJournalId($journalId) {
00147 return $this->update(
00148 'DELETE FROM section_editors WHERE journal_id = ?', $journalId
00149 );
00150 }
00151
00158 function deleteEditorsByUserId($userId, $journalId = null, $sectionId = null) {
00159 return $this->update(
00160 'DELETE FROM section_editors WHERE user_id = ?' . (isset($journalId) ? ' AND journal_id = ?' : '') . (isset($sectionId) ? ' AND section_id = ?' : ''),
00161 isset($journalId) && isset($sectionId) ? array($userId, $journalId, $sectionId)
00162 : (isset($journalId) ? array($userId, $journalId)
00163 : (isset($sectionId) ? array($userId, $sectionId) : $userId))
00164 );
00165 }
00166
00174 function editorExists($journalId, $sectionId, $userId) {
00175 $result = &$this->retrieve(
00176 'SELECT COUNT(*) FROM section_editors WHERE journal_id = ? AND section_id = ? AND user_id = ?', array($journalId, $sectionId, $userId)
00177 );
00178 $returner = isset($result->fields[0]) && $result->fields[0] == 1 ? true : false;
00179
00180 $result->Close();
00181 unset($result);
00182
00183 return $returner;
00184 }
00185 }
00186
00187 ?>