Sindbad~EG File Manager
<?php
/*
* Gallery - a web based photo album viewer and editor
* Copyright (C) 2000-2007 Bharat Mediratta
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
/**
* This controller will handle the setting of several general Gallery options
* @package GalleryCore
* @subpackage UserInterface
* @author Bharat Mediratta <bharat@menalto.com>
* @version $Revision: 15692 $
*/
class AdminCoreController extends GalleryController {
/**
* @see GalleryController::handleRequest
*/
function handleRequest($form) {
global $gallery;
$ret = GalleryCoreApi::assertUserIsSiteAdministrator();
if ($ret) {
return array($ret, null);
}
list ($ret, $param) = GalleryCoreApi::fetchAllPluginParameters('module', 'core');
if ($ret) {
return array($ret, null);
}
$status = $error = array();
$canSave = !empty($form['action']) &&
array_intersect(array_keys($form['action']), array('save', 'emailTest'));
if ($canSave) {
/* Validate inputs */
if (!empty($form['smtp']['from']) &&
!GalleryUtilities::isValidEmailString($form['smtp']['from'])) {
$error[] = 'form[error][smtp][invalidFrom]';
}
/* Verify cookie domain / path */
$urlGenerator =& $gallery->getUrlGenerator();
if (isset($form['cookie']['path'])) {
/* It should either be empty or a substring of the request-URI */
if (!empty($form['cookie']['path'])) {
$paths['cookie'] = $form['cookie']['path'];
$urlComponents = parse_url($urlGenerator->getCurrentUrlDir(true));
$paths['standalone'] = $urlComponents['path'];
$urlComponents = parse_url($urlGenerator->getCurrentUrlDir(false));
$paths['embedded'] = $urlComponents['path'];
foreach ($paths as $key => $value) {
if ($value{strlen($value)-1} != '/') {
$value .= '/';
}
if ($value{0} != '/') {
$value = '/' . $value;
}
$paths[$key] = $value;
}
if (strpos($paths['standalone'], $paths['cookie']) === 0 &&
strpos($paths['embedded'], $paths['cookie']) === 0) {
$form['cookie']['path'] = $paths['cookie'];
} else {
$error[] = 'form[error][cookie][invalidPath]';
}
} else {
$form['cookie']['path']= '';
}
}
if (isset($form['cookie']['domain'])) {
/* It should either be empty or a substring of the request-host */
if (!empty($form['cookie']['domain'])) {
$cookieDomain = $form['cookie']['domain'];
if ($cookieDomain{0} != '.') {
$cookieDomain = '.' . $cookieDomain;
}
$urlComponents = parse_url($urlGenerator->getCurrentUrlDir());
$currentHost = '.' . $urlComponents['host'];
/*
* The cookie domain should be a substring of the host and contain an embedded
* dot
*/
if (strpos($currentHost, $cookieDomain) !== false
&& strpos($cookieDomain, '.', 1)) {
$form['cookie']['domain'] = $cookieDomain;
} else {
$error[] = 'form[error][cookie][invalidDomain]';
}
} else {
$form['cookie']['domain'] = '';
}
}
if (empty($form['language']['useBrowserPref'])) {
$form['language']['useBrowserPref'] = '0';
} else {
$form['language']['useBrowserPref'] = '1';
}
}
if (isset($form['action']['emailTest'])) {
if (empty($form['emailTest']['to']) ||
!GalleryUtilities::isValidEmailString($form['emailTest']['to'])) {
$error[] = 'form[emailTestError][invalidTo]';
} else {
list ($ret, $module) = GalleryCoreApi::loadPlugin('module', 'core');
if ($ret) {
return array($ret, null);
}
}
}
if ($canSave && empty($error)) {
foreach (array('permissions.directory',
'permissions.file',
'exec.beNice',
'exec.expectedStatus',
'default.orderBy',
'default.orderDirection',
'default.theme',
'default.language',
'language.useBrowserPref',
'session.lifetime',
'session.inactivityTimeout',
'misc.markup',
'smtp.host',
'smtp.from',
'smtp.username',
'cookie.path',
'cookie.domain',
'lock.system',
'format.date',
'format.time',
'format.datetime') as $key) {
list ($outer, $inner) = explode('.', $key);
if (isset($form[$outer][$inner])) {
$ret = GalleryCoreApi::setPluginParameter(
'module', 'core', $key, $form[$outer][$inner]);
if ($ret) {
return array($ret, null);
}
}
}
if (isset($form['smtp']['password']) &&
!preg_match('/^\*+/', $form['smtp']['password'])) {
GalleryUtilities::unsanitizeInputValues($form['smtp']['password'], false);
$ret = GalleryCoreApi::setPluginParameter('module', 'core', 'smtp.password',
base64_encode($form['smtp']['password']));
if ($ret) {
return array($ret, null);
}
}
$status['saved'] = 1;
$redirect['view'] = 'core.SiteAdmin';
$redirect['subView'] = 'core.AdminCore';
}
if (isset($form['action']['emailTest']) && empty($error)) {
$gallery->startRecordingDebugSnippet();
ob_start();
$ret = GalleryCoreApi::sendTemplatedEmail(
'modules/core/templates/EmailTest.tpl', array(), null,
$form['emailTest']['to'], $module->translate('Gallery Email Test'));
$output = ob_get_contents();
ob_end_clean();
$debugSnippet = $gallery->stopRecordingDebugSnippet();
if ($ret) {
$status['emailTestError'] = $ret->getAsHtml();
$status['emailTestDebug'] = $output . $debugSnippet;
} else {
$status['emailTestSuccess'] = 1;
}
} else if (isset($form['action']['reset'])) {
/* Redirect back to the same view to reset the form */
$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(null, $results);
}
}
/**
* This view will prompt for general Gallery settings
*/
class AdminCoreView extends GalleryView {
/**
* @see GalleryView::loadTemplate
*/
function loadTemplate(&$template, &$form) {
global $gallery;
$ret = GalleryCoreApi::assertUserIsSiteAdministrator();
if ($ret) {
return array($ret, null);
}
if ($form['formName'] != 'AdminCore') {
/* Load up our form data */
foreach (array('permissions.directory',
'permissions.file',
'exec.beNice',
'exec.expectedStatus',
'default.language',
'language.useBrowserPref',
'session.lifetime',
'session.inactivityTimeout',
'misc.markup',
'smtp.host',
'smtp.from',
'smtp.username',
'smtp.password',
'cookie.path',
'cookie.domain',
'lock.system',
'format.date',
'format.time',
'format.datetime') as $key) {
list ($ret, $value) =
GalleryCoreApi::getPluginParameter('module', 'core', $key);
if ($ret) {
return array($ret, null);
}
list ($outer, $inner) = explode('.', $key);
$form[$outer][$inner] = $value;
}
$form['smtp']['password'] =
str_repeat('*', strlen(base64_decode($form['smtp']['password'])));
$form['formName'] = 'AdminCore';
$form['emailTest']['to'] = '';
}
/* Radio button handling */
$form['language']['useBrowserPref'] = (int)!empty($form['language']['useBrowserPref']);
list ($ret, $module) = GalleryCoreApi::loadPlugin('module', 'core');
if ($ret) {
return array($ret, null);
}
$platform =& $gallery->getPlatform();
$translator =& $gallery->getTranslator();
$AdminCore = $can = array();
if ($translator->canTranslate()) {
$can['translate'] = true;
/* Set up our language selection list */
$AdminCore['languageList'] = array();
$supportedLanguages = $translator->getSupportedLanguages();
foreach ($supportedLanguages as $language => $countryList) {
foreach ($countryList as $country => $languageData) {
$AdminCore['languageList'][$language . '_' . $country] =
$languageData['description'];
}
}
}
/* Set up our session time lists */
$sessionTimeList = 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');
if (GalleryUtilities::isA($platform, 'UnixPlatform')) {
$can['setPermissions'] = true;
/* Set up our permission selection lists */
$AdminCore['permissionsDirectoryList'] =
array('700', '750', '755', '770', '775', '777');
$AdminCore['permissionsFileList'] = array('600', '640', '644', '660', '664', '666');
$can['tweakSystemProcesses'] = true;
$AdminCore['beNiceList'] = array(
'0' => $module->translate('High Priority (Me first!)'),
'1' => $module->translate('Low Priority (I want to share!)'));
}
/* Miscellaneous lists */
$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'));
$AdminCore['can'] = $can;
$AdminCore['sessionTimeList'] = $sessionTimeList;
$AdminCore['embeddedMarkupList'] = $embeddedMarkupList;
$AdminCore['lockSystemList'] = $lockSystemList;
$template->setVariable('controller', 'core.AdminCore');
$template->setVariable('AdminCore', $AdminCore);
$template->javascript('lib/javascript/BlockToggle.js');
return array(null,
array('body' => 'modules/core/templates/AdminCore.tpl'));
}
}
?>
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists