*/ /** * This controller will handle the setting of several general Gallery options * * @package GalleryCore * @subpackage UserInterface */ class AdminCoreController extends GalleryController { /** * @see GalleryController::handleRequest */ function handleRequest($form) { global $gallery; $ret = GalleryCoreApi::assertUserIsSiteAdministrator(); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null); } /* Get the list of legal local server dirs */ list ($ret, $localServerDirs) = GalleryCoreApi::getPluginParameter('module', 'core', 'uploadLocalServer.dirs'); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null); } $localServerDirList = split(',', $localServerDirs); $error = array(); $status = array(); $canSave = false; if (isset($form['action']['save'])) { $canSave = true; } else if (isset($form['action']['addUploadLocalServerDir'])) { $path = $form['uploadLocalServer']['newDir']; $platform = $gallery->getPlatform(); if (empty($path)) { $error[] = 'form[error][uploadLocalServer][newDir][missing]'; } else if ($platform->isRestrictedByOpenBasedir($path)) { $error[] = 'form[error][uploadLocalServer][newDir][restrictedByOpenBasedir]'; } else if (!$platform->is_readable($path)) { $error[] = 'form[error][uploadLocalServer][newDir][notReadable]'; } else if (!$platform->is_dir($path)) { $error[] = 'form[error][uploadLocalServer][newDir][notADirectory]'; } if (empty($error)) { if (!in_array($path, $localServerDirList)) { $localServerDirList[] = $path; } for ($i = 0; $i < sizeof($localServerDirList); $i++) { if (empty($localServerDirList[$i])) { unset($localServerDirList[$i]); } } $ret = GalleryCoreApi::setPluginParameter( 'module', 'core', 'uploadLocalServer.dirs', join(',', $localServerDirList)); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null); } $canSave = true; $status['addedDir'] = 1; $redirect['view'] = 'core:SiteAdmin'; $redirect['subView'] = 'core:AdminCore'; } else { } } else if (isset($form['action']['removeUploadLocalServerDir'])) { if (!empty($form['uploadLocalServer']['selectedDir'])) { $path = $form['uploadLocalServer']['selectedDir']; $flip = array_flip($localServerDirList); if (isset($flip[$path])) { unset($flip[$path]); } $localServerDirList = array_flip($flip); for ($i = 0; $i < sizeof($localServerDirList); $i++) { if (empty($localServerDirList[$i])) { unset($localServerDirList[$i]); } } $ret = GalleryCoreApi::setPluginParameter( 'module', 'core', 'uploadLocalServer.dirs', join(',', $localServerDirList)); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null); } $status['removedDir'] = 1; $redirect['view'] = 'core:SiteAdmin'; $redirect['subView'] = 'core:AdminCore'; } else { $error[] = 'form[error][uploadLocalServer][selectedDir][missing]'; } } if ($canSave) { foreach (array('permissions.directory', 'permissions.file', 'exec.expectedStatus', 'default.orderBy', 'default.orderDirection', 'default.layout', 'default.theme', 'default.language', 'language.selector', 'session.lifetime', 'session.inactivityTimeout', 'misc.useShortUrls', 'misc.markup', 'misc.login', 'smtp.host', 'smtp.from', 'smtp.username', 'lock.system') as $key) { list ($outer, $inner) = explode('.', $key); if (isset($form[$outer][$inner])) { $ret = GalleryCoreApi::setPluginParameter( 'module', 'core', $key, $form[$outer][$inner]); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null); } } } if (isset($form['smtp']['password'])) { $ret = GalleryCoreApi::setPluginParameter('module', 'core', 'smtp.password', base64_encode($form['smtp']['password'])); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null); } } $status['saved'] = 1; $redirect['view'] = 'core:SiteAdmin'; $redirect['subView'] = 'core:AdminCore'; } if (!empty($redirect)) { $results['redirect'] = $redirect; } else { $results['delegate']['view'] = 'core:SiteAdmin'; $results['delegate']['subView'] = 'core:AdminCore'; } $results['status'] = $status; $results['error'] = $error; return array(GalleryStatus::success(), $results); } } /** * This view will prompt for general Gallery settings * * @package GalleryCore * @subpackage UserInterface */ class AdminCoreView extends GalleryView { /** * @see GalleryView::loadTemplate */ function loadTemplate(&$template, &$form) { global $gallery; $ret = GalleryCoreApi::assertUserIsSiteAdministrator(); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null); } if ($form['formName'] != 'AdminCore') { /* Load up our form data */ foreach (array('permissions.directory', 'permissions.file', 'exec.expectedStatus', 'default.language', 'language.selector', 'session.lifetime', 'session.inactivityTimeout', 'misc.useShortUrls', 'misc.markup', 'misc.login', 'smtp.host', 'smtp.from', 'smtp.username', 'smtp.password', 'lock.system') as $key) { list ($ret, $value) = GalleryCoreApi::getPluginParameter('module', 'core', $key); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null); } list ($outer, $inner) = explode('.', $key); $form[$outer][$inner] = $value; } $form['formName'] = 'AdminCore'; $form['uploadLocalServer']['newDir'] = ''; } list ($ret, $module) = GalleryCoreApi::loadPlugin('module', 'core'); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null); } /* Get the list of legal local server dirs */ list ($ret, $localServerDirs) = GalleryCoreApi::getPluginParameter('module', 'core', 'uploadLocalServer.dirs'); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null); } $localServerDirList = split(',', $localServerDirs); for ($i = 0; $i < sizeof($localServerDirList); $i++) { if (empty($localServerDirList[$i])) { unset($localServerDirList[$i]); } } $platform = $gallery->getPlatform(); /* Set up our language selection list */ list ($ret, $module) = GalleryCoreApi::loadPlugin('module', 'core'); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null); } $languageList = array(); $languageList[''] = $module->translate('« None »'); $translator =& $gallery->getTranslator(); $supportedLanguages = $translator->getSupportedLanguages(); foreach ($supportedLanguages as $language => $countryList) { foreach ($countryList as $country => $languageData) { $languageList[$language . '_' . $country] = $languageData['description']; } } $languageSelectorList = array( 'none' => $module->translate('None'), 'guest' => $module->translate('Guest User Only'), 'all' => $module->translate('Everybody') ); /* Set up our session time lists */ $sessionTimeLists = array(); foreach (array(15, 30, 45) as $minutes) { $sessionTimeList[$minutes * 60] = $module->translate(array('one' => '%d minute', 'many' => '%d minutes', 'count' => $minutes, 'arg1' => $minutes)); } foreach (array(1, 6, 12) as $hours) { $sessionTimeList[$hours * 3600] = $module->translate(array('one' => '%d hour', 'many' => '%d hours', 'count' => $hours, 'arg1' => $hours)); } foreach (array(1, 2, 3, 4, 5, 6) as $days) { $sessionTimeList[$days * 86400] = $module->translate(array('one' => '%d day', 'many' => '%d days', 'count' => $days, 'arg1' => $days)); } foreach (array(1, 2, 3) as $weeks) { $sessionTimeList[$weeks * 7 * 86400] = $module->translate(array('one' => '%d week', 'many' => '%d weeks', 'count' => $weeks, 'arg1' => $weeks)); } $sessionTimeList[25 * 365 * 86400] = $module->translate('forever'); /* Set up our permission selection lists */ $permissionsDirectoryList = array('700', '750', '755', '770', '775', '777'); $permissionsFileList = array('600', '640', '644', '660', '664', '666'); /* Miscellaneous lists */ $loginMethod = array('link' => $module->translate('Link to Login Page'), 'form' => $module->translate('Form on Sidebar'), 'both' => $module->translate('Both')); $useShortUrlsList = array('true' => $module->translate('yes'), 'false' => $module->translate('no')); $embeddedMarkupList = array('none' => $module->translate('No Markup'), 'bbcode' => $module->translate('BBCode'), 'html' => $module->translate('Raw HTML')); $lockSystemList = array('database' => $module->translate('Database'), 'flock' => $module->translate('File')); list ($ret, $rootId) = GalleryCoreApi::getPluginParameter('module', 'core', 'id.rootAlbum'); if ($ret->isError()) { return array($ret->wrap(__FILE__, __LINE__), null); } $AdminCore = array(); $AdminCore['localServerDirList'] = $localServerDirList; $AdminCore['languageList'] = $languageList; $AdminCore['languageSelectorList'] = $languageSelectorList; $AdminCore['translationsSupported'] = $translator->canTranslate(); $AdminCore['permissionsDirectoryList'] = $permissionsDirectoryList; $AdminCore['permissionsFileList'] = $permissionsFileList; $AdminCore['sessionTimeList'] = $sessionTimeList; $AdminCore['loginMethod'] = $loginMethod; $AdminCore['useShortUrlsList'] = $useShortUrlsList; $AdminCore['embeddedMarkupList'] = $embeddedMarkupList; $AdminCore['shortUrlTestItemId'] = $rootId; $AdminCore['lockSystemList'] = $lockSystemList; $template->setVariable('controller', 'core:AdminCore'); $template->setVariable('AdminCore', $AdminCore); return array(GalleryStatus::success(), array('body' => 'modules/core/templates/AdminCore.tpl')); } } ?>