00001 <?php
00018
00019
00020
00021 define('SITE_MIN_PASSWORD_LENGTH', 4);
00022 import('form.Form');
00023
00024 class SiteSettingsForm extends Form {
00025
00029 function SiteSettingsForm() {
00030 parent::Form('admin/settings.tpl');
00031
00032
00033 $this->addCheck(new FormValidatorLocale($this, 'title', 'required', 'admin.settings.form.titleRequired'));
00034 $this->addCheck(new FormValidatorLocale($this, 'contactName', 'required', 'admin.settings.form.contactNameRequired'));
00035 $this->addCheck(new FormValidatorLocaleEmail($this, 'contactEmail', 'required', 'admin.settings.form.contactEmailRequired'));
00036 $this->addCheck(new FormValidatorCustom($this, 'minPasswordLength', 'required', 'admin.settings.form.minPasswordLengthRequired', create_function('$l', sprintf('return $l >= %d;', SITE_MIN_PASSWORD_LENGTH))));
00037 $this->addCheck(new FormValidatorPost($this));
00038 }
00039
00040 function getLocaleFieldNames() {
00041 $siteDao =& DAORegistry::getDAO('SiteDAO');
00042 return $siteDao->getLocaleFieldNames();
00043 }
00044
00048 function display() {
00049 $site =& Request::getSite();
00050 $publicFileManager =& new PublicFileManager();
00051 $siteStyleFilename = $publicFileManager->getSiteFilesPath() . '/' . $site->getSiteStyleFilename();
00052 $journalDao = &DAORegistry::getDAO('JournalDAO');
00053 $journals = &$journalDao->getJournalTitles();
00054 $templateMgr = &TemplateManager::getManager();
00055 $templateMgr->assign('redirectOptions', $journals);
00056 $templateMgr->assign('originalStyleFilename', $site->getOriginalStyleFilename());
00057 $templateMgr->assign('pageHeaderTitleImage', $site->getData('pageHeaderTitleImage'));
00058 $templateMgr->assign('styleFilename', $site->getSiteStyleFilename());
00059 $templateMgr->assign('publicFilesDir', Request::getBasePath() . '/' . $publicFileManager->getSiteFilesPath());
00060 $templateMgr->assign('dateStyleFileUploaded', file_exists($siteStyleFilename)?filemtime($siteStyleFilename):null);
00061 $templateMgr->assign('siteStyleFileExists', file_exists($siteStyleFilename));
00062 $templateMgr->assign('helpTopicId', 'site.siteManagement');
00063 parent::display();
00064 }
00065
00069 function initData() {
00070 $siteDao = &DAORegistry::getDAO('SiteDAO');
00071 $site = &$siteDao->getSite();
00072
00073 $this->_data = array(
00074 'title' => $site->getTitle(null),
00075 'intro' => $site->getIntro(null),
00076 'redirect' => $site->getJournalRedirect(),
00077 'about' => $site->getAbout(null),
00078 'contactName' => $site->getContactName(null),
00079 'contactEmail' => $site->getContactEmail(null),
00080 'minPasswordLength' => $site->getMinPasswordLength(),
00081 'pageHeaderTitleType' => $site->getPageHeaderTitleType(null)
00082 );
00083 }
00084
00088 function readInputData() {
00089 $this->readUserVars(
00090 array('pageHeaderTitleType', 'title', 'intro', 'about', 'redirect', 'contactName', 'contactEmail', 'minPasswordLength', 'pageHeaderTitleImageAltText')
00091 );
00092 }
00093
00097 function execute() {
00098 $siteDao = &DAORegistry::getDAO('SiteDAO');
00099 $site = &$siteDao->getSite();
00100
00101 $site->setTitle($this->getData('title'), null);
00102 $site->setIntro($this->getData('intro'), null);
00103 $site->setAbout($this->getData('about'), null);
00104 $site->setJournalRedirect($this->getData('redirect'));
00105 $site->setContactName($this->getData('contactName'), null);
00106 $site->setContactEmail($this->getData('contactEmail'), null);
00107 $site->setMinPasswordLength($this->getData('minPasswordLength'));
00108 $site->setPageHeaderTitleType($this->getData('pageHeaderTitleType'), null);
00109
00110 $setting = $site->getData('pageHeaderTitleImage');
00111 if (!empty($setting)) {
00112 $imageAltText = $this->getData('pageHeaderTitleImageAltText');
00113 $locale = $this->getFormLocale();
00114 $setting[$locale]['altText'] = $imageAltText[$locale];
00115 $site->setData('pageHeaderTitleImage', $setting);
00116 }
00117
00118 $siteDao->updateSite($site);
00119 }
00120
00124 function uploadSiteStyleSheet() {
00125 import('file.PublicFileManager');
00126 $fileManager = &new PublicFileManager();
00127 $site =& Request::getSite();
00128 if ($fileManager->uploadedFileExists('siteStyleSheet')) {
00129 $type = $fileManager->getUploadedFileType('siteStyleSheet');
00130 if ($type != 'text/plain' && $type != 'text/css') {
00131 return false;
00132 }
00133
00134 $uploadName = $site->getSiteStyleFilename();
00135 if($fileManager->uploadSiteFile('siteStyleSheet', $uploadName)) {
00136 $siteDao =& DAORegistry::getDAO('SiteDAO');
00137 $site->setOriginalStyleFilename($fileManager->getUploadedFileName('siteStyleSheet'));
00138 $siteDao->updateSite($site);
00139 }
00140 }
00141
00142 return true;
00143 }
00144
00148 function uploadPageHeaderTitleImage($locale) {
00149 import('file.PublicFileManager');
00150 $fileManager = &new PublicFileManager();
00151 $site =& Request::getSite();
00152 if ($fileManager->uploadedFileExists('pageHeaderTitleImage')) {
00153 $type = $fileManager->getUploadedFileType('pageHeaderTitleImage');
00154 $extension = $fileManager->getImageExtension($type);
00155 if (!$extension) return false;
00156
00157 $uploadName = 'pageHeaderTitleImage_' . $locale . $extension;
00158 if($fileManager->uploadSiteFile('pageHeaderTitleImage', $uploadName)) {
00159 $siteDao =& DAORegistry::getDAO('SiteDAO');
00160 $setting = $site->getData('pageHeaderTitleImage');
00161 list($width, $height) = getimagesize($fileManager->getSiteFilesPath() . '/' . $uploadName);
00162 $setting[$locale] = array(
00163 'originalFilename' => $fileManager->getUploadedFileName('pageHeaderTitleImage'),
00164 'width' => $width,
00165 'height' => $height,
00166 'uploadName' => $uploadName,
00167 'dateUploaded' => Core::getCurrentDate()
00168 );
00169 $siteDao =& DAORegistry::getDAO('SiteDAO');
00170 $site->setData('pageHeaderTitleImage', $setting);
00171 $siteDao->updateSite($site);
00172 }
00173 }
00174
00175 return true;
00176 }
00177 }
00178
00179 ?>