00001 <?php
00002
00019
00020
00021
00022 import('form.Form');
00023
00024 class AnnouncementForm extends Form {
00026 var $announcementId;
00027
00032 function AnnouncementForm($announcementId = null) {
00033
00034 $this->announcementId = isset($announcementId) ? (int) $announcementId : null;
00035 $journal = &Request::getJournal();
00036
00037 parent::Form('manager/announcement/announcementForm.tpl');
00038
00039
00040 $this->addCheck(new FormValidatorCustom($this, 'typeId', 'optional', 'manager.announcements.form.typeIdValid', create_function('$typeId, $journalId', '$announcementTypeDao = &DAORegistry::getDAO(\'AnnouncementTypeDAO\'); return $announcementTypeDao->announcementTypeExistsByTypeId($typeId, $journalId);'), array($journal->getJournalId())));
00041
00042
00043 $this->addCheck(new FormValidatorLocale($this, 'title', 'required', 'manager.announcements.form.titleRequired'));
00044
00045
00046 $this->addCheck(new FormValidatorLocale($this, 'descriptionShort', 'required', 'manager.announcements.form.descriptionShortRequired'));
00047
00048
00049 $this->addCheck(new FormValidatorLocale($this, 'description', 'required', 'manager.announcements.form.descriptionRequired'));
00050
00051
00052 $this->addCheck(new FormValidatorCustom($this, 'dateExpireYear', 'optional', 'manager.announcements.form.dateExpireValid', create_function('$dateExpireYear', '$minYear = date(\'Y\'); $maxYear = date(\'Y\') + ANNOUNCEMENT_EXPIRE_YEAR_OFFSET_FUTURE; return ($dateExpireYear >= $minYear && $dateExpireYear <= $maxYear) ? true : false;')));
00053
00054 $this->addCheck(new FormValidatorCustom($this, 'dateExpireYear', 'optional', 'manager.announcements.form.dateExpireYearIncompleteDate', create_function('$dateExpireYear, $form', '$dateExpireMonth = $form->getData(\'dateExpireMonth\'); $dateExpireDay = $form->getData(\'dateExpireDay\'); return ($dateExpireMonth != null && $dateExpireDay != null) ? true : false;'), array(&$this)));
00055
00056 $this->addCheck(new FormValidatorCustom($this, 'dateExpireMonth', 'optional', 'manager.announcements.form.dateExpireValid', create_function('$dateExpireMonth', 'return ($dateExpireMonth >= 1 && $dateExpireMonth <= 12) ? true : false;')));
00057
00058 $this->addCheck(new FormValidatorCustom($this, 'dateExpireMonth', 'optional', 'manager.announcements.form.dateExpireMonthIncompleteDate', create_function('$dateExpireMonth, $form', '$dateExpireYear = $form->getData(\'dateExpireYear\'); $dateExpireDay = $form->getData(\'dateExpireDay\'); return ($dateExpireYear != null && $dateExpireDay != null) ? true : false;'), array(&$this)));
00059
00060 $this->addCheck(new FormValidatorCustom($this, 'dateExpireDay', 'optional', 'manager.announcements.form.dateExpireValid', create_function('$dateExpireDay', 'return ($dateExpireDay >= 1 && $dateExpireDay <= 31) ? true : false;')));
00061
00062 $this->addCheck(new FormValidatorCustom($this, 'dateExpireDay', 'optional', 'manager.announcements.form.dateExpireDayIncompleteDate', create_function('$dateExpireDay, $form', '$dateExpireYear = $form->getData(\'dateExpireYear\'); $dateExpireMonth = $form->getData(\'dateExpireMonth\'); return ($dateExpireYear != null && $dateExpireMonth != null) ? true : false;'), array(&$this)));
00063 $this->addCheck(new FormValidatorPost($this));
00064
00065 }
00066
00071 function getLocaleFieldNames() {
00072 $announcementDao =& DAORegistry::getDAO('AnnouncementDAO');
00073 return $announcementDao->getLocaleFieldNames();
00074 }
00075
00079 function display() {
00080 $templateMgr = &TemplateManager::getManager();
00081 $journal = &Request::getJournal();
00082
00083 $templateMgr->assign('announcementId', $this->announcementId);
00084 $templateMgr->assign('yearOffsetFuture', ANNOUNCEMENT_EXPIRE_YEAR_OFFSET_FUTURE);
00085 $templateMgr->assign('helpTopicId', 'journal.managementPages.announcements');
00086
00087 $announcementTypeDao = &DAORegistry::getDAO('AnnouncementTypeDAO');
00088 $announcementTypes = &$announcementTypeDao->getAnnouncementTypesByJournalId($journal->getJournalId());
00089 $templateMgr->assign('announcementTypes', $announcementTypes);
00090
00091 parent::display();
00092 }
00093
00097 function initData() {
00098 if (isset($this->announcementId)) {
00099 $announcementDao = &DAORegistry::getDAO('AnnouncementDAO');
00100 $announcement = &$announcementDao->getAnnouncement($this->announcementId);
00101
00102 if ($announcement != null) {
00103 $this->_data = array(
00104 'typeId' => $announcement->getTypeId(),
00105 'title' => $announcement->getTitle(null),
00106 'descriptionShort' => $announcement->getDescriptionShort(null),
00107 'description' => $announcement->getDescription(null),
00108 'dateExpire' => $announcement->getDateExpire()
00109 );
00110
00111 } else {
00112 $this->announcementId = null;
00113 }
00114 }
00115 }
00116
00120 function readInputData() {
00121 $this->readUserVars(array('typeId', 'title', 'descriptionShort', 'description', 'dateExpireYear', 'dateExpireMonth', 'dateExpireDay'));
00122 $this->_data['dateExpire'] = $this->_data['dateExpireYear'] . '-' . $this->_data['dateExpireMonth'] . '-' . $this->_data['dateExpireDay'];
00123
00124 }
00125
00129 function execute() {
00130 $announcementDao = &DAORegistry::getDAO('AnnouncementDAO');
00131 $journal = &Request::getJournal();
00132
00133 if (isset($this->announcementId)) {
00134 $announcement = &$announcementDao->getAnnouncement($this->announcementId);
00135 }
00136
00137 if (!isset($announcement)) {
00138 $announcement = &new Announcement();
00139 }
00140
00141 $announcement->setJournalId($journal->getJournalId());
00142 $announcement->setTitle($this->getData('title'), null);
00143 $announcement->setDescriptionShort($this->getData('descriptionShort'), null);
00144 $announcement->setDescription($this->getData('description'), null);
00145
00146 if ($this->getData('typeId') != null) {
00147 $announcement->setTypeId($this->getData('typeId'));
00148 } else {
00149 $announcement->setTypeId(null);
00150 }
00151
00152 if ($this->getData('dateExpireYear') != null) {
00153 $announcement->setDateExpire($this->getData('dateExpireYear') . '-' . $this->getData('dateExpireMonth') . '-' . $this->getData('dateExpireDay'));
00154 } else {
00155 $announcement->setDateExpire(null);
00156 }
00157
00158
00159 if ($announcement->getAnnouncementId() != null) {
00160 $announcementDao->updateAnnouncement($announcement);
00161 } else {
00162 $announcement->setDatetimePosted(Core::getCurrentDate());
00163 $announcementDao->insertAnnouncement($announcement);
00164 }
00165 }
00166 }
00167
00168 ?>