From 9ac0301af592b73a45fd95a2b26fe8868ec0c2df Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Sat, 13 Mar 2010 10:40:23 +0000 Subject: [PATCH] Report de [15444] [15449] [15451] [15452] [15454] [15456] [15457] [15458] [15459] [15460] [15462] --- ecrire/exec/articles.php | 22 +++++++++++++++++ ecrire/inc/lang.php | 7 ++++-- ecrire/inc/lien.php | 2 +- ecrire/inc/utils.php | 49 +++++++++++++++++++++---------------- ecrire/inc_version.php | 2 +- ecrire/public.php | 24 +++++++++--------- ecrire/public/assembler.php | 2 +- ecrire/public/cacher.php | 5 ++-- 8 files changed, 74 insertions(+), 39 deletions(-) diff --git a/ecrire/exec/articles.php b/ecrire/exec/articles.php index 478227af8a..4d1325c25f 100644 --- a/ecrire/exec/articles.php +++ b/ecrire/exec/articles.php @@ -141,6 +141,7 @@ function articles_affiche($id_article, $row, $cherche_auteur, $ids, $cherche_mot . (!$editer_mots ? '' : $editer_mots('article', $id_article, $cherche_mot, $select_groupe, $flag_editable, false, 'articles')) . (!$referencer_traduction ? '' : $referencer_traduction($id_article, $flag_editable, $id_rubrique, $id_trad, $trad_err)) . pipeline('affiche_milieu',array('args'=>array('exec'=>'articles','id_article'=>$id_article),'data'=>'')) + . bouton_proposer_article($id_article,$statut_article) ; $onglet_documents = articles_documents('article', $id_article); @@ -325,4 +326,25 @@ function afficher_corps_articles($id_article, $virtuel, $row) return $res; } +function bouton_proposer_article($id_article,$statut_article){ + $ret = ""; + + if ($statut_article=='prepa' + AND $id_auteur = $GLOBALS["visiteur_session"]["id_auteur"] + AND $GLOBALS["visiteur_session"]["statut"] == "1comite" + AND autoriser('modifier', 'article', $id_article) + AND sql_fetsel("id_article", "spip_auteurs_articles", "id_article=".intval($id_article)." AND id_auteur=".intval($id_auteur))) { + $ret .= debut_cadre_relief("", true); + $ret .= "<div class='verdana3' style='text-align: center;'>"; + $ret .= "<div>"._T("texte_proposer_publication")."</div>"; + + $ret .= bouton_action(_T("bouton_demande_publication"), + generer_action_auteur('instituer_article', "$id_article-prop", self()), '', _T('confirm_changer_statut')); + + $ret .= "</div>"; + $ret .= fin_cadre_relief(true); + + } + return $ret; +} ?> diff --git a/ecrire/inc/lang.php b/ecrire/inc/lang.php index 15860d21b5..18edb4d3c4 100644 --- a/ecrire/inc/lang.php +++ b/ecrire/inc/lang.php @@ -12,7 +12,6 @@ if (!defined("_ECRIRE_INC_VERSION")) return; -include_spip('inc/actions'); // // Changer la langue courante @@ -138,6 +137,7 @@ function changer_typo($lang = '') { // // http://doc.spip.org/@menu_langues function menu_langues($nom_select) { + include_spip('inc/actions'); $ret = liste_options_langues($nom_select); @@ -265,7 +265,10 @@ function verifier_lang_url() { // // http://doc.spip.org/@utiliser_langue_site function utiliser_langue_site() { - return changer_langue(@$GLOBALS['meta']['langue_site']);//@:install + if (isset($GLOBALS['meta']['langue_site']) + AND $GLOBALS['spip_lang']!=$GLOBALS['meta']['langue_site']) + return changer_langue($GLOBALS['meta']['langue_site']);//@:install + return $GLOBALS['spip_lang']; } // http://doc.spip.org/@utiliser_langue_visiteur diff --git a/ecrire/inc/lien.php b/ecrire/inc/lien.php index 3e656fee0c..531e78ae4f 100644 --- a/ecrire/inc/lien.php +++ b/ecrire/inc/lien.php @@ -319,7 +319,7 @@ function traiter_lien_implicite ($ref, $texte='', $pour='url', $connect='') } if ($pour === 'url') return $url; $r = traiter_raccourci_titre($id, $type, $connect); - if ($r) $r['class'] = 'spip_in'; + if ($r) $r['class'] = ($type == 'site')?'spip_out':'spip_in'; if ($texte = trim($texte)) $r['titre'] = $texte; if (!@$r['titre']) $r['titre'] = _T($type) . " $id"; if ($pour=='titre') return $r['titre']; diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index 9a66b74c32..8683e331d4 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -499,9 +499,6 @@ function action_cron() { // http://doc.spip.org/@cron function cron ($gourmand=false, $taches= array()) { - // Si base inaccessible, laisser tomber. - if (!spip_connect()) return false; - // Si on est gourmand, ou si le fichier gourmand n'existe pas // ou est trop vieux (> 60 sec), on va voir si un cron est necessaire. // Au passage si on est gourmand on le dit aux autres @@ -516,6 +513,9 @@ function cron ($gourmand=false, $taches= array()) { if (spip_touch(_DIR_TMP.'cron.lock', (is_int($gourmand) ? $gourmand : 2))) { + // Si base inaccessible, laisser tomber. + if (!spip_connect()) return false; + $genie = charger_fonction('genie', 'inc', true); if ($genie) { $genie($taches); @@ -601,19 +601,20 @@ function _chemin($dir_path=NULL){ if ($dir_path===NULL) return $path_full; if (strlen($dir_path)){ - if ($dir_path{0}!='/') - $dir_path = $dir_path; - if (substr($dir_path,-1) != '/') - $dir_path .= "/"; - if (!in_array($dir_path,$path_base)){ - $tete = ""; - if (reset($path_base)==_DIR_RACINE.'squelettes/') - $tete = array_shift($path_base); - - array_unshift($path_base,$dir_path); - if (strlen($tete)) - array_unshift($path_base,$tete); + $tete = ""; + if (reset($path_base)==_DIR_RACINE.'squelettes/') + $tete = array_shift($path_base); + $dirs = array_reverse(explode(':',$dir_path)); + foreach($dirs as $dir_path){ + #if ($dir_path{0}!='/') + # $dir_path = $dir_path; + if (substr($dir_path,-1) != '/') + $dir_path .= "/"; + if (!in_array($dir_path,$path_base)) + array_unshift($path_base,$dir_path); } + if (strlen($tete)) + array_unshift($path_base,$tete); } $path_full = $path_base; // Et le(s) dossier(s) des squelettes nommes @@ -767,9 +768,15 @@ function load_path_cache(){ //AND (!isset($GLOBALS['visiteur_session']['statut']) OR $GLOBALS['visiteur_session']['statut']!='0minirezo') AND !isset($_COOKIE[$GLOBALS['cookie_prefix'].'_admin']) ){ - lire_fichier(_CACHE_CHEMIN,$contenu); - if (!$GLOBALS['path_files']=unserialize($contenu)) - $GLOBALS['path_files'] = array(); + // on essaye de lire directement sans verrou pour aller plus vite + if ($contenu = spip_file_get_contents(_CACHE_CHEMIN)){ + // mais si semble corrompu on relit avec un verrou + if (!$GLOBALS['path_files']=unserialize($contenu)){ + lire_fichier(_CACHE_CHEMIN,$contenu); + if (!$GLOBALS['path_files']=unserialize($contenu)) + $GLOBALS['path_files'] = array(); + } + } } // pas de sauvegarde du chemin si on est pas dans le public if (!_DIR_RESTREINT) @@ -1257,9 +1264,6 @@ function spip_initialisation_core($pi=NULL, $pa=NULL, $ti=NULL, $ta=NULL) { spip_desinfecte($_POST); spip_desinfecte($_COOKIE); spip_desinfecte($_REQUEST); - // ne pas desinfecter les globales en profondeur car elle contient aussi les - // precedentes, qui seraient desinfectees 2 fois. - spip_desinfecte($GLOBALS,false); // Par ailleurs on ne veut pas de magic_quotes au cours de l'execution @set_magic_quotes_runtime(0); @@ -1269,6 +1273,9 @@ function spip_initialisation_core($pi=NULL, $pa=NULL, $ti=NULL, $ta=NULL) { // il faut faire quelques verifications de base if ($x = test_valeur_serveur(@ini_get('register_globals')) OR _FEED_GLOBALS) { + // ne pas desinfecter les globales en profondeur car elle contient aussi les + // precedentes, qui seraient desinfectees 2 fois. + spip_desinfecte($GLOBALS,false); include_spip('inc/php3'); spip_register_globals($x); } diff --git a/ecrire/inc_version.php b/ecrire/inc_version.php index efc39dd248..ad9ee024bd 100644 --- a/ecrire/inc_version.php +++ b/ecrire/inc_version.php @@ -383,7 +383,7 @@ $liste_des_authentifications = array( // Experimental : pour supprimer systematiquement l'affichage des numeros // de classement des titres, recopier la ligne suivante dans mes_options : -# $table_des_traitements['TITRE'][]= 'typo(supprimer_numero(%s))'; +# $table_des_traitements['TITRE'][]= 'typo(supprimer_numero(%s), "TYPO", $connect)'; // Droits d'acces maximum par defaut @umask(0); diff --git a/ecrire/public.php b/ecrire/public.php index 7cff5d4e4b..3214513538 100644 --- a/ecrire/public.php +++ b/ecrire/public.php @@ -86,17 +86,19 @@ if (isset($GLOBALS['_INC_PUBLIC'])) { // Charger l'aiguilleur des traitements derogatoires // (action en base SQL, formulaires CVT, AJax) - include_spip('public/aiguiller'); - if ( - // cas des appels actions ?action=xxx - traiter_appels_actions() - OR - // cas des hits ajax sur les inclusions ajax - traiter_appels_inclusions_ajax() - OR - // cas des formulaires charger/verifier/traiter - traiter_formulaires_dynamiques()) - exit; // le hit est fini ! + if (_request('action') OR _request('var_ajax') OR _request('formulaire_action')){ + include_spip('public/aiguiller'); + if ( + // cas des appels actions ?action=xxx + traiter_appels_actions() + OR + // cas des hits ajax sur les inclusions ajax + traiter_appels_inclusions_ajax() + OR + // cas des formulaires charger/verifier/traiter + traiter_formulaires_dynamiques()) + exit; // le hit est fini ! + } // si signature de petition, l'enregistrer avant d'afficher la page // afin que celle-ci contienne la signature diff --git a/ecrire/public/assembler.php b/ecrire/public/assembler.php index 6217d2ec22..faa96106f4 100644 --- a/ecrire/public/assembler.php +++ b/ecrire/public/assembler.php @@ -201,7 +201,7 @@ function calculer_contexte_implicite(){ if (is_null($notes)) $notes = charger_fonction('notes','inc'); $contexte_implicite = array( - 'squelettes' => $GLOBALS['dossier_squelettes'], + 'squelettes' => $GLOBALS['dossier_squelettes'], // devrait etre 'chemin' => $GLOBALS['path_sig'], ? 'host' => $_SERVER['HTTP_HOST'], 'marqueur' => (isset($GLOBALS['marqueur']) ? $GLOBALS['marqueur'] : ''), 'notes' => $notes('','contexter_cache'), diff --git a/ecrire/public/cacher.php b/ecrire/public/cacher.php index e20fcb03a9..812a2c81db 100644 --- a/ecrire/public/cacher.php +++ b/ecrire/public/cacher.php @@ -229,9 +229,11 @@ function public_cacher_dist($contexte, &$use_cache, &$chemin_cache, &$page, &$la // Toute la suite correspond au premier appel + $contexte_implicite = $page['contexte_implicite']; + // Cas ignorant le cache car completement dynamique if ($_SERVER['REQUEST_METHOD'] == 'POST' - OR (substr($page,0,8)=='modeles/') + OR (substr($contexte_implicite['cache'],0,8)=='modeles/') OR (_request('connect')) // Mode auteur authentifie appelant de ecrire/ : il ne faut rien lire du cache // et n'y ecrire que la compilation des squelettes (pas les pages produites) @@ -247,7 +249,6 @@ function public_cacher_dist($contexte, &$use_cache, &$chemin_cache, &$page, &$la // Controler l'existence d'un cache nous correspondant, dans les // deux versions possibles : session ou non $chemin_cache = generer_nom_fichier_cache($contexte, $page); - $contexte_implicite = $page['contexte_implicite']; $lastmodified = 0; if (!lire_fichier(_DIR_CACHE . ($f = $chemin_cache), $page)) $fs = lire_fichier(_DIR_CACHE . ($f = cache_sessionne($f, spip_session())), $page); -- GitLab