Browse Source

unification des scripts sur spip.php

spip-1.9
Fil 17 years ago
parent
commit
76c294f692
  1. 2
      .gitattributes
  2. 58
      ecrire/inc_utils.php
  3. 16
      ecrire/inc_version.php
  4. 2
      ecrire/index.php
  5. 51
      ecrire/page.php
  6. 4
      ecrire/urls/page.php
  7. 26
      htaccess.txt
  8. 2
      index.php
  9. 8
      spip.php

2
.gitattributes vendored

@ -377,4 +377,4 @@ ecrire/urls/propres-qs.php -text
/puce.gif -text
/puce_rtl.gif -text
/rien.gif -text
/spip_action.php -text
/spip.php -text

58
ecrire/inc_utils.php

@ -476,8 +476,8 @@ function spip_action_cron() {
//
// cron() : execution des taches de fond
// quand il est appele par inc-public.php il n'est pas gourmand;
// quand il est appele par spip_action.php, il est gourmand
// quand il est appele par public.php il n'est pas gourmand;
// quand il est appele par ?action=cron, il est gourmand
function cron ($gourmand=false) {
@ -610,7 +610,7 @@ function find_in_path ($filename, $sinon = NULL, $path='AUTO') {
return $f;
}
}
# spip_log("find_in_path n'a pas vu '$filename' dans $path");
spip_log("find_in_path n'a pas vu '$filename' dans $path");
}
// predicat sur les scripts de ecrire qui n'authentifient pas par cookie
@ -701,20 +701,48 @@ function generer_url_ecrire($script, $args="", $no_entities=false, $rel=false) {
//
// Adresse des scripts publics (a passer dans inc-urls...)
//
function generer_url_public($script, $args="", $no_entities=false) {
// transition : s'agit-il d'un fichier existant ?
$fichier = $script . (ereg('[.]php[3]?$', $script) ? '' : _EXTENSION_PHP);
if (@file_exists(_DIR_RACINE . $fichier))
$action = $fichier;
// sinon utiliser _DIR_RACINE?page=script
// Detecter le fichier de base, a la racine, comme etant spip.php ou ''
// dans le cas de '', un $default = './' peut servir (comme dans urls/page.php)
function get_spip_script($default='') {
if (!defined('_SPIP_SCRIPT')) {
if (lire_fichier(_DIR_RACINE.'index.php', $contenu)
AND preg_match(',spip\.php,', $contenu))
@define('_SPIP_SCRIPT', '');
else
@define('_SPIP_SCRIPT', 'spip.php');
}
if (_SPIP_SCRIPT)
return _SPIP_SCRIPT;
else
$action = '?page=' . $script;
return $default;
}
function generer_url_public($script, $args="", $no_entities=false) {
if (!$script) {
$action = get_spip_script();
} else {
// transition : s'agit-il d'un fichier existant ?
$fichier = $script . (ereg('[.]php[3]?$', $script) ?
'' : _EXTENSION_PHP);
if (@file_exists(_DIR_RACINE . $fichier)) {
$action = $fichier;
}
// sinon utiliser _SPIP_SCRIPT?page=script
else {
$action = get_spip_script() . '?page=' . $script;
}
}
// si le script est une action (spip_pass, spip_****),
// utiliser generer_url_action
if (preg_match(',^spip_(.*),', $script, $regs)
AND $script != 'spip_action.php')
// si le script est une action (spip_pass, spip_inscription),
// utiliser generer_url_action [hack temporaire pour faire
// fonctionner #URL_PAGE{spip_pass} ]
if (preg_match(',^spip_(.*),', $script, $regs))
return generer_url_action($regs[1],$args,true);
if ($args)
@ -729,7 +757,7 @@ function generer_url_public($script, $args="", $no_entities=false) {
function generer_url_action($script, $args="", $no_entities=false) {
return generer_url_public('spip_action.php',
return generer_url_public('',
"action=$script" .($args ? "&$args" : ''),
$no_entities);

16
ecrire/inc_version.php

@ -14,19 +14,18 @@
if (defined("_ECRIRE_INC_VERSION")) return;
define("_ECRIRE_INC_VERSION", "1");
define('_EXTENSION_PHP', '.php3');
@define('_EXTENSION_PHP', '.php3');
# le nom du repertoire ecrire/
define('_DIR_RESTREINT_ABS', 'ecrire/');
@define('_DIR_RESTREINT_ABS', 'ecrire/');
# sommes-nous dans ecrire/ ?
define('_DIR_RESTREINT',
@define('_DIR_RESTREINT',
(!@is_dir(_DIR_RESTREINT_ABS) ? "" : _DIR_RESTREINT_ABS));
# ou inversement ?
define('_DIR_RACINE', _DIR_RESTREINT ? '' : '../');
@define('_DIR_RACINE', _DIR_RESTREINT ? '' : '../');
# le fichier ecrire/mes_options
define('_FILE_OPTIONS', _DIR_RESTREINT . 'mes_options' . _EXTENSION_PHP);
@define('_FILE_OPTIONS', _DIR_RESTREINT . 'mes_options' . _EXTENSION_PHP);
//
@ -60,11 +59,11 @@ $dossier_squelettes = "";
$auto_compress = true;
// Type d'URLs
// 'page': page.php3?fond=article&id_article=123
// 'standard': article.php3?id_article=123
// 'page': ?article=123
// 'html': article123.html
// 'propres': Titre-de-l-article <http://lab.spip.net/spikini/UrlsPropres>
// 'propres2' : Titre-de-l-article.html (base sur 'propres')
// 'standard': article.php3?id_article=123
$type_urls = 'page';
// creation des vignettes avec image magick en ligne de commande : mettre
@ -368,6 +367,7 @@ if (!$REQUEST_URI) {
//
include_ecrire('inc_flock');
// Lire les meta cachees
if (lire_fichier(_DIR_SESSIONS . 'meta_cache.txt', $meta))

2
ecrire/index.php

@ -17,7 +17,7 @@ include_ecrire('inc_cookie');
// Determiner l'action demandee
//
$exec = $_REQUEST['exec'];
$exec = _request('exec');
if (!preg_match(',^[a-z][0-9a-z_]*$,i', $exec)) $exec = "accueil";
$var_auth ="";

51
ecrire/page.php

@ -1,34 +1,61 @@
<?php
// Appel spip
// Appel spip direct ?
if (!function_exists('find_in_path')) {
if (@file_exists('ecrire/inc_version.php')) {
include 'ecrire/inc_version.php';
} else exit;
if (defined('_DIR_RESTREINT_ABS') AND
@file_exists(_DIR_RESTREINT_ABS.'inc_version.php')) {
include _DIR_RESTREINT_ABS.'inc_version.php';
}
## note: ce passage permet d'appeler ecrire/page.php?page=plan
## ce qui invoque compilateur, cache etc... pas encore
## totalement fonctionnel
else if (file_exists('./inc_version.php')) {
define('_DIR_RESTREINT_ABS', basename(dirname(__FILE__)).'/');
chdir('..');
include _DIR_RESTREINT_ABS.'inc_version.php';
}
else
die('stupid death...');
}
// Est-ce une action ?
if ($action = _request('action')) {
$var_f = include_fonction('spip_action_' . $action);
$var_f();
if ($redirect) redirige_par_entete(urldecode($redirect));
exit;
}
// Reglage du $fond
// Sinon, reglage du $fond
# passe par INCLURE()
if (isset($contexte_inclus['fond']))
$fond = $contexte_inclus['fond'];
else if (isset($_GET['page']))
# passe par l'url
else if (isset($_GET['page'])) {
$fond = $_GET['page'];
else
// Securite
if (strstr($fond, '/'))
die (_L("Faut pas se gener"));
# par defaut
} else
$fond = 'sommaire';
// Securite
if (strstr($fond, '/'))
die (_L("Faut pas se gener"));
// Particularites de certains squelettes
if ($fond == 'login')
$forcer_lang = true;
// Chercher le fond et erreur s'il est absent
if (!find_in_path($fond.'.html')) {
spip_log("page: find_in_path ne trouve pas le squelette $fond");
echo _T('info_erreur_squelette2',
array('fichier' => htmlspecialchars($fond)));
$fond = '404';
}
include (_DIR_INCLUDE . 'public.php');
?>

4
ecrire/urls/page.php

@ -20,7 +20,7 @@ define ('_terminaison_urls_page', '');
# ici, ce qu'on veut ou presque (de preference pas de '/' ni de '.')
define ('_separateur_urls_page', '=');
# on peut indiquer '' si on a installe le .htaccess
define ('_debut_urls_page', './?');
define ('_debut_urls_page', get_spip_script('./').'?');
#######
@ -67,7 +67,7 @@ function recuperer_parametres_url(&$fond, $url) {
global $contexte;
if (preg_match(
',/[?]?(article|rubrique|breve|mot|site|auteur)'
',.*[?]?(article|rubrique|breve|mot|site|auteur)'
.preg_quote(_separateur_urls_page).'([0-9]+),',
$url, $regs)) {
$fond = $regs[1];

26
htaccess.txt

@ -69,14 +69,14 @@ RewriteRule "." - [skip=100]
###
# Compatibilite avec les URLS "html" (pour transition sympa)
# voir fichier inc-urls-html.php3
RewriteRule rubrique([0-9]+)\.html$ index.php?page=rubrique&id_rubrique=$1 [QSA,L]
RewriteRule article([0-9]+)\.html$ index.php?page=article&id_article=$1 [QSA,L]
RewriteRule breve([0-9]+)\.html$ index.php?page=breve&id_breve=$1 [QSA,L]
RewriteRule mot([0-9]+)\.html$ index.php?page=mot&id_mot=$1 [QSA,L]
RewriteRule auteur([0-9]+)\.html$ index.php?page=auteur&id_auteur=$1 [QSA,L]
RewriteRule site([0-9]+)\.html$ index.php?page=site&id_syndic=$1 [QSA,L]
RewriteRule rubrique([0-9]+)\.html$ spip.php?page=rubrique&id_rubrique=$1 [QSA,L]
RewriteRule article([0-9]+)\.html$ spip.php?page=article&id_article=$1 [QSA,L]
RewriteRule breve([0-9]+)\.html$ spip.php?page=breve&id_breve=$1 [QSA,L]
RewriteRule mot([0-9]+)\.html$ spip.php?page=mot&id_mot=$1 [QSA,L]
RewriteRule auteur([0-9]+)\.html$ spip.php?page=auteur&id_auteur=$1 [QSA,L]
RewriteRule site([0-9]+)\.html$ spip.php?page=site&id_syndic=$1 [QSA,L]
# Compatibilite avec les URLS "standard"
RewriteRule ^(rubrique|article|breve|mot|auteur|site|agenda|backend|backend-breves|distrib|forum|ical|plan|recherche|resume|sommaire|sommaire_texte)\.php3?$ index.php?page=$1 [QSA,L]
RewriteRule ^(rubrique|article|breve|mot|auteur|site|agenda|backend|backend-breves|distrib|forum|ical|plan|recherche|resume|sommaire|sommaire_texte)\.php3?$ spip.php?page=$1 [QSA,L]
# Fin compatibilite
###
@ -87,22 +87,22 @@ RewriteRule ^(rubrique|article|breve|mot|auteur|site|agenda|backend|backend-brev
# (fichier associe : inc-urls-propres.php3)
# Les mots-cles
RewriteRule ^\+-[^/\.]+(-\+)?(\.html)?$ index.php?page=mot [QSA,E=url_propre:$0,L]
RewriteRule ^\+-[^/\.]+(-\+)?(\.html)?$ spip.php?page=mot [QSA,E=url_propre:$0,L]
# Les breves
RewriteRule ^\+[^/\.]+\+?(\.html)?$ index.php?page=breve [QSA,E=url_propre:$0,L]
RewriteRule ^\+[^/\.]+\+?(\.html)?$ spip.php?page=breve [QSA,E=url_propre:$0,L]
# Les rubriques
RewriteRule ^-[^/\.]+-?(\.html)?$ index.php?page=rubrique [QSA,E=url_propre:$0,L]
RewriteRule ^-[^/\.]+-?(\.html)?$ spip.php?page=rubrique [QSA,E=url_propre:$0,L]
# les auteurs
RewriteRule ^_[^/\.]+_?(\.html)?$ index.php?page=auteur [QSA,E=url_propre:$0,L]
RewriteRule ^_[^/\.]+_?(\.html)?$ spip.php?page=auteur [QSA,E=url_propre:$0,L]
# Les sites
RewriteRule ^@[^/\.]+@?(\.html)?$ index.php?page=site [QSA,E=url_propre:$0,L]
RewriteRule ^@[^/\.]+@?(\.html)?$ spip.php?page=site [QSA,E=url_propre:$0,L]
# Les articles (en dernier car expression plus "large")
RewriteRule ^[^/\.]+(\.html)?$ index.php?page=article [QSA,E=url_propre:$0,L]
RewriteRule ^[^/\.]+(\.html)?$ spip.php?page=article [QSA,E=url_propre:$0,L]
# Fin URLs "propres" et "propres2"
###

2
index.php

@ -1,4 +1,4 @@
<?php
# appel SPIP
include ("ecrire/page.php");
include ('spip.php');
?>

8
spip_action.php → spip.php

@ -10,9 +10,9 @@
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
include ("ecrire/inc_version.php");
# ou est l'espace prive ?
@define('_DIR_RESTREINT_ABS', 'ecrire/');
# au travail...
include _DIR_RESTREINT_ABS.'page.php';
$var_f = include_fonction('spip_action_' . $action);
$var_f();
if ($redirect) redirige_par_entete(urldecode($redirect));
?>
Loading…
Cancel
Save