00001 <?php
00002
00016
00017
00018
00019 import('announcement.AnnouncementType');
00020
00021 class AnnouncementTypeDAO extends DAO {
00027 function &getAnnouncementType($typeId) {
00028 $result = &$this->retrieve(
00029 'SELECT * FROM announcement_types WHERE type_id = ?', $typeId
00030 );
00031
00032 $returner = null;
00033 if ($result->RecordCount() != 0) {
00034 $returner = &$this->_returnAnnouncementTypeFromRow($result->GetRowAssoc(false));
00035 }
00036 $result->Close();
00037 return $returner;
00038 }
00039
00045 function getAnnouncementTypeJournalId($typeId) {
00046 $result = &$this->retrieve(
00047 'SELECT journal_id FROM announcement_types WHERE type_id = ?', $typeId
00048 );
00049
00050 return isset($result->fields[0]) ? $result->fields[0] : 0;
00051 }
00052
00058 function getAnnouncementTypeName($typeId) {
00059 $result = &$this->retrieve(
00060 'SELECT COALESCE(l.setting_value, p.setting_value) FROM announcement_type_settings l LEFT JOIN announcement_type_settings p ON (p.type_id = ? AND p.setting_name = ? AND p.locale = ?) WHERE l.type_id = ? AND l.setting_name = ? AND l.locale = ?',
00061 array(
00062 $typeId, 'name', Locale::getLocale(),
00063 $typeId, 'name', Locale::getPrimaryLocale()
00064 )
00065 );
00066
00067 $returner = isset($result->fields[0]) ? $result->fields[0] : false;
00068
00069 $result->Close();
00070 unset($result);
00071
00072 return $returner;
00073 }
00074
00075
00082 function announcementTypeExistsByTypeId($typeId, $journalId) {
00083 $result = &$this->retrieve(
00084 'SELECT COUNT(*)
00085 FROM announcement_types
00086 WHERE type_id = ?
00087 AND journal_id = ?',
00088 array(
00089 $typeId,
00090 $journalId
00091 )
00092 );
00093 $returner = isset($result->fields[0]) && $result->fields[0] != 0 ? true : false;
00094
00095 $result->Close();
00096 unset($result);
00097
00098 return $returner;
00099 }
00100
00101 function getLocaleFieldNames() {
00102 return array('name');
00103 }
00104
00110 function &_returnAnnouncementTypeFromRow(&$row) {
00111 $announcementType = &new AnnouncementType();
00112 $announcementType->setTypeId($row['type_id']);
00113 $announcementType->setJournalId($row['journal_id']);
00114 $this->getDataObjectSettings('announcement_type_settings', 'type_id', $row['type_id'], $announcementType);
00115
00116 return $announcementType;
00117 }
00118
00123 function updateLocaleFields(&$announcementType) {
00124 $this->updateDataObjectSettings('announcement_type_settings', $announcementType, array(
00125 'type_id' => $announcementType->getTypeId()
00126 ));
00127 }
00128
00134 function insertAnnouncementType(&$announcementType) {
00135 $this->update(
00136 sprintf('INSERT INTO announcement_types
00137 (journal_id)
00138 VALUES
00139 (?)'),
00140 array(
00141 $announcementType->getJournalId()
00142 )
00143 );
00144 $announcementType->setTypeId($this->getInsertTypeId());
00145 $this->updateLocaleFields($announcementType);
00146 return $announcementType->getTypeId();
00147 }
00148
00154 function updateAnnouncementType(&$announcementType) {
00155 $returner = $this->update(
00156 sprintf('UPDATE announcement_types
00157 SET
00158 journal_id = ?
00159 WHERE type_id = ?'),
00160 array(
00161 $announcementType->getJournalId(),
00162 $announcementType->getTypeId()
00163 )
00164 );
00165 $this->updateLocaleFields($announcementType);
00166 return $returner;
00167 }
00168
00175 function deleteAnnouncementType($announcementType) {
00176 return $this->deleteAnnouncementTypeById($announcementType->getTypeId());
00177 }
00178
00185 function deleteAnnouncementTypeById($typeId) {
00186 $this->update('DELETE FROM announcement_type_settings WHERE type_id = ?', $typeId);
00187 $ret = $this->update('DELETE FROM announcement_types WHERE type_id = ?', $typeId);
00188
00189
00190 if ($ret) {
00191 $announcementDao = &DAORegistry::getDAO('AnnouncementDAO');
00192 return $announcementDao->deleteAnnouncementByTypeId($typeId);
00193 } else {
00194 return $ret;
00195 }
00196 }
00197
00202 function deleteAnnouncementTypesByJournal($journalId) {
00203 $types =& $this->getAnnouncementTypesByJournalId($journalId);
00204 while (($type =& $types->next())) {
00205 $this->deleteAnnouncementType($type);
00206 unset($type);
00207 }
00208 }
00209
00215 function &getAnnouncementTypesByJournalId($journalId, $rangeInfo = null) {
00216 $result = &$this->retrieveRange(
00217 'SELECT * FROM announcement_types WHERE journal_id = ? ORDER BY type_id', $journalId, $rangeInfo
00218 );
00219
00220 $returner = &new DAOResultFactory($result, $this, '_returnAnnouncementTypeFromRow');
00221 return $returner;
00222 }
00223
00228 function getInsertTypeId() {
00229 return $this->getInsertId('announcement_types', 'type_id');
00230 }
00231 }
00232
00233 ?>