git-svn-id: https://192.168.0.254/svn/Proyectos.ConstruccionesCNJ_Web/trunk@5 a1d75475-e439-6a4c-b115-a3aab481e8ec
266 lines
7.8 KiB
Plaintext
266 lines
7.8 KiB
Plaintext
<?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.
|
|
*/
|
|
|
|
/**
|
|
* A helper class for the URL Rewrite module
|
|
* @package Rewrite
|
|
* @subpackage Classes
|
|
* @author Douglas Cau <douglas@cau.se>
|
|
* @version $Revision: 15513 $
|
|
*/
|
|
class RewriteApi {
|
|
|
|
/**
|
|
* If this is set an error has occured where we couldn't report it.
|
|
*
|
|
* @var object GalleryStatus a status code
|
|
*/
|
|
var $_error;
|
|
|
|
/**
|
|
* Holds the active parser.
|
|
*
|
|
* @var object RewriteParser active parser
|
|
*/
|
|
var $_parser;
|
|
|
|
function RewriteApi() {
|
|
GalleryCoreApi::requireOnce('modules/rewrite/classes/RewriteHelper.class');
|
|
list ($ret, $this->_parser) = RewriteHelper::getRewriteParser();
|
|
if ($ret) {
|
|
$this->_error = $ret;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* When using this API you should first make sure that your code is compatible with it.
|
|
*
|
|
* @param array $version major, minor version
|
|
* @return array object GalleryStatus a status code
|
|
* boolean true if compatible with given version
|
|
*/
|
|
function isCompatibleWithApi($version) {
|
|
if (isset($this->_error)) {
|
|
return array($this->_error, null);
|
|
}
|
|
|
|
return array(null, GalleryUtilities::isCompatibleWithApi($version, $this->getApiVersion()));
|
|
}
|
|
|
|
/**
|
|
* Embedded configuration
|
|
*
|
|
* All embedded-related functions need to be called while Gallery is in embedded mode.
|
|
*/
|
|
|
|
/**
|
|
* Checks if the parser needs configuration.
|
|
*
|
|
* @return array object GalleryStatus a status code
|
|
* boolean true if configuration is needed
|
|
*/
|
|
function needsEmbedConfig() {
|
|
if (isset($this->_error)) {
|
|
return array($this->_error, null);
|
|
}
|
|
|
|
if (!GalleryUtilities::isEmbedded()) {
|
|
return array(GalleryCoreApi::error(ERROR_UNSUPPORTED_OPERATION, __FILE__, __LINE__,
|
|
'use in embedded mode'), null);
|
|
}
|
|
|
|
list ($ret, $status) = $this->_parser->needsEmbedConfig();
|
|
if ($ret) {
|
|
return array($ret, null);
|
|
}
|
|
|
|
return array(null, $status);
|
|
}
|
|
|
|
/**
|
|
* Returns the current active configuration values.
|
|
*
|
|
* @return array object GalleryStatus a status code
|
|
* array configuration settings (key => value)
|
|
*/
|
|
function fetchEmbedConfig() {
|
|
if (isset($this->_error)) {
|
|
return array($this->_error, null);
|
|
}
|
|
|
|
if (!GalleryUtilities::isEmbedded()) {
|
|
return array(GalleryCoreApi::error(ERROR_UNSUPPORTED_OPERATION, __FILE__, __LINE__,
|
|
'use in embedded mode'), null);
|
|
}
|
|
|
|
list ($ret, $config) = $this->_parser->fetchEmbedConfig();
|
|
if ($ret) {
|
|
return array($ret, null);
|
|
}
|
|
|
|
return array(null, $config);
|
|
}
|
|
|
|
/**
|
|
* Saves the configuration.
|
|
*
|
|
* @param array $params settings to save (key => value)
|
|
* @return array object GalleryStatus a status code
|
|
* int Rewrite Status code
|
|
* string translated error message
|
|
*/
|
|
function saveEmbedConfig($params) {
|
|
if (isset($this->_error)) {
|
|
return array($this->_error, null, null);
|
|
}
|
|
|
|
if (!GalleryUtilities::isEmbedded()) {
|
|
return array(GalleryCoreApi::error(ERROR_UNSUPPORTED_OPERATION, __FILE__, __LINE__,
|
|
'use in embedded mode'), null, null);
|
|
}
|
|
|
|
list ($ret, $status, $errstr) = $this->_parser->saveEmbedConfig($params);
|
|
if ($ret) {
|
|
return array($ret, null, null);
|
|
}
|
|
|
|
return array(null, $status, $errstr);
|
|
}
|
|
|
|
/**
|
|
* Fetch the active rewrite rules for a specific module which can be inactive at the time of
|
|
* this call.
|
|
* @param string $moduleId id of the module
|
|
* @return array object GalleryStatus a status code
|
|
* array $ruleIds list of the active rewrite rule ids
|
|
*/
|
|
function fetchActiveRulesForModule($moduleId) {
|
|
list ($ret, $activeRules) =
|
|
GalleryCoreApi::getPluginParameter('module', 'rewrite', 'activeRules');
|
|
if ($ret) {
|
|
return array($ret, null);
|
|
}
|
|
$activeRules = unserialize($activeRules);
|
|
|
|
if (isset($activeRules[$moduleId])) {
|
|
return array(null, array_keys($activeRules[$moduleId]));
|
|
}
|
|
|
|
GalleryCoreApi::requireOnce('modules/rewrite/classes/RewriteHelper.class');
|
|
list ($ret, $history) = RewriteHelper::getHistoryForModule($moduleId);
|
|
if ($ret) {
|
|
return array($ret, null);
|
|
}
|
|
|
|
return array(null, array_keys($history));
|
|
}
|
|
|
|
/**
|
|
* Activate the rewrite rules for a specific module which can be inactive at the time of this
|
|
* call. Does not update active rules by default, only changes the list of active rules for the
|
|
* given module.
|
|
* @param string $moduleId id of the module
|
|
* @param array $ruleIds (optional) list of rule ids to activate. If omitted, all rules get
|
|
* activated
|
|
* @param bool $replacePatterns (optional) whether to replace active rules and patterns from
|
|
* the pattern history or to replace them. Defaults to false.
|
|
* @return array object GalleryStatus a status code
|
|
* boolean true if the operation was successful, false if not (e.g. if the
|
|
* .htaccess could not be written or if the rules are invalid)
|
|
*/
|
|
function activateRewriteRulesForModule($moduleId, $ruleIds=null, $replacePatterns=false) {
|
|
list ($ret, $module) = GalleryCoreApi::loadPlugin('module', $moduleId, true);
|
|
if ($ret) {
|
|
return array($ret, null);
|
|
}
|
|
|
|
list ($ret, $activeRules) =
|
|
GalleryCoreApi::getPluginParameter('module', 'rewrite', 'activeRules');
|
|
if ($ret) {
|
|
return array($ret, null);
|
|
}
|
|
$activeRules = unserialize($activeRules);
|
|
|
|
GalleryCoreApi::requireOnce('modules/rewrite/classes/RewriteHelper.class');
|
|
list ($ret, $history) = RewriteHelper::getHistoryForModule($moduleId);
|
|
if ($ret) {
|
|
return array($ret, null);
|
|
}
|
|
|
|
$rules = $module->getRewriteRules();
|
|
foreach ($rules as $ruleId => $rule) {
|
|
if ((!isset($activeRules[$moduleId][$ruleId]) || $replacePatterns)
|
|
&& (!isset($ruleIds) || in_array($ruleId, $ruleIds))) {
|
|
$activeRule = array();
|
|
if (isset($rule['pattern'])) {
|
|
$activeRule['pattern'] = $rule['pattern'];
|
|
if (!$replacePatterns && isset($activeRules[$moduleId][$ruleId]['pattern'])) {
|
|
$activeRule['pattern'] = $activeRules[$moduleId][$ruleId]['pattern'];
|
|
}
|
|
if (!$replacePatterns && isset($history[$ruleId]['pattern'])) {
|
|
$activeRule['pattern'] = $history[$ruleId]['pattern'];
|
|
}
|
|
}
|
|
$activeRules[$moduleId][$ruleId] = $activeRule;
|
|
unset($history[$ruleId]);
|
|
}
|
|
}
|
|
|
|
list ($ret, $code, $errorId) = $this->_parser->saveActiveRules($activeRules, $module);
|
|
if ($ret) {
|
|
return array($ret, null);
|
|
}
|
|
|
|
/* Update the history */
|
|
if ($code == REWRITE_STATUS_OK) {
|
|
$ret = RewriteHelper::setHistoryForModule($moduleId, $history);
|
|
if ($ret) {
|
|
return array($ret, null);
|
|
}
|
|
}
|
|
|
|
return array(null, $code == REWRITE_STATUS_OK);
|
|
}
|
|
|
|
/* Getters below */
|
|
|
|
/**
|
|
* @return array api version
|
|
*/
|
|
function getApiVersion() {
|
|
return array(1, 1);
|
|
}
|
|
|
|
/**
|
|
* @return string parser id
|
|
*/
|
|
function getParserId() {
|
|
return $this->_parser->getParserId();
|
|
}
|
|
|
|
/**
|
|
* @return string parser type
|
|
*/
|
|
function getParserType() {
|
|
return $this->_parser->getParserType();
|
|
}
|
|
}
|
|
?>
|