00001 <?php
00002
00016
00017
00018
00019 import ('journal.Journal');
00020
00021 class JournalDAO extends DAO {
00027 function &getJournal($journalId) {
00028 $result = &$this->retrieve(
00029 'SELECT * FROM journals WHERE journal_id = ?', $journalId
00030 );
00031
00032 $returner = null;
00033 if ($result->RecordCount() != 0) {
00034 $returner = &$this->_returnJournalFromRow($result->GetRowAssoc(false));
00035 }
00036 $result->Close();
00037 unset($result);
00038 return $returner;
00039 }
00040
00046 function &getJournalByPath($path) {
00047 $returner = null;
00048 $result = &$this->retrieve(
00049 'SELECT * FROM journals WHERE path = ?', $path
00050 );
00051
00052 if ($result->RecordCount() != 0) {
00053 $returner = &$this->_returnJournalFromRow($result->GetRowAssoc(false));
00054 }
00055 $result->Close();
00056 unset($result);
00057 return $returner;
00058 }
00059
00065 function &_returnJournalFromRow(&$row) {
00066 $journal = &new Journal();
00067 $journal->setJournalId($row['journal_id']);
00068 $journal->setPath($row['path']);
00069 $journal->setSequence($row['seq']);
00070 $journal->setEnabled($row['enabled']);
00071 $journal->setPrimaryLocale($row['primary_locale']);
00072
00073 HookRegistry::call('JournalDAO::_returnJournalFromRow', array(&$journal, &$row));
00074
00075 return $journal;
00076 }
00077
00082 function insertJournal(&$journal) {
00083 $this->update(
00084 'INSERT INTO journals
00085 (path, seq, enabled, primary_locale)
00086 VALUES
00087 (?, ?, ?, ?)',
00088 array(
00089 $journal->getPath(),
00090 $journal->getSequence() == null ? 0 : $journal->getSequence(),
00091 $journal->getEnabled() ? 1 : 0,
00092 $journal->getPrimaryLocale()
00093 )
00094 );
00095
00096 $journal->setJournalId($this->getInsertJournalId());
00097 return $journal->getJournalId();
00098 }
00099
00104 function updateJournal(&$journal) {
00105 return $this->update(
00106 'UPDATE journals
00107 SET
00108 path = ?,
00109 seq = ?,
00110 enabled = ?,
00111 primary_locale = ?
00112 WHERE journal_id = ?',
00113 array(
00114 $journal->getPath(),
00115 $journal->getSequence(),
00116 $journal->getEnabled() ? 1 : 0,
00117 $journal->getPrimaryLocale(),
00118 $journal->getJournalId()
00119 )
00120 );
00121 }
00122
00127 function deleteJournal(&$journal) {
00128 return $this->deleteJournalById($journal->getJournalId());
00129 }
00130
00135 function deleteJournalById($journalId) {
00136 $journalSettingsDao = &DAORegistry::getDAO('JournalSettingsDAO');
00137 $journalSettingsDao->deleteSettingsByJournal($journalId);
00138
00139 $sectionDao = &DAORegistry::getDAO('SectionDAO');
00140 $sectionDao->deleteSectionsByJournal($journalId);
00141
00142 $issueDao = &DAORegistry::getDAO('IssueDAO');
00143 $issueDao->deleteIssuesByJournal($journalId);
00144
00145 $notificationStatusDao = &DAORegistry::getDAO('NotificationStatusDAO');
00146 $notificationStatusDao->deleteNotificationStatusByJournal($journalId);
00147
00148 $emailTemplateDao = &DAORegistry::getDAO('EmailTemplateDAO');
00149 $emailTemplateDao->deleteEmailTemplatesByJournal($journalId);
00150
00151 $rtDao = &DAORegistry::getDAO('RTDAO');
00152 $rtDao->deleteVersionsByJournal($journalId);
00153
00154 $subscriptionDao = &DAORegistry::getDAO('SubscriptionDAO');
00155 $subscriptionDao->deleteSubscriptionsByJournal($journalId);
00156
00157 $subscriptionTypeDao = &DAORegistry::getDAO('SubscriptionTypeDAO');
00158 $subscriptionTypeDao->deleteSubscriptionTypesByJournal($journalId);
00159
00160 $announcementDao = &DAORegistry::getDAO('AnnouncementDAO');
00161 $announcementDao->deleteAnnouncementsByJournal($journalId);
00162
00163 $announcementTypeDao = &DAORegistry::getDAO('AnnouncementTypeDAO');
00164 $announcementTypeDao->deleteAnnouncementTypesByJournal($journalId);
00165
00166 $articleDao = &DAORegistry::getDAO('ArticleDAO');
00167 $articleDao->deleteArticlesByJournalId($journalId);
00168
00169 $roleDao = &DAORegistry::getDAO('RoleDAO');
00170 $roleDao->deleteRoleByJournalId($journalId);
00171
00172 $groupDao = &DAORegistry::getDAO('GroupDAO');
00173 $groupDao->deleteGroupsByJournalId($journalId);
00174
00175 $pluginSettingsDao = &DAORegistry::getDAO('PluginSettingsDAO');
00176 $pluginSettingsDao->deleteSettingsByJournalId($journalId);
00177
00178 $reviewFormDao =& DAORegistry::getDAO('ReviewFormDAO');
00179 $reviewFormDao->deleteReviewFormsByJournalId($journalId);
00180
00181 return $this->update(
00182 'DELETE FROM journals WHERE journal_id = ?', $journalId
00183 );
00184 }
00185
00190 function &getJournals($rangeInfo = null) {
00191 $result = &$this->retrieveRange(
00192 'SELECT * FROM journals ORDER BY seq',
00193 false, $rangeInfo
00194 );
00195
00196 $returner = &new DAOResultFactory($result, $this, '_returnJournalFromRow');
00197 return $returner;
00198 }
00199
00204 function &getEnabledJournals() {
00205 $result = &$this->retrieve(
00206 'SELECT * FROM journals WHERE enabled=1 ORDER BY seq'
00207 );
00208
00209 $resultFactory = &new DAOResultFactory($result, $this, '_returnJournalFromRow');
00210 return $resultFactory;
00211 }
00212
00217 function &getJournalTitles() {
00218 $journals = array();
00219
00220 $journalIterator =& $this->getJournals();
00221 while ($journal =& $journalIterator->next()) {
00222 $journals[$journal->getJournalId()] = $journal->getJournalTitle();
00223 unset($journal);
00224 }
00225 unset($journalIterator);
00226
00227 return $journals;
00228 }
00229
00234 function &getEnabledJournalTitles() {
00235 $journals = array();
00236
00237 $journalIterator =& $this->getEnabledJournals();
00238 while ($journal =& $journalIterator->next()) {
00239 $journals[$journal->getJournalId()] = $journal->getJournalTitle();
00240 unset($journal);
00241 }
00242 unset($journalIterator);
00243
00244 return $journals;
00245 }
00246
00252 function journalExistsByPath($path) {
00253 $result = &$this->retrieve(
00254 'SELECT COUNT(*) FROM journals WHERE path = ?', $path
00255 );
00256 $returner = isset($result->fields[0]) && $result->fields[0] == 1 ? true : false;
00257
00258 $result->Close();
00259 unset($result);
00260
00261 return $returner;
00262 }
00263
00267 function resequenceJournals() {
00268 $result = &$this->retrieve(
00269 'SELECT journal_id FROM journals ORDER BY seq'
00270 );
00271
00272 for ($i=1; !$result->EOF; $i++) {
00273 list($journalId) = $result->fields;
00274 $this->update(
00275 'UPDATE journals SET seq = ? WHERE journal_id = ?',
00276 array(
00277 $i,
00278 $journalId
00279 )
00280 );
00281
00282 $result->moveNext();
00283 }
00284
00285 $result->close();
00286 unset($result);
00287 }
00288
00293 function getInsertJournalId() {
00294 return $this->getInsertId('journals', 'journal_id');
00295 }
00296 }
00297
00298 ?>