Commit aceab97e authored by Maïeul's avatar Maïeul

Merge branch 'fusion_options'

Ca y es, tout est prêt pour avoir un seul fichier d'options
parents 3ff75bdb 7c4ac28b
......@@ -5,3 +5,103 @@ define('_Z_AJAX_PARALLEL_LOAD', 'navigation,more');
// Quelques reglages d'affichage
$GLOBALS['puce'] = '- ';
define('_BOUCLE_PROFILER', 5000);
define('_CALCUL_PROFILER', 100);
// Boussole SPIP présente
define('_SPIP_TOPNAV', true);
if (strncmp(_request('recherche'), 'http', 4) == 0 and _request('page') != 'recherche') {
$ecran_securite_raison = 'Recherche mal formee';
if ($GLOBALS['ip'] AND date('s') == 0) {
touch(_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES . 'flood/' . $GLOBALS['ip']);
}
}
if (isset($ecran_securite_raison)) {
header("HTTP/1.0 403 Forbidden");
header("Expires: Wed, 11 Jan 1984 05:00:00 GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-Type: text/html");
die("<html><title>Error 403: Forbidden</title><body><h1>Error 403</h1><p>You are not authorized to view this page ($ecran_securite_raison)</p></body></html>");
}
//if (is_dir($f='/dev/shm/cache-contribspipnet')) define('_DIR_CACHE',"$f/");
define('_UNIVERS_STATSV_FILE', '../IMG/spip-histoversion-stats-192030.json');
// si c'est une page forum ou une vieille page :
// un GET est redirige sur l'article de l'id_article ou sur la home
// un POST est refuse en 403
if ($p = _request('page') AND in_array($p, array('forum'))) {
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$raison = "Acces interdit";
header("HTTP/1.0 403 Forbidden");
header("Expires: Wed, 11 Jan 1984 05:00:00 GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-Type: text/html");
die("<html><title>Error 403: Forbidden</title><body><h1>Error 403</h1><p>You are not authorized to view this page ($raison)</p></body></html>");
} else {
$url = "https://contrib.spip.net/";
if ($id_article = intval(_request('id_article'))) {
$url .= "?article$id_article";
}
include_spip('inc/headers');
spip_initialisation_core(
(_DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES),
(_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES),
(_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES),
(_DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES)
);
redirige_par_entete($url, '', 301);
}
}
// Prefixe et chemin des cookies
// (a modifier pour installer des sites SPIP dans des sous-repertoires)
$GLOBALS['cookie_prefix'] = "contrib";
$GLOBALS['cookie_path'] = "";
###################
# parametrages pour "Autorité"
###################
# defini les "webmestres" au sens de Autorite
define('_ID_WEBMESTRES', '1:4:198:589:5384:6809:2650:5645:6502:4316');
##################
# parametrage des URLs
###################
$GLOBALS['type_urls'] = 'propres';
define('_debut_urls_propres', '');
define('_MARQUEUR_URL', '');
define('_URLS_PROPRES_MAX', 55);
##################
# parametrage des paginations de commentaires
# (si double @@, retrouver l’id_thread)
###################
if ($i = _request('debut_comments-list')
AND strncmp($i, '@@', 2) == 0
AND $id_forum = intval(substr($i, 2))) {
@spip_initialisation_core(
(_DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES),
(_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES),
(_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES),
(_DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES)
);
include_spip('base/abstract_sql');
if ($id_thread = sql_getfetsel('id_thread', "spip_forum", "id_forum=" . intval($id_forum) . " AND statut='publie'"))
// on place la pagination indirecte sur le thread, au lieu du forum
set_request('debut_comments-list', "@$id_thread");
else
// sinon au debut de la liste paginee
set_request('debut_comments-list', "0");
}
<?php
if (!defined('_ECRIRE_INC_VERSION')) return;
function genie_galactic_contrib_synchro_plugins_dist($t){
synchro_plugins(20);
return 1;
}
function prefixes_from_jsons($jsons, $nb=null){
$prefixes = array();
foreach($jsons as $j)
$prefixes = array_merge($prefixes,array_keys($j));
$prefixes = array_unique($prefixes);
$prefixes = array_filter($prefixes);
// si nombre de plugins passe en arg, tirer au sort nb plugins a synchroniser
if ($nb AND $nb<count($prefixes)){
return array_rand(array_flip($prefixes), $nb);
}
return $prefixes;
}
function infos_from_jsons($prefixe, $jsons){
$infos = array();
foreach($jsons as $json){
if (isset($json[$prefixe])){
if (!$infos){
$infos = $json[$prefixe];
}
else {
foreach($json[$prefixe] as $v=>$i)
if (!isset($infos[$v]) OR $i)
$infos[$v] = $i;
}
}
}
ksort($infos);
return $infos;
}
function synchro_plugins($nb = null){
include_spip('inc/autoriser');
$domains = array("http://www.spip-contrib.net/","http://contrib.spip.net/","https://contrib.spip.net/");
$jsons = array();
include_spip('inc/distant');
foreach($domains as $d){
$src = "https://plugins.spip.net/infos_plugin.api/?lien_doc=$d";
$json = recuperer_page($src);
$json = json_decode($json,true);
if (isset($json['plugins'])
AND $json['plugins'])
$jsons[] = $json['plugins'];
}
if (!count($jsons))
return;
$motsv = array(
"SPIP-2.0" => 261,
"SPIP-2.1" => 278,
"SPIP-3.0" => 285,
"SPIP-3.1" => 291,
"SPIP-3.2" => 292
);
$motsc = array(
"squelette" => 134,
"theme" => 206,
"plugin" => 112,
);
$motsall = array_values(array_merge($motsc, $motsv));
include_spip('action/editer_liens');
include_spip('action/editer_article');
$prefixes = prefixes_from_jsons($jsons, $nb);
foreach($prefixes as $prefixe){
$infos = infos_from_jsons($prefixe,$jsons);
spip_log("---- Synchro $prefixe","synchroplugins"._LOG_INFO_IMPORTANTE);
$liens_mots_art = array();
$liens_mots_doc = array();
$liens_docs = array();
// balayer les versions
foreach($infos as $vspip=>$d){
if ($d){
if ($id_article = get_article_from_url($d['lien_doc'])){
if (isset($motsv[$vspip]))
$liens_mots_art[$id_article][] = $motsv[$vspip];
if (isset($motsc[$d['categorie']]))
$liens_mots_art[$id_article][] = $motsc[$d['categorie']];
else
$liens_mots_art[$id_article][] = $motsc['plugin'];
// verifier le zip
if ($id_document = get_document_from_url($d['archive'],"Version ".$d['version'])){
$liens_docs[$id_article][] = $id_document;
if (isset($motsv[$vspip]))
$liens_mots_doc[$id_document][] = $motsv[$vspip];
}
// verfier le champ url_site
$url_p = "https://plugins.spip.net/".strtolower($prefixe);
$url_site = sql_getfetsel('url_site','spip_articles','id_article='.intval($id_article));
if (!$url_site){
spip_log("$prefixe: Modifier url_site=$url_p sur article $id_article","synchroplugins"._LOG_INFO_IMPORTANTE);
autoriser_exception("modifier","article",$id_article);
article_modifier($id_article,array('url_site'=>$url_p));
autoriser_exception("modifier","article",$id_article,false);
}
elseif($url_site!=$url_p){
spip_log("$prefixe: url_site incorrecte sur article $id_article","synchroplugins"._LOG_INFO_IMPORTANTE);
}
}
else {
spip_log("$prefixe: URL ".$d['lien_doc']." non trouvee","synchroplugins"._LOG_INFO_IMPORTANTE);
}
}
}
update_liens_mots($liens_mots_art, 'article', $motsall);
update_liens_mots($liens_mots_doc, 'document', $motsall);
foreach($liens_mots_art as $id_article => $dummy){
update_liens_trads($id_article, array('mot' => $motsall));
}
// lier les docs aux articles
foreach($liens_docs as $id_article => $id_docs){
objet_associer(array('document'=>$id_docs),array('article'=>$id_article));
update_liens_trads($id_article,array('document'=>$id_docs));
}
}
}
include_spip('inc/urls');
function get_article_from_url($url){
static $cache = array();
if (isset($cache[$url])) return $cache[$url];
if (preg_match(",^http://(?:www\.|spip-)?(?:spip-)?contrib(?:\.spip)?\.net/(\d+)$,",$url,$m)){
spip_log(__LINE__ ,"synchroplugins"._LOG_INFO_IMPORTANTE);
return $cache[$url] = intval($m[1]);
}
//var_dump(urls_decoder_url($url));
list($fond,$contexte,$url_redirect) = urls_decoder_url($url);
spip_log(__LINE__ ."$fond $contexte $url_redirect " ,"synchroplugins"._LOG_INFO_IMPORTANTE);
if ($fond=='rubrique' AND $id_rubrique=$contexte['id_rubrique']){
// chercher si un seul article
spip_log(__LINE__ ,"synchroplugins"._LOG_INFO_IMPORTANTE);
$a = sql_allfetsel('id_article','spip_articles','id_rubrique='.intval($id_rubrique)." AND statut='publie'");
if (count($a)==1){
spip_log(__LINE__ ,"synchroplugins"._LOG_INFO_IMPORTANTE);
$a = reset($a);
spip_log("$url => ".reset($a),"synchroplugins"._LOG_INFO_IMPORTANTE);
return $cache[$url] = reset($a);
}
}
if ($fond!=="article") return $cache[$url]=false;
if (!isset($contexte['id_article'])) return $cache[$url]=false;
#spip_log($contexte,"synchroplugins"._LOG_INFO_IMPORTANTE);
spip_log("$url => ".$contexte['id_article'],"synchroplugins"._LOG_INFO_IMPORTANTE);
return $cache[$url]=$contexte['id_article'];
}
function get_document_from_url($url_zip, $titre){
static $cache = array();
$id_document = 0;
include_spip('action/editer_document');
$ajouter_documents = charger_fonction('ajouter_documents','action');
$row = sql_fetsel('*','spip_documents',"distant='oui' AND fichier=".sql_quote($url_zip));
if (!$row){
$file = array(
'tmp_name' => $url_zip,
'name' => '',
'mode' => 'document',
'distant' => 'oui',
);
$ids = $ajouter_documents('new',array($file));
$id_document= reset($ids);
spip_log("Ajout document distant $url_zip : #$id_document","synchroplugins"._LOG_INFO_IMPORTANTE);
if (!$id_document)
return false;
$row = sql_fetsel('*','spip_documents',"id_document=".intval($id_document));
}
if (!$id_document = $row['id_document'])
return false;
// verifier le titre
if ($row['titre']!==$titre){
spip_log("Titre document #id_document : $titre ","synchroplugins"._LOG_INFO_IMPORTANTE);
autoriser_exception("modifier","document",$id_document);
document_modifier($id_document,array('titre' => $titre));
autoriser_exception("modifier","document",$id_document,false);
}
return $id_document;
}
function update_liens_mots($liens_mots, $objet, $motsall){
// mettre a jour les liens
// ne pas retirer compat 2.0 et 2.1 car plugin.spip pas exhaustif
// sauf si compat 2.0 ou 2.1 connue
$motsv_unknown = array_diff(array(261, 278), array_merge($liens_mots));
foreach($liens_mots as $id_objet=>$mots){
$set = array_unique($mots);
$remove = array_diff($motsall,$set);
// les liens existants
$links = objet_trouver_liens(array('mot'=>$motsall),array($objet=>$id_objet));
$l = array();
foreach($links as $link) $l[] = $link['id_mot'];
$remove = array_intersect($remove,$l);
$remove = array_diff($remove, $motsv_unknown);
if (count($remove)){
objet_dissocier(array('mot'=>$remove),array($objet=>$id_objet));
spip_log("$objet $id_objet remove ".implode(",",$remove),"synchroplugins"._LOG_INFO_IMPORTANTE);
}
$set = array_diff($set,$l);
if (count($set)){
objet_associer(array('mot'=>$set),array($objet=>$id_objet));
spip_log("$objet $id_objet set ".implode(",",$set),"synchroplugins"._LOG_INFO_IMPORTANTE);
}
}
}
function update_liens_trads($id_article,$quoi){
list($objet,) = each($quoi);
$set = array();
$dup = objet_trouver_liens($quoi,array('article'=>$id_article));
foreach($dup as $l) $set[] = $l[$objet];
$set = array_unique($set);
$trads = sql_allfetsel('id_article','spip_articles','id_trad='.intval($id_article).' AND id_article<>'.intval($id_article));
foreach($trads as $t){
$id_trad = $t['id_article'];
$exs = objet_trouver_liens($quoi,array('article'=>$id_trad));
$l = array();
foreach($exs as $ex) $l[] = $ex[$objet];
$remove = array_diff($l,$set);
$set = array_diff($set,$l);
if (count($remove)){
objet_dissocier(array($objet=>$remove),array('article'=>$id_trad));
spip_log("TRAD article $id_trad remove $objet ".implode(",",$remove),"synchroplugins"._LOG_INFO_IMPORTANTE);
}
if (count($set)){
objet_associer(array($objet=>$set),array('article'=>$id_trad));
spip_log("TRAD article $id_trad set $objet ".implode(",",$set),"synchroplugins"._LOG_INFO_IMPORTANTE);
}
}
}
##############################################################
# Fichier .htaccess SPIP v 3.2 #
# #
# Permet de controler les URLs et la version de php utilisee #
# Compatible avec les URLs 'html', 'propres' et 'propres2' #
# Permet aussi d'effectuer la transition de .PHP 3 vers .PHP #
# #
# Pour utiliser ce fichier renommez-le '.htaccess' dans le #
# repertoire racine du site, en veillant a ne pas ecraser un #
# .htaccess personnalise qui s'y trouverait deja #
# #
# Attention certains hebergeurs desactivent tout ou partie #
# des fonctions du fichier .htaccess ; celui-ci est donc #
# indicatif - en cas de difficulte voir sur les forums SPIP #
##############################################################
Options +FollowSymlinks
#RewriteLog "rewrite.log"
#RewriteLogLevel 3
RewriteEngine On
################ CONFIGURATION ######################
### Configuration sous-repertoire
# Calcule automatiquememt le RewriteBase (qui permet de faire fonctionner
# les belles URLs). De la sorte, un meme site peut etre affiche en racine
# ou dans un sous repertoire sans devoir modifier la ligne RewriteBase.
#RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
#RewriteRule ^(.*) - [E=BASE:%1]
# En alternative aux 2 lignes precedentes (a commenter dans ce cas),
# vous pouvez indiquer un RewriteBase specifique
RewriteBase /
# SPIP version 'php' - si vous avez d'anciennes adresses en '.php[3]',
# supprimez le '#' sur les lignes qui suivent pour rediriger les acces
# errones vers le .php correspondant
#RewriteCond %{REQUEST_FILENAME} -f
#RewriteRule ^(.+)\.php[3]$ $1.php [QSA,L]
# Fin version
###
################ REGLAGES PERSONNALISES ######################
# Inscrivez ci-dessous vos reglages supplementaires
# bloquer les acces aux repertoires .svn/ (SPIP, plugins, squelettes...)
RewriteRule ^(.*/)?\.svn/ - [F]
################ GESTIONS DES URLS SPIP #######################
# redirections des anciennes url en erreur 404
RedirectPermanent /spikini/ https://contrib.spip.net/Carnet-SPIP
# Redirection *.spip.org
RewriteCond %{HTTP_HOST} stats.spip.org
RewriteRule ^.*$ https://stats.spip.net/$0 [QSA,L,R=301,skip=100]
RewriteCond %{HTTP_HOST} files.spip.org
RewriteRule ^spip/archives/SPIP-3.1-RC.zip$ https://files.spip.net/spip/archives/SPIP-vtrois.1.0-rc.zip
# Redirection files.spip.net
RewriteCond %{HTTP_HOST} files.spip.org
RewriteRule ^spip-zone/$ https://plugins.spip.net/spip.php?page=telechargements
# sommaire
RewriteCond %{HTTP_HOST} files.spip.net
RewriteRule ^spip-zone/$ https://plugins.spip.net/spip.php?page=telechargements
# les repertoires, remappes
RewriteCond %{HTTP_HOST} files.spip.net
RewriteRule ^$ spip.php?page=paquets&dir=/ [QSA,E=url_propre:'',skip=100]
RewriteCond %{HTTP_HOST} files.spip.net
#RewriteCond /home/spipcont/www/paquets/%{REQUEST_URI} -d
RewriteRule ^(.+/)$ spip.php?page=paquets&dir=$1 [QSA,E=url_propre:'',skip=100]
RewriteCond %{HTTP_HOST} files.spip.org
RewriteRule ^$ spip.php?page=paquets&dir=/ [QSA,E=url_propre:'',skip=100]
RewriteCond %{HTTP_HOST} files.spip.org
#RewriteCond /home/spipcont/www/paquets/%{REQUEST_URI} -d
RewriteRule ^(.+/)$ spip.php?page=paquets&dir=$1 [QSA,E=url_propre:'',skip=100]
# Redirection stats.spip.net
RewriteCond %{HTTP_HOST} stats.spip.net
RewriteRule ^$ spip.php?page=stats [QSA,skip=100]
# Deux pseudo-actions a present evacuees
# N'y at-il pas moyen de REMPLACER un nom dans la QueryString ?
RewriteCond %{QUERY_STRING} action=rss
RewriteRule spip.php spip.php?page=rss [QSA,L]
RewriteCond %{QUERY_STRING} action=ical
RewriteRule spip.php spip.php?page=ical_prive [QSA,L]
###
# Si le fichier ou repertoire demande existe
# ignorer toutes les regles qui suivent
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule "." - [skip=100]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule "." - [skip=100]
#
###
###
# Compatibilite avec les URLS "html" (pour transition sympa)
# voir fichier ecrire/urls/html.php
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 anciennes URLS appelant directement des fichiers php
RewriteRule ^(rubrique|article|breve|mot|auteur|site|agenda|backend|backend-breves|distrib|forum|ical|plan|recherche|sommaire|sommaire_texte)\.php3?$ spip.php?page=$1 [QSA,L]
RewriteRule ^resume.php[3]? spip.php?page=sommaire [QSA,L]
RewriteRule ^page.php[3]? spip.php [QSA,L]
RewriteRule ^spip_cal\.php3?$ spip.php?page=ical_prive [QSA,L]
RewriteRule ^spip_rss\.php3?$ spip.php?page=rss [QSA,L]
# Fin compatibilite
###
###
# ping http://site/1234 => article1234
RewriteRule ^([1-9][0-9]*)$ spip.php?action=redirect&type=article&status=301&id=$1 [QSA,L]
#
###
###
# APIs
# http://site/xmlrpc.api
# http://site/atom.api/articles/1234
RewriteRule ^([\w]+)\.api(/(.*))?$ spip.php?action=api_$1&arg=$3 [QSA,L]
# Fin des APIs
###
###
# URLs "propres", "propres2", "libres", "arbo"
RewriteRule ^[^\.]+(\.html)?$ spip.php [QSA,E=url_propre:$0,L]
# Fin URLs "propres" et "propres2"
###
###
# Divers
# bloquer les acces aux fichiers caches (.svn, .git, etc)
RewriteRule /\\..*(/.*|$) - [F]
###
# Fichiers "standards" (si absents de la racine)
#
RewriteRule ^robots[.]txt$ spip.php?page=robots.txt [QSA,L]
RewriteRule ^favicon[.]ico$ spip.php?page=favicon.ico [QSA,L]
RewriteRule ^sitemap[.]xml$ spip.php?page=sitemap.xml [QSA,L]
##
# Favicon pour itrucs
# Si vous avez le plugin filtres_images et qu'une méthode de retouche a été configurée, vous pouvez décommenter la ligne ci-dessous.
#RewriteRule ^apple-touch-icon(-(\d+x\d+))?(-precomposed)?[.]png$ spip.php?page=apple-touch-icon.png&size=$2 [QSA,L]
# expirer les images (pour contourner gros bug MSIE sur le cache)
# note : a decommenter si vous voulez tester
#<IfModule mod_expires.c>
# ExpiresActive on
# ExpiresByType image/gif A3600
# ExpiresByType image/jpeg A3600
# ExpiresByType image/png A3600
#</IfModule>
RewriteRule ^Widgets-Editer-directement-sur-le Les-Crayons [r]
<IfModule mod_expires.c>
# Expiration des pages :
ExpiresActive On
ExpiresByType image/gif A86400
ExpiresByType image/png A86400
ExpiresByType image/jpeg A86400
ExpiresByType application/x-javascript A86400
ExpiresByType text/css A86400
ExpiresByType application/xml A600
#ExpiresByType text/html A14400
#ExpiresByType application/x-httpd-php A14400
</IfModule>
#################################
# gestion des erreurs 404
# voir http://www.spip.net/fr_article3226.html
# Pour que le serveur http renvoie les erreurs 404 vers SPIP, supprimer le '#'
# ErrorDocument 404 /spip.php?page=404
#
###
<paquet
prefix="galactic_contrib"
categorie="squelette"
version="1.0.0"
version="1.1.0"
etat="stable"
compatibilite="[3.1.0;3.2.*]"
logo="prive/themes/spip/images/galactic_contrib-64.png"
......@@ -16,4 +16,6 @@
<necessite nom="notation" compatibilite="[2.4.1;]" />
<necessite nom="comments" compatibilite="[3.4.9;]" />
<genie nom="synchro_plugins" periode="3000" />
</paquet>
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment