git-svn-id: https://192.168.0.254/svn/Proyectos.ConstruccionesCNJ_Web/trunk@5 a1d75475-e439-6a4c-b115-a3aab481e8ec
272 lines
8.0 KiB
PHP
272 lines
8.0 KiB
PHP
<?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.
|
|
*/
|
|
/**
|
|
* @package Rewrite
|
|
* @subpackage Parsers
|
|
* @version $Revision: 15818 $
|
|
* @author Douglas Cau <douglas@cau.se>
|
|
*/
|
|
|
|
/* Required class */
|
|
GalleryCoreApi::requireOnce('modules/rewrite/classes/RewriteParser.class');
|
|
|
|
/* Status codes used by the Apache mod_rewrite parser */
|
|
define('REWRITE_STATUS_APACHE_NO_MOD_REWRITE', 11);
|
|
define('REWRITE_STATUS_APACHE_UNABLE_TO_TEST', 12);
|
|
define('REWRITE_STATUS_HTACCESS_MISSING', 13);
|
|
define('REWRITE_STATUS_HTACCESS_CANT_READ', 14);
|
|
define('REWRITE_STATUS_HTACCESS_CANT_WRITE', 15);
|
|
define('REWRITE_STATUS_EMBED_HTACCESS_MISSING', 16);
|
|
define('REWRITE_STATUS_EMBED_HTACCESS_CANT_READ', 17);
|
|
define('REWRITE_STATUS_EMBED_HTACCESS_CANT_WRITE', 18);
|
|
|
|
/**
|
|
* This URL rewrite parser provides Apache mod_rewrite support for short URLs.
|
|
*
|
|
* http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
|
|
*/
|
|
class ModRewriteParser extends RewriteParser {
|
|
|
|
function ModRewriteParser() {
|
|
$this->_setParserId('modrewrite');
|
|
$this->_setParserType('preGallery');
|
|
$this->_setUrlGeneratorId('ModRewriteUrlGenerator');
|
|
}
|
|
|
|
/**
|
|
* @see RewriteParser::saveActiveRules
|
|
*/
|
|
function saveActiveRules($activeRules=null, $upgradeModule=null) {
|
|
GalleryCoreApi::requireOnce(
|
|
'modules/rewrite/classes/parsers/modrewrite/ModRewriteHelper.class');
|
|
return ModRewriteHelper::saveActiveRules($this, $activeRules, $upgradeModule);
|
|
}
|
|
|
|
/**
|
|
* @see RewriteParser::saveAccessList
|
|
*/
|
|
function saveAccessList($accessList, $allowEmptyReferer) {
|
|
GalleryCoreApi::requireOnce(
|
|
'modules/rewrite/classes/parsers/modrewrite/ModRewriteHelper.class');
|
|
return ModRewriteHelper::saveAccessList($accessList, $allowEmptyReferer);
|
|
}
|
|
|
|
/**
|
|
* @see RewriteParser::needsConfiguration
|
|
*/
|
|
function needsConfiguration() {
|
|
GalleryCoreApi::requireOnce(
|
|
'modules/rewrite/classes/parsers/modrewrite/ModRewriteHelper.class');
|
|
return ModRewriteHelper::needsConfiguration();
|
|
}
|
|
|
|
/**
|
|
* @see RewriteParser::getErrorMessage
|
|
*/
|
|
function getErrorMessage($code, $rewriteModule=null) {
|
|
if (!isset($rewriteModule)) {
|
|
list($ret, $rewriteModule) = GalleryCoreApi::loadPlugin('module', 'rewrite');
|
|
if ($ret) {
|
|
return array($ret, null);
|
|
}
|
|
}
|
|
|
|
list ($ret, $message) = parent::getErrorMessage($code, $rewriteModule);
|
|
if ($ret) {
|
|
return array($ret, null);
|
|
}
|
|
|
|
if (!isset($message)) {
|
|
switch ($code) {
|
|
case REWRITE_STATUS_HTACCESS_CANT_READ:
|
|
$message = $rewriteModule->translate('Cannot read the .htaccess file');
|
|
break;
|
|
case REWRITE_STATUS_HTACCESS_CANT_WRITE:
|
|
$message = $rewriteModule->translate('Cannot write to the .htaccess file');
|
|
break;
|
|
case REWRITE_STATUS_HTACCESS_MISSING:
|
|
$message = $rewriteModule->translate('Cannot write to the .htaccess file, ' .
|
|
'please create it.');
|
|
break;
|
|
case REWRITE_STATUS_EMBED_HTACCESS_CANT_READ:
|
|
$message = $rewriteModule->translate('Cannot read the embedded .htaccess file');
|
|
break;
|
|
case REWRITE_STATUS_EMBED_HTACCESS_CANT_WRITE:
|
|
$message = $rewriteModule->translate('Cannot write to the embedded .htaccess file');
|
|
break;
|
|
case REWRITE_STATUS_EMBED_HTACCESS_MISSING:
|
|
$message = $rewriteModule->translate('Cannot write to the embedded .htaccess ' .
|
|
'file, please create it.');
|
|
break;
|
|
default:
|
|
return array(GalleryCoreApi::error(ERROR_BAD_PARAMETER), null);
|
|
}
|
|
}
|
|
|
|
return array(null, $message);
|
|
}
|
|
|
|
/**
|
|
* @see RewriteParser::loadTestResultsTemplate
|
|
*/
|
|
function loadTestResultsTemplate(&$template, &$form) {
|
|
GalleryCoreApi::requireOnce(
|
|
'modules/rewrite/classes/parsers/modrewrite/ModRewriteHelper.class');
|
|
return ModRewriteHelper::loadTestResultsTemplate($template, $form);
|
|
}
|
|
|
|
/**
|
|
* @see RewriteParser::handleTestResultsRequest
|
|
*/
|
|
function handleTestResultsRequest($form) {
|
|
$error = $status = array();
|
|
|
|
$ret = GalleryCoreApi::assertUserIsSiteAdministrator();
|
|
if ($ret) {
|
|
return array($ret, null, null);
|
|
}
|
|
|
|
if (isset($form['force']['test1'])) {
|
|
$ret = GalleryCoreApi::setPluginParameter('module', 'rewrite',
|
|
'modrewrite.status', serialize(array('needOptions' => false, 'forced' => 1)));
|
|
if ($ret) {
|
|
return array($ret, null, null);
|
|
}
|
|
}
|
|
|
|
if (isset($form['force']['test2'])) {
|
|
$ret = GalleryCoreApi::setPluginParameter('module', 'rewrite',
|
|
'modrewrite.status', serialize(array('needOptions' => true, 'forced' => 1)));
|
|
if ($ret) {
|
|
return array($ret, null, null);
|
|
}
|
|
}
|
|
|
|
$status['saved'] = 1;
|
|
return array(null, $error, $status);
|
|
}
|
|
|
|
/**
|
|
* @see RewriteParser::loadAdminParserTemplate
|
|
*/
|
|
function loadAdminParserTemplate(&$template, &$form) {
|
|
GalleryCoreApi::requireOnce(
|
|
'modules/rewrite/classes/parsers/modrewrite/ModRewriteHelper.class');
|
|
return ModRewriteHelper::loadAdminRewriteTemplate($template, $form);
|
|
}
|
|
|
|
/**
|
|
* @see RewriteParser::handleAdminParserRequest
|
|
*/
|
|
function handleAdminParserRequest($form) {
|
|
$error = $status = array();
|
|
|
|
GalleryCoreApi::requireOnce(
|
|
'modules/rewrite/classes/parsers/modrewrite/ModRewriteHelper.class');
|
|
|
|
$ret = GalleryCoreApi::assertUserIsSiteAdministrator();
|
|
if ($ret) {
|
|
return array($ret, null, null);
|
|
}
|
|
|
|
/* We can only save the embedded .htaccess in embedded mode */
|
|
if (!GalleryUtilities::isEmbedded()) {
|
|
return array(GalleryCoreApi::error(ERROR_UNSUPPORTED_OPERATION),
|
|
null, null);
|
|
}
|
|
|
|
if (empty($form['embeddedLocation']) || empty($form['embeddedHtaccess'])) {
|
|
$error[] = 'form[error][' . REWRITE_STATUS_EMPTY_VALUE . ']';
|
|
return array(null, $error, $status);
|
|
}
|
|
|
|
list ($ret, $code) = ModRewriteHelper::saveEmbedConfig(
|
|
array('embeddedLocation' => $form['embeddedLocation'],
|
|
'embeddedHtaccess' => $form['embeddedHtaccess']),
|
|
$this,
|
|
GalleryUtilities::getRequestVariables('controller') != 'SetupRewriteController');
|
|
if ($ret) {
|
|
return array($ret, null, null);
|
|
}
|
|
|
|
if ($code == REWRITE_STATUS_OK) {
|
|
$status['saved'] = 1;
|
|
} else {
|
|
$error[] = 'form[error][' . $code . ']';
|
|
}
|
|
|
|
return array(null, $error, $status);
|
|
}
|
|
|
|
/**
|
|
* @see RewriteParser::needsEmbedConfig
|
|
*/
|
|
function needsEmbedConfig() {
|
|
foreach (array('embeddedLocation', 'embeddedHtaccess') as $key) {
|
|
list ($ret, $value) = GalleryCoreApi::getPluginParameter('module', 'rewrite',
|
|
'modrewrite.' . $key);
|
|
if ($ret) {
|
|
return array($ret, null);
|
|
}
|
|
|
|
if (empty($value)) {
|
|
return array(null, true);
|
|
}
|
|
}
|
|
|
|
return array(null, false);
|
|
}
|
|
|
|
/**
|
|
* @see RewriteParser::fetchEmbedConfig
|
|
*/
|
|
function fetchEmbedConfig() {
|
|
$config = array();
|
|
foreach (array('embeddedLocation', 'embeddedHtaccess') as $key) {
|
|
list ($ret, $value) = GalleryCoreApi::getPluginParameter('module', 'rewrite',
|
|
'modrewrite.' . $key);
|
|
if ($ret) {
|
|
return array($ret, null);
|
|
}
|
|
|
|
$config[$key] = $value;
|
|
}
|
|
|
|
return array(null, $config);
|
|
}
|
|
|
|
/**
|
|
* @see RewriteParser::fetchEmbedConfig
|
|
*/
|
|
function saveEmbedConfig($param) {
|
|
GalleryCoreApi::requireOnce(
|
|
'modules/rewrite/classes/parsers/modrewrite/ModRewriteHelper.class');
|
|
|
|
list ($ret, $code) = ModRewriteHelper::saveEmbedConfig($param, $this, true);
|
|
if ($ret) {
|
|
return array($ret, null, null);
|
|
}
|
|
|
|
return array(null, $code,
|
|
($code != REWRITE_STATUS_OK) ? $this->getErrorMessage($code) : null);
|
|
}
|
|
}
|
|
?>
|