@@ -4,118 +4,118 @@ |
||
| 4 | 4 | // ** ne pas modifier le fichier ** |
| 5 | 5 | |
| 6 | 6 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 7 | - return; |
|
| 7 | + return; |
|
| 8 | 8 | } |
| 9 | 9 | |
| 10 | 10 | $GLOBALS[$GLOBALS['idx_lang']] = array( |
| 11 | 11 | |
| 12 | - // A |
|
| 13 | - 'accueil_site' => 'Acuèlh', |
|
| 14 | - 'article' => 'Article', |
|
| 15 | - 'articles' => 'Articles', |
|
| 16 | - 'articles_auteur' => 'Articles d’aquel autor', |
|
| 17 | - 'articles_populaires' => 'Lu articles mai populars', |
|
| 18 | - 'articles_rubrique' => 'Articles d’aquela rubrica', |
|
| 19 | - 'aucun_article' => 'Li a minga d’article à-n-aquela adreça', |
|
| 20 | - 'aucun_auteur' => 'Li a minga d’autor à-n-aquela adreça', |
|
| 21 | - 'aucun_site' => 'Li a minga de site à-n-aquela adreça', |
|
| 22 | - 'aucune_breve' => 'Li a minga de brèva à-n-aquela adreça', |
|
| 23 | - 'aucune_rubrique' => 'Li a minga de rubrica à-n-aquela adreça', |
|
| 24 | - 'auteur' => 'Autor', |
|
| 25 | - 'autres' => 'Autres', |
|
| 26 | - 'autres_breves' => 'Autri brèvas', |
|
| 27 | - 'autres_groupes_mots_clefs' => 'Autres grops de mòts claus', |
|
| 28 | - 'autres_sites' => 'Autres sites', |
|
| 29 | - |
|
| 30 | - // B |
|
| 31 | - 'bonjour' => 'Boanjorn', |
|
| 32 | - |
|
| 33 | - // C |
|
| 34 | - 'commenter_site' => 'Comentar aqueu site', |
|
| 35 | - 'contact' => 'Contacte', |
|
| 36 | - 'copie_document_impossible' => 'Impossible de copiar lo document', |
|
| 37 | - |
|
| 38 | - // D |
|
| 39 | - 'date' => 'Data', |
|
| 40 | - 'dernier_ajout' => 'Darrier ajust', |
|
| 41 | - 'dernieres_breves' => 'Darrieras brèvas', |
|
| 42 | - 'derniers_articles' => 'Darriers articles', |
|
| 43 | - 'derniers_commentaires' => 'Darriers comentaris', |
|
| 44 | - 'derniers_messages_forum' => 'Darriers messatges publicats dins lu fòros', |
|
| 45 | - |
|
| 46 | - // E |
|
| 47 | - 'edition_mode_texte' => 'Edicion en mòde tèxt de', |
|
| 48 | - 'en_reponse' => 'En respoasta à:', |
|
| 49 | - 'en_resume' => 'En resumit', |
|
| 50 | - 'envoyer_message' => 'Mandar un messatge', |
|
| 51 | - 'espace_prive' => 'Espaci privat', |
|
| 52 | - |
|
| 53 | - // F |
|
| 54 | - 'formats_acceptes' => 'Formats acceptats : @formats@.', |
|
| 55 | - |
|
| 56 | - // H |
|
| 57 | - 'hierarchie_site' => 'Ierarquia dau sit', |
|
| 58 | - |
|
| 59 | - // J |
|
| 60 | - 'jours' => 'jorns', |
|
| 61 | - |
|
| 62 | - // L |
|
| 63 | - 'lien_connecter' => 'Si conectar', |
|
| 64 | - |
|
| 65 | - // M |
|
| 66 | - 'meme_auteur' => 'Dau meme autor', |
|
| 67 | - 'meme_rubrique' => 'Dins la mema rubrica', |
|
| 68 | - 'memes_auteurs' => 'Dei memes autors', |
|
| 69 | - 'message' => 'Messatge', |
|
| 70 | - 'messages_forum' => 'Messatges', |
|
| 71 | - 'messages_recents' => 'Lu messatges de fòros mai recents', |
|
| 72 | - 'mots_clef' => 'Mòt-clau', |
|
| 73 | - 'mots_clefs' => 'Mòts-claus', |
|
| 74 | - 'mots_clefs_meme_groupe' => 'Mòts-claus dins lo meme grop', |
|
| 75 | - |
|
| 76 | - // N |
|
| 77 | - 'navigation' => 'Navigacion', |
|
| 78 | - 'nom' => 'Nom', |
|
| 79 | - 'nouveautes' => 'Li novèutats', |
|
| 80 | - 'nouveautes_web' => 'Novèutats sus lo oèb', |
|
| 81 | - 'nouveaux_articles' => 'Articles nòus', |
|
| 82 | - 'nouvelles_breves' => 'Brèvas novèlas', |
|
| 83 | - |
|
| 84 | - // P |
|
| 85 | - 'page_precedente' => 'pàgina anteriora', |
|
| 86 | - 'page_suivante' => 'pàgina seguenta', |
|
| 87 | - 'par_auteur' => 'da', |
|
| 88 | - 'participer_site' => 'Podètz participar à la vida d’aqueu sit e prepauar lu voastres articles en vos inscrivent çai sota. Receberètz un e-mail que v’indicarà lu voastres còdes per accedir à l’espaci privat dau sit.', |
|
| 89 | - 'plan_site' => 'Plan dau site', |
|
| 90 | - 'popularite' => 'Popularitat', |
|
| 91 | - 'poster_message' => 'Postar un messatge', |
|
| 92 | - 'proposer_site' => 'Podètz prepauar un site à ajustar en aquela rubrica:', |
|
| 93 | - |
|
| 94 | - // R |
|
| 95 | - 'repondre_article' => 'Respoandre à-n-aquel article', |
|
| 96 | - 'repondre_breve' => 'Respoandre à-n-aquela brèva', |
|
| 97 | - 'resultats_recherche' => 'Resultats de la recèrca', |
|
| 98 | - 'retour_debut_forums' => 'Retorn au començament dei fòros', |
|
| 99 | - 'rubrique' => 'Rubrica', |
|
| 100 | - 'rubriques' => 'Rubricas', |
|
| 101 | - |
|
| 102 | - // S |
|
| 103 | - 'signatures_petition' => 'Firmas', |
|
| 104 | - 'site_realise_avec_spip' => 'Sit realisat embé SPIP', |
|
| 105 | - 'sites_web' => 'Sits web', |
|
| 106 | - 'sous_rubriques' => 'Sosrubricas', |
|
| 107 | - 'spam' => 'Espam', |
|
| 108 | - 'suite' => 'seguida', |
|
| 109 | - 'sur_web' => 'Sus lo oèb', |
|
| 110 | - 'syndiquer_rubrique' => 'Sindicar aquela rubrica', |
|
| 111 | - 'syndiquer_site' => 'Sindicar tot lo sit', |
|
| 112 | - |
|
| 113 | - // T |
|
| 114 | - 'texte_lettre_information' => 'Vequí la letra d’informacion dau sit', |
|
| 115 | - 'texte_lettre_information_2' => 'Aquela letra recensa li noveutas publicadi despí', |
|
| 116 | - |
|
| 117 | - // V |
|
| 118 | - 'ver_imprimer' => 'Version d’estampar', |
|
| 119 | - 'voir_en_ligne' => 'Vejatz en linha', |
|
| 120 | - 'voir_squelette' => 'veire l’esqueleta d’aquela pàgina' |
|
| 12 | + // A |
|
| 13 | + 'accueil_site' => 'Acuèlh', |
|
| 14 | + 'article' => 'Article', |
|
| 15 | + 'articles' => 'Articles', |
|
| 16 | + 'articles_auteur' => 'Articles d’aquel autor', |
|
| 17 | + 'articles_populaires' => 'Lu articles mai populars', |
|
| 18 | + 'articles_rubrique' => 'Articles d’aquela rubrica', |
|
| 19 | + 'aucun_article' => 'Li a minga d’article à-n-aquela adreça', |
|
| 20 | + 'aucun_auteur' => 'Li a minga d’autor à-n-aquela adreça', |
|
| 21 | + 'aucun_site' => 'Li a minga de site à-n-aquela adreça', |
|
| 22 | + 'aucune_breve' => 'Li a minga de brèva à-n-aquela adreça', |
|
| 23 | + 'aucune_rubrique' => 'Li a minga de rubrica à-n-aquela adreça', |
|
| 24 | + 'auteur' => 'Autor', |
|
| 25 | + 'autres' => 'Autres', |
|
| 26 | + 'autres_breves' => 'Autri brèvas', |
|
| 27 | + 'autres_groupes_mots_clefs' => 'Autres grops de mòts claus', |
|
| 28 | + 'autres_sites' => 'Autres sites', |
|
| 29 | + |
|
| 30 | + // B |
|
| 31 | + 'bonjour' => 'Boanjorn', |
|
| 32 | + |
|
| 33 | + // C |
|
| 34 | + 'commenter_site' => 'Comentar aqueu site', |
|
| 35 | + 'contact' => 'Contacte', |
|
| 36 | + 'copie_document_impossible' => 'Impossible de copiar lo document', |
|
| 37 | + |
|
| 38 | + // D |
|
| 39 | + 'date' => 'Data', |
|
| 40 | + 'dernier_ajout' => 'Darrier ajust', |
|
| 41 | + 'dernieres_breves' => 'Darrieras brèvas', |
|
| 42 | + 'derniers_articles' => 'Darriers articles', |
|
| 43 | + 'derniers_commentaires' => 'Darriers comentaris', |
|
| 44 | + 'derniers_messages_forum' => 'Darriers messatges publicats dins lu fòros', |
|
| 45 | + |
|
| 46 | + // E |
|
| 47 | + 'edition_mode_texte' => 'Edicion en mòde tèxt de', |
|
| 48 | + 'en_reponse' => 'En respoasta à:', |
|
| 49 | + 'en_resume' => 'En resumit', |
|
| 50 | + 'envoyer_message' => 'Mandar un messatge', |
|
| 51 | + 'espace_prive' => 'Espaci privat', |
|
| 52 | + |
|
| 53 | + // F |
|
| 54 | + 'formats_acceptes' => 'Formats acceptats : @formats@.', |
|
| 55 | + |
|
| 56 | + // H |
|
| 57 | + 'hierarchie_site' => 'Ierarquia dau sit', |
|
| 58 | + |
|
| 59 | + // J |
|
| 60 | + 'jours' => 'jorns', |
|
| 61 | + |
|
| 62 | + // L |
|
| 63 | + 'lien_connecter' => 'Si conectar', |
|
| 64 | + |
|
| 65 | + // M |
|
| 66 | + 'meme_auteur' => 'Dau meme autor', |
|
| 67 | + 'meme_rubrique' => 'Dins la mema rubrica', |
|
| 68 | + 'memes_auteurs' => 'Dei memes autors', |
|
| 69 | + 'message' => 'Messatge', |
|
| 70 | + 'messages_forum' => 'Messatges', |
|
| 71 | + 'messages_recents' => 'Lu messatges de fòros mai recents', |
|
| 72 | + 'mots_clef' => 'Mòt-clau', |
|
| 73 | + 'mots_clefs' => 'Mòts-claus', |
|
| 74 | + 'mots_clefs_meme_groupe' => 'Mòts-claus dins lo meme grop', |
|
| 75 | + |
|
| 76 | + // N |
|
| 77 | + 'navigation' => 'Navigacion', |
|
| 78 | + 'nom' => 'Nom', |
|
| 79 | + 'nouveautes' => 'Li novèutats', |
|
| 80 | + 'nouveautes_web' => 'Novèutats sus lo oèb', |
|
| 81 | + 'nouveaux_articles' => 'Articles nòus', |
|
| 82 | + 'nouvelles_breves' => 'Brèvas novèlas', |
|
| 83 | + |
|
| 84 | + // P |
|
| 85 | + 'page_precedente' => 'pàgina anteriora', |
|
| 86 | + 'page_suivante' => 'pàgina seguenta', |
|
| 87 | + 'par_auteur' => 'da', |
|
| 88 | + 'participer_site' => 'Podètz participar à la vida d’aqueu sit e prepauar lu voastres articles en vos inscrivent çai sota. Receberètz un e-mail que v’indicarà lu voastres còdes per accedir à l’espaci privat dau sit.', |
|
| 89 | + 'plan_site' => 'Plan dau site', |
|
| 90 | + 'popularite' => 'Popularitat', |
|
| 91 | + 'poster_message' => 'Postar un messatge', |
|
| 92 | + 'proposer_site' => 'Podètz prepauar un site à ajustar en aquela rubrica:', |
|
| 93 | + |
|
| 94 | + // R |
|
| 95 | + 'repondre_article' => 'Respoandre à-n-aquel article', |
|
| 96 | + 'repondre_breve' => 'Respoandre à-n-aquela brèva', |
|
| 97 | + 'resultats_recherche' => 'Resultats de la recèrca', |
|
| 98 | + 'retour_debut_forums' => 'Retorn au començament dei fòros', |
|
| 99 | + 'rubrique' => 'Rubrica', |
|
| 100 | + 'rubriques' => 'Rubricas', |
|
| 101 | + |
|
| 102 | + // S |
|
| 103 | + 'signatures_petition' => 'Firmas', |
|
| 104 | + 'site_realise_avec_spip' => 'Sit realisat embé SPIP', |
|
| 105 | + 'sites_web' => 'Sits web', |
|
| 106 | + 'sous_rubriques' => 'Sosrubricas', |
|
| 107 | + 'spam' => 'Espam', |
|
| 108 | + 'suite' => 'seguida', |
|
| 109 | + 'sur_web' => 'Sus lo oèb', |
|
| 110 | + 'syndiquer_rubrique' => 'Sindicar aquela rubrica', |
|
| 111 | + 'syndiquer_site' => 'Sindicar tot lo sit', |
|
| 112 | + |
|
| 113 | + // T |
|
| 114 | + 'texte_lettre_information' => 'Vequí la letra d’informacion dau sit', |
|
| 115 | + 'texte_lettre_information_2' => 'Aquela letra recensa li noveutas publicadi despí', |
|
| 116 | + |
|
| 117 | + // V |
|
| 118 | + 'ver_imprimer' => 'Version d’estampar', |
|
| 119 | + 'voir_en_ligne' => 'Vejatz en linha', |
|
| 120 | + 'voir_squelette' => 'veire l’esqueleta d’aquela pàgina' |
|
| 121 | 121 | ); |
@@ -14,6 +14,9 @@ |
||
| 14 | 14 | return; |
| 15 | 15 | } |
| 16 | 16 | |
| 17 | +/** |
|
| 18 | + * @return string|null |
|
| 19 | + */ |
|
| 17 | 20 | function securiser_redirect_action($redirect) { |
| 18 | 21 | // cas d'un double urlencode : si un urldecode de l'url n'est pas secure, on retient ca comme redirect |
| 19 | 22 | if (strpos($redirect, '%') !== false) { |
@@ -22,11 +22,11 @@ discard block |
||
| 22 | 22 | return $r3; |
| 23 | 23 | } |
| 24 | 24 | } |
| 25 | - if ((tester_url_absolue($redirect) or preg_match(',^\w+:,',trim($redirect))) |
|
| 25 | + if ((tester_url_absolue($redirect) or preg_match(',^\w+:,', trim($redirect))) |
|
| 26 | 26 | and !defined('_AUTORISER_ACTION_ABS_REDIRECT')) { |
| 27 | 27 | // si l'url est une url du site, on la laisse passer sans rien faire |
| 28 | 28 | // c'est encore le plus simple |
| 29 | - $base = $GLOBALS['meta']['adresse_site'] . "/"; |
|
| 29 | + $base = $GLOBALS['meta']['adresse_site']."/"; |
|
| 30 | 30 | if (strlen($base) and strncmp($redirect, $base, strlen($base)) == 0) { |
| 31 | 31 | return $redirect; |
| 32 | 32 | } |
@@ -145,7 +145,7 @@ discard block |
||
| 145 | 145 | if ($ancre = _request('var_ajax_ancre')) { |
| 146 | 146 | // pas n'importe quoi quand meme dans la variable ! |
| 147 | 147 | $ancre = str_replace(array('<', '"', "'"), array('<', '"', ''), $ancre); |
| 148 | - $texte = "<a href='#$ancre' name='ajax_ancre' style='display:none;'>anchor</a>" . $texte; |
|
| 148 | + $texte = "<a href='#$ancre' name='ajax_ancre' style='display:none;'>anchor</a>".$texte; |
|
| 149 | 149 | } |
| 150 | 150 | } else { |
| 151 | 151 | include_spip('inc/headers'); |
@@ -299,7 +299,7 @@ discard block |
||
| 299 | 299 | // on ajoute un br en display none en tete du retour ajax pour regler un bug dans IE6/7 |
| 300 | 300 | // sans cela le formulaire n'est pas actif apres le hit ajax |
| 301 | 301 | // la classe ajax-form-is-ok sert a s'assurer que le retour ajax s'est bien passe |
| 302 | - $retour = "<br class='bugajaxie ajax-form-is-ok' style='display:none;'/>" . $retour; |
|
| 302 | + $retour = "<br class='bugajaxie ajax-form-is-ok' style='display:none;'/>".$retour; |
|
| 303 | 303 | ajax_retour($retour, false); |
| 304 | 304 | |
| 305 | 305 | return true; // on a fini le hit |
@@ -11,153 +11,153 @@ discard block |
||
| 11 | 11 | \***************************************************************************/ |
| 12 | 12 | |
| 13 | 13 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 14 | - return; |
|
| 14 | + return; |
|
| 15 | 15 | } |
| 16 | 16 | |
| 17 | 17 | function securiser_redirect_action($redirect) { |
| 18 | - // cas d'un double urlencode : si un urldecode de l'url n'est pas secure, on retient ca comme redirect |
|
| 19 | - if (strpos($redirect, '%') !== false) { |
|
| 20 | - $r2 = urldecode($redirect); |
|
| 21 | - if (($r3 = securiser_redirect_action($r2)) !== $r2) { |
|
| 22 | - return $r3; |
|
| 23 | - } |
|
| 24 | - } |
|
| 25 | - if ((tester_url_absolue($redirect) or preg_match(',^\w+:,',trim($redirect))) |
|
| 26 | - and !defined('_AUTORISER_ACTION_ABS_REDIRECT')) { |
|
| 27 | - // si l'url est une url du site, on la laisse passer sans rien faire |
|
| 28 | - // c'est encore le plus simple |
|
| 29 | - $base = $GLOBALS['meta']['adresse_site'] . "/"; |
|
| 30 | - if (strlen($base) and strncmp($redirect, $base, strlen($base)) == 0) { |
|
| 31 | - return $redirect; |
|
| 32 | - } |
|
| 33 | - $base = url_de_base(); |
|
| 34 | - if (strlen($base) and strncmp($redirect, $base, strlen($base)) == 0) { |
|
| 35 | - return $redirect; |
|
| 36 | - } |
|
| 18 | + // cas d'un double urlencode : si un urldecode de l'url n'est pas secure, on retient ca comme redirect |
|
| 19 | + if (strpos($redirect, '%') !== false) { |
|
| 20 | + $r2 = urldecode($redirect); |
|
| 21 | + if (($r3 = securiser_redirect_action($r2)) !== $r2) { |
|
| 22 | + return $r3; |
|
| 23 | + } |
|
| 24 | + } |
|
| 25 | + if ((tester_url_absolue($redirect) or preg_match(',^\w+:,',trim($redirect))) |
|
| 26 | + and !defined('_AUTORISER_ACTION_ABS_REDIRECT')) { |
|
| 27 | + // si l'url est une url du site, on la laisse passer sans rien faire |
|
| 28 | + // c'est encore le plus simple |
|
| 29 | + $base = $GLOBALS['meta']['adresse_site'] . "/"; |
|
| 30 | + if (strlen($base) and strncmp($redirect, $base, strlen($base)) == 0) { |
|
| 31 | + return $redirect; |
|
| 32 | + } |
|
| 33 | + $base = url_de_base(); |
|
| 34 | + if (strlen($base) and strncmp($redirect, $base, strlen($base)) == 0) { |
|
| 35 | + return $redirect; |
|
| 36 | + } |
|
| 37 | 37 | |
| 38 | - return ""; |
|
| 39 | - } |
|
| 38 | + return ""; |
|
| 39 | + } |
|
| 40 | 40 | |
| 41 | - return $redirect; |
|
| 41 | + return $redirect; |
|
| 42 | 42 | } |
| 43 | 43 | |
| 44 | 44 | // https://code.spip.net/@traiter_appels_actions |
| 45 | 45 | function traiter_appels_actions() { |
| 46 | - // cas de l'appel qui renvoie une redirection (302) ou rien (204) |
|
| 47 | - if ($action = _request('action')) { |
|
| 48 | - include_spip('base/abstract_sql'); // chargement systematique pour les actions |
|
| 49 | - include_spip('inc/autoriser'); |
|
| 50 | - include_spip('inc/headers'); |
|
| 51 | - include_spip('inc/actions'); |
|
| 52 | - // des actions peuvent appeler _T |
|
| 53 | - if (!isset($GLOBALS['spip_lang'])) { |
|
| 54 | - include_spip('inc/lang'); |
|
| 55 | - utiliser_langue_visiteur(); |
|
| 56 | - } |
|
| 57 | - // si l'action est provoque par un hit {ajax} |
|
| 58 | - // il faut transmettre l'env ajax au redirect |
|
| 59 | - // on le met avant dans la query string au cas ou l'action fait elle meme sa redirection |
|
| 60 | - if (($v = _request('var_ajax')) |
|
| 61 | - and ($v !== 'form') |
|
| 62 | - and ($args = _request('var_ajax_env')) |
|
| 63 | - and ($url = _request('redirect')) |
|
| 64 | - ) { |
|
| 65 | - $url = parametre_url($url, 'var_ajax', $v, '&'); |
|
| 66 | - $url = parametre_url($url, 'var_ajax_env', $args, '&'); |
|
| 67 | - set_request('redirect', $url); |
|
| 68 | - } else { |
|
| 69 | - if (_request('redirect')) { |
|
| 70 | - set_request('redirect', securiser_redirect_action(_request('redirect'))); |
|
| 71 | - } |
|
| 72 | - } |
|
| 73 | - $var_f = charger_fonction($action, 'action'); |
|
| 74 | - $var_f(); |
|
| 75 | - if (!isset($GLOBALS['redirect'])) { |
|
| 76 | - $GLOBALS['redirect'] = _request('redirect'); |
|
| 77 | - if ($_SERVER['REQUEST_METHOD'] == 'POST') { |
|
| 78 | - $GLOBALS['redirect'] = urldecode($GLOBALS['redirect']); |
|
| 79 | - } |
|
| 80 | - $GLOBALS['redirect'] = securiser_redirect_action($GLOBALS['redirect']); |
|
| 81 | - } |
|
| 82 | - if ($url = $GLOBALS['redirect']) { |
|
| 83 | - // si l'action est provoque par un hit {ajax} |
|
| 84 | - // il faut transmettre l'env ajax au redirect |
|
| 85 | - // qui a pu etre defini par l'action |
|
| 86 | - if (($v = _request('var_ajax')) |
|
| 87 | - and ($v !== 'form') |
|
| 88 | - and ($args = _request('var_ajax_env')) |
|
| 89 | - ) { |
|
| 90 | - $url = parametre_url($url, 'var_ajax', $v, '&'); |
|
| 91 | - $url = parametre_url($url, 'var_ajax_env', $args, '&'); |
|
| 92 | - // passer l'ancre en variable pour pouvoir la gerer cote serveur |
|
| 93 | - $url = preg_replace(',#([^#&?]+)$,', "&var_ajax_ancre=\\1", $url); |
|
| 94 | - } |
|
| 95 | - $url = str_replace('&', '&', $url); // les redirections se font en &, pas en en & |
|
| 96 | - redirige_par_entete($url); |
|
| 97 | - } |
|
| 98 | - if (!headers_sent() |
|
| 99 | - and !ob_get_length() |
|
| 100 | - ) { |
|
| 101 | - http_status(204); |
|
| 102 | - } // No Content |
|
| 103 | - return true; |
|
| 104 | - } |
|
| 46 | + // cas de l'appel qui renvoie une redirection (302) ou rien (204) |
|
| 47 | + if ($action = _request('action')) { |
|
| 48 | + include_spip('base/abstract_sql'); // chargement systematique pour les actions |
|
| 49 | + include_spip('inc/autoriser'); |
|
| 50 | + include_spip('inc/headers'); |
|
| 51 | + include_spip('inc/actions'); |
|
| 52 | + // des actions peuvent appeler _T |
|
| 53 | + if (!isset($GLOBALS['spip_lang'])) { |
|
| 54 | + include_spip('inc/lang'); |
|
| 55 | + utiliser_langue_visiteur(); |
|
| 56 | + } |
|
| 57 | + // si l'action est provoque par un hit {ajax} |
|
| 58 | + // il faut transmettre l'env ajax au redirect |
|
| 59 | + // on le met avant dans la query string au cas ou l'action fait elle meme sa redirection |
|
| 60 | + if (($v = _request('var_ajax')) |
|
| 61 | + and ($v !== 'form') |
|
| 62 | + and ($args = _request('var_ajax_env')) |
|
| 63 | + and ($url = _request('redirect')) |
|
| 64 | + ) { |
|
| 65 | + $url = parametre_url($url, 'var_ajax', $v, '&'); |
|
| 66 | + $url = parametre_url($url, 'var_ajax_env', $args, '&'); |
|
| 67 | + set_request('redirect', $url); |
|
| 68 | + } else { |
|
| 69 | + if (_request('redirect')) { |
|
| 70 | + set_request('redirect', securiser_redirect_action(_request('redirect'))); |
|
| 71 | + } |
|
| 72 | + } |
|
| 73 | + $var_f = charger_fonction($action, 'action'); |
|
| 74 | + $var_f(); |
|
| 75 | + if (!isset($GLOBALS['redirect'])) { |
|
| 76 | + $GLOBALS['redirect'] = _request('redirect'); |
|
| 77 | + if ($_SERVER['REQUEST_METHOD'] == 'POST') { |
|
| 78 | + $GLOBALS['redirect'] = urldecode($GLOBALS['redirect']); |
|
| 79 | + } |
|
| 80 | + $GLOBALS['redirect'] = securiser_redirect_action($GLOBALS['redirect']); |
|
| 81 | + } |
|
| 82 | + if ($url = $GLOBALS['redirect']) { |
|
| 83 | + // si l'action est provoque par un hit {ajax} |
|
| 84 | + // il faut transmettre l'env ajax au redirect |
|
| 85 | + // qui a pu etre defini par l'action |
|
| 86 | + if (($v = _request('var_ajax')) |
|
| 87 | + and ($v !== 'form') |
|
| 88 | + and ($args = _request('var_ajax_env')) |
|
| 89 | + ) { |
|
| 90 | + $url = parametre_url($url, 'var_ajax', $v, '&'); |
|
| 91 | + $url = parametre_url($url, 'var_ajax_env', $args, '&'); |
|
| 92 | + // passer l'ancre en variable pour pouvoir la gerer cote serveur |
|
| 93 | + $url = preg_replace(',#([^#&?]+)$,', "&var_ajax_ancre=\\1", $url); |
|
| 94 | + } |
|
| 95 | + $url = str_replace('&', '&', $url); // les redirections se font en &, pas en en & |
|
| 96 | + redirige_par_entete($url); |
|
| 97 | + } |
|
| 98 | + if (!headers_sent() |
|
| 99 | + and !ob_get_length() |
|
| 100 | + ) { |
|
| 101 | + http_status(204); |
|
| 102 | + } // No Content |
|
| 103 | + return true; |
|
| 104 | + } |
|
| 105 | 105 | |
| 106 | - return false; |
|
| 106 | + return false; |
|
| 107 | 107 | } |
| 108 | 108 | |
| 109 | 109 | |
| 110 | 110 | // https://code.spip.net/@refuser_traiter_formulaire_ajax |
| 111 | 111 | function refuser_traiter_formulaire_ajax() { |
| 112 | - if ($v = _request('var_ajax') |
|
| 113 | - and $v == 'form' |
|
| 114 | - and $form = _request('formulaire_action') |
|
| 115 | - and $args = _request('formulaire_action_args') |
|
| 116 | - and decoder_contexte_ajax($args, $form) !== false |
|
| 117 | - ) { |
|
| 118 | - // on est bien dans le contexte de traitement d'un formulaire en ajax |
|
| 119 | - // mais traiter ne veut pas |
|
| 120 | - // on le dit a la page qui va resumbit |
|
| 121 | - // sans ajax |
|
| 122 | - include_spip('inc/actions'); |
|
| 123 | - ajax_retour('noajax', false); |
|
| 124 | - exit; |
|
| 125 | - } |
|
| 112 | + if ($v = _request('var_ajax') |
|
| 113 | + and $v == 'form' |
|
| 114 | + and $form = _request('formulaire_action') |
|
| 115 | + and $args = _request('formulaire_action_args') |
|
| 116 | + and decoder_contexte_ajax($args, $form) !== false |
|
| 117 | + ) { |
|
| 118 | + // on est bien dans le contexte de traitement d'un formulaire en ajax |
|
| 119 | + // mais traiter ne veut pas |
|
| 120 | + // on le dit a la page qui va resumbit |
|
| 121 | + // sans ajax |
|
| 122 | + include_spip('inc/actions'); |
|
| 123 | + ajax_retour('noajax', false); |
|
| 124 | + exit; |
|
| 125 | + } |
|
| 126 | 126 | } |
| 127 | 127 | |
| 128 | 128 | // https://code.spip.net/@traiter_appels_inclusions_ajax |
| 129 | 129 | function traiter_appels_inclusions_ajax() { |
| 130 | - // traiter les appels de bloc ajax (ex: pagination) |
|
| 131 | - if ($v = _request('var_ajax') |
|
| 132 | - and $v !== 'form' |
|
| 133 | - and $args = _request('var_ajax_env') |
|
| 134 | - ) { |
|
| 135 | - include_spip('inc/filtres'); |
|
| 136 | - include_spip('inc/actions'); |
|
| 137 | - if ($args = decoder_contexte_ajax($args) |
|
| 138 | - and $fond = $args['fond'] |
|
| 139 | - ) { |
|
| 140 | - include_spip('public/assembler'); |
|
| 141 | - $contexte = calculer_contexte(); |
|
| 142 | - $contexte = array_merge($args, $contexte); |
|
| 143 | - $page = recuperer_fond($fond, $contexte, array('trim' => false)); |
|
| 144 | - $texte = $page; |
|
| 145 | - if ($ancre = _request('var_ajax_ancre')) { |
|
| 146 | - // pas n'importe quoi quand meme dans la variable ! |
|
| 147 | - $ancre = str_replace(array('<', '"', "'"), array('<', '"', ''), $ancre); |
|
| 148 | - $texte = "<a href='#$ancre' name='ajax_ancre' style='display:none;'>anchor</a>" . $texte; |
|
| 149 | - } |
|
| 150 | - } else { |
|
| 151 | - include_spip('inc/headers'); |
|
| 152 | - http_status(400); |
|
| 153 | - $texte = _L('signature ajax bloc incorrecte'); |
|
| 154 | - } |
|
| 155 | - ajax_retour($texte, false); |
|
| 130 | + // traiter les appels de bloc ajax (ex: pagination) |
|
| 131 | + if ($v = _request('var_ajax') |
|
| 132 | + and $v !== 'form' |
|
| 133 | + and $args = _request('var_ajax_env') |
|
| 134 | + ) { |
|
| 135 | + include_spip('inc/filtres'); |
|
| 136 | + include_spip('inc/actions'); |
|
| 137 | + if ($args = decoder_contexte_ajax($args) |
|
| 138 | + and $fond = $args['fond'] |
|
| 139 | + ) { |
|
| 140 | + include_spip('public/assembler'); |
|
| 141 | + $contexte = calculer_contexte(); |
|
| 142 | + $contexte = array_merge($args, $contexte); |
|
| 143 | + $page = recuperer_fond($fond, $contexte, array('trim' => false)); |
|
| 144 | + $texte = $page; |
|
| 145 | + if ($ancre = _request('var_ajax_ancre')) { |
|
| 146 | + // pas n'importe quoi quand meme dans la variable ! |
|
| 147 | + $ancre = str_replace(array('<', '"', "'"), array('<', '"', ''), $ancre); |
|
| 148 | + $texte = "<a href='#$ancre' name='ajax_ancre' style='display:none;'>anchor</a>" . $texte; |
|
| 149 | + } |
|
| 150 | + } else { |
|
| 151 | + include_spip('inc/headers'); |
|
| 152 | + http_status(400); |
|
| 153 | + $texte = _L('signature ajax bloc incorrecte'); |
|
| 154 | + } |
|
| 155 | + ajax_retour($texte, false); |
|
| 156 | 156 | |
| 157 | - return true; // on a fini le hit |
|
| 158 | - } |
|
| 157 | + return true; // on a fini le hit |
|
| 158 | + } |
|
| 159 | 159 | |
| 160 | - return false; |
|
| 160 | + return false; |
|
| 161 | 161 | } |
| 162 | 162 | |
| 163 | 163 | // au 1er appel, traite les formulaires dynamiques charger/verifier/traiter |
@@ -166,148 +166,148 @@ discard block |
||
| 166 | 166 | |
| 167 | 167 | // https://code.spip.net/@traiter_formulaires_dynamiques |
| 168 | 168 | function traiter_formulaires_dynamiques($get = false) { |
| 169 | - static $post = array(); |
|
| 170 | - static $done = false; |
|
| 169 | + static $post = array(); |
|
| 170 | + static $done = false; |
|
| 171 | 171 | |
| 172 | - if ($get) { |
|
| 173 | - return $post; |
|
| 174 | - } |
|
| 175 | - if ($done) { |
|
| 176 | - return false; |
|
| 177 | - } |
|
| 178 | - $done = true; |
|
| 172 | + if ($get) { |
|
| 173 | + return $post; |
|
| 174 | + } |
|
| 175 | + if ($done) { |
|
| 176 | + return false; |
|
| 177 | + } |
|
| 178 | + $done = true; |
|
| 179 | 179 | |
| 180 | - if (!($form = _request('formulaire_action') |
|
| 181 | - and $args = _request('formulaire_action_args')) |
|
| 182 | - ) { |
|
| 183 | - return false; |
|
| 184 | - } // le hit peut continuer normalement |
|
| 180 | + if (!($form = _request('formulaire_action') |
|
| 181 | + and $args = _request('formulaire_action_args')) |
|
| 182 | + ) { |
|
| 183 | + return false; |
|
| 184 | + } // le hit peut continuer normalement |
|
| 185 | 185 | |
| 186 | - include_spip('inc/filtres'); |
|
| 187 | - if (($args = decoder_contexte_ajax($args, $form)) === false) { |
|
| 188 | - spip_log("signature ajax form incorrecte : $form"); |
|
| 186 | + include_spip('inc/filtres'); |
|
| 187 | + if (($args = decoder_contexte_ajax($args, $form)) === false) { |
|
| 188 | + spip_log("signature ajax form incorrecte : $form"); |
|
| 189 | 189 | |
| 190 | - return false; // continuons le hit comme si de rien etait |
|
| 191 | - } else { |
|
| 192 | - include_spip('inc/lang'); |
|
| 193 | - // sauvegarder la lang en cours |
|
| 194 | - $old_lang = $GLOBALS['spip_lang']; |
|
| 195 | - // changer la langue avec celle qui a cours dans le formulaire |
|
| 196 | - // on la depile de $args car c'est un argument implicite masque |
|
| 197 | - changer_langue(array_shift($args)); |
|
| 190 | + return false; // continuons le hit comme si de rien etait |
|
| 191 | + } else { |
|
| 192 | + include_spip('inc/lang'); |
|
| 193 | + // sauvegarder la lang en cours |
|
| 194 | + $old_lang = $GLOBALS['spip_lang']; |
|
| 195 | + // changer la langue avec celle qui a cours dans le formulaire |
|
| 196 | + // on la depile de $args car c'est un argument implicite masque |
|
| 197 | + changer_langue(array_shift($args)); |
|
| 198 | 198 | |
| 199 | 199 | |
| 200 | - // inclure mes_fonctions et autres filtres avant verifier/traiter |
|
| 201 | - include_fichiers_fonctions(); |
|
| 202 | - // ainsi que l'API SQL bien utile dans verifier/traiter |
|
| 203 | - include_spip('base/abstract_sql'); |
|
| 200 | + // inclure mes_fonctions et autres filtres avant verifier/traiter |
|
| 201 | + include_fichiers_fonctions(); |
|
| 202 | + // ainsi que l'API SQL bien utile dans verifier/traiter |
|
| 203 | + include_spip('base/abstract_sql'); |
|
| 204 | 204 | |
| 205 | - /** |
|
| 206 | - * Pipeline exécuté lors de la soumission d'un formulaire, |
|
| 207 | - * mais avant l'appel de la fonction de vérification. |
|
| 208 | - */ |
|
| 209 | - pipeline( |
|
| 210 | - 'formulaire_receptionner', |
|
| 211 | - array( |
|
| 212 | - 'args' => array('form' => $form, 'args' => $args), |
|
| 213 | - 'data' => null, |
|
| 214 | - ) |
|
| 215 | - ); |
|
| 205 | + /** |
|
| 206 | + * Pipeline exécuté lors de la soumission d'un formulaire, |
|
| 207 | + * mais avant l'appel de la fonction de vérification. |
|
| 208 | + */ |
|
| 209 | + pipeline( |
|
| 210 | + 'formulaire_receptionner', |
|
| 211 | + array( |
|
| 212 | + 'args' => array('form' => $form, 'args' => $args), |
|
| 213 | + 'data' => null, |
|
| 214 | + ) |
|
| 215 | + ); |
|
| 216 | 216 | |
| 217 | - $verifier = charger_fonction("verifier", "formulaires/$form/", true); |
|
| 218 | - $post["erreurs_$form"] = pipeline( |
|
| 219 | - 'formulaire_verifier', |
|
| 220 | - array( |
|
| 221 | - 'args' => array('form' => $form, 'args' => $args), |
|
| 222 | - 'data' => $verifier ? call_user_func_array($verifier, $args) : array() |
|
| 223 | - ) |
|
| 224 | - ); |
|
| 225 | - // prise en charge CVT multi etape si besoin |
|
| 226 | - if (_request('cvtm_prev_post')) { |
|
| 227 | - include_spip('inc/cvt_multietapes'); |
|
| 228 | - $post["erreurs_$form"] = cvtmulti_formulaire_verifier_etapes( |
|
| 229 | - array('form' => $form, 'args' => $args), |
|
| 230 | - $post["erreurs_$form"] |
|
| 231 | - ); |
|
| 232 | - } |
|
| 217 | + $verifier = charger_fonction("verifier", "formulaires/$form/", true); |
|
| 218 | + $post["erreurs_$form"] = pipeline( |
|
| 219 | + 'formulaire_verifier', |
|
| 220 | + array( |
|
| 221 | + 'args' => array('form' => $form, 'args' => $args), |
|
| 222 | + 'data' => $verifier ? call_user_func_array($verifier, $args) : array() |
|
| 223 | + ) |
|
| 224 | + ); |
|
| 225 | + // prise en charge CVT multi etape si besoin |
|
| 226 | + if (_request('cvtm_prev_post')) { |
|
| 227 | + include_spip('inc/cvt_multietapes'); |
|
| 228 | + $post["erreurs_$form"] = cvtmulti_formulaire_verifier_etapes( |
|
| 229 | + array('form' => $form, 'args' => $args), |
|
| 230 | + $post["erreurs_$form"] |
|
| 231 | + ); |
|
| 232 | + } |
|
| 233 | 233 | |
| 234 | - // accessibilite : si des erreurs mais pas de message general l'ajouter |
|
| 235 | - if ((isset($post["erreurs_$form"]) and count($post["erreurs_$form"])) and !isset($post["erreurs_$form"]['message_erreur'])) { |
|
| 236 | - $post["erreurs_$form"]['message_erreur'] = singulier_ou_pluriel(count($post["erreurs_$form"]), |
|
| 237 | - 'avis_1_erreur_saisie', 'avis_nb_erreurs_saisie'); |
|
| 238 | - } |
|
| 234 | + // accessibilite : si des erreurs mais pas de message general l'ajouter |
|
| 235 | + if ((isset($post["erreurs_$form"]) and count($post["erreurs_$form"])) and !isset($post["erreurs_$form"]['message_erreur'])) { |
|
| 236 | + $post["erreurs_$form"]['message_erreur'] = singulier_ou_pluriel(count($post["erreurs_$form"]), |
|
| 237 | + 'avis_1_erreur_saisie', 'avis_nb_erreurs_saisie'); |
|
| 238 | + } |
|
| 239 | 239 | |
| 240 | - // si on ne demandait qu'une verif json |
|
| 241 | - if (_request('formulaire_action_verifier_json')) { |
|
| 242 | - include_spip('inc/json'); |
|
| 243 | - include_spip('inc/actions'); |
|
| 244 | - ajax_retour(json_encode($post["erreurs_$form"]), 'text/plain'); |
|
| 240 | + // si on ne demandait qu'une verif json |
|
| 241 | + if (_request('formulaire_action_verifier_json')) { |
|
| 242 | + include_spip('inc/json'); |
|
| 243 | + include_spip('inc/actions'); |
|
| 244 | + ajax_retour(json_encode($post["erreurs_$form"]), 'text/plain'); |
|
| 245 | 245 | |
| 246 | - return true; // on a fini le hit |
|
| 247 | - } |
|
| 248 | - $retour = ""; |
|
| 249 | - if (isset($post["erreurs_$form"]) and (count($post["erreurs_$form"]) == 0)) { |
|
| 250 | - $rev = ""; |
|
| 251 | - if ($traiter = charger_fonction("traiter", "formulaires/$form/", true)) { |
|
| 252 | - $rev = call_user_func_array($traiter, $args); |
|
| 253 | - } |
|
| 246 | + return true; // on a fini le hit |
|
| 247 | + } |
|
| 248 | + $retour = ""; |
|
| 249 | + if (isset($post["erreurs_$form"]) and (count($post["erreurs_$form"]) == 0)) { |
|
| 250 | + $rev = ""; |
|
| 251 | + if ($traiter = charger_fonction("traiter", "formulaires/$form/", true)) { |
|
| 252 | + $rev = call_user_func_array($traiter, $args); |
|
| 253 | + } |
|
| 254 | 254 | |
| 255 | - $rev = pipeline( |
|
| 256 | - 'formulaire_traiter', |
|
| 257 | - array( |
|
| 258 | - 'args' => array('form' => $form, 'args' => $args), |
|
| 259 | - 'data' => $rev |
|
| 260 | - ) |
|
| 261 | - ); |
|
| 262 | - // le retour de traiter est |
|
| 263 | - // un tableau explicite ('editable'=>$editable,'message_ok'=>$message,'redirect'=>$redirect,'id_xx'=>$id_xx) |
|
| 264 | - // il permet le pipelinage, en particulier |
|
| 265 | - // en y passant l'id de l'objet cree/modifie |
|
| 266 | - // si message_erreur est present, on considere que le traitement a echoue |
|
| 267 | - $post["message_ok_$form"] = ''; |
|
| 268 | - // on peut avoir message_ok et message_erreur |
|
| 269 | - if (isset($rev['message_ok'])) { |
|
| 270 | - $post["message_ok_$form"] = $rev['message_ok']; |
|
| 271 | - } |
|
| 255 | + $rev = pipeline( |
|
| 256 | + 'formulaire_traiter', |
|
| 257 | + array( |
|
| 258 | + 'args' => array('form' => $form, 'args' => $args), |
|
| 259 | + 'data' => $rev |
|
| 260 | + ) |
|
| 261 | + ); |
|
| 262 | + // le retour de traiter est |
|
| 263 | + // un tableau explicite ('editable'=>$editable,'message_ok'=>$message,'redirect'=>$redirect,'id_xx'=>$id_xx) |
|
| 264 | + // il permet le pipelinage, en particulier |
|
| 265 | + // en y passant l'id de l'objet cree/modifie |
|
| 266 | + // si message_erreur est present, on considere que le traitement a echoue |
|
| 267 | + $post["message_ok_$form"] = ''; |
|
| 268 | + // on peut avoir message_ok et message_erreur |
|
| 269 | + if (isset($rev['message_ok'])) { |
|
| 270 | + $post["message_ok_$form"] = $rev['message_ok']; |
|
| 271 | + } |
|
| 272 | 272 | |
| 273 | - // verifier si traiter n'a pas echoue avec une erreur : |
|
| 274 | - if (isset($rev['message_erreur'])) { |
|
| 275 | - $post["erreurs_$form"]["message_erreur"] = $rev['message_erreur']; |
|
| 276 | - // si il y a une erreur on ne redirige pas |
|
| 277 | - } else { |
|
| 278 | - // sinon faire ce qu'il faut : |
|
| 279 | - if (isset($rev['editable'])) { |
|
| 280 | - $post["editable_$form"] = $rev['editable']; |
|
| 281 | - } |
|
| 282 | - // si une redirection est demandee, appeler redirigae_formulaire qui choisira |
|
| 283 | - // le bon mode de redirection (302 et on ne revient pas ici, ou javascript et on continue) |
|
| 284 | - if (isset($rev['redirect']) and $rev['redirect']) { |
|
| 285 | - include_spip('inc/headers'); |
|
| 286 | - list($masque, $message) = redirige_formulaire($rev['redirect'], '', 'ajaxform'); |
|
| 287 | - $post["message_ok_$form"] .= $message; |
|
| 288 | - $retour .= $masque; |
|
| 289 | - } |
|
| 290 | - } |
|
| 291 | - } |
|
| 292 | - // si le formulaire a ete soumis en ajax, on le renvoie direct ! |
|
| 293 | - if (_request('var_ajax')) { |
|
| 294 | - if (find_in_path('formulaire_.php', 'balise/', true)) { |
|
| 295 | - include_spip('inc/actions'); |
|
| 296 | - include_spip('public/assembler'); |
|
| 297 | - array_unshift($args, $form); |
|
| 298 | - $retour .= inclure_balise_dynamique(call_user_func_array('balise_formulaire__dyn', $args), false); |
|
| 299 | - // on ajoute un br en display none en tete du retour ajax pour regler un bug dans IE6/7 |
|
| 300 | - // sans cela le formulaire n'est pas actif apres le hit ajax |
|
| 301 | - // la classe ajax-form-is-ok sert a s'assurer que le retour ajax s'est bien passe |
|
| 302 | - $retour = "<br class='bugajaxie ajax-form-is-ok' style='display:none;'/>" . $retour; |
|
| 303 | - ajax_retour($retour, false); |
|
| 273 | + // verifier si traiter n'a pas echoue avec une erreur : |
|
| 274 | + if (isset($rev['message_erreur'])) { |
|
| 275 | + $post["erreurs_$form"]["message_erreur"] = $rev['message_erreur']; |
|
| 276 | + // si il y a une erreur on ne redirige pas |
|
| 277 | + } else { |
|
| 278 | + // sinon faire ce qu'il faut : |
|
| 279 | + if (isset($rev['editable'])) { |
|
| 280 | + $post["editable_$form"] = $rev['editable']; |
|
| 281 | + } |
|
| 282 | + // si une redirection est demandee, appeler redirigae_formulaire qui choisira |
|
| 283 | + // le bon mode de redirection (302 et on ne revient pas ici, ou javascript et on continue) |
|
| 284 | + if (isset($rev['redirect']) and $rev['redirect']) { |
|
| 285 | + include_spip('inc/headers'); |
|
| 286 | + list($masque, $message) = redirige_formulaire($rev['redirect'], '', 'ajaxform'); |
|
| 287 | + $post["message_ok_$form"] .= $message; |
|
| 288 | + $retour .= $masque; |
|
| 289 | + } |
|
| 290 | + } |
|
| 291 | + } |
|
| 292 | + // si le formulaire a ete soumis en ajax, on le renvoie direct ! |
|
| 293 | + if (_request('var_ajax')) { |
|
| 294 | + if (find_in_path('formulaire_.php', 'balise/', true)) { |
|
| 295 | + include_spip('inc/actions'); |
|
| 296 | + include_spip('public/assembler'); |
|
| 297 | + array_unshift($args, $form); |
|
| 298 | + $retour .= inclure_balise_dynamique(call_user_func_array('balise_formulaire__dyn', $args), false); |
|
| 299 | + // on ajoute un br en display none en tete du retour ajax pour regler un bug dans IE6/7 |
|
| 300 | + // sans cela le formulaire n'est pas actif apres le hit ajax |
|
| 301 | + // la classe ajax-form-is-ok sert a s'assurer que le retour ajax s'est bien passe |
|
| 302 | + $retour = "<br class='bugajaxie ajax-form-is-ok' style='display:none;'/>" . $retour; |
|
| 303 | + ajax_retour($retour, false); |
|
| 304 | 304 | |
| 305 | - return true; // on a fini le hit |
|
| 306 | - } |
|
| 307 | - } |
|
| 308 | - // restaurer la lang en cours |
|
| 309 | - changer_langue($old_lang); |
|
| 310 | - } |
|
| 305 | + return true; // on a fini le hit |
|
| 306 | + } |
|
| 307 | + } |
|
| 308 | + // restaurer la lang en cours |
|
| 309 | + changer_langue($old_lang); |
|
| 310 | + } |
|
| 311 | 311 | |
| 312 | - return false; // le hit peut continuer normalement |
|
| 312 | + return false; // le hit peut continuer normalement |
|
| 313 | 313 | } |
@@ -15,7 +15,7 @@ discard block |
||
| 15 | 15 | * @package SPIP\Core\Formulaires |
| 16 | 16 | **/ |
| 17 | 17 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 18 | - return; |
|
| 18 | + return; |
|
| 19 | 19 | } |
| 20 | 20 | |
| 21 | 21 | |
@@ -35,25 +35,25 @@ discard block |
||
| 35 | 35 | * ($table_source,$objet,$id_objet,$objet_lien) |
| 36 | 36 | */ |
| 37 | 37 | function determine_source_lien_objet($a, $b, $c) { |
| 38 | - $table_source = $objet_lien = $objet = $id_objet = null; |
|
| 39 | - // auteurs, article, 23 : |
|
| 40 | - // associer des auteurs à l'article 23, sur la table pivot spip_auteurs_liens |
|
| 41 | - if (is_numeric($c) and !is_numeric($b)) { |
|
| 42 | - $table_source = table_objet($a); |
|
| 43 | - $objet_lien = objet_type($a); |
|
| 44 | - $objet = objet_type($b); |
|
| 45 | - $id_objet = $c; |
|
| 46 | - } |
|
| 47 | - // article, 23, auteurs |
|
| 48 | - // associer des auteurs à l'article 23, sur la table pivot spip_articles_liens |
|
| 49 | - if (is_numeric($b) and !is_numeric($c)) { |
|
| 50 | - $table_source = table_objet($c); |
|
| 51 | - $objet_lien = objet_type($a); |
|
| 52 | - $objet = objet_type($a); |
|
| 53 | - $id_objet = $b; |
|
| 54 | - } |
|
| 55 | - |
|
| 56 | - return array($table_source, $objet, $id_objet, $objet_lien); |
|
| 38 | + $table_source = $objet_lien = $objet = $id_objet = null; |
|
| 39 | + // auteurs, article, 23 : |
|
| 40 | + // associer des auteurs à l'article 23, sur la table pivot spip_auteurs_liens |
|
| 41 | + if (is_numeric($c) and !is_numeric($b)) { |
|
| 42 | + $table_source = table_objet($a); |
|
| 43 | + $objet_lien = objet_type($a); |
|
| 44 | + $objet = objet_type($b); |
|
| 45 | + $id_objet = $c; |
|
| 46 | + } |
|
| 47 | + // article, 23, auteurs |
|
| 48 | + // associer des auteurs à l'article 23, sur la table pivot spip_articles_liens |
|
| 49 | + if (is_numeric($b) and !is_numeric($c)) { |
|
| 50 | + $table_source = table_objet($c); |
|
| 51 | + $objet_lien = objet_type($a); |
|
| 52 | + $objet = objet_type($a); |
|
| 53 | + $id_objet = $b; |
|
| 54 | + } |
|
| 55 | + |
|
| 56 | + return array($table_source, $objet, $id_objet, $objet_lien); |
|
| 57 | 57 | } |
| 58 | 58 | |
| 59 | 59 | /** |
@@ -79,91 +79,91 @@ discard block |
||
| 79 | 79 | */ |
| 80 | 80 | function formulaires_editer_liens_charger_dist($a, $b, $c, $options = array()) { |
| 81 | 81 | |
| 82 | - // compat avec ancienne signature ou le 4eme argument est $editable |
|
| 83 | - if (!is_array($options)) { |
|
| 84 | - $options = array('editable' => $options); |
|
| 85 | - } elseif (!isset($options['editable'])) { |
|
| 86 | - $options['editable'] = true; |
|
| 87 | - } |
|
| 88 | - |
|
| 89 | - $editable = $options['editable']; |
|
| 90 | - |
|
| 91 | - list($table_source, $objet, $id_objet, $objet_lien) = determine_source_lien_objet($a, $b, $c); |
|
| 92 | - if (!$table_source or !$objet or !$objet_lien or !$id_objet) { |
|
| 93 | - return false; |
|
| 94 | - } |
|
| 95 | - |
|
| 96 | - $objet_source = objet_type($table_source); |
|
| 97 | - $table_sql_source = table_objet_sql($objet_source); |
|
| 98 | - |
|
| 99 | - // verifier existence de la table xxx_liens |
|
| 100 | - include_spip('action/editer_liens'); |
|
| 101 | - if (!objet_associable($objet_lien)) { |
|
| 102 | - return false; |
|
| 103 | - } |
|
| 104 | - |
|
| 105 | - // L'éditabilité :) est définie par un test permanent (par exemple "associermots") ET le 4ème argument |
|
| 106 | - include_spip('inc/autoriser'); |
|
| 107 | - $editable = ($editable and autoriser('associer' . $table_source, $objet, $id_objet) |
|
| 108 | - and autoriser('modifier', $objet, $id_objet)); |
|
| 109 | - |
|
| 110 | - if (!$editable and !count(objet_trouver_liens( |
|
| 111 | - array($objet_lien => '*'), |
|
| 112 | - array(($objet_lien == $objet_source ? $objet : $objet_source) => $id_objet) |
|
| 113 | - ))) { |
|
| 114 | - return false; |
|
| 115 | - } |
|
| 116 | - |
|
| 117 | - // squelettes de vue et de d'association |
|
| 118 | - // ils sont différents si des rôles sont définis. |
|
| 119 | - $skel_vue = $table_source . '_lies'; |
|
| 120 | - $skel_ajout = $table_source . '_associer'; |
|
| 121 | - |
|
| 122 | - // description des roles |
|
| 123 | - include_spip('inc/roles'); |
|
| 124 | - if ($roles = roles_presents($objet_source, $objet)) { |
|
| 125 | - // on demande de nouveaux squelettes en conséquence |
|
| 126 | - $skel_vue = $table_source . '_roles_lies'; |
|
| 127 | - $skel_ajout = $table_source . '_roles_associer'; |
|
| 128 | - } |
|
| 129 | - |
|
| 130 | - $oups = _request('_oups'); |
|
| 131 | - if (unserialize(base64_decode($oups))) { |
|
| 132 | - // on est bon, rien a faire |
|
| 133 | - } |
|
| 134 | - elseif(unserialize($oups)) { |
|
| 135 | - // il faut encoder |
|
| 136 | - $oups = base64_encode($oups); |
|
| 137 | - } |
|
| 138 | - else { |
|
| 139 | - $oups = ''; |
|
| 140 | - } |
|
| 141 | - $valeurs = array( |
|
| 142 | - 'id' => "$table_source-$objet-$id_objet-$objet_lien", // identifiant unique pour les id du form |
|
| 143 | - '_vue_liee' => $skel_vue, |
|
| 144 | - '_vue_ajout' => $skel_ajout, |
|
| 145 | - '_objet_lien' => $objet_lien, |
|
| 146 | - 'id_lien_ajoute' => _request('id_lien_ajoute'), |
|
| 147 | - 'objet' => $objet, |
|
| 148 | - 'id_objet' => $id_objet, |
|
| 149 | - 'objet_source' => $objet_source, |
|
| 150 | - 'table_source' => $table_source, |
|
| 151 | - 'recherche' => '', |
|
| 152 | - 'visible' => 0, |
|
| 153 | - 'ajouter_lien' => '', |
|
| 154 | - 'supprimer_lien' => '', |
|
| 155 | - 'qualifier_lien' => '', |
|
| 156 | - 'ordonner_lien' => '', |
|
| 157 | - 'desordonner_liens' => '', |
|
| 158 | - '_roles' => $roles, # description des roles |
|
| 159 | - '_oups' => $oups, |
|
| 160 | - 'editable' => $editable, |
|
| 161 | - ); |
|
| 162 | - |
|
| 163 | - // les options non definies dans $valeurs sont passees telles quelles au formulaire html |
|
| 164 | - $valeurs = array_merge($options, $valeurs); |
|
| 165 | - |
|
| 166 | - return $valeurs; |
|
| 82 | + // compat avec ancienne signature ou le 4eme argument est $editable |
|
| 83 | + if (!is_array($options)) { |
|
| 84 | + $options = array('editable' => $options); |
|
| 85 | + } elseif (!isset($options['editable'])) { |
|
| 86 | + $options['editable'] = true; |
|
| 87 | + } |
|
| 88 | + |
|
| 89 | + $editable = $options['editable']; |
|
| 90 | + |
|
| 91 | + list($table_source, $objet, $id_objet, $objet_lien) = determine_source_lien_objet($a, $b, $c); |
|
| 92 | + if (!$table_source or !$objet or !$objet_lien or !$id_objet) { |
|
| 93 | + return false; |
|
| 94 | + } |
|
| 95 | + |
|
| 96 | + $objet_source = objet_type($table_source); |
|
| 97 | + $table_sql_source = table_objet_sql($objet_source); |
|
| 98 | + |
|
| 99 | + // verifier existence de la table xxx_liens |
|
| 100 | + include_spip('action/editer_liens'); |
|
| 101 | + if (!objet_associable($objet_lien)) { |
|
| 102 | + return false; |
|
| 103 | + } |
|
| 104 | + |
|
| 105 | + // L'éditabilité :) est définie par un test permanent (par exemple "associermots") ET le 4ème argument |
|
| 106 | + include_spip('inc/autoriser'); |
|
| 107 | + $editable = ($editable and autoriser('associer' . $table_source, $objet, $id_objet) |
|
| 108 | + and autoriser('modifier', $objet, $id_objet)); |
|
| 109 | + |
|
| 110 | + if (!$editable and !count(objet_trouver_liens( |
|
| 111 | + array($objet_lien => '*'), |
|
| 112 | + array(($objet_lien == $objet_source ? $objet : $objet_source) => $id_objet) |
|
| 113 | + ))) { |
|
| 114 | + return false; |
|
| 115 | + } |
|
| 116 | + |
|
| 117 | + // squelettes de vue et de d'association |
|
| 118 | + // ils sont différents si des rôles sont définis. |
|
| 119 | + $skel_vue = $table_source . '_lies'; |
|
| 120 | + $skel_ajout = $table_source . '_associer'; |
|
| 121 | + |
|
| 122 | + // description des roles |
|
| 123 | + include_spip('inc/roles'); |
|
| 124 | + if ($roles = roles_presents($objet_source, $objet)) { |
|
| 125 | + // on demande de nouveaux squelettes en conséquence |
|
| 126 | + $skel_vue = $table_source . '_roles_lies'; |
|
| 127 | + $skel_ajout = $table_source . '_roles_associer'; |
|
| 128 | + } |
|
| 129 | + |
|
| 130 | + $oups = _request('_oups'); |
|
| 131 | + if (unserialize(base64_decode($oups))) { |
|
| 132 | + // on est bon, rien a faire |
|
| 133 | + } |
|
| 134 | + elseif(unserialize($oups)) { |
|
| 135 | + // il faut encoder |
|
| 136 | + $oups = base64_encode($oups); |
|
| 137 | + } |
|
| 138 | + else { |
|
| 139 | + $oups = ''; |
|
| 140 | + } |
|
| 141 | + $valeurs = array( |
|
| 142 | + 'id' => "$table_source-$objet-$id_objet-$objet_lien", // identifiant unique pour les id du form |
|
| 143 | + '_vue_liee' => $skel_vue, |
|
| 144 | + '_vue_ajout' => $skel_ajout, |
|
| 145 | + '_objet_lien' => $objet_lien, |
|
| 146 | + 'id_lien_ajoute' => _request('id_lien_ajoute'), |
|
| 147 | + 'objet' => $objet, |
|
| 148 | + 'id_objet' => $id_objet, |
|
| 149 | + 'objet_source' => $objet_source, |
|
| 150 | + 'table_source' => $table_source, |
|
| 151 | + 'recherche' => '', |
|
| 152 | + 'visible' => 0, |
|
| 153 | + 'ajouter_lien' => '', |
|
| 154 | + 'supprimer_lien' => '', |
|
| 155 | + 'qualifier_lien' => '', |
|
| 156 | + 'ordonner_lien' => '', |
|
| 157 | + 'desordonner_liens' => '', |
|
| 158 | + '_roles' => $roles, # description des roles |
|
| 159 | + '_oups' => $oups, |
|
| 160 | + 'editable' => $editable, |
|
| 161 | + ); |
|
| 162 | + |
|
| 163 | + // les options non definies dans $valeurs sont passees telles quelles au formulaire html |
|
| 164 | + $valeurs = array_merge($options, $valeurs); |
|
| 165 | + |
|
| 166 | + return $valeurs; |
|
| 167 | 167 | } |
| 168 | 168 | |
| 169 | 169 | /** |
@@ -207,161 +207,161 @@ discard block |
||
| 207 | 207 | * @return array |
| 208 | 208 | */ |
| 209 | 209 | function formulaires_editer_liens_traiter_dist($a, $b, $c, $options = array()) { |
| 210 | - // compat avec ancienne signature ou le 4eme argument est $editable |
|
| 211 | - if (!is_array($options)) { |
|
| 212 | - $options = array('editable' => $options); |
|
| 213 | - } elseif (!isset($options['editable'])) { |
|
| 214 | - $options['editable'] = true; |
|
| 215 | - } |
|
| 216 | - |
|
| 217 | - $editable = $options['editable']; |
|
| 218 | - |
|
| 219 | - $res = array('editable' => $editable ? true : false); |
|
| 220 | - list($table_source, $objet, $id_objet, $objet_lien) = determine_source_lien_objet($a, $b, $c); |
|
| 221 | - if (!$table_source or !$objet or !$objet_lien) { |
|
| 222 | - return $res; |
|
| 223 | - } |
|
| 224 | - |
|
| 225 | - |
|
| 226 | - if (_request('tout_voir')) { |
|
| 227 | - set_request('recherche', ''); |
|
| 228 | - } |
|
| 229 | - |
|
| 230 | - include_spip('inc/autoriser'); |
|
| 231 | - if (autoriser('modifier', $objet, $id_objet)) { |
|
| 232 | - // annuler les suppressions du coup d'avant ! |
|
| 233 | - if (_request('annuler_oups') |
|
| 234 | - and $oups = _request('_oups') |
|
| 235 | - and $oups = base64_decode($oups) |
|
| 236 | - and $oups = unserialize($oups) |
|
| 237 | - ) { |
|
| 238 | - if ($oups_objets = charger_fonction("editer_liens_oups_{$table_source}_{$objet}_{$objet_lien}", 'action', true)) { |
|
| 239 | - $oups_objets($oups); |
|
| 240 | - } else { |
|
| 241 | - $objet_source = objet_type($table_source); |
|
| 242 | - include_spip('action/editer_liens'); |
|
| 243 | - foreach ($oups as $oup) { |
|
| 244 | - if ($objet_lien == $objet_source) { |
|
| 245 | - objet_associer(array($objet_source => $oup[$objet_source]), array($objet => $oup[$objet]), $oup); |
|
| 246 | - } else { |
|
| 247 | - objet_associer(array($objet => $oup[$objet]), array($objet_source => $oup[$objet_source]), $oup); |
|
| 248 | - } |
|
| 249 | - } |
|
| 250 | - } |
|
| 251 | - # oups ne persiste que pour la derniere action, si suppression |
|
| 252 | - set_request('_oups'); |
|
| 253 | - } |
|
| 254 | - |
|
| 255 | - $supprimer = _request('supprimer_lien'); |
|
| 256 | - $ajouter = _request('ajouter_lien'); |
|
| 257 | - $ordonner = _request('ordonner_lien'); |
|
| 258 | - |
|
| 259 | - if (_request('desordonner_liens')) { |
|
| 260 | - include_spip('action/editer_liens'); |
|
| 261 | - objet_qualifier_liens(array($objet_lien => '*'), array($objet => $id_objet), array('rang_lien' => 0)); |
|
| 262 | - } |
|
| 263 | - |
|
| 264 | - // il est possible de preciser dans une seule variable un remplacement : |
|
| 265 | - // remplacer_lien[old][new] |
|
| 266 | - if ($remplacer = _request('remplacer_lien')) { |
|
| 267 | - foreach ($remplacer as $k => $v) { |
|
| 268 | - if ($old = lien_verifier_action($k, '')) { |
|
| 269 | - foreach (is_array($v) ? $v : array($v) as $kn => $vn) { |
|
| 270 | - if ($new = lien_verifier_action($kn, $vn)) { |
|
| 271 | - $supprimer[$old] = 'x'; |
|
| 272 | - $ajouter[$new] = '+'; |
|
| 273 | - } |
|
| 274 | - } |
|
| 275 | - } |
|
| 276 | - } |
|
| 277 | - } |
|
| 278 | - |
|
| 279 | - if ($supprimer) { |
|
| 280 | - if ($supprimer_objets = charger_fonction( |
|
| 281 | - "editer_liens_supprimer_{$table_source}_{$objet}_{$objet_lien}", |
|
| 282 | - 'action', |
|
| 283 | - true |
|
| 284 | - )) { |
|
| 285 | - $oups = $supprimer_objets($supprimer); |
|
| 286 | - } else { |
|
| 287 | - include_spip('action/editer_liens'); |
|
| 288 | - $oups = array(); |
|
| 289 | - |
|
| 290 | - foreach ($supprimer as $k => $v) { |
|
| 291 | - if ($lien = lien_verifier_action($k, $v)) { |
|
| 292 | - $lien = explode('-', $lien); |
|
| 293 | - list($objet_source, $ids, $objet_lie, $idl, $role) = array_pad($lien, 5, null); |
|
| 294 | - // appliquer une condition sur le rôle si défini ('*' pour tous les roles) |
|
| 295 | - $cond = (!is_null($role) ? array('role' => $role) : array()); |
|
| 296 | - if ($objet_lien == $objet_source) { |
|
| 297 | - $oups = array_merge( |
|
| 298 | - $oups, |
|
| 299 | - objet_trouver_liens(array($objet_source => $ids), array($objet_lie => $idl), $cond) |
|
| 300 | - ); |
|
| 301 | - objet_dissocier(array($objet_source => $ids), array($objet_lie => $idl), $cond); |
|
| 302 | - } else { |
|
| 303 | - $oups = array_merge( |
|
| 304 | - $oups, |
|
| 305 | - objet_trouver_liens(array($objet_lie => $idl), array($objet_source => $ids), $cond) |
|
| 306 | - ); |
|
| 307 | - objet_dissocier(array($objet_lie => $idl), array($objet_source => $ids), $cond); |
|
| 308 | - } |
|
| 309 | - } |
|
| 310 | - } |
|
| 311 | - } |
|
| 312 | - set_request('_oups', $oups ? base64_encode(serialize($oups)) : null); |
|
| 313 | - } |
|
| 314 | - |
|
| 315 | - if ($ajouter) { |
|
| 316 | - if ($ajouter_objets = charger_fonction("editer_liens_ajouter_{$table_source}_{$objet}_{$objet_lien}", 'action', true) |
|
| 317 | - ) { |
|
| 318 | - $ajout_ok = $ajouter_objets($ajouter); |
|
| 319 | - } else { |
|
| 320 | - $ajout_ok = false; |
|
| 321 | - include_spip('action/editer_liens'); |
|
| 322 | - foreach ($ajouter as $k => $v) { |
|
| 323 | - if ($lien = lien_verifier_action($k, $v)) { |
|
| 324 | - $ajout_ok = true; |
|
| 325 | - list($objet1, $ids, $objet2, $idl) = explode('-', $lien); |
|
| 326 | - $qualifs = lien_retrouver_qualif($objet_lien, $lien); |
|
| 327 | - if ($objet_lien == $objet1) { |
|
| 328 | - lien_ajouter_liaisons($objet1, $ids, $objet2, $idl, $qualifs); |
|
| 329 | - } else { |
|
| 330 | - lien_ajouter_liaisons($objet2, $idl, $objet1, $ids, $qualifs); |
|
| 331 | - } |
|
| 332 | - set_request('id_lien_ajoute', $ids); |
|
| 333 | - } |
|
| 334 | - } |
|
| 335 | - } |
|
| 336 | - # oups ne persiste que pour la derniere action, si suppression |
|
| 337 | - # une suppression suivie d'un ajout dans le meme hit est un remplacement |
|
| 338 | - # non annulable ! |
|
| 339 | - if ($ajout_ok) { |
|
| 340 | - set_request('_oups'); |
|
| 341 | - } |
|
| 342 | - } |
|
| 343 | - |
|
| 344 | - if ($ordonner) { |
|
| 345 | - include_spip('action/editer_liens'); |
|
| 346 | - foreach ($ordonner as $k => $rang_lien) { |
|
| 347 | - if ($lien = lien_verifier_action($k, '')) { |
|
| 348 | - list($objet1, $ids, $objet2, $idl) = explode('-', $lien); |
|
| 349 | - $qualif = array('rang_lien' => $rang_lien); |
|
| 350 | - |
|
| 351 | - if ($objet_lien == $objet1) { |
|
| 352 | - objet_qualifier_liens(array($objet1 => $ids), array($objet2 => $idl), $qualif); |
|
| 353 | - } else { |
|
| 354 | - objet_qualifier_liens(array($objet2 => $idl), array($objet1 => $ids), $qualif); |
|
| 355 | - } |
|
| 356 | - set_request('id_lien_ajoute', $ids); |
|
| 357 | - set_request('_oups'); |
|
| 358 | - } |
|
| 359 | - } |
|
| 360 | - } |
|
| 361 | - } |
|
| 362 | - |
|
| 363 | - |
|
| 364 | - return $res; |
|
| 210 | + // compat avec ancienne signature ou le 4eme argument est $editable |
|
| 211 | + if (!is_array($options)) { |
|
| 212 | + $options = array('editable' => $options); |
|
| 213 | + } elseif (!isset($options['editable'])) { |
|
| 214 | + $options['editable'] = true; |
|
| 215 | + } |
|
| 216 | + |
|
| 217 | + $editable = $options['editable']; |
|
| 218 | + |
|
| 219 | + $res = array('editable' => $editable ? true : false); |
|
| 220 | + list($table_source, $objet, $id_objet, $objet_lien) = determine_source_lien_objet($a, $b, $c); |
|
| 221 | + if (!$table_source or !$objet or !$objet_lien) { |
|
| 222 | + return $res; |
|
| 223 | + } |
|
| 224 | + |
|
| 225 | + |
|
| 226 | + if (_request('tout_voir')) { |
|
| 227 | + set_request('recherche', ''); |
|
| 228 | + } |
|
| 229 | + |
|
| 230 | + include_spip('inc/autoriser'); |
|
| 231 | + if (autoriser('modifier', $objet, $id_objet)) { |
|
| 232 | + // annuler les suppressions du coup d'avant ! |
|
| 233 | + if (_request('annuler_oups') |
|
| 234 | + and $oups = _request('_oups') |
|
| 235 | + and $oups = base64_decode($oups) |
|
| 236 | + and $oups = unserialize($oups) |
|
| 237 | + ) { |
|
| 238 | + if ($oups_objets = charger_fonction("editer_liens_oups_{$table_source}_{$objet}_{$objet_lien}", 'action', true)) { |
|
| 239 | + $oups_objets($oups); |
|
| 240 | + } else { |
|
| 241 | + $objet_source = objet_type($table_source); |
|
| 242 | + include_spip('action/editer_liens'); |
|
| 243 | + foreach ($oups as $oup) { |
|
| 244 | + if ($objet_lien == $objet_source) { |
|
| 245 | + objet_associer(array($objet_source => $oup[$objet_source]), array($objet => $oup[$objet]), $oup); |
|
| 246 | + } else { |
|
| 247 | + objet_associer(array($objet => $oup[$objet]), array($objet_source => $oup[$objet_source]), $oup); |
|
| 248 | + } |
|
| 249 | + } |
|
| 250 | + } |
|
| 251 | + # oups ne persiste que pour la derniere action, si suppression |
|
| 252 | + set_request('_oups'); |
|
| 253 | + } |
|
| 254 | + |
|
| 255 | + $supprimer = _request('supprimer_lien'); |
|
| 256 | + $ajouter = _request('ajouter_lien'); |
|
| 257 | + $ordonner = _request('ordonner_lien'); |
|
| 258 | + |
|
| 259 | + if (_request('desordonner_liens')) { |
|
| 260 | + include_spip('action/editer_liens'); |
|
| 261 | + objet_qualifier_liens(array($objet_lien => '*'), array($objet => $id_objet), array('rang_lien' => 0)); |
|
| 262 | + } |
|
| 263 | + |
|
| 264 | + // il est possible de preciser dans une seule variable un remplacement : |
|
| 265 | + // remplacer_lien[old][new] |
|
| 266 | + if ($remplacer = _request('remplacer_lien')) { |
|
| 267 | + foreach ($remplacer as $k => $v) { |
|
| 268 | + if ($old = lien_verifier_action($k, '')) { |
|
| 269 | + foreach (is_array($v) ? $v : array($v) as $kn => $vn) { |
|
| 270 | + if ($new = lien_verifier_action($kn, $vn)) { |
|
| 271 | + $supprimer[$old] = 'x'; |
|
| 272 | + $ajouter[$new] = '+'; |
|
| 273 | + } |
|
| 274 | + } |
|
| 275 | + } |
|
| 276 | + } |
|
| 277 | + } |
|
| 278 | + |
|
| 279 | + if ($supprimer) { |
|
| 280 | + if ($supprimer_objets = charger_fonction( |
|
| 281 | + "editer_liens_supprimer_{$table_source}_{$objet}_{$objet_lien}", |
|
| 282 | + 'action', |
|
| 283 | + true |
|
| 284 | + )) { |
|
| 285 | + $oups = $supprimer_objets($supprimer); |
|
| 286 | + } else { |
|
| 287 | + include_spip('action/editer_liens'); |
|
| 288 | + $oups = array(); |
|
| 289 | + |
|
| 290 | + foreach ($supprimer as $k => $v) { |
|
| 291 | + if ($lien = lien_verifier_action($k, $v)) { |
|
| 292 | + $lien = explode('-', $lien); |
|
| 293 | + list($objet_source, $ids, $objet_lie, $idl, $role) = array_pad($lien, 5, null); |
|
| 294 | + // appliquer une condition sur le rôle si défini ('*' pour tous les roles) |
|
| 295 | + $cond = (!is_null($role) ? array('role' => $role) : array()); |
|
| 296 | + if ($objet_lien == $objet_source) { |
|
| 297 | + $oups = array_merge( |
|
| 298 | + $oups, |
|
| 299 | + objet_trouver_liens(array($objet_source => $ids), array($objet_lie => $idl), $cond) |
|
| 300 | + ); |
|
| 301 | + objet_dissocier(array($objet_source => $ids), array($objet_lie => $idl), $cond); |
|
| 302 | + } else { |
|
| 303 | + $oups = array_merge( |
|
| 304 | + $oups, |
|
| 305 | + objet_trouver_liens(array($objet_lie => $idl), array($objet_source => $ids), $cond) |
|
| 306 | + ); |
|
| 307 | + objet_dissocier(array($objet_lie => $idl), array($objet_source => $ids), $cond); |
|
| 308 | + } |
|
| 309 | + } |
|
| 310 | + } |
|
| 311 | + } |
|
| 312 | + set_request('_oups', $oups ? base64_encode(serialize($oups)) : null); |
|
| 313 | + } |
|
| 314 | + |
|
| 315 | + if ($ajouter) { |
|
| 316 | + if ($ajouter_objets = charger_fonction("editer_liens_ajouter_{$table_source}_{$objet}_{$objet_lien}", 'action', true) |
|
| 317 | + ) { |
|
| 318 | + $ajout_ok = $ajouter_objets($ajouter); |
|
| 319 | + } else { |
|
| 320 | + $ajout_ok = false; |
|
| 321 | + include_spip('action/editer_liens'); |
|
| 322 | + foreach ($ajouter as $k => $v) { |
|
| 323 | + if ($lien = lien_verifier_action($k, $v)) { |
|
| 324 | + $ajout_ok = true; |
|
| 325 | + list($objet1, $ids, $objet2, $idl) = explode('-', $lien); |
|
| 326 | + $qualifs = lien_retrouver_qualif($objet_lien, $lien); |
|
| 327 | + if ($objet_lien == $objet1) { |
|
| 328 | + lien_ajouter_liaisons($objet1, $ids, $objet2, $idl, $qualifs); |
|
| 329 | + } else { |
|
| 330 | + lien_ajouter_liaisons($objet2, $idl, $objet1, $ids, $qualifs); |
|
| 331 | + } |
|
| 332 | + set_request('id_lien_ajoute', $ids); |
|
| 333 | + } |
|
| 334 | + } |
|
| 335 | + } |
|
| 336 | + # oups ne persiste que pour la derniere action, si suppression |
|
| 337 | + # une suppression suivie d'un ajout dans le meme hit est un remplacement |
|
| 338 | + # non annulable ! |
|
| 339 | + if ($ajout_ok) { |
|
| 340 | + set_request('_oups'); |
|
| 341 | + } |
|
| 342 | + } |
|
| 343 | + |
|
| 344 | + if ($ordonner) { |
|
| 345 | + include_spip('action/editer_liens'); |
|
| 346 | + foreach ($ordonner as $k => $rang_lien) { |
|
| 347 | + if ($lien = lien_verifier_action($k, '')) { |
|
| 348 | + list($objet1, $ids, $objet2, $idl) = explode('-', $lien); |
|
| 349 | + $qualif = array('rang_lien' => $rang_lien); |
|
| 350 | + |
|
| 351 | + if ($objet_lien == $objet1) { |
|
| 352 | + objet_qualifier_liens(array($objet1 => $ids), array($objet2 => $idl), $qualif); |
|
| 353 | + } else { |
|
| 354 | + objet_qualifier_liens(array($objet2 => $idl), array($objet1 => $ids), $qualif); |
|
| 355 | + } |
|
| 356 | + set_request('id_lien_ajoute', $ids); |
|
| 357 | + set_request('_oups'); |
|
| 358 | + } |
|
| 359 | + } |
|
| 360 | + } |
|
| 361 | + } |
|
| 362 | + |
|
| 363 | + |
|
| 364 | + return $res; |
|
| 365 | 365 | } |
| 366 | 366 | |
| 367 | 367 | |
@@ -384,24 +384,24 @@ discard block |
||
| 384 | 384 | * @return string Action demandée si trouvée, sinon '' |
| 385 | 385 | */ |
| 386 | 386 | function lien_verifier_action($k, $v) { |
| 387 | - $action = ''; |
|
| 388 | - if (preg_match(',^\w+-[\w*]+-[\w*]+-[\w*]+(-[\w*])?,', $k)) { |
|
| 389 | - $action = $k; |
|
| 390 | - } |
|
| 391 | - if (preg_match(',^\w+-[\w*]+-[\w*]+-[\w*]+(-[\w*])?,', $v)) { |
|
| 392 | - if (is_numeric($k)) { |
|
| 393 | - $action = $v; |
|
| 394 | - } |
|
| 395 | - if (_request($k)) { |
|
| 396 | - $action = $v; |
|
| 397 | - } |
|
| 398 | - } |
|
| 399 | - // ajout un role null fictif (plus pratique) si pas défini |
|
| 400 | - if ($action and count(explode('-', $action)) == 4) { |
|
| 401 | - $action .= '-'; |
|
| 402 | - } |
|
| 403 | - |
|
| 404 | - return $action; |
|
| 387 | + $action = ''; |
|
| 388 | + if (preg_match(',^\w+-[\w*]+-[\w*]+-[\w*]+(-[\w*])?,', $k)) { |
|
| 389 | + $action = $k; |
|
| 390 | + } |
|
| 391 | + if (preg_match(',^\w+-[\w*]+-[\w*]+-[\w*]+(-[\w*])?,', $v)) { |
|
| 392 | + if (is_numeric($k)) { |
|
| 393 | + $action = $v; |
|
| 394 | + } |
|
| 395 | + if (_request($k)) { |
|
| 396 | + $action = $v; |
|
| 397 | + } |
|
| 398 | + } |
|
| 399 | + // ajout un role null fictif (plus pratique) si pas défini |
|
| 400 | + if ($action and count(explode('-', $action)) == 4) { |
|
| 401 | + $action .= '-'; |
|
| 402 | + } |
|
| 403 | + |
|
| 404 | + return $action; |
|
| 405 | 405 | } |
| 406 | 406 | |
| 407 | 407 | |
@@ -417,65 +417,65 @@ discard block |
||
| 417 | 417 | * Liste des qualifs pour chaque lien. Tableau vide s'il n'y en a pas. |
| 418 | 418 | **/ |
| 419 | 419 | function lien_retrouver_qualif($objet_lien, $lien) { |
| 420 | - // un role est défini dans la liaison |
|
| 421 | - $defs = explode('-', $lien); |
|
| 422 | - list($objet1, , $objet2, , $role) = array_pad($defs, 5, null); |
|
| 423 | - if ($objet_lien == $objet1) { |
|
| 424 | - $colonne_role = roles_colonne($objet1, $objet2); |
|
| 425 | - } else { |
|
| 426 | - $colonne_role = roles_colonne($objet2, $objet1); |
|
| 427 | - } |
|
| 428 | - |
|
| 429 | - // cas ou le role est defini en 5e argument de l'action sur le lien (suppression, ajout rapide sans autre attribut) |
|
| 430 | - if ($role) { |
|
| 431 | - return array( |
|
| 432 | - // un seul lien avec ce role |
|
| 433 | - array($colonne_role => $role) |
|
| 434 | - ); |
|
| 435 | - } |
|
| 436 | - |
|
| 437 | - // retrouver les rôles postés pour cette liaison, s'il y en a. |
|
| 438 | - $qualifier_lien = _request('qualifier_lien'); |
|
| 439 | - if (!$qualifier_lien or !is_array($qualifier_lien)) { |
|
| 440 | - return array(); |
|
| 441 | - } |
|
| 442 | - |
|
| 443 | - // pas avec l'action complete (incluant le role) |
|
| 444 | - $qualif = array(); |
|
| 445 | - if ((!isset($qualifier_lien[$lien]) or !$qualif = $qualifier_lien[$lien]) |
|
| 446 | - and count($defs) == 5 |
|
| 447 | - ) { |
|
| 448 | - // on tente avec l'action sans le role |
|
| 449 | - array_pop($defs); |
|
| 450 | - $lien = implode('-', $defs); |
|
| 451 | - if (!isset($qualifier_lien[$lien]) or !$qualif = $qualifier_lien[$lien]) { |
|
| 452 | - $qualif = array(); |
|
| 453 | - } |
|
| 454 | - } |
|
| 455 | - |
|
| 456 | - // $qualif de la forme array(role=>array(...),valeur=>array(...),....) |
|
| 457 | - // on le reforme en array(array(role=>..,valeur=>..,..),array(role=>..,valeur=>..,..),...) |
|
| 458 | - $qualifs = array(); |
|
| 459 | - while (count($qualif)) { |
|
| 460 | - $q = array(); |
|
| 461 | - foreach ($qualif as $att => $values) { |
|
| 462 | - if (is_array($values)) { |
|
| 463 | - $q[$att] = array_shift($qualif[$att]); |
|
| 464 | - if (!count($qualif[$att])) { |
|
| 465 | - unset($qualif[$att]); |
|
| 466 | - } |
|
| 467 | - } else { |
|
| 468 | - $q[$att] = $values; |
|
| 469 | - unset($qualif[$att]); |
|
| 470 | - } |
|
| 471 | - } |
|
| 472 | - // pas de rôle vide |
|
| 473 | - if (!$colonne_role or !isset($q[$colonne_role]) or $q[$colonne_role]) { |
|
| 474 | - $qualifs[] = $q; |
|
| 475 | - } |
|
| 476 | - } |
|
| 477 | - |
|
| 478 | - return $qualifs; |
|
| 420 | + // un role est défini dans la liaison |
|
| 421 | + $defs = explode('-', $lien); |
|
| 422 | + list($objet1, , $objet2, , $role) = array_pad($defs, 5, null); |
|
| 423 | + if ($objet_lien == $objet1) { |
|
| 424 | + $colonne_role = roles_colonne($objet1, $objet2); |
|
| 425 | + } else { |
|
| 426 | + $colonne_role = roles_colonne($objet2, $objet1); |
|
| 427 | + } |
|
| 428 | + |
|
| 429 | + // cas ou le role est defini en 5e argument de l'action sur le lien (suppression, ajout rapide sans autre attribut) |
|
| 430 | + if ($role) { |
|
| 431 | + return array( |
|
| 432 | + // un seul lien avec ce role |
|
| 433 | + array($colonne_role => $role) |
|
| 434 | + ); |
|
| 435 | + } |
|
| 436 | + |
|
| 437 | + // retrouver les rôles postés pour cette liaison, s'il y en a. |
|
| 438 | + $qualifier_lien = _request('qualifier_lien'); |
|
| 439 | + if (!$qualifier_lien or !is_array($qualifier_lien)) { |
|
| 440 | + return array(); |
|
| 441 | + } |
|
| 442 | + |
|
| 443 | + // pas avec l'action complete (incluant le role) |
|
| 444 | + $qualif = array(); |
|
| 445 | + if ((!isset($qualifier_lien[$lien]) or !$qualif = $qualifier_lien[$lien]) |
|
| 446 | + and count($defs) == 5 |
|
| 447 | + ) { |
|
| 448 | + // on tente avec l'action sans le role |
|
| 449 | + array_pop($defs); |
|
| 450 | + $lien = implode('-', $defs); |
|
| 451 | + if (!isset($qualifier_lien[$lien]) or !$qualif = $qualifier_lien[$lien]) { |
|
| 452 | + $qualif = array(); |
|
| 453 | + } |
|
| 454 | + } |
|
| 455 | + |
|
| 456 | + // $qualif de la forme array(role=>array(...),valeur=>array(...),....) |
|
| 457 | + // on le reforme en array(array(role=>..,valeur=>..,..),array(role=>..,valeur=>..,..),...) |
|
| 458 | + $qualifs = array(); |
|
| 459 | + while (count($qualif)) { |
|
| 460 | + $q = array(); |
|
| 461 | + foreach ($qualif as $att => $values) { |
|
| 462 | + if (is_array($values)) { |
|
| 463 | + $q[$att] = array_shift($qualif[$att]); |
|
| 464 | + if (!count($qualif[$att])) { |
|
| 465 | + unset($qualif[$att]); |
|
| 466 | + } |
|
| 467 | + } else { |
|
| 468 | + $q[$att] = $values; |
|
| 469 | + unset($qualif[$att]); |
|
| 470 | + } |
|
| 471 | + } |
|
| 472 | + // pas de rôle vide |
|
| 473 | + if (!$colonne_role or !isset($q[$colonne_role]) or $q[$colonne_role]) { |
|
| 474 | + $qualifs[] = $q; |
|
| 475 | + } |
|
| 476 | + } |
|
| 477 | + |
|
| 478 | + return $qualifs; |
|
| 479 | 479 | } |
| 480 | 480 | |
| 481 | 481 | /** |
@@ -494,12 +494,12 @@ discard block |
||
| 494 | 494 | **/ |
| 495 | 495 | function lien_ajouter_liaisons($objet_source, $ids, $objet_lien, $idl, $qualifs) { |
| 496 | 496 | |
| 497 | - // retrouver la colonne de roles s'il y en a a lier |
|
| 498 | - if (is_array($qualifs) and count($qualifs)) { |
|
| 499 | - foreach ($qualifs as $qualif) { |
|
| 500 | - objet_associer(array($objet_source => $ids), array($objet_lien => $idl), $qualif); |
|
| 501 | - } |
|
| 502 | - } else { |
|
| 503 | - objet_associer(array($objet_source => $ids), array($objet_lien => $idl)); |
|
| 504 | - } |
|
| 497 | + // retrouver la colonne de roles s'il y en a a lier |
|
| 498 | + if (is_array($qualifs) and count($qualifs)) { |
|
| 499 | + foreach ($qualifs as $qualif) { |
|
| 500 | + objet_associer(array($objet_source => $ids), array($objet_lien => $idl), $qualif); |
|
| 501 | + } |
|
| 502 | + } else { |
|
| 503 | + objet_associer(array($objet_source => $ids), array($objet_lien => $idl)); |
|
| 504 | + } |
|
| 505 | 505 | } |
@@ -104,7 +104,7 @@ discard block |
||
| 104 | 104 | |
| 105 | 105 | // L'éditabilité :) est définie par un test permanent (par exemple "associermots") ET le 4ème argument |
| 106 | 106 | include_spip('inc/autoriser'); |
| 107 | - $editable = ($editable and autoriser('associer' . $table_source, $objet, $id_objet) |
|
| 107 | + $editable = ($editable and autoriser('associer'.$table_source, $objet, $id_objet) |
|
| 108 | 108 | and autoriser('modifier', $objet, $id_objet)); |
| 109 | 109 | |
| 110 | 110 | if (!$editable and !count(objet_trouver_liens( |
@@ -116,22 +116,22 @@ discard block |
||
| 116 | 116 | |
| 117 | 117 | // squelettes de vue et de d'association |
| 118 | 118 | // ils sont différents si des rôles sont définis. |
| 119 | - $skel_vue = $table_source . '_lies'; |
|
| 120 | - $skel_ajout = $table_source . '_associer'; |
|
| 119 | + $skel_vue = $table_source.'_lies'; |
|
| 120 | + $skel_ajout = $table_source.'_associer'; |
|
| 121 | 121 | |
| 122 | 122 | // description des roles |
| 123 | 123 | include_spip('inc/roles'); |
| 124 | 124 | if ($roles = roles_presents($objet_source, $objet)) { |
| 125 | 125 | // on demande de nouveaux squelettes en conséquence |
| 126 | - $skel_vue = $table_source . '_roles_lies'; |
|
| 127 | - $skel_ajout = $table_source . '_roles_associer'; |
|
| 126 | + $skel_vue = $table_source.'_roles_lies'; |
|
| 127 | + $skel_ajout = $table_source.'_roles_associer'; |
|
| 128 | 128 | } |
| 129 | 129 | |
| 130 | 130 | $oups = _request('_oups'); |
| 131 | 131 | if (unserialize(base64_decode($oups))) { |
| 132 | 132 | // on est bon, rien a faire |
| 133 | 133 | } |
| 134 | - elseif(unserialize($oups)) { |
|
| 134 | + elseif (unserialize($oups)) { |
|
| 135 | 135 | // il faut encoder |
| 136 | 136 | $oups = base64_encode($oups); |
| 137 | 137 | } |
@@ -419,7 +419,7 @@ discard block |
||
| 419 | 419 | function lien_retrouver_qualif($objet_lien, $lien) { |
| 420 | 420 | // un role est défini dans la liaison |
| 421 | 421 | $defs = explode('-', $lien); |
| 422 | - list($objet1, , $objet2, , $role) = array_pad($defs, 5, null); |
|
| 422 | + list($objet1,, $objet2,, $role) = array_pad($defs, 5, null); |
|
| 423 | 423 | if ($objet_lien == $objet1) { |
| 424 | 424 | $colonne_role = roles_colonne($objet1, $objet2); |
| 425 | 425 | } else { |
@@ -130,12 +130,10 @@ |
||
| 130 | 130 | $oups = _request('_oups'); |
| 131 | 131 | if (unserialize(base64_decode($oups))) { |
| 132 | 132 | // on est bon, rien a faire |
| 133 | - } |
|
| 134 | - elseif(unserialize($oups)) { |
|
| 133 | + } elseif(unserialize($oups)) { |
|
| 135 | 134 | // il faut encoder |
| 136 | 135 | $oups = base64_encode($oups); |
| 137 | - } |
|
| 138 | - else { |
|
| 136 | + } else { |
|
| 139 | 137 | $oups = ''; |
| 140 | 138 | } |
| 141 | 139 | $valeurs = array( |
@@ -17,7 +17,7 @@ discard block |
||
| 17 | 17 | **/ |
| 18 | 18 | |
| 19 | 19 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 20 | - return; |
|
| 20 | + return; |
|
| 21 | 21 | } |
| 22 | 22 | |
| 23 | 23 | include_spip('inc/actions'); |
@@ -39,64 +39,64 @@ discard block |
||
| 39 | 39 | * Contexte à transmettre au squelette du formulaire sinon |
| 40 | 40 | */ |
| 41 | 41 | function formulaires_traduire_charger_dist($objet, $id_objet, $retour = '', $traduire = true) { |
| 42 | - if (!intval($id_objet)) { |
|
| 43 | - return false; |
|
| 44 | - } |
|
| 45 | - $valeurs = formulaires_editer_objet_charger($objet, $id_objet, null, 0, $retour, ''); |
|
| 46 | - // verifier que l'objet indique possede bien des champs id_trad et lang |
|
| 47 | - // attention, charger renomme lang => langue pour ne pas perturber la langue d'affichage du squelette |
|
| 48 | - if (!isset($valeurs['langue'])) { |
|
| 49 | - return false; |
|
| 50 | - } |
|
| 51 | - |
|
| 52 | - $valeurs['editable'] = autoriser('changerlangue', $objet, $id_objet); |
|
| 53 | - $valeurs['_langue'] = ''; |
|
| 54 | - $langue_parent = ''; |
|
| 55 | - $id_parent = ''; |
|
| 56 | - if (isset($valeurs['id_rubrique'])) { |
|
| 57 | - $id_parent = $valeurs['id_rubrique']; |
|
| 58 | - } |
|
| 59 | - if (isset($valeurs['id_parent'])) { |
|
| 60 | - $id_parent = $valeurs['id_parent']; |
|
| 61 | - } |
|
| 62 | - if ($id_parent) { |
|
| 63 | - $langue_parent = sql_getfetsel('lang', 'spip_rubriques', 'id_rubrique=' . intval($id_parent)); |
|
| 64 | - } |
|
| 65 | - |
|
| 66 | - if (!$langue_parent) { |
|
| 67 | - $langue_parent = $GLOBALS['meta']['langue_site']; |
|
| 68 | - } |
|
| 69 | - if ($valeurs['editable'] |
|
| 70 | - and in_array(table_objet_sql($objet), explode(',', $GLOBALS['meta']['multi_objets'])) |
|
| 71 | - ) { |
|
| 72 | - $valeurs['_langue'] = $valeurs['langue']; |
|
| 73 | - } |
|
| 74 | - $valeurs['langue_parent'] = $langue_parent; |
|
| 75 | - |
|
| 76 | - $valeurs['_objet'] = $objet; |
|
| 77 | - $valeurs['_id_objet'] = $id_objet; |
|
| 78 | - $valeurs['changer_lang'] = ''; |
|
| 79 | - |
|
| 80 | - |
|
| 81 | - $valeurs['_traduisible'] = autoriser('changertraduction', $objet, $id_objet); |
|
| 82 | - $valeurs['_traduire'] = ''; |
|
| 83 | - if (isset($valeurs['id_trad'])) { |
|
| 84 | - $valeurs['_traduire'] = ($traduire ? ' ' : ''); |
|
| 85 | - $valeurs['_vue_traductions'] = 'prive/objets/liste/' . (trouver_fond( |
|
| 86 | - $f = table_objet($objet) . '-trad', |
|
| 87 | - 'prive/objets/liste' |
|
| 88 | - ) ? $f : 'objets-trad'); |
|
| 89 | - // pour afficher la liste des trad sur la base de l'id_trad en base |
|
| 90 | - // independamment d'une saisie en cours sur id_trad |
|
| 91 | - $valeurs['_lister_id_trad'] = $valeurs['id_trad']; |
|
| 92 | - $valeurs['_id_parent'] = $id_parent; |
|
| 93 | - } |
|
| 94 | - |
|
| 95 | - $valeurs['_saisie_en_cours'] = (!_request('annuler') and (_request('changer_lang') !== null |
|
| 96 | - or _request('changer_id_trad') !== null)); |
|
| 97 | - $valeurs['_pipeline'] = array('traduire', array('type' => $objet, 'id' => $id_objet)); |
|
| 98 | - |
|
| 99 | - return $valeurs; |
|
| 42 | + if (!intval($id_objet)) { |
|
| 43 | + return false; |
|
| 44 | + } |
|
| 45 | + $valeurs = formulaires_editer_objet_charger($objet, $id_objet, null, 0, $retour, ''); |
|
| 46 | + // verifier que l'objet indique possede bien des champs id_trad et lang |
|
| 47 | + // attention, charger renomme lang => langue pour ne pas perturber la langue d'affichage du squelette |
|
| 48 | + if (!isset($valeurs['langue'])) { |
|
| 49 | + return false; |
|
| 50 | + } |
|
| 51 | + |
|
| 52 | + $valeurs['editable'] = autoriser('changerlangue', $objet, $id_objet); |
|
| 53 | + $valeurs['_langue'] = ''; |
|
| 54 | + $langue_parent = ''; |
|
| 55 | + $id_parent = ''; |
|
| 56 | + if (isset($valeurs['id_rubrique'])) { |
|
| 57 | + $id_parent = $valeurs['id_rubrique']; |
|
| 58 | + } |
|
| 59 | + if (isset($valeurs['id_parent'])) { |
|
| 60 | + $id_parent = $valeurs['id_parent']; |
|
| 61 | + } |
|
| 62 | + if ($id_parent) { |
|
| 63 | + $langue_parent = sql_getfetsel('lang', 'spip_rubriques', 'id_rubrique=' . intval($id_parent)); |
|
| 64 | + } |
|
| 65 | + |
|
| 66 | + if (!$langue_parent) { |
|
| 67 | + $langue_parent = $GLOBALS['meta']['langue_site']; |
|
| 68 | + } |
|
| 69 | + if ($valeurs['editable'] |
|
| 70 | + and in_array(table_objet_sql($objet), explode(',', $GLOBALS['meta']['multi_objets'])) |
|
| 71 | + ) { |
|
| 72 | + $valeurs['_langue'] = $valeurs['langue']; |
|
| 73 | + } |
|
| 74 | + $valeurs['langue_parent'] = $langue_parent; |
|
| 75 | + |
|
| 76 | + $valeurs['_objet'] = $objet; |
|
| 77 | + $valeurs['_id_objet'] = $id_objet; |
|
| 78 | + $valeurs['changer_lang'] = ''; |
|
| 79 | + |
|
| 80 | + |
|
| 81 | + $valeurs['_traduisible'] = autoriser('changertraduction', $objet, $id_objet); |
|
| 82 | + $valeurs['_traduire'] = ''; |
|
| 83 | + if (isset($valeurs['id_trad'])) { |
|
| 84 | + $valeurs['_traduire'] = ($traduire ? ' ' : ''); |
|
| 85 | + $valeurs['_vue_traductions'] = 'prive/objets/liste/' . (trouver_fond( |
|
| 86 | + $f = table_objet($objet) . '-trad', |
|
| 87 | + 'prive/objets/liste' |
|
| 88 | + ) ? $f : 'objets-trad'); |
|
| 89 | + // pour afficher la liste des trad sur la base de l'id_trad en base |
|
| 90 | + // independamment d'une saisie en cours sur id_trad |
|
| 91 | + $valeurs['_lister_id_trad'] = $valeurs['id_trad']; |
|
| 92 | + $valeurs['_id_parent'] = $id_parent; |
|
| 93 | + } |
|
| 94 | + |
|
| 95 | + $valeurs['_saisie_en_cours'] = (!_request('annuler') and (_request('changer_lang') !== null |
|
| 96 | + or _request('changer_id_trad') !== null)); |
|
| 97 | + $valeurs['_pipeline'] = array('traduire', array('type' => $objet, 'id' => $id_objet)); |
|
| 98 | + |
|
| 99 | + return $valeurs; |
|
| 100 | 100 | } |
| 101 | 101 | |
| 102 | 102 | /** |
@@ -114,30 +114,30 @@ discard block |
||
| 114 | 114 | * Erreurs des saisies |
| 115 | 115 | */ |
| 116 | 116 | function formulaires_traduire_verifier_dist($objet, $id_objet, $retour = '', $traduire = true) { |
| 117 | - $erreurs = array(); |
|
| 118 | - |
|
| 119 | - if (null !== _request('changer_lang')) { |
|
| 120 | - $erreurs = formulaires_editer_objet_verifier($objet, $id_objet, array('changer_lang')); |
|
| 121 | - } |
|
| 122 | - |
|
| 123 | - // si id_trad fourni, verifier que cela ne conflicte pas avec un id_trad existant |
|
| 124 | - // et que ca reference bien un objet existant |
|
| 125 | - if ($id_trad = _request('id_trad')) { |
|
| 126 | - $table_objet_sql = table_objet_sql($objet); |
|
| 127 | - $_id_table_objet = id_table_objet($objet); |
|
| 128 | - if (sql_getfetsel( |
|
| 129 | - 'id_trad', |
|
| 130 | - $table_objet_sql, |
|
| 131 | - "$_id_table_objet=" . intval($id_objet) |
|
| 132 | - )) { |
|
| 133 | - // ne devrait jamais arriver sauf concurence de saisie |
|
| 134 | - $erreurs['id_trad'] = _L('Une traduction est deja referencee'); |
|
| 135 | - } elseif (!sql_getfetsel($_id_table_objet, $table_objet_sql, "$_id_table_objet=" . intval($id_trad))) { |
|
| 136 | - $erreurs['id_trad'] = _L('Indiquez un contenu existant'); |
|
| 137 | - } |
|
| 138 | - } |
|
| 139 | - |
|
| 140 | - return $erreurs; |
|
| 117 | + $erreurs = array(); |
|
| 118 | + |
|
| 119 | + if (null !== _request('changer_lang')) { |
|
| 120 | + $erreurs = formulaires_editer_objet_verifier($objet, $id_objet, array('changer_lang')); |
|
| 121 | + } |
|
| 122 | + |
|
| 123 | + // si id_trad fourni, verifier que cela ne conflicte pas avec un id_trad existant |
|
| 124 | + // et que ca reference bien un objet existant |
|
| 125 | + if ($id_trad = _request('id_trad')) { |
|
| 126 | + $table_objet_sql = table_objet_sql($objet); |
|
| 127 | + $_id_table_objet = id_table_objet($objet); |
|
| 128 | + if (sql_getfetsel( |
|
| 129 | + 'id_trad', |
|
| 130 | + $table_objet_sql, |
|
| 131 | + "$_id_table_objet=" . intval($id_objet) |
|
| 132 | + )) { |
|
| 133 | + // ne devrait jamais arriver sauf concurence de saisie |
|
| 134 | + $erreurs['id_trad'] = _L('Une traduction est deja referencee'); |
|
| 135 | + } elseif (!sql_getfetsel($_id_table_objet, $table_objet_sql, "$_id_table_objet=" . intval($id_trad))) { |
|
| 136 | + $erreurs['id_trad'] = _L('Indiquez un contenu existant'); |
|
| 137 | + } |
|
| 138 | + } |
|
| 139 | + |
|
| 140 | + return $erreurs; |
|
| 141 | 141 | } |
| 142 | 142 | |
| 143 | 143 | |
@@ -156,31 +156,31 @@ discard block |
||
| 156 | 156 | * Retour des traitements |
| 157 | 157 | */ |
| 158 | 158 | function formulaires_traduire_traiter_dist($objet, $id_objet, $retour = '', $traduire = true) { |
| 159 | - $res = array(); |
|
| 160 | - if (!_request('annuler') and autoriser('changerlangue', $objet, $id_objet)) { |
|
| 161 | - // action/editer_xxx doit traiter la modif de changer_lang |
|
| 162 | - $res = formulaires_editer_objet_traiter($objet, $id_objet, 0, 0, $retour); |
|
| 163 | - } |
|
| 164 | - if (!_request('annuler') and autoriser('changertraduction', $objet, $id_objet)) { |
|
| 165 | - if ($id_trad = _request('id_trad') or _request('supprimer_trad')) { |
|
| 166 | - $referencer_traduction = charger_fonction('referencer_traduction', 'action'); |
|
| 167 | - $referencer_traduction($objet, $id_objet, intval($id_trad)); // 0 si supprimer_trad |
|
| 168 | - } elseif ($new_id_trad = _request('changer_reference_trad') |
|
| 169 | - and $new_id_trad = array_keys($new_id_trad) |
|
| 170 | - and $new_id_trad = reset($new_id_trad) |
|
| 171 | - ) { |
|
| 172 | - $table_objet_sql = table_objet_sql($objet); |
|
| 173 | - $_id_table_objet = id_table_objet($objet); |
|
| 174 | - if ($id_trad = sql_getfetsel('id_trad', $table_objet_sql, "$_id_table_objet=" . intval($id_objet))) { |
|
| 175 | - $referencer_traduction = charger_fonction('referencer_traduction', 'action'); |
|
| 176 | - $referencer_traduction($objet, $id_trad, $new_id_trad); |
|
| 177 | - } |
|
| 178 | - } |
|
| 179 | - } |
|
| 180 | - $res['editable'] = true; |
|
| 181 | - if (!isset($res['message_erreur'])) { |
|
| 182 | - set_request('annuler', 'annuler'); |
|
| 183 | - } // provoquer la fermeture du forumlaire |
|
| 184 | - |
|
| 185 | - return $res; |
|
| 159 | + $res = array(); |
|
| 160 | + if (!_request('annuler') and autoriser('changerlangue', $objet, $id_objet)) { |
|
| 161 | + // action/editer_xxx doit traiter la modif de changer_lang |
|
| 162 | + $res = formulaires_editer_objet_traiter($objet, $id_objet, 0, 0, $retour); |
|
| 163 | + } |
|
| 164 | + if (!_request('annuler') and autoriser('changertraduction', $objet, $id_objet)) { |
|
| 165 | + if ($id_trad = _request('id_trad') or _request('supprimer_trad')) { |
|
| 166 | + $referencer_traduction = charger_fonction('referencer_traduction', 'action'); |
|
| 167 | + $referencer_traduction($objet, $id_objet, intval($id_trad)); // 0 si supprimer_trad |
|
| 168 | + } elseif ($new_id_trad = _request('changer_reference_trad') |
|
| 169 | + and $new_id_trad = array_keys($new_id_trad) |
|
| 170 | + and $new_id_trad = reset($new_id_trad) |
|
| 171 | + ) { |
|
| 172 | + $table_objet_sql = table_objet_sql($objet); |
|
| 173 | + $_id_table_objet = id_table_objet($objet); |
|
| 174 | + if ($id_trad = sql_getfetsel('id_trad', $table_objet_sql, "$_id_table_objet=" . intval($id_objet))) { |
|
| 175 | + $referencer_traduction = charger_fonction('referencer_traduction', 'action'); |
|
| 176 | + $referencer_traduction($objet, $id_trad, $new_id_trad); |
|
| 177 | + } |
|
| 178 | + } |
|
| 179 | + } |
|
| 180 | + $res['editable'] = true; |
|
| 181 | + if (!isset($res['message_erreur'])) { |
|
| 182 | + set_request('annuler', 'annuler'); |
|
| 183 | + } // provoquer la fermeture du forumlaire |
|
| 184 | + |
|
| 185 | + return $res; |
|
| 186 | 186 | } |
@@ -60,7 +60,7 @@ discard block |
||
| 60 | 60 | $id_parent = $valeurs['id_parent']; |
| 61 | 61 | } |
| 62 | 62 | if ($id_parent) { |
| 63 | - $langue_parent = sql_getfetsel('lang', 'spip_rubriques', 'id_rubrique=' . intval($id_parent)); |
|
| 63 | + $langue_parent = sql_getfetsel('lang', 'spip_rubriques', 'id_rubrique='.intval($id_parent)); |
|
| 64 | 64 | } |
| 65 | 65 | |
| 66 | 66 | if (!$langue_parent) { |
@@ -82,8 +82,8 @@ discard block |
||
| 82 | 82 | $valeurs['_traduire'] = ''; |
| 83 | 83 | if (isset($valeurs['id_trad'])) { |
| 84 | 84 | $valeurs['_traduire'] = ($traduire ? ' ' : ''); |
| 85 | - $valeurs['_vue_traductions'] = 'prive/objets/liste/' . (trouver_fond( |
|
| 86 | - $f = table_objet($objet) . '-trad', |
|
| 85 | + $valeurs['_vue_traductions'] = 'prive/objets/liste/'.(trouver_fond( |
|
| 86 | + $f = table_objet($objet).'-trad', |
|
| 87 | 87 | 'prive/objets/liste' |
| 88 | 88 | ) ? $f : 'objets-trad'); |
| 89 | 89 | // pour afficher la liste des trad sur la base de l'id_trad en base |
@@ -128,11 +128,11 @@ discard block |
||
| 128 | 128 | if (sql_getfetsel( |
| 129 | 129 | 'id_trad', |
| 130 | 130 | $table_objet_sql, |
| 131 | - "$_id_table_objet=" . intval($id_objet) |
|
| 131 | + "$_id_table_objet=".intval($id_objet) |
|
| 132 | 132 | )) { |
| 133 | 133 | // ne devrait jamais arriver sauf concurence de saisie |
| 134 | 134 | $erreurs['id_trad'] = _L('Une traduction est deja referencee'); |
| 135 | - } elseif (!sql_getfetsel($_id_table_objet, $table_objet_sql, "$_id_table_objet=" . intval($id_trad))) { |
|
| 135 | + } elseif (!sql_getfetsel($_id_table_objet, $table_objet_sql, "$_id_table_objet=".intval($id_trad))) { |
|
| 136 | 136 | $erreurs['id_trad'] = _L('Indiquez un contenu existant'); |
| 137 | 137 | } |
| 138 | 138 | } |
@@ -171,7 +171,7 @@ discard block |
||
| 171 | 171 | ) { |
| 172 | 172 | $table_objet_sql = table_objet_sql($objet); |
| 173 | 173 | $_id_table_objet = id_table_objet($objet); |
| 174 | - if ($id_trad = sql_getfetsel('id_trad', $table_objet_sql, "$_id_table_objet=" . intval($id_objet))) { |
|
| 174 | + if ($id_trad = sql_getfetsel('id_trad', $table_objet_sql, "$_id_table_objet=".intval($id_objet))) { |
|
| 175 | 175 | $referencer_traduction = charger_fonction('referencer_traduction', 'action'); |
| 176 | 176 | $referencer_traduction($objet, $id_trad, $new_id_trad); |
| 177 | 177 | } |
@@ -77,13 +77,13 @@ discard block |
||
| 77 | 77 | |
| 78 | 78 | function chrono_requete($temps) { |
| 79 | 79 | $total = 0; |
| 80 | - $hors = "<i>" . _T('zbug_hors_compilation') . "</i>"; |
|
| 80 | + $hors = "<i>"._T('zbug_hors_compilation')."</i>"; |
|
| 81 | 81 | $t = $q = $n = $d = array(); |
| 82 | 82 | // Totaliser les temps et completer le Explain |
| 83 | 83 | foreach ($temps as $key => $v) { |
| 84 | 84 | list($dt, $nb, $boucle, $query, $explain, $res, $contexte) = $v; |
| 85 | 85 | if (is_array($contexte)) { |
| 86 | - $k = ($contexte[0] . " $boucle"); |
|
| 86 | + $k = ($contexte[0]." $boucle"); |
|
| 87 | 87 | include_spip('public/compiler'); |
| 88 | 88 | $env = reconstruire_contexte_compil($contexte); |
| 89 | 89 | } else { |
@@ -128,7 +128,7 @@ discard block |
||
| 128 | 128 | // Fabriquer les liens de navigations dans le tableau des temps |
| 129 | 129 | foreach ($temps as $k => $v) { |
| 130 | 130 | $titre = strip_tags($v[2]); |
| 131 | - $href = quote_amp($GLOBALS['REQUEST_URI']) . "#req$i"; |
|
| 131 | + $href = quote_amp($GLOBALS['REQUEST_URI'])."#req$i"; |
|
| 132 | 132 | $href = str_replace("\\'", ''', $href); |
| 133 | 133 | |
| 134 | 134 | if (!isset($t[$v[2]])) { |
@@ -149,7 +149,7 @@ discard block |
||
| 149 | 149 | unset($d['']); |
| 150 | 150 | // Fabriquer le tableau des liens de navigation dans le grand tableau |
| 151 | 151 | foreach ($d as $k => $v) { |
| 152 | - $d[$k] = $n[$k] . "</td><td>$k</td><td class='time'>$v</td><td class='liste-reqs'>" |
|
| 152 | + $d[$k] = $n[$k]."</td><td>$k</td><td class='time'>$v</td><td class='liste-reqs'>" |
|
| 153 | 153 | . join('', $t[$k]); |
| 154 | 154 | } |
| 155 | 155 | |
@@ -159,7 +159,7 @@ discard block |
||
| 159 | 159 | . join("</td></tr>\n<tr><td>", $d) |
| 160 | 160 | . "</td></tr>\n" |
| 161 | 161 | . (# _request('var_mode_objet') ? '' : |
| 162 | - ("<tr><td>" . count($temps) . "</td><td>" . _T('info_total') . '</td><td class="time">' . $total . "</td><td></td></tr>")) |
|
| 162 | + ("<tr><td>".count($temps)."</td><td>"._T('info_total').'</td><td class="time">'.$total."</td><td></td></tr>")) |
|
| 163 | 163 | ); |
| 164 | 164 | |
| 165 | 165 | return array($temps, $navigation); |
@@ -11,169 +11,169 @@ |
||
| 11 | 11 | \***************************************************************************/ |
| 12 | 12 | |
| 13 | 13 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 14 | - return; |
|
| 14 | + return; |
|
| 15 | 15 | } |
| 16 | 16 | |
| 17 | 17 | // https://code.spip.net/@trace_query_start |
| 18 | 18 | function trace_query_start() { |
| 19 | - static $trace = '?'; |
|
| 20 | - if ($trace === '?' or defined('_DEBUG_TRACE_QUERIES')) { |
|
| 21 | - // gare au bouclage sur calcul de droits au premier appel |
|
| 22 | - // A fortiori quand on demande une trace |
|
| 23 | - if (defined('_DEBUG_TRACE_QUERIES') and _DEBUG_TRACE_QUERIES) { |
|
| 24 | - $trace = true; |
|
| 25 | - } |
|
| 26 | - else { |
|
| 27 | - include_spip('inc/autoriser'); |
|
| 28 | - $trace = (isset($_GET['var_profile']) and autoriser('debug')); |
|
| 29 | - } |
|
| 30 | - } |
|
| 31 | - |
|
| 32 | - return $trace ? microtime() : 0; |
|
| 19 | + static $trace = '?'; |
|
| 20 | + if ($trace === '?' or defined('_DEBUG_TRACE_QUERIES')) { |
|
| 21 | + // gare au bouclage sur calcul de droits au premier appel |
|
| 22 | + // A fortiori quand on demande une trace |
|
| 23 | + if (defined('_DEBUG_TRACE_QUERIES') and _DEBUG_TRACE_QUERIES) { |
|
| 24 | + $trace = true; |
|
| 25 | + } |
|
| 26 | + else { |
|
| 27 | + include_spip('inc/autoriser'); |
|
| 28 | + $trace = (isset($_GET['var_profile']) and autoriser('debug')); |
|
| 29 | + } |
|
| 30 | + } |
|
| 31 | + |
|
| 32 | + return $trace ? microtime() : 0; |
|
| 33 | 33 | } |
| 34 | 34 | |
| 35 | 35 | // https://code.spip.net/@trace_query_end |
| 36 | 36 | function trace_query_end($query, $start, $result, $erreur, $serveur = '') { |
| 37 | - static $trace = '?'; |
|
| 38 | - if ($trace === '?') { |
|
| 39 | - $trace = isset($_GET['var_profile']) and (autoriser('debug')); |
|
| 40 | - } |
|
| 41 | - if ($start) { |
|
| 42 | - $end = microtime(); |
|
| 43 | - list($usec, $sec) = explode(" ", $start); |
|
| 44 | - list($usec2, $sec2) = explode(" ", $end); |
|
| 45 | - $dt = $sec2 + $usec2 - $sec - $usec; |
|
| 46 | - pipeline('trig_trace_query', ['query' => $query, 'start' => $start, 'end' => $end, 'time' => $dt, 'result' => $result, 'erreur' => $erreur, 'serveur' => $serveur]); |
|
| 47 | - if ($trace) { |
|
| 48 | - trace_query_chrono($dt, $query, $result, $serveur); |
|
| 49 | - } |
|
| 50 | - } |
|
| 51 | - // tracer les erreurs, sauf pour select, c'est fait dans abstract_sql |
|
| 52 | - if ($trace and $erreur and !preg_match('/^select\b/i', $query)) { |
|
| 53 | - erreur_squelette(array(sql_errno($serveur), $erreur, $query)); |
|
| 54 | - } |
|
| 55 | - |
|
| 56 | - return $result; |
|
| 37 | + static $trace = '?'; |
|
| 38 | + if ($trace === '?') { |
|
| 39 | + $trace = isset($_GET['var_profile']) and (autoriser('debug')); |
|
| 40 | + } |
|
| 41 | + if ($start) { |
|
| 42 | + $end = microtime(); |
|
| 43 | + list($usec, $sec) = explode(" ", $start); |
|
| 44 | + list($usec2, $sec2) = explode(" ", $end); |
|
| 45 | + $dt = $sec2 + $usec2 - $sec - $usec; |
|
| 46 | + pipeline('trig_trace_query', ['query' => $query, 'start' => $start, 'end' => $end, 'time' => $dt, 'result' => $result, 'erreur' => $erreur, 'serveur' => $serveur]); |
|
| 47 | + if ($trace) { |
|
| 48 | + trace_query_chrono($dt, $query, $result, $serveur); |
|
| 49 | + } |
|
| 50 | + } |
|
| 51 | + // tracer les erreurs, sauf pour select, c'est fait dans abstract_sql |
|
| 52 | + if ($trace and $erreur and !preg_match('/^select\b/i', $query)) { |
|
| 53 | + erreur_squelette(array(sql_errno($serveur), $erreur, $query)); |
|
| 54 | + } |
|
| 55 | + |
|
| 56 | + return $result; |
|
| 57 | 57 | } |
| 58 | 58 | |
| 59 | 59 | // https://code.spip.net/@trace_query_chrono |
| 60 | 60 | function trace_query_chrono($dt, $query, $result, $serveur = '') { |
| 61 | - include_spip('inc/filtres_mini'); |
|
| 62 | - static $tt = 0, $nb = 0; |
|
| 63 | - |
|
| 64 | - $x = _request('var_mode_objet'); |
|
| 65 | - if (isset($GLOBALS['debug']['aucasou'])) { |
|
| 66 | - list(, $boucle, $serveur, $contexte) = $GLOBALS['debug']['aucasou']; |
|
| 67 | - if ($x and !preg_match("/$boucle\$/", $x)) { |
|
| 68 | - return; |
|
| 69 | - } |
|
| 70 | - if ($serveur) { |
|
| 71 | - $boucle .= " ($serveur)"; |
|
| 72 | - } |
|
| 73 | - $boucle = "<b>$boucle</b>"; |
|
| 74 | - } else { |
|
| 75 | - if ($x) { |
|
| 76 | - return; |
|
| 77 | - } |
|
| 78 | - $boucle = $contexte = ''; |
|
| 79 | - } |
|
| 80 | - |
|
| 81 | - $tt += $dt; |
|
| 82 | - $nb++; |
|
| 83 | - |
|
| 84 | - $q = preg_replace('/([a-z)`])\s+([A-Z])/', "$1\n<br />$2", spip_htmlentities($query)); |
|
| 85 | - $e = sql_explain($query, $serveur); |
|
| 86 | - $r = str_replace('Resource id ', '', (is_object($result) ? get_class($result) : $result)); |
|
| 87 | - $GLOBALS['tableau_des_temps'][] = array($dt, $nb, $boucle, $q, $e, $r, $contexte); |
|
| 61 | + include_spip('inc/filtres_mini'); |
|
| 62 | + static $tt = 0, $nb = 0; |
|
| 63 | + |
|
| 64 | + $x = _request('var_mode_objet'); |
|
| 65 | + if (isset($GLOBALS['debug']['aucasou'])) { |
|
| 66 | + list(, $boucle, $serveur, $contexte) = $GLOBALS['debug']['aucasou']; |
|
| 67 | + if ($x and !preg_match("/$boucle\$/", $x)) { |
|
| 68 | + return; |
|
| 69 | + } |
|
| 70 | + if ($serveur) { |
|
| 71 | + $boucle .= " ($serveur)"; |
|
| 72 | + } |
|
| 73 | + $boucle = "<b>$boucle</b>"; |
|
| 74 | + } else { |
|
| 75 | + if ($x) { |
|
| 76 | + return; |
|
| 77 | + } |
|
| 78 | + $boucle = $contexte = ''; |
|
| 79 | + } |
|
| 80 | + |
|
| 81 | + $tt += $dt; |
|
| 82 | + $nb++; |
|
| 83 | + |
|
| 84 | + $q = preg_replace('/([a-z)`])\s+([A-Z])/', "$1\n<br />$2", spip_htmlentities($query)); |
|
| 85 | + $e = sql_explain($query, $serveur); |
|
| 86 | + $r = str_replace('Resource id ', '', (is_object($result) ? get_class($result) : $result)); |
|
| 87 | + $GLOBALS['tableau_des_temps'][] = array($dt, $nb, $boucle, $q, $e, $r, $contexte); |
|
| 88 | 88 | } |
| 89 | 89 | |
| 90 | 90 | |
| 91 | 91 | function chrono_requete($temps) { |
| 92 | - $total = 0; |
|
| 93 | - $hors = "<i>" . _T('zbug_hors_compilation') . "</i>"; |
|
| 94 | - $t = $q = $n = $d = array(); |
|
| 95 | - // Totaliser les temps et completer le Explain |
|
| 96 | - foreach ($temps as $key => $v) { |
|
| 97 | - list($dt, $nb, $boucle, $query, $explain, $res, $contexte) = $v; |
|
| 98 | - if (is_array($contexte)) { |
|
| 99 | - $k = ($contexte[0] . " $boucle"); |
|
| 100 | - include_spip('public/compiler'); |
|
| 101 | - $env = reconstruire_contexte_compil($contexte); |
|
| 102 | - } else { |
|
| 103 | - $k = $env = $boucle; |
|
| 104 | - } |
|
| 105 | - |
|
| 106 | - $total += $dt; |
|
| 107 | - $t[$key] = $dt; |
|
| 108 | - $q[$key] = $nb; |
|
| 109 | - if (!isset($d[$k])) { |
|
| 110 | - $d[$k] = 0; |
|
| 111 | - $n[$k] = 0; |
|
| 112 | - } |
|
| 113 | - $d[$k] += $dt; |
|
| 114 | - ++$n[$k]; |
|
| 115 | - |
|
| 116 | - if (!is_array($explain)) { |
|
| 117 | - $explain = array(); |
|
| 118 | - } |
|
| 119 | - foreach ($explain as $j => $v) { |
|
| 120 | - $explain[$j] = "<tr><th>$j</th><td>" |
|
| 121 | - . str_replace(';', '<br />', $v) |
|
| 122 | - . "</td></tr>"; |
|
| 123 | - } |
|
| 124 | - $e = "<table class='explain'>" |
|
| 125 | - . "<caption>" |
|
| 126 | - . $query |
|
| 127 | - . "</caption>" |
|
| 128 | - . "<tr><th>Time</th><td>$dt</td></tr>" |
|
| 129 | - . "<tr><th>Order</th><td>$nb</td></tr>" |
|
| 130 | - . "<tr><th>Res</th><td>$res</td></tr>" |
|
| 131 | - . join('', $explain) |
|
| 132 | - . "</table>"; |
|
| 133 | - |
|
| 134 | - $temps[$key] = array($e, $env, $k); |
|
| 135 | - } |
|
| 136 | - // Trier par temps d'execution decroissant |
|
| 137 | - array_multisort($t, SORT_DESC, $q, $temps); |
|
| 138 | - arsort($d); |
|
| 139 | - $i = 1; |
|
| 140 | - $t = array(); |
|
| 141 | - // Fabriquer les liens de navigations dans le tableau des temps |
|
| 142 | - foreach ($temps as $k => $v) { |
|
| 143 | - $titre = strip_tags($v[2]); |
|
| 144 | - $href = quote_amp($GLOBALS['REQUEST_URI']) . "#req$i"; |
|
| 145 | - $href = str_replace("\\'", ''', $href); |
|
| 146 | - |
|
| 147 | - if (!isset($t[$v[2]])) { |
|
| 148 | - $t[$v[2]] = array(); |
|
| 149 | - } |
|
| 150 | - $t[$v[2]][] = "<span class='spip-debug-arg'> " |
|
| 151 | - . "<a title='$titre' href='$href'>$i</a>" |
|
| 152 | - . '</span>' |
|
| 153 | - . ((count($t[$v[2]]) % 10 == 9) ? "<br />" : ''); |
|
| 154 | - $i++; |
|
| 155 | - } |
|
| 156 | - |
|
| 157 | - if ($d['']) { |
|
| 158 | - $d[$hors] = $d['']; |
|
| 159 | - $n[$hors] = $n['']; |
|
| 160 | - $t[$hors] = $t['']; |
|
| 161 | - } |
|
| 162 | - unset($d['']); |
|
| 163 | - // Fabriquer le tableau des liens de navigation dans le grand tableau |
|
| 164 | - foreach ($d as $k => $v) { |
|
| 165 | - $d[$k] = $n[$k] . "</td><td>$k</td><td class='time'>$v</td><td class='liste-reqs'>" |
|
| 166 | - . join('', $t[$k]); |
|
| 167 | - } |
|
| 168 | - |
|
| 169 | - $navigation = array( |
|
| 170 | - _T('zbug_statistiques'), |
|
| 171 | - "<tr><td>" |
|
| 172 | - . join("</td></tr>\n<tr><td>", $d) |
|
| 173 | - . "</td></tr>\n" |
|
| 174 | - . (# _request('var_mode_objet') ? '' : |
|
| 175 | - ("<tr><td>" . count($temps) . "</td><td>" . _T('info_total') . '</td><td class="time">' . $total . "</td><td></td></tr>")) |
|
| 176 | - ); |
|
| 177 | - |
|
| 178 | - return array($temps, $navigation); |
|
| 92 | + $total = 0; |
|
| 93 | + $hors = "<i>" . _T('zbug_hors_compilation') . "</i>"; |
|
| 94 | + $t = $q = $n = $d = array(); |
|
| 95 | + // Totaliser les temps et completer le Explain |
|
| 96 | + foreach ($temps as $key => $v) { |
|
| 97 | + list($dt, $nb, $boucle, $query, $explain, $res, $contexte) = $v; |
|
| 98 | + if (is_array($contexte)) { |
|
| 99 | + $k = ($contexte[0] . " $boucle"); |
|
| 100 | + include_spip('public/compiler'); |
|
| 101 | + $env = reconstruire_contexte_compil($contexte); |
|
| 102 | + } else { |
|
| 103 | + $k = $env = $boucle; |
|
| 104 | + } |
|
| 105 | + |
|
| 106 | + $total += $dt; |
|
| 107 | + $t[$key] = $dt; |
|
| 108 | + $q[$key] = $nb; |
|
| 109 | + if (!isset($d[$k])) { |
|
| 110 | + $d[$k] = 0; |
|
| 111 | + $n[$k] = 0; |
|
| 112 | + } |
|
| 113 | + $d[$k] += $dt; |
|
| 114 | + ++$n[$k]; |
|
| 115 | + |
|
| 116 | + if (!is_array($explain)) { |
|
| 117 | + $explain = array(); |
|
| 118 | + } |
|
| 119 | + foreach ($explain as $j => $v) { |
|
| 120 | + $explain[$j] = "<tr><th>$j</th><td>" |
|
| 121 | + . str_replace(';', '<br />', $v) |
|
| 122 | + . "</td></tr>"; |
|
| 123 | + } |
|
| 124 | + $e = "<table class='explain'>" |
|
| 125 | + . "<caption>" |
|
| 126 | + . $query |
|
| 127 | + . "</caption>" |
|
| 128 | + . "<tr><th>Time</th><td>$dt</td></tr>" |
|
| 129 | + . "<tr><th>Order</th><td>$nb</td></tr>" |
|
| 130 | + . "<tr><th>Res</th><td>$res</td></tr>" |
|
| 131 | + . join('', $explain) |
|
| 132 | + . "</table>"; |
|
| 133 | + |
|
| 134 | + $temps[$key] = array($e, $env, $k); |
|
| 135 | + } |
|
| 136 | + // Trier par temps d'execution decroissant |
|
| 137 | + array_multisort($t, SORT_DESC, $q, $temps); |
|
| 138 | + arsort($d); |
|
| 139 | + $i = 1; |
|
| 140 | + $t = array(); |
|
| 141 | + // Fabriquer les liens de navigations dans le tableau des temps |
|
| 142 | + foreach ($temps as $k => $v) { |
|
| 143 | + $titre = strip_tags($v[2]); |
|
| 144 | + $href = quote_amp($GLOBALS['REQUEST_URI']) . "#req$i"; |
|
| 145 | + $href = str_replace("\\'", ''', $href); |
|
| 146 | + |
|
| 147 | + if (!isset($t[$v[2]])) { |
|
| 148 | + $t[$v[2]] = array(); |
|
| 149 | + } |
|
| 150 | + $t[$v[2]][] = "<span class='spip-debug-arg'> " |
|
| 151 | + . "<a title='$titre' href='$href'>$i</a>" |
|
| 152 | + . '</span>' |
|
| 153 | + . ((count($t[$v[2]]) % 10 == 9) ? "<br />" : ''); |
|
| 154 | + $i++; |
|
| 155 | + } |
|
| 156 | + |
|
| 157 | + if ($d['']) { |
|
| 158 | + $d[$hors] = $d['']; |
|
| 159 | + $n[$hors] = $n['']; |
|
| 160 | + $t[$hors] = $t['']; |
|
| 161 | + } |
|
| 162 | + unset($d['']); |
|
| 163 | + // Fabriquer le tableau des liens de navigation dans le grand tableau |
|
| 164 | + foreach ($d as $k => $v) { |
|
| 165 | + $d[$k] = $n[$k] . "</td><td>$k</td><td class='time'>$v</td><td class='liste-reqs'>" |
|
| 166 | + . join('', $t[$k]); |
|
| 167 | + } |
|
| 168 | + |
|
| 169 | + $navigation = array( |
|
| 170 | + _T('zbug_statistiques'), |
|
| 171 | + "<tr><td>" |
|
| 172 | + . join("</td></tr>\n<tr><td>", $d) |
|
| 173 | + . "</td></tr>\n" |
|
| 174 | + . (# _request('var_mode_objet') ? '' : |
|
| 175 | + ("<tr><td>" . count($temps) . "</td><td>" . _T('info_total') . '</td><td class="time">' . $total . "</td><td></td></tr>")) |
|
| 176 | + ); |
|
| 177 | + |
|
| 178 | + return array($temps, $navigation); |
|
| 179 | 179 | } |
@@ -22,8 +22,7 @@ |
||
| 22 | 22 | // A fortiori quand on demande une trace |
| 23 | 23 | if (defined('_DEBUG_TRACE_QUERIES') and _DEBUG_TRACE_QUERIES) { |
| 24 | 24 | $trace = true; |
| 25 | - } |
|
| 26 | - else { |
|
| 25 | + } else { |
|
| 27 | 26 | include_spip('inc/autoriser'); |
| 28 | 27 | $trace = (isset($_GET['var_profile']) and autoriser('debug')); |
| 29 | 28 | } |
@@ -62,7 +62,7 @@ discard block |
||
| 62 | 62 | renouvelle_alea(); |
| 63 | 63 | $new = false; |
| 64 | 64 | } else { |
| 65 | - spip_log("impossible d'ecrire dans " . $cache); |
|
| 65 | + spip_log("impossible d'ecrire dans ".$cache); |
|
| 66 | 66 | } |
| 67 | 67 | } |
| 68 | 68 | // et refaire le cache si on a du lire en base |
@@ -162,7 +162,7 @@ discard block |
||
| 162 | 162 | if (!isset($touch[$table])) { |
| 163 | 163 | touch_meta($antidate, $table); |
| 164 | 164 | } |
| 165 | - sql_delete('spip_' . $table, "nom='$nom'", '', 'continue'); |
|
| 165 | + sql_delete('spip_'.$table, "nom='$nom'", '', 'continue'); |
|
| 166 | 166 | unset($GLOBALS[$table][$nom]); |
| 167 | 167 | if (!isset($touch[$table])) { |
| 168 | 168 | touch_meta($antidate, $table); |
@@ -193,7 +193,7 @@ discard block |
||
| 193 | 193 | return; |
| 194 | 194 | } |
| 195 | 195 | include_spip('base/abstract_sql'); |
| 196 | - $res = sql_select("*", 'spip_' . $table, "nom=" . sql_quote($nom), '', '', '', '', '', 'continue'); |
|
| 196 | + $res = sql_select("*", 'spip_'.$table, "nom=".sql_quote($nom), '', '', '', '', '', 'continue'); |
|
| 197 | 197 | // table pas encore installee, travailler en php seulement |
| 198 | 198 | if (!$res) { |
| 199 | 199 | $GLOBALS[$table][$nom] = $valeur; |
@@ -226,9 +226,9 @@ discard block |
||
| 226 | 226 | $r['impt'] = sql_quote($importable, '', 'text'); |
| 227 | 227 | } |
| 228 | 228 | if ($row) { |
| 229 | - sql_update('spip_' . $table, $r, "nom=" . sql_quote($nom)); |
|
| 229 | + sql_update('spip_'.$table, $r, "nom=".sql_quote($nom)); |
|
| 230 | 230 | } else { |
| 231 | - sql_insert('spip_' . $table, "(" . join(',', array_keys($r)) . ")", "(" . join(',', array_values($r)) . ")"); |
|
| 231 | + sql_insert('spip_'.$table, "(".join(',', array_keys($r)).")", "(".join(',', array_values($r)).")"); |
|
| 232 | 232 | } |
| 233 | 233 | if (!isset($touch[$table])) { |
| 234 | 234 | touch_meta($antidate, $table); |
@@ -245,7 +245,7 @@ discard block |
||
| 245 | 245 | * Nom du fichier cache |
| 246 | 246 | **/ |
| 247 | 247 | function cache_meta($table = 'meta') { |
| 248 | - return ($table == 'meta') ? _FILE_META : (_DIR_CACHE . $table . '.php'); |
|
| 248 | + return ($table == 'meta') ? _FILE_META : (_DIR_CACHE.$table.'.php'); |
|
| 249 | 249 | } |
| 250 | 250 | |
| 251 | 251 | /** |
@@ -307,7 +307,7 @@ discard block |
||
| 307 | 307 | $cle = array_search($table, $liste); |
| 308 | 308 | if ($cle !== false) { |
| 309 | 309 | unset($liste[$cle]); |
| 310 | - if ($liste ) { |
|
| 310 | + if ($liste) { |
|
| 311 | 311 | ecrire_meta('tables_config', serialize($liste)); |
| 312 | 312 | } else { |
| 313 | 313 | effacer_meta('tables_config'); |
@@ -17,7 +17,7 @@ discard block |
||
| 17 | 17 | **/ |
| 18 | 18 | |
| 19 | 19 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 20 | - return; |
|
| 20 | + return; |
|
| 21 | 21 | } |
| 22 | 22 | |
| 23 | 23 | // Les parametres generaux du site sont dans une table SQL; |
@@ -28,47 +28,47 @@ discard block |
||
| 28 | 28 | |
| 29 | 29 | // https://code.spip.net/@inc_meta_dist |
| 30 | 30 | function inc_meta_dist($table = 'meta') { |
| 31 | - // Lire les meta, en cache si present, valide et lisible |
|
| 32 | - // en cas d'install ne pas faire confiance au meta_cache eventuel |
|
| 33 | - $cache = cache_meta($table); |
|
| 31 | + // Lire les meta, en cache si present, valide et lisible |
|
| 32 | + // en cas d'install ne pas faire confiance au meta_cache eventuel |
|
| 33 | + $cache = cache_meta($table); |
|
| 34 | 34 | |
| 35 | - if ((!$exec = _request('exec') or !autoriser_sans_cookie($exec)) |
|
| 36 | - and $new = jeune_fichier($cache, _META_CACHE_TIME) |
|
| 37 | - and lire_fichier_securise($cache, $meta) |
|
| 38 | - and $meta = @unserialize($meta) |
|
| 39 | - ) { |
|
| 40 | - $GLOBALS[$table] = $meta; |
|
| 41 | - } |
|
| 35 | + if ((!$exec = _request('exec') or !autoriser_sans_cookie($exec)) |
|
| 36 | + and $new = jeune_fichier($cache, _META_CACHE_TIME) |
|
| 37 | + and lire_fichier_securise($cache, $meta) |
|
| 38 | + and $meta = @unserialize($meta) |
|
| 39 | + ) { |
|
| 40 | + $GLOBALS[$table] = $meta; |
|
| 41 | + } |
|
| 42 | 42 | |
| 43 | - if (isset($GLOBALS[$table]['touch']) |
|
| 44 | - and ($GLOBALS[$table]['touch'] < time() - _META_CACHE_TIME) |
|
| 45 | - ) { |
|
| 46 | - $GLOBALS[$table] = array(); |
|
| 47 | - } |
|
| 48 | - // sinon lire en base |
|
| 49 | - if (!$GLOBALS[$table]) { |
|
| 50 | - $new = !lire_metas($table); |
|
| 51 | - } |
|
| 43 | + if (isset($GLOBALS[$table]['touch']) |
|
| 44 | + and ($GLOBALS[$table]['touch'] < time() - _META_CACHE_TIME) |
|
| 45 | + ) { |
|
| 46 | + $GLOBALS[$table] = array(); |
|
| 47 | + } |
|
| 48 | + // sinon lire en base |
|
| 49 | + if (!$GLOBALS[$table]) { |
|
| 50 | + $new = !lire_metas($table); |
|
| 51 | + } |
|
| 52 | 52 | |
| 53 | - // renouveller l'alea general si trop vieux ou sur demande explicite |
|
| 54 | - if ((test_espace_prive() || isset($_GET['renouvelle_alea'])) |
|
| 55 | - and $GLOBALS[$table] |
|
| 56 | - and (time() > _RENOUVELLE_ALEA + (isset($GLOBALS['meta']['alea_ephemere_date']) ? $GLOBALS['meta']['alea_ephemere_date'] : 0)) |
|
| 57 | - ) { |
|
| 58 | - // si on n'a pas l'acces en ecriture sur le cache, |
|
| 59 | - // ne pas renouveller l'alea sinon le cache devient faux |
|
| 60 | - if (supprimer_fichier($cache)) { |
|
| 61 | - include_spip('inc/acces'); |
|
| 62 | - renouvelle_alea(); |
|
| 63 | - $new = false; |
|
| 64 | - } else { |
|
| 65 | - spip_log("impossible d'ecrire dans " . $cache); |
|
| 66 | - } |
|
| 67 | - } |
|
| 68 | - // et refaire le cache si on a du lire en base |
|
| 69 | - if (!$new) { |
|
| 70 | - touch_meta(false, $table); |
|
| 71 | - } |
|
| 53 | + // renouveller l'alea general si trop vieux ou sur demande explicite |
|
| 54 | + if ((test_espace_prive() || isset($_GET['renouvelle_alea'])) |
|
| 55 | + and $GLOBALS[$table] |
|
| 56 | + and (time() > _RENOUVELLE_ALEA + (isset($GLOBALS['meta']['alea_ephemere_date']) ? $GLOBALS['meta']['alea_ephemere_date'] : 0)) |
|
| 57 | + ) { |
|
| 58 | + // si on n'a pas l'acces en ecriture sur le cache, |
|
| 59 | + // ne pas renouveller l'alea sinon le cache devient faux |
|
| 60 | + if (supprimer_fichier($cache)) { |
|
| 61 | + include_spip('inc/acces'); |
|
| 62 | + renouvelle_alea(); |
|
| 63 | + $new = false; |
|
| 64 | + } else { |
|
| 65 | + spip_log("impossible d'ecrire dans " . $cache); |
|
| 66 | + } |
|
| 67 | + } |
|
| 68 | + // et refaire le cache si on a du lire en base |
|
| 69 | + if (!$new) { |
|
| 70 | + touch_meta(false, $table); |
|
| 71 | + } |
|
| 72 | 72 | } |
| 73 | 73 | |
| 74 | 74 | // fonctions aussi appelees a l'install ==> spip_query en premiere requete |
@@ -77,38 +77,38 @@ discard block |
||
| 77 | 77 | // https://code.spip.net/@lire_metas |
| 78 | 78 | function lire_metas($table = 'meta') { |
| 79 | 79 | |
| 80 | - if ($result = spip_query("SELECT nom,valeur FROM spip_$table")) { |
|
| 81 | - include_spip('base/abstract_sql'); |
|
| 82 | - $GLOBALS[$table] = array(); |
|
| 83 | - while ($row = sql_fetch($result)) { |
|
| 84 | - $GLOBALS[$table][$row['nom']] = $row['valeur']; |
|
| 85 | - } |
|
| 86 | - sql_free($result); |
|
| 80 | + if ($result = spip_query("SELECT nom,valeur FROM spip_$table")) { |
|
| 81 | + include_spip('base/abstract_sql'); |
|
| 82 | + $GLOBALS[$table] = array(); |
|
| 83 | + while ($row = sql_fetch($result)) { |
|
| 84 | + $GLOBALS[$table][$row['nom']] = $row['valeur']; |
|
| 85 | + } |
|
| 86 | + sql_free($result); |
|
| 87 | 87 | |
| 88 | - if (!isset($GLOBALS[$table]['charset']) |
|
| 89 | - or !$GLOBALS[$table]['charset'] |
|
| 90 | - or $GLOBALS[$table]['charset'] == '_DEFAULT_CHARSET' // hum, correction d'un bug ayant abime quelques install |
|
| 91 | - ) { |
|
| 92 | - ecrire_meta('charset', _DEFAULT_CHARSET, null, $table); |
|
| 93 | - } |
|
| 88 | + if (!isset($GLOBALS[$table]['charset']) |
|
| 89 | + or !$GLOBALS[$table]['charset'] |
|
| 90 | + or $GLOBALS[$table]['charset'] == '_DEFAULT_CHARSET' // hum, correction d'un bug ayant abime quelques install |
|
| 91 | + ) { |
|
| 92 | + ecrire_meta('charset', _DEFAULT_CHARSET, null, $table); |
|
| 93 | + } |
|
| 94 | 94 | |
| 95 | - // noter cette table de configuration dans les meta de SPIP |
|
| 96 | - if ($table !== 'meta') { |
|
| 97 | - $liste = array(); |
|
| 98 | - if (isset($GLOBALS['meta']['tables_config'])) { |
|
| 99 | - $liste = unserialize($GLOBALS['meta']['tables_config']); |
|
| 100 | - } |
|
| 101 | - if (!$liste) { |
|
| 102 | - $liste = array(); |
|
| 103 | - } |
|
| 104 | - if (!in_array($table, $liste)) { |
|
| 105 | - $liste[] = $table; |
|
| 106 | - ecrire_meta('tables_config', serialize($liste)); |
|
| 107 | - } |
|
| 108 | - } |
|
| 109 | - } |
|
| 95 | + // noter cette table de configuration dans les meta de SPIP |
|
| 96 | + if ($table !== 'meta') { |
|
| 97 | + $liste = array(); |
|
| 98 | + if (isset($GLOBALS['meta']['tables_config'])) { |
|
| 99 | + $liste = unserialize($GLOBALS['meta']['tables_config']); |
|
| 100 | + } |
|
| 101 | + if (!$liste) { |
|
| 102 | + $liste = array(); |
|
| 103 | + } |
|
| 104 | + if (!in_array($table, $liste)) { |
|
| 105 | + $liste[] = $table; |
|
| 106 | + ecrire_meta('tables_config', serialize($liste)); |
|
| 107 | + } |
|
| 108 | + } |
|
| 109 | + } |
|
| 110 | 110 | |
| 111 | - return isset($GLOBALS[$table]) ? $GLOBALS[$table] : null; |
|
| 111 | + return isset($GLOBALS[$table]) ? $GLOBALS[$table] : null; |
|
| 112 | 112 | } |
| 113 | 113 | |
| 114 | 114 | |
@@ -122,22 +122,22 @@ discard block |
||
| 122 | 122 | * Table SQL d'enregistrement des meta. |
| 123 | 123 | **/ |
| 124 | 124 | function touch_meta($antidate = false, $table = 'meta') { |
| 125 | - $file = cache_meta($table); |
|
| 126 | - if (!$antidate or !@touch($file, $antidate)) { |
|
| 127 | - $r = isset($GLOBALS[$table]) ? $GLOBALS[$table] : array(); |
|
| 128 | - if ($table == 'meta') { |
|
| 129 | - unset($r['alea_ephemere']); |
|
| 130 | - unset($r['alea_ephemere_ancien']); |
|
| 131 | - // le secret du site est utilise pour encoder les contextes ajax que l'on considere fiables |
|
| 132 | - // mais le sortir deu cache meta implique une requete sql des qu'on a un form dynamique |
|
| 133 | - // meme si son squelette est en cache |
|
| 134 | - //unset($r['secret_du_site']); |
|
| 135 | - if ($antidate) { |
|
| 136 | - $r['touch'] = $antidate; |
|
| 137 | - } |
|
| 138 | - } |
|
| 139 | - ecrire_fichier_securise($file, serialize($r)); |
|
| 140 | - } |
|
| 125 | + $file = cache_meta($table); |
|
| 126 | + if (!$antidate or !@touch($file, $antidate)) { |
|
| 127 | + $r = isset($GLOBALS[$table]) ? $GLOBALS[$table] : array(); |
|
| 128 | + if ($table == 'meta') { |
|
| 129 | + unset($r['alea_ephemere']); |
|
| 130 | + unset($r['alea_ephemere_ancien']); |
|
| 131 | + // le secret du site est utilise pour encoder les contextes ajax que l'on considere fiables |
|
| 132 | + // mais le sortir deu cache meta implique une requete sql des qu'on a un form dynamique |
|
| 133 | + // meme si son squelette est en cache |
|
| 134 | + //unset($r['secret_du_site']); |
|
| 135 | + if ($antidate) { |
|
| 136 | + $r['touch'] = $antidate; |
|
| 137 | + } |
|
| 138 | + } |
|
| 139 | + ecrire_fichier_securise($file, serialize($r)); |
|
| 140 | + } |
|
| 141 | 141 | } |
| 142 | 142 | |
| 143 | 143 | /** |
@@ -153,21 +153,21 @@ discard block |
||
| 153 | 153 | * Table SQL d'enregistrement de la meta. |
| 154 | 154 | **/ |
| 155 | 155 | function effacer_meta($nom, $table = 'meta') { |
| 156 | - // section critique sur le cache: |
|
| 157 | - // l'invalider avant et apres la MAJ de la BD |
|
| 158 | - // c'est un peu moins bien qu'un vrai verrou mais ca suffira |
|
| 159 | - // et utiliser une statique pour eviter des acces disques a repetition |
|
| 160 | - static $touch = array(); |
|
| 161 | - $antidate = time() - (_META_CACHE_TIME << 4); |
|
| 162 | - if (!isset($touch[$table])) { |
|
| 163 | - touch_meta($antidate, $table); |
|
| 164 | - } |
|
| 165 | - sql_delete('spip_' . $table, "nom='$nom'", '', 'continue'); |
|
| 166 | - unset($GLOBALS[$table][$nom]); |
|
| 167 | - if (!isset($touch[$table])) { |
|
| 168 | - touch_meta($antidate, $table); |
|
| 169 | - $touch[$table] = false; |
|
| 170 | - } |
|
| 156 | + // section critique sur le cache: |
|
| 157 | + // l'invalider avant et apres la MAJ de la BD |
|
| 158 | + // c'est un peu moins bien qu'un vrai verrou mais ca suffira |
|
| 159 | + // et utiliser une statique pour eviter des acces disques a repetition |
|
| 160 | + static $touch = array(); |
|
| 161 | + $antidate = time() - (_META_CACHE_TIME << 4); |
|
| 162 | + if (!isset($touch[$table])) { |
|
| 163 | + touch_meta($antidate, $table); |
|
| 164 | + } |
|
| 165 | + sql_delete('spip_' . $table, "nom='$nom'", '', 'continue'); |
|
| 166 | + unset($GLOBALS[$table][$nom]); |
|
| 167 | + if (!isset($touch[$table])) { |
|
| 168 | + touch_meta($antidate, $table); |
|
| 169 | + $touch[$table] = false; |
|
| 170 | + } |
|
| 171 | 171 | } |
| 172 | 172 | |
| 173 | 173 | /** |
@@ -188,52 +188,52 @@ discard block |
||
| 188 | 188 | **/ |
| 189 | 189 | function ecrire_meta($nom, $valeur, $importable = null, $table = 'meta') { |
| 190 | 190 | |
| 191 | - static $touch = array(); |
|
| 192 | - if (!$nom) { |
|
| 193 | - return; |
|
| 194 | - } |
|
| 195 | - include_spip('base/abstract_sql'); |
|
| 196 | - $res = sql_select("*", 'spip_' . $table, "nom=" . sql_quote($nom), '', '', '', '', '', 'continue'); |
|
| 197 | - // table pas encore installee, travailler en php seulement |
|
| 198 | - if (!$res) { |
|
| 199 | - $GLOBALS[$table][$nom] = $valeur; |
|
| 191 | + static $touch = array(); |
|
| 192 | + if (!$nom) { |
|
| 193 | + return; |
|
| 194 | + } |
|
| 195 | + include_spip('base/abstract_sql'); |
|
| 196 | + $res = sql_select("*", 'spip_' . $table, "nom=" . sql_quote($nom), '', '', '', '', '', 'continue'); |
|
| 197 | + // table pas encore installee, travailler en php seulement |
|
| 198 | + if (!$res) { |
|
| 199 | + $GLOBALS[$table][$nom] = $valeur; |
|
| 200 | 200 | |
| 201 | - return; |
|
| 202 | - } |
|
| 203 | - $row = sql_fetch($res); |
|
| 204 | - sql_free($res); |
|
| 201 | + return; |
|
| 202 | + } |
|
| 203 | + $row = sql_fetch($res); |
|
| 204 | + sql_free($res); |
|
| 205 | 205 | |
| 206 | - // ne pas invalider le cache si affectation a l'identique |
|
| 207 | - // (tant pis si impt aurait du changer) |
|
| 208 | - if ($row and $valeur == $row['valeur'] |
|
| 209 | - and isset($GLOBALS[$table][$nom]) |
|
| 210 | - and $GLOBALS[$table][$nom] == $valeur |
|
| 211 | - ) { |
|
| 212 | - return; |
|
| 213 | - } |
|
| 206 | + // ne pas invalider le cache si affectation a l'identique |
|
| 207 | + // (tant pis si impt aurait du changer) |
|
| 208 | + if ($row and $valeur == $row['valeur'] |
|
| 209 | + and isset($GLOBALS[$table][$nom]) |
|
| 210 | + and $GLOBALS[$table][$nom] == $valeur |
|
| 211 | + ) { |
|
| 212 | + return; |
|
| 213 | + } |
|
| 214 | 214 | |
| 215 | - $GLOBALS[$table][$nom] = $valeur; |
|
| 216 | - // cf effacer pour comprendre le double touch |
|
| 217 | - $antidate = time() - (_META_CACHE_TIME << 1); |
|
| 218 | - if (!isset($touch[$table])) { |
|
| 219 | - touch_meta($antidate, $table); |
|
| 220 | - } |
|
| 221 | - $r = array('nom' => sql_quote($nom, '', 'text'), 'valeur' => sql_quote($valeur, '', 'text')); |
|
| 222 | - // Gaffe aux tables sans impt (vieilles versions de SPIP notamment) |
|
| 223 | - // ici on utilise pas sql_updateq et sql_insertq pour ne pas provoquer trop tot |
|
| 224 | - // de lecture des descriptions des tables |
|
| 225 | - if ($importable and isset($row['impt'])) { |
|
| 226 | - $r['impt'] = sql_quote($importable, '', 'text'); |
|
| 227 | - } |
|
| 228 | - if ($row) { |
|
| 229 | - sql_update('spip_' . $table, $r, "nom=" . sql_quote($nom)); |
|
| 230 | - } else { |
|
| 231 | - sql_insert('spip_' . $table, "(" . join(',', array_keys($r)) . ")", "(" . join(',', array_values($r)) . ")"); |
|
| 232 | - } |
|
| 233 | - if (!isset($touch[$table])) { |
|
| 234 | - touch_meta($antidate, $table); |
|
| 235 | - $touch[$table] = false; |
|
| 236 | - } |
|
| 215 | + $GLOBALS[$table][$nom] = $valeur; |
|
| 216 | + // cf effacer pour comprendre le double touch |
|
| 217 | + $antidate = time() - (_META_CACHE_TIME << 1); |
|
| 218 | + if (!isset($touch[$table])) { |
|
| 219 | + touch_meta($antidate, $table); |
|
| 220 | + } |
|
| 221 | + $r = array('nom' => sql_quote($nom, '', 'text'), 'valeur' => sql_quote($valeur, '', 'text')); |
|
| 222 | + // Gaffe aux tables sans impt (vieilles versions de SPIP notamment) |
|
| 223 | + // ici on utilise pas sql_updateq et sql_insertq pour ne pas provoquer trop tot |
|
| 224 | + // de lecture des descriptions des tables |
|
| 225 | + if ($importable and isset($row['impt'])) { |
|
| 226 | + $r['impt'] = sql_quote($importable, '', 'text'); |
|
| 227 | + } |
|
| 228 | + if ($row) { |
|
| 229 | + sql_update('spip_' . $table, $r, "nom=" . sql_quote($nom)); |
|
| 230 | + } else { |
|
| 231 | + sql_insert('spip_' . $table, "(" . join(',', array_keys($r)) . ")", "(" . join(',', array_values($r)) . ")"); |
|
| 232 | + } |
|
| 233 | + if (!isset($touch[$table])) { |
|
| 234 | + touch_meta($antidate, $table); |
|
| 235 | + $touch[$table] = false; |
|
| 236 | + } |
|
| 237 | 237 | } |
| 238 | 238 | |
| 239 | 239 | /** |
@@ -245,7 +245,7 @@ discard block |
||
| 245 | 245 | * Nom du fichier cache |
| 246 | 246 | **/ |
| 247 | 247 | function cache_meta($table = 'meta') { |
| 248 | - return ($table == 'meta') ? _FILE_META : (_DIR_CACHE . $table . '.php'); |
|
| 248 | + return ($table == 'meta') ? _FILE_META : (_DIR_CACHE . $table . '.php'); |
|
| 249 | 249 | } |
| 250 | 250 | |
| 251 | 251 | /** |
@@ -254,14 +254,14 @@ discard block |
||
| 254 | 254 | * @param string $table |
| 255 | 255 | */ |
| 256 | 256 | function installer_table_meta($table) { |
| 257 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 258 | - if (!$trouver_table("spip_$table")) { |
|
| 259 | - include_spip('base/auxiliaires'); |
|
| 260 | - include_spip('base/create'); |
|
| 261 | - creer_ou_upgrader_table("spip_$table", $GLOBALS['tables_auxiliaires']['spip_meta'], false, false); |
|
| 262 | - $trouver_table(''); |
|
| 263 | - } |
|
| 264 | - lire_metas($table); |
|
| 257 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 258 | + if (!$trouver_table("spip_$table")) { |
|
| 259 | + include_spip('base/auxiliaires'); |
|
| 260 | + include_spip('base/create'); |
|
| 261 | + creer_ou_upgrader_table("spip_$table", $GLOBALS['tables_auxiliaires']['spip_meta'], false, false); |
|
| 262 | + $trouver_table(''); |
|
| 263 | + } |
|
| 264 | + lire_metas($table); |
|
| 265 | 265 | } |
| 266 | 266 | |
| 267 | 267 | /** |
@@ -273,47 +273,47 @@ discard block |
||
| 273 | 273 | * @param bool $force |
| 274 | 274 | */ |
| 275 | 275 | function supprimer_table_meta($table, $force = false) { |
| 276 | - if ($table !== 'meta') { |
|
| 277 | - // Vérifier le contenu restant de la table |
|
| 278 | - $nb_variables = sql_countsel("spip_$table"); |
|
| 276 | + if ($table !== 'meta') { |
|
| 277 | + // Vérifier le contenu restant de la table |
|
| 278 | + $nb_variables = sql_countsel("spip_$table"); |
|
| 279 | 279 | |
| 280 | - // Supprimer si : |
|
| 281 | - // - la table est vide |
|
| 282 | - // - ou limitée à la variable charset |
|
| 283 | - // - ou qu'on force la suppression |
|
| 284 | - if ( |
|
| 285 | - $force |
|
| 286 | - or !$nb_variables |
|
| 287 | - or ( |
|
| 288 | - ($nb_variables == 1) |
|
| 289 | - and isset($GLOBALS[$table]['charset']) |
|
| 290 | - ) |
|
| 291 | - ) { |
|
| 292 | - // Supprimer la table des globaleset de la base |
|
| 293 | - unset($GLOBALS[$table]); |
|
| 294 | - sql_drop_table("spip_$table"); |
|
| 295 | - // Supprimer le fichier cache |
|
| 296 | - include_spip('inc/flock'); |
|
| 297 | - $cache = cache_meta($table); |
|
| 298 | - supprimer_fichier($cache); |
|
| 280 | + // Supprimer si : |
|
| 281 | + // - la table est vide |
|
| 282 | + // - ou limitée à la variable charset |
|
| 283 | + // - ou qu'on force la suppression |
|
| 284 | + if ( |
|
| 285 | + $force |
|
| 286 | + or !$nb_variables |
|
| 287 | + or ( |
|
| 288 | + ($nb_variables == 1) |
|
| 289 | + and isset($GLOBALS[$table]['charset']) |
|
| 290 | + ) |
|
| 291 | + ) { |
|
| 292 | + // Supprimer la table des globaleset de la base |
|
| 293 | + unset($GLOBALS[$table]); |
|
| 294 | + sql_drop_table("spip_$table"); |
|
| 295 | + // Supprimer le fichier cache |
|
| 296 | + include_spip('inc/flock'); |
|
| 297 | + $cache = cache_meta($table); |
|
| 298 | + supprimer_fichier($cache); |
|
| 299 | 299 | |
| 300 | - // vider le cache des tables |
|
| 301 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 302 | - $trouver_table(''); |
|
| 300 | + // vider le cache des tables |
|
| 301 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 302 | + $trouver_table(''); |
|
| 303 | 303 | |
| 304 | - // Supprimer la table de la liste des tables de configuration autres que spip_meta |
|
| 305 | - if (isset($GLOBALS['meta']['tables_config'])) { |
|
| 306 | - $liste = unserialize($GLOBALS['meta']['tables_config']); |
|
| 307 | - $cle = array_search($table, $liste); |
|
| 308 | - if ($cle !== false) { |
|
| 309 | - unset($liste[$cle]); |
|
| 310 | - if ($liste ) { |
|
| 311 | - ecrire_meta('tables_config', serialize($liste)); |
|
| 312 | - } else { |
|
| 313 | - effacer_meta('tables_config'); |
|
| 314 | - } |
|
| 315 | - } |
|
| 316 | - } |
|
| 317 | - } |
|
| 318 | - } |
|
| 304 | + // Supprimer la table de la liste des tables de configuration autres que spip_meta |
|
| 305 | + if (isset($GLOBALS['meta']['tables_config'])) { |
|
| 306 | + $liste = unserialize($GLOBALS['meta']['tables_config']); |
|
| 307 | + $cle = array_search($table, $liste); |
|
| 308 | + if ($cle !== false) { |
|
| 309 | + unset($liste[$cle]); |
|
| 310 | + if ($liste ) { |
|
| 311 | + ecrire_meta('tables_config', serialize($liste)); |
|
| 312 | + } else { |
|
| 313 | + effacer_meta('tables_config'); |
|
| 314 | + } |
|
| 315 | + } |
|
| 316 | + } |
|
| 317 | + } |
|
| 318 | + } |
|
| 319 | 319 | } |
@@ -64,7 +64,7 @@ discard block |
||
| 64 | 64 | // si demande de traduction |
| 65 | 65 | // on recupere les valeurs de la traduction |
| 66 | 66 | if ($lier_trad) { |
| 67 | - if ($select = charger_fonction("precharger_traduction_" . $type, 'inc', true)) { |
|
| 67 | + if ($select = charger_fonction("precharger_traduction_".$type, 'inc', true)) { |
|
| 68 | 68 | $row = $select($id_objet, $id_rubrique, $lier_trad); |
| 69 | 69 | } else { |
| 70 | 70 | $row = precharger_traduction_objet($type, $id_objet, $id_rubrique, $lier_trad, $champ_titre); |
@@ -102,7 +102,7 @@ discard block |
||
| 102 | 102 | // recuperer le secteur, pour affecter les bons champs extras |
| 103 | 103 | if ($id_rubrique and $is_secteur) { |
| 104 | 104 | if (!$row['id_secteur']) { |
| 105 | - $row_rub = sql_getfetsel("id_secteur", "spip_rubriques", "id_rubrique=" . sql_quote($id_rubrique)); |
|
| 105 | + $row_rub = sql_getfetsel("id_secteur", "spip_rubriques", "id_rubrique=".sql_quote($id_rubrique)); |
|
| 106 | 106 | $row['id_secteur'] = $row_rub; |
| 107 | 107 | } |
| 108 | 108 | } |
@@ -136,7 +136,7 @@ discard block |
||
| 136 | 136 | $row = sql_fetsel("*", $table, "$_id_objet=".intval($lier_trad)); |
| 137 | 137 | if ($row) { |
| 138 | 138 | include_spip('inc/filtres'); |
| 139 | - $row[$champ_titre] = filtrer_entites(objet_T($type, 'info_nouvelle_traduction')) . ' ' . $row[$champ_titre]; |
|
| 139 | + $row[$champ_titre] = filtrer_entites(objet_T($type, 'info_nouvelle_traduction')).' '.$row[$champ_titre]; |
|
| 140 | 140 | } else { |
| 141 | 141 | $row = array(); |
| 142 | 142 | } |
@@ -177,7 +177,7 @@ discard block |
||
| 177 | 177 | } |
| 178 | 178 | |
| 179 | 179 | $row_rub = sql_fetsel("id_rubrique", "spip_rubriques", |
| 180 | - "lang='" . $GLOBALS['spip_lang'] . "' AND id_parent=".intval($id_parent)); |
|
| 180 | + "lang='".$GLOBALS['spip_lang']."' AND id_parent=".intval($id_parent)); |
|
| 181 | 181 | if ($row_rub) { |
| 182 | 182 | $row['id_rubrique'] = $row_rub['id_rubrique']; |
| 183 | 183 | } |
@@ -17,7 +17,7 @@ discard block |
||
| 17 | 17 | **/ |
| 18 | 18 | |
| 19 | 19 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 20 | - return; |
|
| 20 | + return; |
|
| 21 | 21 | } |
| 22 | 22 | |
| 23 | 23 | include_spip('inc/autoriser'); // necessaire si appel de l'espace public |
@@ -45,69 +45,69 @@ discard block |
||
| 45 | 45 | **/ |
| 46 | 46 | function precharger_objet($type, $id_objet, $id_rubrique = 0, $lier_trad = 0, $champ_titre = 'titre') { |
| 47 | 47 | |
| 48 | - $table = table_objet_sql($type); |
|
| 49 | - $_id_objet = id_table_objet($table); |
|
| 50 | - |
|
| 51 | - // si l'objet existe deja, on retourne simplement ses valeurs |
|
| 52 | - if (is_numeric($id_objet)) { |
|
| 53 | - return sql_fetsel("*", $table, "$_id_objet=".intval($id_objet)); |
|
| 54 | - } |
|
| 55 | - |
|
| 56 | - // ici, on demande une creation. |
|
| 57 | - // on prerempli certains elements : les champs si traduction, |
|
| 58 | - // les id_rubrique et id_secteur si l'objet a ces champs |
|
| 59 | - $desc = lister_tables_objets_sql($table); |
|
| 60 | - # il faudrait calculer $champ_titre ici |
|
| 61 | - $is_rubrique = isset($desc['field']['id_rubrique']); |
|
| 62 | - $is_secteur = isset($desc['field']['id_secteur']); |
|
| 63 | - |
|
| 64 | - // si demande de traduction |
|
| 65 | - // on recupere les valeurs de la traduction |
|
| 66 | - if ($lier_trad) { |
|
| 67 | - if ($select = charger_fonction("precharger_traduction_" . $type, 'inc', true)) { |
|
| 68 | - $row = $select($id_objet, $id_rubrique, $lier_trad); |
|
| 69 | - } else { |
|
| 70 | - $row = precharger_traduction_objet($type, $id_objet, $id_rubrique, $lier_trad, $champ_titre); |
|
| 71 | - } |
|
| 72 | - } else { |
|
| 73 | - $row[$champ_titre] = ''; |
|
| 74 | - if ($is_rubrique) { |
|
| 75 | - $row['id_rubrique'] = $id_rubrique; |
|
| 76 | - } |
|
| 77 | - } |
|
| 78 | - |
|
| 79 | - // calcul de la rubrique |
|
| 80 | - # note : comment faire pour des traductions sur l'objet rubriques ? |
|
| 81 | - if ($is_rubrique) { |
|
| 82 | - // appel du script a la racine, faut choisir |
|
| 83 | - // admin restreint ==> sa premiere rubrique |
|
| 84 | - // autre ==> la derniere rubrique cree |
|
| 85 | - if (!$row['id_rubrique']) { |
|
| 86 | - if ($GLOBALS['connect_id_rubrique']) { |
|
| 87 | - $row['id_rubrique'] = $id_rubrique = current($GLOBALS['connect_id_rubrique']); |
|
| 88 | - } else { |
|
| 89 | - $row_rub = sql_fetsel("id_rubrique", "spip_rubriques", "", "", "id_rubrique DESC", 1); |
|
| 90 | - $row['id_rubrique'] = $id_rubrique = $row_rub['id_rubrique']; |
|
| 91 | - } |
|
| 92 | - if (!autoriser('creerarticledans', 'rubrique', $row['id_rubrique'])) { |
|
| 93 | - // manque de chance, la rubrique n'est pas autorisee, on cherche un des secteurs autorises |
|
| 94 | - $res = sql_select("id_rubrique", "spip_rubriques", "id_parent=0"); |
|
| 95 | - while (!autoriser('creerarticledans', 'rubrique', $row['id_rubrique']) && $row_rub = sql_fetch($res)) { |
|
| 96 | - $row['id_rubrique'] = $row_rub['id_rubrique']; |
|
| 97 | - } |
|
| 98 | - } |
|
| 99 | - } |
|
| 100 | - } |
|
| 101 | - |
|
| 102 | - // recuperer le secteur, pour affecter les bons champs extras |
|
| 103 | - if ($id_rubrique and $is_secteur) { |
|
| 104 | - if (!$row['id_secteur']) { |
|
| 105 | - $row_rub = sql_getfetsel("id_secteur", "spip_rubriques", "id_rubrique=" . sql_quote($id_rubrique)); |
|
| 106 | - $row['id_secteur'] = $row_rub; |
|
| 107 | - } |
|
| 108 | - } |
|
| 109 | - |
|
| 110 | - return $row; |
|
| 48 | + $table = table_objet_sql($type); |
|
| 49 | + $_id_objet = id_table_objet($table); |
|
| 50 | + |
|
| 51 | + // si l'objet existe deja, on retourne simplement ses valeurs |
|
| 52 | + if (is_numeric($id_objet)) { |
|
| 53 | + return sql_fetsel("*", $table, "$_id_objet=".intval($id_objet)); |
|
| 54 | + } |
|
| 55 | + |
|
| 56 | + // ici, on demande une creation. |
|
| 57 | + // on prerempli certains elements : les champs si traduction, |
|
| 58 | + // les id_rubrique et id_secteur si l'objet a ces champs |
|
| 59 | + $desc = lister_tables_objets_sql($table); |
|
| 60 | + # il faudrait calculer $champ_titre ici |
|
| 61 | + $is_rubrique = isset($desc['field']['id_rubrique']); |
|
| 62 | + $is_secteur = isset($desc['field']['id_secteur']); |
|
| 63 | + |
|
| 64 | + // si demande de traduction |
|
| 65 | + // on recupere les valeurs de la traduction |
|
| 66 | + if ($lier_trad) { |
|
| 67 | + if ($select = charger_fonction("precharger_traduction_" . $type, 'inc', true)) { |
|
| 68 | + $row = $select($id_objet, $id_rubrique, $lier_trad); |
|
| 69 | + } else { |
|
| 70 | + $row = precharger_traduction_objet($type, $id_objet, $id_rubrique, $lier_trad, $champ_titre); |
|
| 71 | + } |
|
| 72 | + } else { |
|
| 73 | + $row[$champ_titre] = ''; |
|
| 74 | + if ($is_rubrique) { |
|
| 75 | + $row['id_rubrique'] = $id_rubrique; |
|
| 76 | + } |
|
| 77 | + } |
|
| 78 | + |
|
| 79 | + // calcul de la rubrique |
|
| 80 | + # note : comment faire pour des traductions sur l'objet rubriques ? |
|
| 81 | + if ($is_rubrique) { |
|
| 82 | + // appel du script a la racine, faut choisir |
|
| 83 | + // admin restreint ==> sa premiere rubrique |
|
| 84 | + // autre ==> la derniere rubrique cree |
|
| 85 | + if (!$row['id_rubrique']) { |
|
| 86 | + if ($GLOBALS['connect_id_rubrique']) { |
|
| 87 | + $row['id_rubrique'] = $id_rubrique = current($GLOBALS['connect_id_rubrique']); |
|
| 88 | + } else { |
|
| 89 | + $row_rub = sql_fetsel("id_rubrique", "spip_rubriques", "", "", "id_rubrique DESC", 1); |
|
| 90 | + $row['id_rubrique'] = $id_rubrique = $row_rub['id_rubrique']; |
|
| 91 | + } |
|
| 92 | + if (!autoriser('creerarticledans', 'rubrique', $row['id_rubrique'])) { |
|
| 93 | + // manque de chance, la rubrique n'est pas autorisee, on cherche un des secteurs autorises |
|
| 94 | + $res = sql_select("id_rubrique", "spip_rubriques", "id_parent=0"); |
|
| 95 | + while (!autoriser('creerarticledans', 'rubrique', $row['id_rubrique']) && $row_rub = sql_fetch($res)) { |
|
| 96 | + $row['id_rubrique'] = $row_rub['id_rubrique']; |
|
| 97 | + } |
|
| 98 | + } |
|
| 99 | + } |
|
| 100 | + } |
|
| 101 | + |
|
| 102 | + // recuperer le secteur, pour affecter les bons champs extras |
|
| 103 | + if ($id_rubrique and $is_secteur) { |
|
| 104 | + if (!$row['id_secteur']) { |
|
| 105 | + $row_rub = sql_getfetsel("id_secteur", "spip_rubriques", "id_rubrique=" . sql_quote($id_rubrique)); |
|
| 106 | + $row['id_secteur'] = $row_rub; |
|
| 107 | + } |
|
| 108 | + } |
|
| 109 | + |
|
| 110 | + return $row; |
|
| 111 | 111 | } |
| 112 | 112 | |
| 113 | 113 | |
@@ -129,76 +129,76 @@ discard block |
||
| 129 | 129 | * Couples clés / valeurs des champs du formulaire à charger |
| 130 | 130 | **/ |
| 131 | 131 | function precharger_traduction_objet($type, $id_objet, $id_rubrique = 0, $lier_trad = 0, $champ_titre = 'titre') { |
| 132 | - $table = table_objet_sql($type); |
|
| 133 | - $_id_objet = id_table_objet($table); |
|
| 134 | - |
|
| 135 | - // Recuperer les donnees de l'objet original |
|
| 136 | - $row = sql_fetsel("*", $table, "$_id_objet=".intval($lier_trad)); |
|
| 137 | - if ($row) { |
|
| 138 | - include_spip('inc/filtres'); |
|
| 139 | - $row[$champ_titre] = filtrer_entites(objet_T($type, 'info_nouvelle_traduction')) . ' ' . $row[$champ_titre]; |
|
| 140 | - } else { |
|
| 141 | - $row = array(); |
|
| 142 | - } |
|
| 143 | - |
|
| 144 | - // on met l'objet dans une rubrique si l'objet le peut |
|
| 145 | - $desc = lister_tables_objets_sql($table); |
|
| 146 | - $is_rubrique = isset($desc['field']['id_rubrique']); |
|
| 147 | - |
|
| 148 | - if ($is_rubrique) { |
|
| 149 | - $langues_dispo = explode(',', $GLOBALS['meta']['langues_multilingue']); |
|
| 150 | - // si le redacteur utilise une autre langue que celle de la source, on suppose que c'est pour traduire dans sa langue |
|
| 151 | - if (in_array($GLOBALS['spip_lang'], $langues_dispo) and $GLOBALS['spip_lang'] !== $row['lang']) { |
|
| 152 | - $row['lang'] = $GLOBALS['spip_lang']; |
|
| 153 | - } |
|
| 154 | - // sinon si il y a seulement 2 langues dispos, on bascule sur l'"autre" |
|
| 155 | - elseif (count($langues_dispo) == 2) { |
|
| 156 | - $autre_langue = array_diff($langues_dispo, [$row['lang']]); |
|
| 157 | - if (count($autre_langue) == 1) { |
|
| 158 | - $row['lang'] = reset($autre_langue); |
|
| 159 | - } |
|
| 160 | - } |
|
| 161 | - else { |
|
| 162 | - $row['lang'] = 'en'; |
|
| 163 | - } |
|
| 164 | - |
|
| 165 | - if ($id_rubrique) { |
|
| 166 | - $row['id_rubrique'] = $id_rubrique; |
|
| 167 | - |
|
| 168 | - return $row; |
|
| 169 | - } |
|
| 170 | - $id_rubrique = $row['id_rubrique']; |
|
| 171 | - |
|
| 172 | - |
|
| 173 | - // Regler la langue, si possible, sur celle du redacteur |
|
| 174 | - // Cela implique souvent de choisir une rubrique ou un secteur |
|
| 175 | - if (in_array($GLOBALS['spip_lang'], $langues_dispo)) { |
|
| 176 | - |
|
| 177 | - // Si le menu de langues est autorise sur l'objet, |
|
| 178 | - // on peut changer la langue quelle que soit la rubrique |
|
| 179 | - // donc on reste dans la meme rubrique |
|
| 180 | - if (in_array($table, explode(',', $GLOBALS['meta']['multi_objets']))) { |
|
| 181 | - $row['id_rubrique'] = $row['id_rubrique']; # explicite :-) |
|
| 182 | - |
|
| 183 | - // Sinon, chercher la rubrique la plus adaptee pour |
|
| 184 | - // accueillir l'objet dans la langue du traducteur |
|
| 185 | - } elseif ($is_rubrique and $GLOBALS['meta']['multi_rubriques'] == 'oui') { |
|
| 186 | - if ($GLOBALS['meta']['multi_secteurs'] == 'oui') { |
|
| 187 | - $id_parent = 0; |
|
| 188 | - } else { |
|
| 189 | - // on cherche une rubrique soeur dans la bonne langue |
|
| 190 | - $row_rub = sql_fetsel("id_parent", "spip_rubriques", "id_rubrique=".intval($id_rubrique)); |
|
| 191 | - $id_parent = $row_rub['id_parent']; |
|
| 192 | - } |
|
| 193 | - |
|
| 194 | - $row_rub = sql_fetsel("id_rubrique", "spip_rubriques", |
|
| 195 | - "lang='" . $GLOBALS['spip_lang'] . "' AND id_parent=".intval($id_parent)); |
|
| 196 | - if ($row_rub) { |
|
| 197 | - $row['id_rubrique'] = $row_rub['id_rubrique']; |
|
| 198 | - } |
|
| 199 | - } |
|
| 200 | - } |
|
| 201 | - } |
|
| 202 | - |
|
| 203 | - return $row; |
|
| 132 | + $table = table_objet_sql($type); |
|
| 133 | + $_id_objet = id_table_objet($table); |
|
| 134 | + |
|
| 135 | + // Recuperer les donnees de l'objet original |
|
| 136 | + $row = sql_fetsel("*", $table, "$_id_objet=".intval($lier_trad)); |
|
| 137 | + if ($row) { |
|
| 138 | + include_spip('inc/filtres'); |
|
| 139 | + $row[$champ_titre] = filtrer_entites(objet_T($type, 'info_nouvelle_traduction')) . ' ' . $row[$champ_titre]; |
|
| 140 | + } else { |
|
| 141 | + $row = array(); |
|
| 142 | + } |
|
| 143 | + |
|
| 144 | + // on met l'objet dans une rubrique si l'objet le peut |
|
| 145 | + $desc = lister_tables_objets_sql($table); |
|
| 146 | + $is_rubrique = isset($desc['field']['id_rubrique']); |
|
| 147 | + |
|
| 148 | + if ($is_rubrique) { |
|
| 149 | + $langues_dispo = explode(',', $GLOBALS['meta']['langues_multilingue']); |
|
| 150 | + // si le redacteur utilise une autre langue que celle de la source, on suppose que c'est pour traduire dans sa langue |
|
| 151 | + if (in_array($GLOBALS['spip_lang'], $langues_dispo) and $GLOBALS['spip_lang'] !== $row['lang']) { |
|
| 152 | + $row['lang'] = $GLOBALS['spip_lang']; |
|
| 153 | + } |
|
| 154 | + // sinon si il y a seulement 2 langues dispos, on bascule sur l'"autre" |
|
| 155 | + elseif (count($langues_dispo) == 2) { |
|
| 156 | + $autre_langue = array_diff($langues_dispo, [$row['lang']]); |
|
| 157 | + if (count($autre_langue) == 1) { |
|
| 158 | + $row['lang'] = reset($autre_langue); |
|
| 159 | + } |
|
| 160 | + } |
|
| 161 | + else { |
|
| 162 | + $row['lang'] = 'en'; |
|
| 163 | + } |
|
| 164 | + |
|
| 165 | + if ($id_rubrique) { |
|
| 166 | + $row['id_rubrique'] = $id_rubrique; |
|
| 167 | + |
|
| 168 | + return $row; |
|
| 169 | + } |
|
| 170 | + $id_rubrique = $row['id_rubrique']; |
|
| 171 | + |
|
| 172 | + |
|
| 173 | + // Regler la langue, si possible, sur celle du redacteur |
|
| 174 | + // Cela implique souvent de choisir une rubrique ou un secteur |
|
| 175 | + if (in_array($GLOBALS['spip_lang'], $langues_dispo)) { |
|
| 176 | + |
|
| 177 | + // Si le menu de langues est autorise sur l'objet, |
|
| 178 | + // on peut changer la langue quelle que soit la rubrique |
|
| 179 | + // donc on reste dans la meme rubrique |
|
| 180 | + if (in_array($table, explode(',', $GLOBALS['meta']['multi_objets']))) { |
|
| 181 | + $row['id_rubrique'] = $row['id_rubrique']; # explicite :-) |
|
| 182 | + |
|
| 183 | + // Sinon, chercher la rubrique la plus adaptee pour |
|
| 184 | + // accueillir l'objet dans la langue du traducteur |
|
| 185 | + } elseif ($is_rubrique and $GLOBALS['meta']['multi_rubriques'] == 'oui') { |
|
| 186 | + if ($GLOBALS['meta']['multi_secteurs'] == 'oui') { |
|
| 187 | + $id_parent = 0; |
|
| 188 | + } else { |
|
| 189 | + // on cherche une rubrique soeur dans la bonne langue |
|
| 190 | + $row_rub = sql_fetsel("id_parent", "spip_rubriques", "id_rubrique=".intval($id_rubrique)); |
|
| 191 | + $id_parent = $row_rub['id_parent']; |
|
| 192 | + } |
|
| 193 | + |
|
| 194 | + $row_rub = sql_fetsel("id_rubrique", "spip_rubriques", |
|
| 195 | + "lang='" . $GLOBALS['spip_lang'] . "' AND id_parent=".intval($id_parent)); |
|
| 196 | + if ($row_rub) { |
|
| 197 | + $row['id_rubrique'] = $row_rub['id_rubrique']; |
|
| 198 | + } |
|
| 199 | + } |
|
| 200 | + } |
|
| 201 | + } |
|
| 202 | + |
|
| 203 | + return $row; |
|
| 204 | 204 | } |
@@ -157,8 +157,7 @@ |
||
| 157 | 157 | if (count($autre_langue) == 1) { |
| 158 | 158 | $row['lang'] = reset($autre_langue); |
| 159 | 159 | } |
| 160 | - } |
|
| 161 | - else { |
|
| 160 | + } else { |
|
| 162 | 161 | $row['lang'] = 'en'; |
| 163 | 162 | } |
| 164 | 163 | |
@@ -68,7 +68,7 @@ discard block |
||
| 68 | 68 | } |
| 69 | 69 | $dir = constant($dir); |
| 70 | 70 | foreach ($infos['install'] as $file) { |
| 71 | - $file = $dir . $plug . "/" . trim($file); |
|
| 71 | + $file = $dir.$plug."/".trim($file); |
|
| 72 | 72 | if (file_exists($file)) { |
| 73 | 73 | include_once($file); |
| 74 | 74 | } |
@@ -81,10 +81,10 @@ discard block |
||
| 81 | 81 | // S'assurer que les metas de la table spécifique sont bien accessibles dans la globale |
| 82 | 82 | lire_metas($table); |
| 83 | 83 | } |
| 84 | - $nom_meta = $infos['prefix'] . '_base_version'; |
|
| 84 | + $nom_meta = $infos['prefix'].'_base_version'; |
|
| 85 | 85 | |
| 86 | 86 | // Détermination de la fonction à appeler et de ses arguments |
| 87 | - $f = $infos['prefix'] . "_install"; |
|
| 87 | + $f = $infos['prefix']."_install"; |
|
| 88 | 88 | if (!function_exists($f)) { |
| 89 | 89 | $f = isset($infos['schema']) ? 'spip_plugin_install' : ''; |
| 90 | 90 | $arg = $infos; |
@@ -168,12 +168,12 @@ discard block |
||
| 168 | 168 | and spip_version_compare($GLOBALS[$table][$nom_meta], $version_cible, '>=')); |
| 169 | 169 | break; |
| 170 | 170 | case 'install': |
| 171 | - if (function_exists($upgrade = $infos['prefix'] . '_upgrade')) { |
|
| 171 | + if (function_exists($upgrade = $infos['prefix'].'_upgrade')) { |
|
| 172 | 172 | $upgrade($nom_meta, $version_cible, $table); |
| 173 | 173 | } |
| 174 | 174 | break; |
| 175 | 175 | case 'uninstall': |
| 176 | - if (function_exists($vider_tables = $infos['prefix'] . '_vider_tables')) { |
|
| 176 | + if (function_exists($vider_tables = $infos['prefix'].'_vider_tables')) { |
|
| 177 | 177 | $vider_tables($nom_meta, $table); |
| 178 | 178 | } |
| 179 | 179 | break; |
@@ -18,7 +18,7 @@ discard block |
||
| 18 | 18 | |
| 19 | 19 | |
| 20 | 20 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 21 | - return; |
|
| 21 | + return; |
|
| 22 | 22 | } |
| 23 | 23 | |
| 24 | 24 | /** |
@@ -54,96 +54,96 @@ discard block |
||
| 54 | 54 | */ |
| 55 | 55 | function plugins_installer_dist($plug, $action, $dir_type = '_DIR_PLUGINS') { |
| 56 | 56 | |
| 57 | - // Charger les informations du XML du plugin et vérification de l'existence d'une installation |
|
| 58 | - $get_infos = charger_fonction('get_infos', 'plugins'); |
|
| 59 | - $infos = $get_infos($plug, false, constant($dir_type)); |
|
| 60 | - if (!isset($infos['install']) or !$infos['install']) { |
|
| 61 | - return false; |
|
| 62 | - } |
|
| 63 | - |
|
| 64 | - // Passer en chemin absolu si possible, c'est plus efficace |
|
| 65 | - $dir = str_replace('_DIR_', '_ROOT_', $dir_type); |
|
| 66 | - if (!defined($dir)) { |
|
| 67 | - $dir = $dir_type; |
|
| 68 | - } |
|
| 69 | - $dir = constant($dir); |
|
| 70 | - foreach ($infos['install'] as $file) { |
|
| 71 | - $file = $dir . $plug . "/" . trim($file); |
|
| 72 | - if (file_exists($file)) { |
|
| 73 | - include_once($file); |
|
| 74 | - } |
|
| 75 | - } |
|
| 76 | - |
|
| 77 | - // Détermination de la table meta et du nom de la meta plugin |
|
| 78 | - $table = 'meta'; |
|
| 79 | - if (isset($infos['meta']) and ($infos['meta'] !== 'meta')) { |
|
| 80 | - $table = $infos['meta']; |
|
| 81 | - // S'assurer que les metas de la table spécifique sont bien accessibles dans la globale |
|
| 82 | - lire_metas($table); |
|
| 83 | - } |
|
| 84 | - $nom_meta = $infos['prefix'] . '_base_version'; |
|
| 85 | - |
|
| 86 | - // Détermination de la fonction à appeler et de ses arguments |
|
| 87 | - $f = $infos['prefix'] . "_install"; |
|
| 88 | - if (!function_exists($f)) { |
|
| 89 | - $f = isset($infos['schema']) ? 'spip_plugin_install' : ''; |
|
| 90 | - $arg = $infos; |
|
| 91 | - // On passe la table et la meta pour éviter de les recalculer dans la fonction appelée |
|
| 92 | - $arg['meta'] = $table; |
|
| 93 | - $arg['nom_meta'] = $nom_meta; |
|
| 94 | - } else { |
|
| 95 | - // Ancienne méthode d'installation - TODO à supprimer à terme |
|
| 96 | - // stupide: info deja dans le nom |
|
| 97 | - $arg = $infos['prefix']; |
|
| 98 | - } |
|
| 99 | - $version = isset($infos['schema']) ? $infos['schema'] : ''; |
|
| 100 | - |
|
| 101 | - if (!$f) { |
|
| 102 | - // installation sans operation particuliere |
|
| 103 | - $infos['install_test'] = array(true, ''); |
|
| 104 | - return $infos; |
|
| 105 | - } |
|
| 106 | - |
|
| 107 | - // Tester si l'action demandée est nécessaire ou pas. |
|
| 108 | - $test = $f('test', $arg, $version); |
|
| 109 | - if ($action == 'uninstall') { |
|
| 110 | - $test = !$test; |
|
| 111 | - } |
|
| 112 | - // Si deja fait, on ne fait rien et on ne dit rien |
|
| 113 | - if ($test) { |
|
| 114 | - return true; |
|
| 115 | - } |
|
| 116 | - |
|
| 117 | - // Si install et que l'on a la meta d'installation, c'est un upgrade. On le consigne dans $infos |
|
| 118 | - // pour renvoyer le bon message en retour de la fonction. |
|
| 119 | - if ($action == 'install' && !empty($GLOBALS[$table][$nom_meta])) { |
|
| 120 | - $infos['upgrade'] = true; |
|
| 121 | - } |
|
| 122 | - |
|
| 123 | - // executer l'installation ou l'inverse |
|
| 124 | - // et renvoyer la trace (mais il faudrait passer en AJAX plutot) |
|
| 125 | - ob_start(); |
|
| 126 | - $f($action, $arg, $version); |
|
| 127 | - $aff = ob_get_contents(); |
|
| 128 | - ob_end_clean(); |
|
| 129 | - |
|
| 130 | - // vider le cache des descriptions de tables a chaque (de)installation |
|
| 131 | - $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 132 | - $trouver_table(''); |
|
| 133 | - $infos['install_test'] = array($f('test', $arg, $version), $aff); |
|
| 134 | - |
|
| 135 | - // Si la table meta n'est pas spip_meta et qu'on est dans la première installation du plugin |
|
| 136 | - // on force la création du fichier cache à la date du moment. |
|
| 137 | - // On relit les metas de la table pour être sur que la globale soit à jour pour touch_meta. |
|
| 138 | - if ( |
|
| 139 | - ($table !== 'meta') |
|
| 140 | - and ($action == 'install') |
|
| 141 | - and empty($infos['upgrade']) |
|
| 142 | - ) { |
|
| 143 | - touch_meta(false, $table); |
|
| 144 | - } |
|
| 145 | - |
|
| 146 | - return $infos; |
|
| 57 | + // Charger les informations du XML du plugin et vérification de l'existence d'une installation |
|
| 58 | + $get_infos = charger_fonction('get_infos', 'plugins'); |
|
| 59 | + $infos = $get_infos($plug, false, constant($dir_type)); |
|
| 60 | + if (!isset($infos['install']) or !$infos['install']) { |
|
| 61 | + return false; |
|
| 62 | + } |
|
| 63 | + |
|
| 64 | + // Passer en chemin absolu si possible, c'est plus efficace |
|
| 65 | + $dir = str_replace('_DIR_', '_ROOT_', $dir_type); |
|
| 66 | + if (!defined($dir)) { |
|
| 67 | + $dir = $dir_type; |
|
| 68 | + } |
|
| 69 | + $dir = constant($dir); |
|
| 70 | + foreach ($infos['install'] as $file) { |
|
| 71 | + $file = $dir . $plug . "/" . trim($file); |
|
| 72 | + if (file_exists($file)) { |
|
| 73 | + include_once($file); |
|
| 74 | + } |
|
| 75 | + } |
|
| 76 | + |
|
| 77 | + // Détermination de la table meta et du nom de la meta plugin |
|
| 78 | + $table = 'meta'; |
|
| 79 | + if (isset($infos['meta']) and ($infos['meta'] !== 'meta')) { |
|
| 80 | + $table = $infos['meta']; |
|
| 81 | + // S'assurer que les metas de la table spécifique sont bien accessibles dans la globale |
|
| 82 | + lire_metas($table); |
|
| 83 | + } |
|
| 84 | + $nom_meta = $infos['prefix'] . '_base_version'; |
|
| 85 | + |
|
| 86 | + // Détermination de la fonction à appeler et de ses arguments |
|
| 87 | + $f = $infos['prefix'] . "_install"; |
|
| 88 | + if (!function_exists($f)) { |
|
| 89 | + $f = isset($infos['schema']) ? 'spip_plugin_install' : ''; |
|
| 90 | + $arg = $infos; |
|
| 91 | + // On passe la table et la meta pour éviter de les recalculer dans la fonction appelée |
|
| 92 | + $arg['meta'] = $table; |
|
| 93 | + $arg['nom_meta'] = $nom_meta; |
|
| 94 | + } else { |
|
| 95 | + // Ancienne méthode d'installation - TODO à supprimer à terme |
|
| 96 | + // stupide: info deja dans le nom |
|
| 97 | + $arg = $infos['prefix']; |
|
| 98 | + } |
|
| 99 | + $version = isset($infos['schema']) ? $infos['schema'] : ''; |
|
| 100 | + |
|
| 101 | + if (!$f) { |
|
| 102 | + // installation sans operation particuliere |
|
| 103 | + $infos['install_test'] = array(true, ''); |
|
| 104 | + return $infos; |
|
| 105 | + } |
|
| 106 | + |
|
| 107 | + // Tester si l'action demandée est nécessaire ou pas. |
|
| 108 | + $test = $f('test', $arg, $version); |
|
| 109 | + if ($action == 'uninstall') { |
|
| 110 | + $test = !$test; |
|
| 111 | + } |
|
| 112 | + // Si deja fait, on ne fait rien et on ne dit rien |
|
| 113 | + if ($test) { |
|
| 114 | + return true; |
|
| 115 | + } |
|
| 116 | + |
|
| 117 | + // Si install et que l'on a la meta d'installation, c'est un upgrade. On le consigne dans $infos |
|
| 118 | + // pour renvoyer le bon message en retour de la fonction. |
|
| 119 | + if ($action == 'install' && !empty($GLOBALS[$table][$nom_meta])) { |
|
| 120 | + $infos['upgrade'] = true; |
|
| 121 | + } |
|
| 122 | + |
|
| 123 | + // executer l'installation ou l'inverse |
|
| 124 | + // et renvoyer la trace (mais il faudrait passer en AJAX plutot) |
|
| 125 | + ob_start(); |
|
| 126 | + $f($action, $arg, $version); |
|
| 127 | + $aff = ob_get_contents(); |
|
| 128 | + ob_end_clean(); |
|
| 129 | + |
|
| 130 | + // vider le cache des descriptions de tables a chaque (de)installation |
|
| 131 | + $trouver_table = charger_fonction('trouver_table', 'base'); |
|
| 132 | + $trouver_table(''); |
|
| 133 | + $infos['install_test'] = array($f('test', $arg, $version), $aff); |
|
| 134 | + |
|
| 135 | + // Si la table meta n'est pas spip_meta et qu'on est dans la première installation du plugin |
|
| 136 | + // on force la création du fichier cache à la date du moment. |
|
| 137 | + // On relit les metas de la table pour être sur que la globale soit à jour pour touch_meta. |
|
| 138 | + if ( |
|
| 139 | + ($table !== 'meta') |
|
| 140 | + and ($action == 'install') |
|
| 141 | + and empty($infos['upgrade']) |
|
| 142 | + ) { |
|
| 143 | + touch_meta(false, $table); |
|
| 144 | + } |
|
| 145 | + |
|
| 146 | + return $infos; |
|
| 147 | 147 | } |
| 148 | 148 | |
| 149 | 149 | /** |
@@ -159,25 +159,25 @@ discard block |
||
| 159 | 159 | * @return bool|void |
| 160 | 160 | */ |
| 161 | 161 | function spip_plugin_install($action, $infos, $version_cible) { |
| 162 | - $nom_meta = $infos['nom_meta']; |
|
| 163 | - $table = $infos['meta']; |
|
| 164 | - switch ($action) { |
|
| 165 | - case 'test': |
|
| 166 | - return (isset($GLOBALS[$table]) |
|
| 167 | - and isset($GLOBALS[$table][$nom_meta]) |
|
| 168 | - and spip_version_compare($GLOBALS[$table][$nom_meta], $version_cible, '>=')); |
|
| 169 | - break; |
|
| 170 | - case 'install': |
|
| 171 | - if (function_exists($upgrade = $infos['prefix'] . '_upgrade')) { |
|
| 172 | - $upgrade($nom_meta, $version_cible, $table); |
|
| 173 | - } |
|
| 174 | - break; |
|
| 175 | - case 'uninstall': |
|
| 176 | - if (function_exists($vider_tables = $infos['prefix'] . '_vider_tables')) { |
|
| 177 | - $vider_tables($nom_meta, $table); |
|
| 178 | - } |
|
| 179 | - break; |
|
| 180 | - } |
|
| 162 | + $nom_meta = $infos['nom_meta']; |
|
| 163 | + $table = $infos['meta']; |
|
| 164 | + switch ($action) { |
|
| 165 | + case 'test': |
|
| 166 | + return (isset($GLOBALS[$table]) |
|
| 167 | + and isset($GLOBALS[$table][$nom_meta]) |
|
| 168 | + and spip_version_compare($GLOBALS[$table][$nom_meta], $version_cible, '>=')); |
|
| 169 | + break; |
|
| 170 | + case 'install': |
|
| 171 | + if (function_exists($upgrade = $infos['prefix'] . '_upgrade')) { |
|
| 172 | + $upgrade($nom_meta, $version_cible, $table); |
|
| 173 | + } |
|
| 174 | + break; |
|
| 175 | + case 'uninstall': |
|
| 176 | + if (function_exists($vider_tables = $infos['prefix'] . '_vider_tables')) { |
|
| 177 | + $vider_tables($nom_meta, $table); |
|
| 178 | + } |
|
| 179 | + break; |
|
| 180 | + } |
|
| 181 | 181 | } |
| 182 | 182 | |
| 183 | 183 | |
@@ -196,29 +196,29 @@ discard block |
||
| 196 | 196 | * @return array Tableau des plugins actifs |
| 197 | 197 | **/ |
| 198 | 198 | function liste_plugin_actifs() { |
| 199 | - $liste = isset($GLOBALS['meta']['plugin']) ? $GLOBALS['meta']['plugin'] : ''; |
|
| 200 | - if (!$liste) { |
|
| 201 | - return array(); |
|
| 202 | - } |
|
| 203 | - if (!is_array($liste = unserialize($liste))) { |
|
| 204 | - // compatibilite pre 1.9.2, mettre a jour la meta |
|
| 205 | - spip_log("MAJ meta plugin vieille version : $liste", "plugin"); |
|
| 206 | - $new = true; |
|
| 207 | - list(, $liste) = liste_plugin_valides(explode(",", $liste)); |
|
| 208 | - } else { |
|
| 209 | - $new = false; |
|
| 210 | - // compat au moment d'une migration depuis version anterieure |
|
| 211 | - // si pas de dir_type, alors c'est _DIR_PLUGINS |
|
| 212 | - foreach ($liste as $prefix => $infos) { |
|
| 213 | - if (!isset($infos['dir_type'])) { |
|
| 214 | - $liste[$prefix]['dir_type'] = "_DIR_PLUGINS"; |
|
| 215 | - $new = true; |
|
| 216 | - } |
|
| 217 | - } |
|
| 218 | - } |
|
| 219 | - if ($new) { |
|
| 220 | - ecrire_meta('plugin', serialize($liste)); |
|
| 221 | - } |
|
| 222 | - |
|
| 223 | - return $liste; |
|
| 199 | + $liste = isset($GLOBALS['meta']['plugin']) ? $GLOBALS['meta']['plugin'] : ''; |
|
| 200 | + if (!$liste) { |
|
| 201 | + return array(); |
|
| 202 | + } |
|
| 203 | + if (!is_array($liste = unserialize($liste))) { |
|
| 204 | + // compatibilite pre 1.9.2, mettre a jour la meta |
|
| 205 | + spip_log("MAJ meta plugin vieille version : $liste", "plugin"); |
|
| 206 | + $new = true; |
|
| 207 | + list(, $liste) = liste_plugin_valides(explode(",", $liste)); |
|
| 208 | + } else { |
|
| 209 | + $new = false; |
|
| 210 | + // compat au moment d'une migration depuis version anterieure |
|
| 211 | + // si pas de dir_type, alors c'est _DIR_PLUGINS |
|
| 212 | + foreach ($liste as $prefix => $infos) { |
|
| 213 | + if (!isset($infos['dir_type'])) { |
|
| 214 | + $liste[$prefix]['dir_type'] = "_DIR_PLUGINS"; |
|
| 215 | + $new = true; |
|
| 216 | + } |
|
| 217 | + } |
|
| 218 | + } |
|
| 219 | + if ($new) { |
|
| 220 | + ecrire_meta('plugin', serialize($liste)); |
|
| 221 | + } |
|
| 222 | + |
|
| 223 | + return $liste; |
|
| 224 | 224 | } |
@@ -16,7 +16,7 @@ discard block |
||
| 16 | 16 | * @package SPIP\Core\SQL\Tables |
| 17 | 17 | **/ |
| 18 | 18 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 19 | - return; |
|
| 19 | + return; |
|
| 20 | 20 | } |
| 21 | 21 | include_spip('base/objets'); |
| 22 | 22 | |
@@ -64,141 +64,141 @@ discard block |
||
| 64 | 64 | * |
| 65 | 65 | **/ |
| 66 | 66 | function base_trouver_table_dist($nom, $serveur = '', $table_spip = true) { |
| 67 | - static $nom_cache_desc_sql = array(); |
|
| 68 | - |
|
| 69 | - if (!spip_connect($serveur) |
|
| 70 | - or !preg_match('/^[a-zA-Z0-9._-]*/', $nom) |
|
| 71 | - ) { |
|
| 72 | - return null; |
|
| 73 | - } |
|
| 74 | - |
|
| 75 | - $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]; |
|
| 76 | - $objets_sql = lister_tables_objets_sql("::md5"); |
|
| 77 | - |
|
| 78 | - // le nom du cache depend du serveur mais aussi du nom de la db et du prefixe |
|
| 79 | - // ce qui permet une auto invalidation en cas de modif manuelle du fichier |
|
| 80 | - // de connexion, et tout risque d'ambiguite |
|
| 81 | - if (!isset($nom_cache_desc_sql[$serveur][$objets_sql])) { |
|
| 82 | - $nom_cache_desc_sql[$serveur][$objets_sql] = |
|
| 83 | - _DIR_CACHE . 'sql_desc_' |
|
| 84 | - . ($serveur ? "{$serveur}_" : "") |
|
| 85 | - . substr(md5($connexion['db'] . ":" . $connexion['prefixe'] . ":$objets_sql"), 0, 8) |
|
| 86 | - . '.txt'; |
|
| 87 | - // nouveau nom de cache = nouvelle version en memoire |
|
| 88 | - unset($connexion['tables']); |
|
| 89 | - } |
|
| 90 | - |
|
| 91 | - // un appel avec $nom vide est une demande explicite de vidange du cache des descriptions |
|
| 92 | - if (!$nom) { |
|
| 93 | - spip_unlink($nom_cache_desc_sql[$serveur][$objets_sql]); |
|
| 94 | - $connexion['tables'] = array(); |
|
| 95 | - |
|
| 96 | - return null; |
|
| 97 | - } |
|
| 98 | - |
|
| 99 | - $nom_sql = $nom; |
|
| 100 | - if (preg_match('/\.(.*)$/', $nom, $s)) { |
|
| 101 | - $nom_sql = $s[1]; |
|
| 102 | - } else { |
|
| 103 | - $nom_sql = $nom; |
|
| 104 | - } |
|
| 105 | - |
|
| 106 | - $fdesc = $desc = ''; |
|
| 107 | - $connexion = &$GLOBALS['connexions'][$serveur ? $serveur : 0]; |
|
| 108 | - |
|
| 109 | - // base sous SPIP: gerer les abreviations explicites des noms de table |
|
| 110 | - if ($connexion['spip_connect_version']) { |
|
| 111 | - if ($table_spip and isset($GLOBALS['table_des_tables'][$nom])) { |
|
| 112 | - $nom = $GLOBALS['table_des_tables'][$nom]; |
|
| 113 | - $nom_sql = 'spip_' . $nom; |
|
| 114 | - } |
|
| 115 | - } |
|
| 116 | - |
|
| 117 | - // si c'est la premiere table qu'on cherche |
|
| 118 | - // et si on est pas explicitement en recalcul |
|
| 119 | - // on essaye de recharger le cache des decriptions de ce serveur |
|
| 120 | - // dans le fichier cache |
|
| 121 | - if (!isset($connexion['tables'][$nom_sql]) |
|
| 122 | - and defined('_VAR_MODE') and _VAR_MODE !== 'recalcul' |
|
| 123 | - and (!isset($connexion['tables']) or !$connexion['tables']) |
|
| 124 | - ) { |
|
| 125 | - if (lire_fichier($nom_cache_desc_sql[$serveur][$objets_sql], $desc_cache) |
|
| 126 | - and $desc_cache = unserialize($desc_cache) |
|
| 127 | - ) { |
|
| 128 | - $connexion['tables'] = $desc_cache; |
|
| 129 | - } |
|
| 130 | - } |
|
| 131 | - if ($table_spip and !isset($connexion['tables'][$nom_sql])) { |
|
| 132 | - |
|
| 133 | - if (isset($GLOBALS['tables_principales'][$nom_sql])) { |
|
| 134 | - $fdesc = $GLOBALS['tables_principales'][$nom_sql]; |
|
| 135 | - } |
|
| 136 | - // meme si pas d'abreviation declaree, trouver la table spip_$nom |
|
| 137 | - // si c'est une table principale, |
|
| 138 | - // puisqu'on le fait aussi pour les tables auxiliaires |
|
| 139 | - elseif ($nom_sql == $nom and isset($GLOBALS['tables_principales']['spip_' . $nom])) { |
|
| 140 | - $nom_sql = 'spip_' . $nom; |
|
| 141 | - $fdesc = &$GLOBALS['tables_principales'][$nom_sql]; |
|
| 142 | - } elseif (isset($GLOBALS['tables_auxiliaires'][$n = $nom]) |
|
| 143 | - or isset($GLOBALS['tables_auxiliaires'][$n = 'spip_' . $nom]) |
|
| 144 | - ) { |
|
| 145 | - $nom_sql = $n; |
|
| 146 | - $fdesc = &$GLOBALS['tables_auxiliaires'][$n]; |
|
| 147 | - } # table locale a cote de SPIP, comme non SPIP: |
|
| 148 | - } |
|
| 149 | - if (!isset($connexion['tables'][$nom_sql])) { |
|
| 150 | - |
|
| 151 | - // La *vraie* base a la priorite |
|
| 152 | - $desc = sql_showtable($nom_sql, $table_spip, $serveur); |
|
| 153 | - if (!$desc or !$desc['field']) { |
|
| 154 | - if (!$fdesc) { |
|
| 155 | - spip_log("trouver_table: table inconnue '$serveur' '$nom'", 'base' . _LOG_INFO_IMPORTANTE); |
|
| 156 | - |
|
| 157 | - return null; |
|
| 158 | - } |
|
| 159 | - // on ne sait pas lire la structure de la table : |
|
| 160 | - // on retombe sur la description donnee dans les fichiers spip |
|
| 161 | - $desc = $fdesc; |
|
| 162 | - $desc['exist'] = false; |
|
| 163 | - } else { |
|
| 164 | - $desc['exist'] = true; |
|
| 165 | - // gerer le cas des cles vides (echec de l'analyse sur une vue par exemple) |
|
| 166 | - // pour recuperer la declaration de lister_tables_objets_sql() si il y en a une |
|
| 167 | - if (! $desc['key']) { |
|
| 168 | - spip_log("trouver_table: table sans cle '$serveur' '$nom'", 'base'); |
|
| 169 | - unset($desc['key']); |
|
| 170 | - } |
|
| 171 | - } |
|
| 172 | - |
|
| 173 | - $desc['table'] = $desc['table_sql'] = $nom_sql; |
|
| 174 | - $desc['connexion'] = $serveur; |
|
| 175 | - |
|
| 176 | - // charger les infos declarees pour cette table |
|
| 177 | - // en lui passant les infos connues |
|
| 178 | - // $desc est prioritaire pour la description de la table |
|
| 179 | - $desc = array_merge(lister_tables_objets_sql($nom_sql, $desc), $desc); |
|
| 180 | - // s'assurer qu'on a toujours un 'key' |
|
| 181 | - if (!isset($desc['key']) && !empty($fdesc['key'])){ |
|
| 182 | - $desc['key'] = $fdesc['key']; |
|
| 183 | - } |
|
| 184 | - if (! isset($desc['key'])) { |
|
| 185 | - $desc['key'] = array(); |
|
| 186 | - } |
|
| 187 | - |
|
| 188 | - // si tables_objets_sql est bien fini d'init, on peut cacher |
|
| 189 | - $connexion['tables'][$nom_sql] = $desc; |
|
| 190 | - $res = &$connexion['tables'][$nom_sql]; |
|
| 191 | - // une nouvelle table a ete decrite |
|
| 192 | - // mettons donc a jour le cache des descriptions de ce serveur |
|
| 193 | - if (is_writeable(_DIR_CACHE)) { |
|
| 194 | - ecrire_fichier($nom_cache_desc_sql[$serveur][$objets_sql], serialize($connexion['tables']), true); |
|
| 195 | - } |
|
| 196 | - } else { |
|
| 197 | - $res = &$connexion['tables'][$nom_sql]; |
|
| 198 | - } |
|
| 199 | - |
|
| 200 | - // toujours retourner $nom dans id_table |
|
| 201 | - $res['id_table'] = $nom; |
|
| 202 | - |
|
| 203 | - return $res; |
|
| 67 | + static $nom_cache_desc_sql = array(); |
|
| 68 | + |
|
| 69 | + if (!spip_connect($serveur) |
|
| 70 | + or !preg_match('/^[a-zA-Z0-9._-]*/', $nom) |
|
| 71 | + ) { |
|
| 72 | + return null; |
|
| 73 | + } |
|
| 74 | + |
|
| 75 | + $connexion = &$GLOBALS['connexions'][$serveur ? strtolower($serveur) : 0]; |
|
| 76 | + $objets_sql = lister_tables_objets_sql("::md5"); |
|
| 77 | + |
|
| 78 | + // le nom du cache depend du serveur mais aussi du nom de la db et du prefixe |
|
| 79 | + // ce qui permet une auto invalidation en cas de modif manuelle du fichier |
|
| 80 | + // de connexion, et tout risque d'ambiguite |
|
| 81 | + if (!isset($nom_cache_desc_sql[$serveur][$objets_sql])) { |
|
| 82 | + $nom_cache_desc_sql[$serveur][$objets_sql] = |
|
| 83 | + _DIR_CACHE . 'sql_desc_' |
|
| 84 | + . ($serveur ? "{$serveur}_" : "") |
|
| 85 | + . substr(md5($connexion['db'] . ":" . $connexion['prefixe'] . ":$objets_sql"), 0, 8) |
|
| 86 | + . '.txt'; |
|
| 87 | + // nouveau nom de cache = nouvelle version en memoire |
|
| 88 | + unset($connexion['tables']); |
|
| 89 | + } |
|
| 90 | + |
|
| 91 | + // un appel avec $nom vide est une demande explicite de vidange du cache des descriptions |
|
| 92 | + if (!$nom) { |
|
| 93 | + spip_unlink($nom_cache_desc_sql[$serveur][$objets_sql]); |
|
| 94 | + $connexion['tables'] = array(); |
|
| 95 | + |
|
| 96 | + return null; |
|
| 97 | + } |
|
| 98 | + |
|
| 99 | + $nom_sql = $nom; |
|
| 100 | + if (preg_match('/\.(.*)$/', $nom, $s)) { |
|
| 101 | + $nom_sql = $s[1]; |
|
| 102 | + } else { |
|
| 103 | + $nom_sql = $nom; |
|
| 104 | + } |
|
| 105 | + |
|
| 106 | + $fdesc = $desc = ''; |
|
| 107 | + $connexion = &$GLOBALS['connexions'][$serveur ? $serveur : 0]; |
|
| 108 | + |
|
| 109 | + // base sous SPIP: gerer les abreviations explicites des noms de table |
|
| 110 | + if ($connexion['spip_connect_version']) { |
|
| 111 | + if ($table_spip and isset($GLOBALS['table_des_tables'][$nom])) { |
|
| 112 | + $nom = $GLOBALS['table_des_tables'][$nom]; |
|
| 113 | + $nom_sql = 'spip_' . $nom; |
|
| 114 | + } |
|
| 115 | + } |
|
| 116 | + |
|
| 117 | + // si c'est la premiere table qu'on cherche |
|
| 118 | + // et si on est pas explicitement en recalcul |
|
| 119 | + // on essaye de recharger le cache des decriptions de ce serveur |
|
| 120 | + // dans le fichier cache |
|
| 121 | + if (!isset($connexion['tables'][$nom_sql]) |
|
| 122 | + and defined('_VAR_MODE') and _VAR_MODE !== 'recalcul' |
|
| 123 | + and (!isset($connexion['tables']) or !$connexion['tables']) |
|
| 124 | + ) { |
|
| 125 | + if (lire_fichier($nom_cache_desc_sql[$serveur][$objets_sql], $desc_cache) |
|
| 126 | + and $desc_cache = unserialize($desc_cache) |
|
| 127 | + ) { |
|
| 128 | + $connexion['tables'] = $desc_cache; |
|
| 129 | + } |
|
| 130 | + } |
|
| 131 | + if ($table_spip and !isset($connexion['tables'][$nom_sql])) { |
|
| 132 | + |
|
| 133 | + if (isset($GLOBALS['tables_principales'][$nom_sql])) { |
|
| 134 | + $fdesc = $GLOBALS['tables_principales'][$nom_sql]; |
|
| 135 | + } |
|
| 136 | + // meme si pas d'abreviation declaree, trouver la table spip_$nom |
|
| 137 | + // si c'est une table principale, |
|
| 138 | + // puisqu'on le fait aussi pour les tables auxiliaires |
|
| 139 | + elseif ($nom_sql == $nom and isset($GLOBALS['tables_principales']['spip_' . $nom])) { |
|
| 140 | + $nom_sql = 'spip_' . $nom; |
|
| 141 | + $fdesc = &$GLOBALS['tables_principales'][$nom_sql]; |
|
| 142 | + } elseif (isset($GLOBALS['tables_auxiliaires'][$n = $nom]) |
|
| 143 | + or isset($GLOBALS['tables_auxiliaires'][$n = 'spip_' . $nom]) |
|
| 144 | + ) { |
|
| 145 | + $nom_sql = $n; |
|
| 146 | + $fdesc = &$GLOBALS['tables_auxiliaires'][$n]; |
|
| 147 | + } # table locale a cote de SPIP, comme non SPIP: |
|
| 148 | + } |
|
| 149 | + if (!isset($connexion['tables'][$nom_sql])) { |
|
| 150 | + |
|
| 151 | + // La *vraie* base a la priorite |
|
| 152 | + $desc = sql_showtable($nom_sql, $table_spip, $serveur); |
|
| 153 | + if (!$desc or !$desc['field']) { |
|
| 154 | + if (!$fdesc) { |
|
| 155 | + spip_log("trouver_table: table inconnue '$serveur' '$nom'", 'base' . _LOG_INFO_IMPORTANTE); |
|
| 156 | + |
|
| 157 | + return null; |
|
| 158 | + } |
|
| 159 | + // on ne sait pas lire la structure de la table : |
|
| 160 | + // on retombe sur la description donnee dans les fichiers spip |
|
| 161 | + $desc = $fdesc; |
|
| 162 | + $desc['exist'] = false; |
|
| 163 | + } else { |
|
| 164 | + $desc['exist'] = true; |
|
| 165 | + // gerer le cas des cles vides (echec de l'analyse sur une vue par exemple) |
|
| 166 | + // pour recuperer la declaration de lister_tables_objets_sql() si il y en a une |
|
| 167 | + if (! $desc['key']) { |
|
| 168 | + spip_log("trouver_table: table sans cle '$serveur' '$nom'", 'base'); |
|
| 169 | + unset($desc['key']); |
|
| 170 | + } |
|
| 171 | + } |
|
| 172 | + |
|
| 173 | + $desc['table'] = $desc['table_sql'] = $nom_sql; |
|
| 174 | + $desc['connexion'] = $serveur; |
|
| 175 | + |
|
| 176 | + // charger les infos declarees pour cette table |
|
| 177 | + // en lui passant les infos connues |
|
| 178 | + // $desc est prioritaire pour la description de la table |
|
| 179 | + $desc = array_merge(lister_tables_objets_sql($nom_sql, $desc), $desc); |
|
| 180 | + // s'assurer qu'on a toujours un 'key' |
|
| 181 | + if (!isset($desc['key']) && !empty($fdesc['key'])){ |
|
| 182 | + $desc['key'] = $fdesc['key']; |
|
| 183 | + } |
|
| 184 | + if (! isset($desc['key'])) { |
|
| 185 | + $desc['key'] = array(); |
|
| 186 | + } |
|
| 187 | + |
|
| 188 | + // si tables_objets_sql est bien fini d'init, on peut cacher |
|
| 189 | + $connexion['tables'][$nom_sql] = $desc; |
|
| 190 | + $res = &$connexion['tables'][$nom_sql]; |
|
| 191 | + // une nouvelle table a ete decrite |
|
| 192 | + // mettons donc a jour le cache des descriptions de ce serveur |
|
| 193 | + if (is_writeable(_DIR_CACHE)) { |
|
| 194 | + ecrire_fichier($nom_cache_desc_sql[$serveur][$objets_sql], serialize($connexion['tables']), true); |
|
| 195 | + } |
|
| 196 | + } else { |
|
| 197 | + $res = &$connexion['tables'][$nom_sql]; |
|
| 198 | + } |
|
| 199 | + |
|
| 200 | + // toujours retourner $nom dans id_table |
|
| 201 | + $res['id_table'] = $nom; |
|
| 202 | + |
|
| 203 | + return $res; |
|
| 204 | 204 | } |
@@ -80,9 +80,9 @@ discard block |
||
| 80 | 80 | // de connexion, et tout risque d'ambiguite |
| 81 | 81 | if (!isset($nom_cache_desc_sql[$serveur][$objets_sql])) { |
| 82 | 82 | $nom_cache_desc_sql[$serveur][$objets_sql] = |
| 83 | - _DIR_CACHE . 'sql_desc_' |
|
| 83 | + _DIR_CACHE.'sql_desc_' |
|
| 84 | 84 | . ($serveur ? "{$serveur}_" : "") |
| 85 | - . substr(md5($connexion['db'] . ":" . $connexion['prefixe'] . ":$objets_sql"), 0, 8) |
|
| 85 | + . substr(md5($connexion['db'].":".$connexion['prefixe'].":$objets_sql"), 0, 8) |
|
| 86 | 86 | . '.txt'; |
| 87 | 87 | // nouveau nom de cache = nouvelle version en memoire |
| 88 | 88 | unset($connexion['tables']); |
@@ -110,7 +110,7 @@ discard block |
||
| 110 | 110 | if ($connexion['spip_connect_version']) { |
| 111 | 111 | if ($table_spip and isset($GLOBALS['table_des_tables'][$nom])) { |
| 112 | 112 | $nom = $GLOBALS['table_des_tables'][$nom]; |
| 113 | - $nom_sql = 'spip_' . $nom; |
|
| 113 | + $nom_sql = 'spip_'.$nom; |
|
| 114 | 114 | } |
| 115 | 115 | } |
| 116 | 116 | |
@@ -136,11 +136,11 @@ discard block |
||
| 136 | 136 | // meme si pas d'abreviation declaree, trouver la table spip_$nom |
| 137 | 137 | // si c'est une table principale, |
| 138 | 138 | // puisqu'on le fait aussi pour les tables auxiliaires |
| 139 | - elseif ($nom_sql == $nom and isset($GLOBALS['tables_principales']['spip_' . $nom])) { |
|
| 140 | - $nom_sql = 'spip_' . $nom; |
|
| 139 | + elseif ($nom_sql == $nom and isset($GLOBALS['tables_principales']['spip_'.$nom])) { |
|
| 140 | + $nom_sql = 'spip_'.$nom; |
|
| 141 | 141 | $fdesc = &$GLOBALS['tables_principales'][$nom_sql]; |
| 142 | 142 | } elseif (isset($GLOBALS['tables_auxiliaires'][$n = $nom]) |
| 143 | - or isset($GLOBALS['tables_auxiliaires'][$n = 'spip_' . $nom]) |
|
| 143 | + or isset($GLOBALS['tables_auxiliaires'][$n = 'spip_'.$nom]) |
|
| 144 | 144 | ) { |
| 145 | 145 | $nom_sql = $n; |
| 146 | 146 | $fdesc = &$GLOBALS['tables_auxiliaires'][$n]; |
@@ -152,7 +152,7 @@ discard block |
||
| 152 | 152 | $desc = sql_showtable($nom_sql, $table_spip, $serveur); |
| 153 | 153 | if (!$desc or !$desc['field']) { |
| 154 | 154 | if (!$fdesc) { |
| 155 | - spip_log("trouver_table: table inconnue '$serveur' '$nom'", 'base' . _LOG_INFO_IMPORTANTE); |
|
| 155 | + spip_log("trouver_table: table inconnue '$serveur' '$nom'", 'base'._LOG_INFO_IMPORTANTE); |
|
| 156 | 156 | |
| 157 | 157 | return null; |
| 158 | 158 | } |
@@ -164,7 +164,7 @@ discard block |
||
| 164 | 164 | $desc['exist'] = true; |
| 165 | 165 | // gerer le cas des cles vides (echec de l'analyse sur une vue par exemple) |
| 166 | 166 | // pour recuperer la declaration de lister_tables_objets_sql() si il y en a une |
| 167 | - if (! $desc['key']) { |
|
| 167 | + if (!$desc['key']) { |
|
| 168 | 168 | spip_log("trouver_table: table sans cle '$serveur' '$nom'", 'base'); |
| 169 | 169 | unset($desc['key']); |
| 170 | 170 | } |
@@ -178,10 +178,10 @@ discard block |
||
| 178 | 178 | // $desc est prioritaire pour la description de la table |
| 179 | 179 | $desc = array_merge(lister_tables_objets_sql($nom_sql, $desc), $desc); |
| 180 | 180 | // s'assurer qu'on a toujours un 'key' |
| 181 | - if (!isset($desc['key']) && !empty($fdesc['key'])){ |
|
| 181 | + if (!isset($desc['key']) && !empty($fdesc['key'])) { |
|
| 182 | 182 | $desc['key'] = $fdesc['key']; |
| 183 | 183 | } |
| 184 | - if (! isset($desc['key'])) { |
|
| 184 | + if (!isset($desc['key'])) { |
|
| 185 | 185 | $desc['key'] = array(); |
| 186 | 186 | } |
| 187 | 187 | |