00001 <?php
00002
00016 class SeriesEditorsDAO extends DAO {
00020 function SeriesEditorsDAO() {
00021 parent::DAO();
00022 }
00023
00032 function insertEditor($pressId, $seriesId, $userId, $canReview, $canEdit) {
00033 return $this->update(
00034 'INSERT INTO series_editors
00035 (press_id, series_id, user_id, can_review, can_edit)
00036 VALUES
00037 (?, ?, ?, ?, ?)',
00038 array(
00039 $pressId,
00040 $seriesId,
00041 $userId,
00042 $canReview ? 1 : 0,
00043 $canEdit ? 1 : 0
00044 )
00045 );
00046 }
00047
00054 function deleteEditor($pressId, $seriesId, $userId) {
00055 return $this->update(
00056 'DELETE FROM series_editors WHERE press_id = ? AND series_id = ? AND user_id = ?',
00057 array(
00058 $pressId,
00059 $seriesId,
00060 $userId
00061 )
00062 );
00063 }
00064
00071 function &getEditorsBySeriesId($seriesId, $pressId) {
00072 $users = array();
00073
00074 $userDao =& DAORegistry::getDAO('UserDAO');
00075
00076 $result =& $this->retrieve(
00077 'SELECT u.*, e.can_review AS can_review, e.can_edit AS can_edit FROM users AS u, series_editors AS e WHERE u.user_id = e.user_id AND e.press_id = ? AND e.series_id = ? ORDER BY last_name, first_name',
00078 array($pressId, $seriesId)
00079 );
00080
00081 while (!$result->EOF) {
00082 $row = $result->GetRowAssoc(false);
00083 $users[] = array(
00084 'user' => $userDao->_returnUserFromRow($row),
00085 'canReview' => $row['can_review'],
00086 'canEdit' => $row['can_edit']
00087 );
00088 $result->MoveNext();
00089 }
00090
00091 $result->Close();
00092 unset($result);
00093
00094 return $users;
00095 }
00096
00103 function &getEditorsNotInSeries($pressId, $seriesId) {
00104 $users = array();
00105
00106 $userDao =& DAORegistry::getDAO('UserDAO');
00107
00108 $result =& $this->retrieve(
00109 'SELECT u.*
00110 FROM users u
00111 JOIN user_user_groups uug ON (u.user_id = uug.user_id)
00112 JOIN user_groups ug ON (uug.user_group_id = ug.user_group_id AND ug.role_id = ? AND ug.context_id = ?)
00113 LEFT JOIN series_editors e ON (e.user_id = u.user_id AND e.press_id = ug.context_id AND e.series_id = ?)
00114 WHERE e.series_id IS NULL
00115 ORDER BY last_name, first_name',
00116 array(ROLE_ID_SERIES_EDITOR, (int) $pressId, (int) $seriesId)
00117 );
00118
00119 while (!$result->EOF) {
00120 $users[] =& $userDao->_returnUserFromRow($result->GetRowAssoc(false));
00121 $result->MoveNext();
00122 }
00123
00124 $result->Close();
00125 unset($result);
00126
00127 return $users;
00128 }
00129
00135 function deleteEditorsBySeriesId($seriesId, $pressId = null) {
00136 if (isset($pressId)) return $this->update(
00137 'DELETE FROM series_editors WHERE press_id = ? AND series_id = ?',
00138 array($pressId, $seriesId)
00139 );
00140 else return $this->update(
00141 'DELETE FROM series_editors WHERE series_id = ?',
00142 $seriesId
00143 );
00144 }
00145
00150 function deleteEditorsByPressId($pressId) {
00151 return $this->update(
00152 'DELETE FROM series_editors WHERE press_id = ?', $pressId
00153 );
00154 }
00155
00162 function deleteEditorsByUserId($userId, $pressId = null, $seriesId = null) {
00163 return $this->update(
00164 'DELETE FROM series_editors WHERE user_id = ?' . (isset($pressId) ? ' AND press_id = ?' : '') . (isset($seriesId) ? ' AND series_id = ?' : ''),
00165 isset($pressId) && isset($seriesId) ? array($userId, $pressId, $seriesId)
00166 : (isset($pressId) ? array($userId, $pressId)
00167 : (isset($seriesId) ? array($userId, $seriesId) : $userId))
00168 );
00169 }
00170
00178 function editorExists($pressId, $seriesId, $userId) {
00179 $result =& $this->retrieve(
00180 'SELECT COUNT(*) FROM series_editors WHERE press_id = ? AND series_id = ? AND user_id = ?', array($pressId, $seriesId, $userId)
00181 );
00182 $returner = isset($result->fields[0]) && $result->fields[0] == 1 ? true : false;
00183
00184 $result->Close();
00185 unset($result);
00186
00187 return $returner;
00188 }
00189 }
00190
00191 ?>