@@ -1,7 +1,7 @@ |
||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 4 | - return; |
|
| 4 | + return; |
|
| 5 | 5 | } |
| 6 | 6 | |
| 7 | 7 | include_spip('inc/bandeau'); |
@@ -19,7 +19,7 @@ |
||
| 19 | 19 | **/ |
| 20 | 20 | |
| 21 | 21 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 22 | - return; |
|
| 22 | + return; |
|
| 23 | 23 | } |
| 24 | 24 | |
| 25 | 25 | load_charset('iso-8859-1'); |
@@ -21,7 +21,7 @@ |
||
| 21 | 21 | **/ |
| 22 | 22 | |
| 23 | 23 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 24 | - return; |
|
| 24 | + return; |
|
| 25 | 25 | } |
| 26 | 26 | |
| 27 | 27 | include_spip('base/objets'); |
@@ -12,7 +12,7 @@ |
||
| 12 | 12 | |
| 13 | 13 | # ou est l'espace prive ? |
| 14 | 14 | if (!defined('_DIR_RESTREINT_ABS')) { |
| 15 | - define('_DIR_RESTREINT_ABS', 'ecrire/'); |
|
| 15 | + define('_DIR_RESTREINT_ABS', 'ecrire/'); |
|
| 16 | 16 | } |
| 17 | 17 | include_once _DIR_RESTREINT_ABS.'inc_version.php'; |
| 18 | 18 | |
@@ -11,7 +11,7 @@ |
||
| 11 | 11 | \***************************************************************************/ |
| 12 | 12 | |
| 13 | 13 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 14 | - return; |
|
| 14 | + return; |
|
| 15 | 15 | } |
| 16 | 16 | |
| 17 | 17 | include_spip('formulaires/selecteur/generique_fonctions'); |
@@ -9,13 +9,13 @@ |
||
| 9 | 9 | <h1>Index des icones de <a href='https://www.spip.net'>Spip</a></h1> |
| 10 | 10 | <table> |
| 11 | 11 | <?php |
| 12 | - $myDir = opendir('.'); |
|
| 13 | - while ($file = readdir($myDir)) { |
|
| 14 | - if (preg_match(',\.(png|gif)$,i', $file)) { |
|
| 15 | - echo " <tr><td>$file</td><td><img src='$file' alt='$file' /></td></tr>\n"; |
|
| 16 | - } |
|
| 17 | - } |
|
| 18 | - ?> |
|
| 12 | + $myDir = opendir('.'); |
|
| 13 | + while ($file = readdir($myDir)) { |
|
| 14 | + if (preg_match(',\.(png|gif)$,i', $file)) { |
|
| 15 | + echo " <tr><td>$file</td><td><img src='$file' alt='$file' /></td></tr>\n"; |
|
| 16 | + } |
|
| 17 | + } |
|
| 18 | + ?> |
|
| 19 | 19 | </table> |
| 20 | 20 | </center> |
| 21 | 21 | </body> |
@@ -1,7 +1,7 @@ |
||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 4 | - return; |
|
| 4 | + return; |
|
| 5 | 5 | } |
| 6 | 6 | |
| 7 | 7 | include_spip('inc/filtres_selecteur_generique'); |
@@ -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 | |
@@ -16,7 +16,7 @@ discard block |
||
| 16 | 16 | **/ |
| 17 | 17 | |
| 18 | 18 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 19 | - return; |
|
| 19 | + return; |
|
| 20 | 20 | } |
| 21 | 21 | |
| 22 | 22 | include_spip('inc/autoriser'); // necessaire si appel de l'espace public |
@@ -44,66 +44,66 @@ discard block |
||
| 44 | 44 | **/ |
| 45 | 45 | function precharger_objet($type, $id_objet, $id_rubrique = 0, $lier_trad = 0, $champ_titre = 'titre') { |
| 46 | 46 | |
| 47 | - $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=" . (int) $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 | - // appel du script a la racine, faut choisir |
|
| 82 | - // admin restreint ==> sa premiere rubrique |
|
| 83 | - // autre ==> la derniere rubrique cree |
|
| 84 | - if ($is_rubrique && !$row['id_rubrique']) { |
|
| 85 | - if ($GLOBALS['connect_id_rubrique']) { |
|
| 86 | - $row['id_rubrique'] = $id_rubrique = current($GLOBALS['connect_id_rubrique']); |
|
| 87 | - } else { |
|
| 88 | - $row_rub = sql_fetsel('id_rubrique', 'spip_rubriques', '', '', 'id_rubrique DESC', 1); |
|
| 89 | - $row['id_rubrique'] = $id_rubrique = $row_rub['id_rubrique']; |
|
| 90 | - } |
|
| 91 | - if (!autoriser('creerarticledans', 'rubrique', $row['id_rubrique'])) { |
|
| 92 | - // manque de chance, la rubrique n'est pas autorisee, on cherche un des secteurs autorises |
|
| 93 | - $res = sql_select('id_rubrique', 'spip_rubriques', 'id_parent=0'); |
|
| 94 | - while (!autoriser('creerarticledans', 'rubrique', $row['id_rubrique']) && $row_rub = sql_fetch($res)) { |
|
| 95 | - $row['id_rubrique'] = $row_rub['id_rubrique']; |
|
| 96 | - } |
|
| 97 | - } |
|
| 98 | - } |
|
| 99 | - |
|
| 100 | - // recuperer le secteur, pour affecter les bons champs extras |
|
| 101 | - if ($id_rubrique && $is_secteur && !$row['id_secteur']) { |
|
| 102 | - $row_rub = sql_getfetsel('id_secteur', 'spip_rubriques', 'id_rubrique=' . sql_quote($id_rubrique)); |
|
| 103 | - $row['id_secteur'] = $row_rub; |
|
| 104 | - } |
|
| 105 | - |
|
| 106 | - return $row; |
|
| 47 | + $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=" . (int) $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 | + // appel du script a la racine, faut choisir |
|
| 82 | + // admin restreint ==> sa premiere rubrique |
|
| 83 | + // autre ==> la derniere rubrique cree |
|
| 84 | + if ($is_rubrique && !$row['id_rubrique']) { |
|
| 85 | + if ($GLOBALS['connect_id_rubrique']) { |
|
| 86 | + $row['id_rubrique'] = $id_rubrique = current($GLOBALS['connect_id_rubrique']); |
|
| 87 | + } else { |
|
| 88 | + $row_rub = sql_fetsel('id_rubrique', 'spip_rubriques', '', '', 'id_rubrique DESC', 1); |
|
| 89 | + $row['id_rubrique'] = $id_rubrique = $row_rub['id_rubrique']; |
|
| 90 | + } |
|
| 91 | + if (!autoriser('creerarticledans', 'rubrique', $row['id_rubrique'])) { |
|
| 92 | + // manque de chance, la rubrique n'est pas autorisee, on cherche un des secteurs autorises |
|
| 93 | + $res = sql_select('id_rubrique', 'spip_rubriques', 'id_parent=0'); |
|
| 94 | + while (!autoriser('creerarticledans', 'rubrique', $row['id_rubrique']) && $row_rub = sql_fetch($res)) { |
|
| 95 | + $row['id_rubrique'] = $row_rub['id_rubrique']; |
|
| 96 | + } |
|
| 97 | + } |
|
| 98 | + } |
|
| 99 | + |
|
| 100 | + // recuperer le secteur, pour affecter les bons champs extras |
|
| 101 | + if ($id_rubrique && $is_secteur && !$row['id_secteur']) { |
|
| 102 | + $row_rub = sql_getfetsel('id_secteur', 'spip_rubriques', 'id_rubrique=' . sql_quote($id_rubrique)); |
|
| 103 | + $row['id_secteur'] = $row_rub; |
|
| 104 | + } |
|
| 105 | + |
|
| 106 | + return $row; |
|
| 107 | 107 | } |
| 108 | 108 | |
| 109 | 109 | |
@@ -125,78 +125,78 @@ discard block |
||
| 125 | 125 | * Couples clés / valeurs des champs du formulaire à charger |
| 126 | 126 | **/ |
| 127 | 127 | function precharger_traduction_objet($type, $id_objet, $id_rubrique = 0, $lier_trad = 0, $champ_titre = 'titre') { |
| 128 | - $table = table_objet_sql($type); |
|
| 129 | - $_id_objet = id_table_objet($table); |
|
| 130 | - |
|
| 131 | - // Recuperer les donnees de l'objet original |
|
| 132 | - $row = sql_fetsel('*', $table, "$_id_objet=" . (int) $lier_trad); |
|
| 133 | - if ($row) { |
|
| 134 | - include_spip('inc/filtres'); |
|
| 135 | - $row[$champ_titre] = filtrer_entites(objet_T($type, 'info_nouvelle_traduction')) . ' ' . $row[$champ_titre]; |
|
| 136 | - } else { |
|
| 137 | - $row = []; |
|
| 138 | - } |
|
| 139 | - |
|
| 140 | - // on met l'objet dans une rubrique si l'objet le peut |
|
| 141 | - $desc = lister_tables_objets_sql($table); |
|
| 142 | - $is_rubrique = isset($desc['field']['id_rubrique']); |
|
| 143 | - |
|
| 144 | - if ($is_rubrique) { |
|
| 145 | - $langues_dispo = explode(',', (string) $GLOBALS['meta']['langues_multilingue']); |
|
| 146 | - // si le redacteur utilise une autre langue que celle de la source, on suppose que c'est pour traduire dans sa langue |
|
| 147 | - if (in_array($GLOBALS['spip_lang'], $langues_dispo) && $GLOBALS['spip_lang'] !== $row['lang']) { |
|
| 148 | - $row['lang'] = $GLOBALS['spip_lang']; |
|
| 149 | - } |
|
| 150 | - // sinon si il y a seulement 2 langues dispos, on bascule sur l'"autre" |
|
| 151 | - elseif (count($langues_dispo) == 2) { |
|
| 152 | - $autre_langue = array_diff($langues_dispo, [$row['lang']]); |
|
| 153 | - if (count($autre_langue) == 1) { |
|
| 154 | - $row['lang'] = reset($autre_langue); |
|
| 155 | - } |
|
| 156 | - } |
|
| 157 | - else { |
|
| 158 | - $row['lang'] = 'en'; |
|
| 159 | - } |
|
| 160 | - |
|
| 161 | - if ($id_rubrique) { |
|
| 162 | - $row['id_rubrique'] = $id_rubrique; |
|
| 163 | - |
|
| 164 | - return $row; |
|
| 165 | - } |
|
| 166 | - $id_rubrique = $row['id_rubrique']; |
|
| 167 | - |
|
| 168 | - |
|
| 169 | - // Regler la langue, si possible, sur celle du redacteur |
|
| 170 | - // Cela implique souvent de choisir une rubrique ou un secteur |
|
| 171 | - if (in_array($GLOBALS['spip_lang'], $langues_dispo)) { |
|
| 172 | - // Si le menu de langues est autorise sur l'objet, |
|
| 173 | - // on peut changer la langue quelle que soit la rubrique |
|
| 174 | - // donc on reste dans la meme rubrique |
|
| 175 | - if (in_array($table, explode(',', (string) $GLOBALS['meta']['multi_objets']))) { |
|
| 176 | - $row['id_rubrique'] = $row['id_rubrique']; # explicite :-) |
|
| 177 | - |
|
| 178 | - // Sinon, chercher la rubrique la plus adaptee pour |
|
| 179 | - // accueillir l'objet dans la langue du traducteur |
|
| 180 | - } elseif ($is_rubrique && $GLOBALS['meta']['multi_rubriques'] == 'oui') { |
|
| 181 | - if ($GLOBALS['meta']['multi_secteurs'] == 'oui') { |
|
| 182 | - $id_parent = 0; |
|
| 183 | - } else { |
|
| 184 | - // on cherche une rubrique soeur dans la bonne langue |
|
| 185 | - $row_rub = sql_fetsel('id_parent', 'spip_rubriques', 'id_rubrique=' . (int) $id_rubrique); |
|
| 186 | - $id_parent = $row_rub['id_parent']; |
|
| 187 | - } |
|
| 188 | - |
|
| 189 | - $row_rub = sql_fetsel( |
|
| 190 | - 'id_rubrique', |
|
| 191 | - 'spip_rubriques', |
|
| 192 | - "lang='" . $GLOBALS['spip_lang'] . "' AND id_parent=" . (int) $id_parent |
|
| 193 | - ); |
|
| 194 | - if ($row_rub) { |
|
| 195 | - $row['id_rubrique'] = $row_rub['id_rubrique']; |
|
| 196 | - } |
|
| 197 | - } |
|
| 198 | - } |
|
| 199 | - } |
|
| 200 | - |
|
| 201 | - return $row; |
|
| 128 | + $table = table_objet_sql($type); |
|
| 129 | + $_id_objet = id_table_objet($table); |
|
| 130 | + |
|
| 131 | + // Recuperer les donnees de l'objet original |
|
| 132 | + $row = sql_fetsel('*', $table, "$_id_objet=" . (int) $lier_trad); |
|
| 133 | + if ($row) { |
|
| 134 | + include_spip('inc/filtres'); |
|
| 135 | + $row[$champ_titre] = filtrer_entites(objet_T($type, 'info_nouvelle_traduction')) . ' ' . $row[$champ_titre]; |
|
| 136 | + } else { |
|
| 137 | + $row = []; |
|
| 138 | + } |
|
| 139 | + |
|
| 140 | + // on met l'objet dans une rubrique si l'objet le peut |
|
| 141 | + $desc = lister_tables_objets_sql($table); |
|
| 142 | + $is_rubrique = isset($desc['field']['id_rubrique']); |
|
| 143 | + |
|
| 144 | + if ($is_rubrique) { |
|
| 145 | + $langues_dispo = explode(',', (string) $GLOBALS['meta']['langues_multilingue']); |
|
| 146 | + // si le redacteur utilise une autre langue que celle de la source, on suppose que c'est pour traduire dans sa langue |
|
| 147 | + if (in_array($GLOBALS['spip_lang'], $langues_dispo) && $GLOBALS['spip_lang'] !== $row['lang']) { |
|
| 148 | + $row['lang'] = $GLOBALS['spip_lang']; |
|
| 149 | + } |
|
| 150 | + // sinon si il y a seulement 2 langues dispos, on bascule sur l'"autre" |
|
| 151 | + elseif (count($langues_dispo) == 2) { |
|
| 152 | + $autre_langue = array_diff($langues_dispo, [$row['lang']]); |
|
| 153 | + if (count($autre_langue) == 1) { |
|
| 154 | + $row['lang'] = reset($autre_langue); |
|
| 155 | + } |
|
| 156 | + } |
|
| 157 | + else { |
|
| 158 | + $row['lang'] = 'en'; |
|
| 159 | + } |
|
| 160 | + |
|
| 161 | + if ($id_rubrique) { |
|
| 162 | + $row['id_rubrique'] = $id_rubrique; |
|
| 163 | + |
|
| 164 | + return $row; |
|
| 165 | + } |
|
| 166 | + $id_rubrique = $row['id_rubrique']; |
|
| 167 | + |
|
| 168 | + |
|
| 169 | + // Regler la langue, si possible, sur celle du redacteur |
|
| 170 | + // Cela implique souvent de choisir une rubrique ou un secteur |
|
| 171 | + if (in_array($GLOBALS['spip_lang'], $langues_dispo)) { |
|
| 172 | + // Si le menu de langues est autorise sur l'objet, |
|
| 173 | + // on peut changer la langue quelle que soit la rubrique |
|
| 174 | + // donc on reste dans la meme rubrique |
|
| 175 | + if (in_array($table, explode(',', (string) $GLOBALS['meta']['multi_objets']))) { |
|
| 176 | + $row['id_rubrique'] = $row['id_rubrique']; # explicite :-) |
|
| 177 | + |
|
| 178 | + // Sinon, chercher la rubrique la plus adaptee pour |
|
| 179 | + // accueillir l'objet dans la langue du traducteur |
|
| 180 | + } elseif ($is_rubrique && $GLOBALS['meta']['multi_rubriques'] == 'oui') { |
|
| 181 | + if ($GLOBALS['meta']['multi_secteurs'] == 'oui') { |
|
| 182 | + $id_parent = 0; |
|
| 183 | + } else { |
|
| 184 | + // on cherche une rubrique soeur dans la bonne langue |
|
| 185 | + $row_rub = sql_fetsel('id_parent', 'spip_rubriques', 'id_rubrique=' . (int) $id_rubrique); |
|
| 186 | + $id_parent = $row_rub['id_parent']; |
|
| 187 | + } |
|
| 188 | + |
|
| 189 | + $row_rub = sql_fetsel( |
|
| 190 | + 'id_rubrique', |
|
| 191 | + 'spip_rubriques', |
|
| 192 | + "lang='" . $GLOBALS['spip_lang'] . "' AND id_parent=" . (int) $id_parent |
|
| 193 | + ); |
|
| 194 | + if ($row_rub) { |
|
| 195 | + $row['id_rubrique'] = $row_rub['id_rubrique']; |
|
| 196 | + } |
|
| 197 | + } |
|
| 198 | + } |
|
| 199 | + } |
|
| 200 | + |
|
| 201 | + return $row; |
|
| 202 | 202 | } |
@@ -50,7 +50,7 @@ discard block |
||
| 50 | 50 | |
| 51 | 51 | // si l'objet existe deja, on retourne simplement ses valeurs |
| 52 | 52 | if (is_numeric($id_objet)) { |
| 53 | - return sql_fetsel('*', $table, "$_id_objet=" . (int) $id_objet); |
|
| 53 | + return sql_fetsel('*', $table, "$_id_objet=".(int) $id_objet); |
|
| 54 | 54 | } |
| 55 | 55 | |
| 56 | 56 | // ici, on demande une creation. |
@@ -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); |
@@ -99,7 +99,7 @@ discard block |
||
| 99 | 99 | |
| 100 | 100 | // recuperer le secteur, pour affecter les bons champs extras |
| 101 | 101 | if ($id_rubrique && $is_secteur && !$row['id_secteur']) { |
| 102 | - $row_rub = sql_getfetsel('id_secteur', 'spip_rubriques', 'id_rubrique=' . sql_quote($id_rubrique)); |
|
| 102 | + $row_rub = sql_getfetsel('id_secteur', 'spip_rubriques', 'id_rubrique='.sql_quote($id_rubrique)); |
|
| 103 | 103 | $row['id_secteur'] = $row_rub; |
| 104 | 104 | } |
| 105 | 105 | |
@@ -129,10 +129,10 @@ discard block |
||
| 129 | 129 | $_id_objet = id_table_objet($table); |
| 130 | 130 | |
| 131 | 131 | // Recuperer les donnees de l'objet original |
| 132 | - $row = sql_fetsel('*', $table, "$_id_objet=" . (int) $lier_trad); |
|
| 132 | + $row = sql_fetsel('*', $table, "$_id_objet=".(int) $lier_trad); |
|
| 133 | 133 | if ($row) { |
| 134 | 134 | include_spip('inc/filtres'); |
| 135 | - $row[$champ_titre] = filtrer_entites(objet_T($type, 'info_nouvelle_traduction')) . ' ' . $row[$champ_titre]; |
|
| 135 | + $row[$champ_titre] = filtrer_entites(objet_T($type, 'info_nouvelle_traduction')).' '.$row[$champ_titre]; |
|
| 136 | 136 | } else { |
| 137 | 137 | $row = []; |
| 138 | 138 | } |
@@ -182,14 +182,14 @@ discard block |
||
| 182 | 182 | $id_parent = 0; |
| 183 | 183 | } else { |
| 184 | 184 | // on cherche une rubrique soeur dans la bonne langue |
| 185 | - $row_rub = sql_fetsel('id_parent', 'spip_rubriques', 'id_rubrique=' . (int) $id_rubrique); |
|
| 185 | + $row_rub = sql_fetsel('id_parent', 'spip_rubriques', 'id_rubrique='.(int) $id_rubrique); |
|
| 186 | 186 | $id_parent = $row_rub['id_parent']; |
| 187 | 187 | } |
| 188 | 188 | |
| 189 | 189 | $row_rub = sql_fetsel( |
| 190 | 190 | 'id_rubrique', |
| 191 | 191 | 'spip_rubriques', |
| 192 | - "lang='" . $GLOBALS['spip_lang'] . "' AND id_parent=" . (int) $id_parent |
|
| 192 | + "lang='".$GLOBALS['spip_lang']."' AND id_parent=".(int) $id_parent |
|
| 193 | 193 | ); |
| 194 | 194 | if ($row_rub) { |
| 195 | 195 | $row['id_rubrique'] = $row_rub['id_rubrique']; |
@@ -85,8 +85,7 @@ |
||
| 85 | 85 | $url_action = self(); |
| 86 | 86 | $action = _request('action'); |
| 87 | 87 | $url_action = parametre_url($url_action, 'action', $action, '&'); |
| 88 | - } |
|
| 89 | - else { |
|
| 88 | + } else { |
|
| 90 | 89 | $action = parametre_url($url_action, 'action'); |
| 91 | 90 | } |
| 92 | 91 | |
@@ -92,7 +92,7 @@ discard block |
||
| 92 | 92 | } |
| 93 | 93 | |
| 94 | 94 | $arg = parametre_url($url_action, 'arg'); |
| 95 | - $confirm = md5("$action:$arg:" . realpath(__FILE__)); |
|
| 95 | + $confirm = md5("$action:$arg:".realpath(__FILE__)); |
|
| 96 | 96 | if (_request('confirm_action') === $confirm) { |
| 97 | 97 | return true; |
| 98 | 98 | } |
@@ -145,7 +145,7 @@ discard block |
||
| 145 | 145 | } else { |
| 146 | 146 | return generer_url_action( |
| 147 | 147 | $action, |
| 148 | - 'arg=' . rawurlencode($arg) . "&hash=$hash" . ($r ? "&redirect=$r" : ''), |
|
| 148 | + 'arg='.rawurlencode($arg)."&hash=$hash".($r ? "&redirect=$r" : ''), |
|
| 149 | 149 | $mode, |
| 150 | 150 | $public |
| 151 | 151 | ); |
@@ -156,9 +156,9 @@ discard block |
||
| 156 | 156 | $hash = calculer_action_auteur("$action-$arg"); |
| 157 | 157 | $att .= " style='margin: 0px; border: 0px'"; |
| 158 | 158 | if ($redirect) { |
| 159 | - $redirect = "\n\t\t<input name='redirect' type='hidden' value='" . str_replace("'", ''', $redirect) . "' />"; |
|
| 159 | + $redirect = "\n\t\t<input name='redirect' type='hidden' value='".str_replace("'", ''', $redirect)."' />"; |
|
| 160 | 160 | } |
| 161 | - $mode .= $redirect . " |
|
| 161 | + $mode .= $redirect." |
|
| 162 | 162 | <input name='hash' type='hidden' value='$hash' /> |
| 163 | 163 | <input name='arg' type='hidden' value='$arg' />"; |
| 164 | 164 | |
@@ -226,7 +226,7 @@ discard block |
||
| 226 | 226 | $pass ??= ''; |
| 227 | 227 | $entry = "$action:$id_auteur:$pass:$alea"; |
| 228 | 228 | if (!isset($sha[$entry])) { |
| 229 | - $sha[$entry] = hash_hmac('sha256', "$action::$id_auteur", "$pass::" . _action_get_alea($alea)); |
|
| 229 | + $sha[$entry] = hash_hmac('sha256', "$action::$id_auteur", "$pass::"._action_get_alea($alea)); |
|
| 230 | 230 | } |
| 231 | 231 | |
| 232 | 232 | return $sha[$entry]; |
@@ -336,7 +336,7 @@ discard block |
||
| 336 | 336 | // On nettoie l’URL de tous les var_. |
| 337 | 337 | $url = nettoyer_uri_var($url); |
| 338 | 338 | |
| 339 | - $token = _action_auteur('previsualiser-' . $url, $id_auteur, secret_du_site(), $alea); |
|
| 339 | + $token = _action_auteur('previsualiser-'.$url, $id_auteur, secret_du_site(), $alea); |
|
| 340 | 340 | return "$id_auteur-$token"; |
| 341 | 341 | } |
| 342 | 342 | |
@@ -15,10 +15,10 @@ discard block |
||
| 15 | 15 | * @package SPIP\Core\Actions |
| 16 | 16 | **/ |
| 17 | 17 | |
| 18 | - use Spip\Chiffrer\SpipCles; |
|
| 18 | + use Spip\Chiffrer\SpipCles; |
|
| 19 | 19 | |
| 20 | 20 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 21 | - return; |
|
| 21 | + return; |
|
| 22 | 22 | } |
| 23 | 23 | |
| 24 | 24 | /** |
@@ -51,19 +51,19 @@ discard block |
||
| 51 | 51 | * @return array|string |
| 52 | 52 | */ |
| 53 | 53 | function inc_securiser_action_dist($action = '', $arg = '', $redirect = '', $mode = false, $att = '', $public = false) { |
| 54 | - if ($action) { |
|
| 55 | - return securiser_action_auteur($action, $arg, $redirect, $mode, $att, $public); |
|
| 56 | - } else { |
|
| 57 | - $arg = _request('arg'); |
|
| 58 | - $hash = _request('hash'); |
|
| 59 | - $action = _request('action') ?: _request('formulaire_action'); |
|
| 60 | - if ($a = verifier_action_auteur("$action-$arg", $hash)) { |
|
| 61 | - return $arg; |
|
| 62 | - } |
|
| 63 | - include_spip('inc/minipres'); |
|
| 64 | - echo minipres(); |
|
| 65 | - exit; |
|
| 66 | - } |
|
| 54 | + if ($action) { |
|
| 55 | + return securiser_action_auteur($action, $arg, $redirect, $mode, $att, $public); |
|
| 56 | + } else { |
|
| 57 | + $arg = _request('arg'); |
|
| 58 | + $hash = _request('hash'); |
|
| 59 | + $action = _request('action') ?: _request('formulaire_action'); |
|
| 60 | + if ($a = verifier_action_auteur("$action-$arg", $hash)) { |
|
| 61 | + return $arg; |
|
| 62 | + } |
|
| 63 | + include_spip('inc/minipres'); |
|
| 64 | + echo minipres(); |
|
| 65 | + exit; |
|
| 66 | + } |
|
| 67 | 67 | } |
| 68 | 68 | |
| 69 | 69 | /** |
@@ -82,29 +82,29 @@ discard block |
||
| 82 | 82 | */ |
| 83 | 83 | function demander_confirmation_avant_action($titre, $titre_bouton, $url_action = null) { |
| 84 | 84 | |
| 85 | - if (!$url_action) { |
|
| 86 | - $url_action = self(); |
|
| 87 | - $action = _request('action'); |
|
| 88 | - $url_action = parametre_url($url_action, 'action', $action, '&'); |
|
| 89 | - } |
|
| 90 | - else { |
|
| 91 | - $action = parametre_url($url_action, 'action'); |
|
| 92 | - } |
|
| 93 | - |
|
| 94 | - $arg = parametre_url($url_action, 'arg'); |
|
| 95 | - $confirm = md5("$action:$arg:" . realpath(__FILE__)); |
|
| 96 | - if (_request('confirm_action') === $confirm) { |
|
| 97 | - return true; |
|
| 98 | - } |
|
| 99 | - |
|
| 100 | - $url_confirm = parametre_url($url_action, 'confirm_action', $confirm, '&'); |
|
| 101 | - include_spip('inc/filtres'); |
|
| 102 | - $bouton_action = bouton_action($titre_bouton, $url_confirm); |
|
| 103 | - $corps = "<div style='text-align:center;'>$bouton_action</div>"; |
|
| 104 | - |
|
| 105 | - include_spip('inc/minipres'); |
|
| 106 | - echo minipres($titre, $corps); |
|
| 107 | - exit; |
|
| 85 | + if (!$url_action) { |
|
| 86 | + $url_action = self(); |
|
| 87 | + $action = _request('action'); |
|
| 88 | + $url_action = parametre_url($url_action, 'action', $action, '&'); |
|
| 89 | + } |
|
| 90 | + else { |
|
| 91 | + $action = parametre_url($url_action, 'action'); |
|
| 92 | + } |
|
| 93 | + |
|
| 94 | + $arg = parametre_url($url_action, 'arg'); |
|
| 95 | + $confirm = md5("$action:$arg:" . realpath(__FILE__)); |
|
| 96 | + if (_request('confirm_action') === $confirm) { |
|
| 97 | + return true; |
|
| 98 | + } |
|
| 99 | + |
|
| 100 | + $url_confirm = parametre_url($url_action, 'confirm_action', $confirm, '&'); |
|
| 101 | + include_spip('inc/filtres'); |
|
| 102 | + $bouton_action = bouton_action($titre_bouton, $url_confirm); |
|
| 103 | + $corps = "<div style='text-align:center;'>$bouton_action</div>"; |
|
| 104 | + |
|
| 105 | + include_spip('inc/minipres'); |
|
| 106 | + echo minipres($titre, $corps); |
|
| 107 | + exit; |
|
| 108 | 108 | } |
| 109 | 109 | |
| 110 | 110 | /** |
@@ -135,34 +135,34 @@ discard block |
||
| 135 | 135 | */ |
| 136 | 136 | function securiser_action_auteur($action, $arg, $redirect = '', $mode = false, $att = '', $public = false) { |
| 137 | 137 | |
| 138 | - // mode URL ou array |
|
| 139 | - if (!is_string($mode)) { |
|
| 140 | - $hash = calculer_action_auteur("$action-$arg", is_numeric($att) ? $att : null); |
|
| 141 | - |
|
| 142 | - $r = rawurlencode($redirect); |
|
| 143 | - if ($mode === -1) { |
|
| 144 | - return ['action' => $action, 'arg' => $arg, 'hash' => $hash]; |
|
| 145 | - } else { |
|
| 146 | - return generer_url_action( |
|
| 147 | - $action, |
|
| 148 | - 'arg=' . rawurlencode($arg) . "&hash=$hash" . ($r ? "&redirect=$r" : ''), |
|
| 149 | - $mode, |
|
| 150 | - $public |
|
| 151 | - ); |
|
| 152 | - } |
|
| 153 | - } |
|
| 154 | - |
|
| 155 | - // mode formulaire |
|
| 156 | - $hash = calculer_action_auteur("$action-$arg"); |
|
| 157 | - $att .= " style='margin: 0px; border: 0px'"; |
|
| 158 | - if ($redirect) { |
|
| 159 | - $redirect = "\n\t\t<input name='redirect' type='hidden' value='" . str_replace("'", ''', $redirect) . "' />"; |
|
| 160 | - } |
|
| 161 | - $mode .= $redirect . " |
|
| 138 | + // mode URL ou array |
|
| 139 | + if (!is_string($mode)) { |
|
| 140 | + $hash = calculer_action_auteur("$action-$arg", is_numeric($att) ? $att : null); |
|
| 141 | + |
|
| 142 | + $r = rawurlencode($redirect); |
|
| 143 | + if ($mode === -1) { |
|
| 144 | + return ['action' => $action, 'arg' => $arg, 'hash' => $hash]; |
|
| 145 | + } else { |
|
| 146 | + return generer_url_action( |
|
| 147 | + $action, |
|
| 148 | + 'arg=' . rawurlencode($arg) . "&hash=$hash" . ($r ? "&redirect=$r" : ''), |
|
| 149 | + $mode, |
|
| 150 | + $public |
|
| 151 | + ); |
|
| 152 | + } |
|
| 153 | + } |
|
| 154 | + |
|
| 155 | + // mode formulaire |
|
| 156 | + $hash = calculer_action_auteur("$action-$arg"); |
|
| 157 | + $att .= " style='margin: 0px; border: 0px'"; |
|
| 158 | + if ($redirect) { |
|
| 159 | + $redirect = "\n\t\t<input name='redirect' type='hidden' value='" . str_replace("'", ''', $redirect) . "' />"; |
|
| 160 | + } |
|
| 161 | + $mode .= $redirect . " |
|
| 162 | 162 | <input name='hash' type='hidden' value='$hash' /> |
| 163 | 163 | <input name='arg' type='hidden' value='$arg' />"; |
| 164 | 164 | |
| 165 | - return generer_form_action($action, $mode, $att, $public); |
|
| 165 | + return generer_form_action($action, $mode, $att, $public); |
|
| 166 | 166 | } |
| 167 | 167 | |
| 168 | 168 | /** |
@@ -172,46 +172,46 @@ discard block |
||
| 172 | 172 | * @return array |
| 173 | 173 | */ |
| 174 | 174 | function caracteriser_auteur($id_auteur = null) { |
| 175 | - static $caracterisation = []; |
|
| 176 | - |
|
| 177 | - if (is_null($id_auteur) && !isset($GLOBALS['visiteur_session']['id_auteur'])) { |
|
| 178 | - include_spip('inc/session'); |
|
| 179 | - // si l'auteur courant n'est pas connu alors qu'il peut demander une action |
|
| 180 | - // c'est une connexion par php_auth ou 1 instal, on se rabat sur le cookie. |
|
| 181 | - // S'il n'avait pas le droit de realiser cette action, le hash sera faux. |
|
| 182 | - if ($cookie = lire_cookie_session()) { |
|
| 183 | - return [intval($cookie), '']; |
|
| 184 | - // Necessaire aux forums anonymes. |
|
| 185 | - // Pour le reste, ca echouera. |
|
| 186 | - } else { |
|
| 187 | - return ['0', '']; |
|
| 188 | - } |
|
| 189 | - } |
|
| 190 | - // Eviter l'acces SQL si le pass est connu de PHP |
|
| 191 | - if (is_null($id_auteur)) { |
|
| 192 | - $id_auteur = $GLOBALS['visiteur_session']['id_auteur'] ?? 0; |
|
| 193 | - if (isset($GLOBALS['visiteur_session']['pass']) && $GLOBALS['visiteur_session']['pass']) { |
|
| 194 | - return $caracterisation[$id_auteur] = [$id_auteur, $GLOBALS['visiteur_session']['pass']]; |
|
| 195 | - } |
|
| 196 | - } |
|
| 197 | - |
|
| 198 | - if (isset($caracterisation[$id_auteur])) { |
|
| 199 | - return $caracterisation[$id_auteur]; |
|
| 200 | - } |
|
| 201 | - |
|
| 202 | - if ($id_auteur) { |
|
| 203 | - include_spip('base/abstract_sql'); |
|
| 204 | - $t = sql_fetsel('id_auteur, pass', 'spip_auteurs', "id_auteur=$id_auteur"); |
|
| 205 | - if ($t) { |
|
| 206 | - return $caracterisation[$id_auteur] = [$t['id_auteur'], $t['pass']]; |
|
| 207 | - } |
|
| 208 | - include_spip('inc/minipres'); |
|
| 209 | - echo minipres(); |
|
| 210 | - exit; |
|
| 211 | - } // Visiteur anonyme, pour ls forums par exemple |
|
| 212 | - else { |
|
| 213 | - return ['0', '']; |
|
| 214 | - } |
|
| 175 | + static $caracterisation = []; |
|
| 176 | + |
|
| 177 | + if (is_null($id_auteur) && !isset($GLOBALS['visiteur_session']['id_auteur'])) { |
|
| 178 | + include_spip('inc/session'); |
|
| 179 | + // si l'auteur courant n'est pas connu alors qu'il peut demander une action |
|
| 180 | + // c'est une connexion par php_auth ou 1 instal, on se rabat sur le cookie. |
|
| 181 | + // S'il n'avait pas le droit de realiser cette action, le hash sera faux. |
|
| 182 | + if ($cookie = lire_cookie_session()) { |
|
| 183 | + return [intval($cookie), '']; |
|
| 184 | + // Necessaire aux forums anonymes. |
|
| 185 | + // Pour le reste, ca echouera. |
|
| 186 | + } else { |
|
| 187 | + return ['0', '']; |
|
| 188 | + } |
|
| 189 | + } |
|
| 190 | + // Eviter l'acces SQL si le pass est connu de PHP |
|
| 191 | + if (is_null($id_auteur)) { |
|
| 192 | + $id_auteur = $GLOBALS['visiteur_session']['id_auteur'] ?? 0; |
|
| 193 | + if (isset($GLOBALS['visiteur_session']['pass']) && $GLOBALS['visiteur_session']['pass']) { |
|
| 194 | + return $caracterisation[$id_auteur] = [$id_auteur, $GLOBALS['visiteur_session']['pass']]; |
|
| 195 | + } |
|
| 196 | + } |
|
| 197 | + |
|
| 198 | + if (isset($caracterisation[$id_auteur])) { |
|
| 199 | + return $caracterisation[$id_auteur]; |
|
| 200 | + } |
|
| 201 | + |
|
| 202 | + if ($id_auteur) { |
|
| 203 | + include_spip('base/abstract_sql'); |
|
| 204 | + $t = sql_fetsel('id_auteur, pass', 'spip_auteurs', "id_auteur=$id_auteur"); |
|
| 205 | + if ($t) { |
|
| 206 | + return $caracterisation[$id_auteur] = [$t['id_auteur'], $t['pass']]; |
|
| 207 | + } |
|
| 208 | + include_spip('inc/minipres'); |
|
| 209 | + echo minipres(); |
|
| 210 | + exit; |
|
| 211 | + } // Visiteur anonyme, pour ls forums par exemple |
|
| 212 | + else { |
|
| 213 | + return ['0', '']; |
|
| 214 | + } |
|
| 215 | 215 | } |
| 216 | 216 | |
| 217 | 217 | /** |
@@ -220,31 +220,31 @@ discard block |
||
| 220 | 220 | * et verifier la legitimite de l'appel a l'action |
| 221 | 221 | */ |
| 222 | 222 | function _action_auteur(string $action, int $id_auteur, #[\SensitiveParameter] ?string $pass, string $alea): string { |
| 223 | - static $sha = []; |
|
| 224 | - $pass ??= ''; |
|
| 225 | - $entry = "$action:$id_auteur:$pass:$alea"; |
|
| 226 | - if (!isset($sha[$entry])) { |
|
| 227 | - $sha[$entry] = hash_hmac('sha256', "$action::$id_auteur", "$pass::" . _action_get_alea($alea)); |
|
| 228 | - } |
|
| 229 | - |
|
| 230 | - return $sha[$entry]; |
|
| 223 | + static $sha = []; |
|
| 224 | + $pass ??= ''; |
|
| 225 | + $entry = "$action:$id_auteur:$pass:$alea"; |
|
| 226 | + if (!isset($sha[$entry])) { |
|
| 227 | + $sha[$entry] = hash_hmac('sha256', "$action::$id_auteur", "$pass::" . _action_get_alea($alea)); |
|
| 228 | + } |
|
| 229 | + |
|
| 230 | + return $sha[$entry]; |
|
| 231 | 231 | } |
| 232 | 232 | |
| 233 | 233 | function _action_get_alea(string $alea): string { |
| 234 | - if (!isset($GLOBALS['meta'][$alea])) { |
|
| 235 | - $exec = _request('exec'); |
|
| 236 | - if (!$exec || !autoriser_sans_cookie($exec)) { |
|
| 237 | - include_spip('inc/acces'); |
|
| 238 | - charger_aleas(); |
|
| 239 | - if (empty($GLOBALS['meta'][$alea])) { |
|
| 240 | - include_spip('inc/minipres'); |
|
| 241 | - echo minipres(); |
|
| 242 | - spip_logger()->info("$alea indisponible"); |
|
| 243 | - exit; |
|
| 244 | - } |
|
| 245 | - } |
|
| 246 | - } |
|
| 247 | - return $GLOBALS['meta'][$alea] ?? ''; |
|
| 234 | + if (!isset($GLOBALS['meta'][$alea])) { |
|
| 235 | + $exec = _request('exec'); |
|
| 236 | + if (!$exec || !autoriser_sans_cookie($exec)) { |
|
| 237 | + include_spip('inc/acces'); |
|
| 238 | + charger_aleas(); |
|
| 239 | + if (empty($GLOBALS['meta'][$alea])) { |
|
| 240 | + include_spip('inc/minipres'); |
|
| 241 | + echo minipres(); |
|
| 242 | + spip_logger()->info("$alea indisponible"); |
|
| 243 | + exit; |
|
| 244 | + } |
|
| 245 | + } |
|
| 246 | + } |
|
| 247 | + return $GLOBALS['meta'][$alea] ?? ''; |
|
| 248 | 248 | } |
| 249 | 249 | |
| 250 | 250 | /** |
@@ -255,9 +255,9 @@ discard block |
||
| 255 | 255 | * @return string |
| 256 | 256 | */ |
| 257 | 257 | function calculer_action_auteur($action, $id_auteur = null) { |
| 258 | - [$id_auteur, $pass] = caracteriser_auteur($id_auteur); |
|
| 258 | + [$id_auteur, $pass] = caracteriser_auteur($id_auteur); |
|
| 259 | 259 | |
| 260 | - return _action_auteur($action, $id_auteur, $pass, 'alea_ephemere'); |
|
| 260 | + return _action_auteur($action, $id_auteur, $pass, 'alea_ephemere'); |
|
| 261 | 261 | } |
| 262 | 262 | |
| 263 | 263 | |
@@ -270,9 +270,9 @@ discard block |
||
| 270 | 270 | * @return bool |
| 271 | 271 | */ |
| 272 | 272 | function verifier_action_auteur($action, $hash) { |
| 273 | - [$id_auteur, $pass] = caracteriser_auteur(); |
|
| 274 | - return hash_equals($hash, _action_auteur($action, $id_auteur, $pass, 'alea_ephemere')) |
|
| 275 | - || hash_equals($hash, _action_auteur($action, $id_auteur, $pass, 'alea_ephemere_ancien')); |
|
| 273 | + [$id_auteur, $pass] = caracteriser_auteur(); |
|
| 274 | + return hash_equals($hash, _action_auteur($action, $id_auteur, $pass, 'alea_ephemere')) |
|
| 275 | + || hash_equals($hash, _action_auteur($action, $id_auteur, $pass, 'alea_ephemere_ancien')); |
|
| 276 | 276 | } |
| 277 | 277 | |
| 278 | 278 | // |
@@ -287,7 +287,7 @@ discard block |
||
| 287 | 287 | * @return string |
| 288 | 288 | */ |
| 289 | 289 | function secret_du_site() { |
| 290 | - return SpipCles::secret_du_site(); |
|
| 290 | + return SpipCles::secret_du_site(); |
|
| 291 | 291 | } |
| 292 | 292 | |
| 293 | 293 | /** |
@@ -297,7 +297,7 @@ discard block |
||
| 297 | 297 | * @return string |
| 298 | 298 | */ |
| 299 | 299 | function calculer_cle_action($action) { |
| 300 | - return hash_hmac('sha256', $action, secret_du_site()); |
|
| 300 | + return hash_hmac('sha256', $action, secret_du_site()); |
|
| 301 | 301 | } |
| 302 | 302 | |
| 303 | 303 | /** |
@@ -308,7 +308,7 @@ discard block |
||
| 308 | 308 | * @return bool |
| 309 | 309 | */ |
| 310 | 310 | function verifier_cle_action($action, #[\SensitiveParameter] $cle) { |
| 311 | - return hash_equals($cle, calculer_cle_action($action)); |
|
| 311 | + return hash_equals($cle, calculer_cle_action($action)); |
|
| 312 | 312 | } |
| 313 | 313 | |
| 314 | 314 | |
@@ -325,17 +325,17 @@ discard block |
||
| 325 | 325 | * @return string Token, de la forme "{id}*{hash}" |
| 326 | 326 | */ |
| 327 | 327 | function calculer_token_previsu($url, $id_auteur = null, $alea = 'alea_ephemere') { |
| 328 | - if (is_null($id_auteur) && !empty($GLOBALS['visiteur_session']['id_auteur'])) { |
|
| 329 | - $id_auteur = $GLOBALS['visiteur_session']['id_auteur']; |
|
| 330 | - } |
|
| 331 | - if (!$id_auteur = (int) $id_auteur) { |
|
| 332 | - return ''; |
|
| 333 | - } |
|
| 334 | - // On nettoie l’URL de tous les var_. |
|
| 335 | - $url = nettoyer_uri_var($url); |
|
| 336 | - |
|
| 337 | - $token = _action_auteur('previsualiser-' . $url, $id_auteur, secret_du_site(), $alea); |
|
| 338 | - return "$id_auteur-$token"; |
|
| 328 | + if (is_null($id_auteur) && !empty($GLOBALS['visiteur_session']['id_auteur'])) { |
|
| 329 | + $id_auteur = $GLOBALS['visiteur_session']['id_auteur']; |
|
| 330 | + } |
|
| 331 | + if (!$id_auteur = (int) $id_auteur) { |
|
| 332 | + return ''; |
|
| 333 | + } |
|
| 334 | + // On nettoie l’URL de tous les var_. |
|
| 335 | + $url = nettoyer_uri_var($url); |
|
| 336 | + |
|
| 337 | + $token = _action_auteur('previsualiser-' . $url, $id_auteur, secret_du_site(), $alea); |
|
| 338 | + return "$id_auteur-$token"; |
|
| 339 | 339 | } |
| 340 | 340 | |
| 341 | 341 | |
@@ -353,31 +353,31 @@ discard block |
||
| 353 | 353 | * + Tableau (id auteur, type d’objet, id_objet) sinon. |
| 354 | 354 | */ |
| 355 | 355 | function verifier_token_previsu(#[\SensitiveParameter] $token) { |
| 356 | - // retrouver auteur / hash |
|
| 357 | - $e = explode('-', $token, 2); |
|
| 358 | - if (count($e) == 2 && is_numeric(reset($e))) { |
|
| 359 | - $id_auteur = (int) reset($e); |
|
| 360 | - } else { |
|
| 361 | - return false; |
|
| 362 | - } |
|
| 363 | - |
|
| 364 | - // calculer le type et id de l’url actuelle |
|
| 365 | - include_spip('inc/urls'); |
|
| 366 | - include_spip('inc/filtres_mini'); |
|
| 367 | - $url = url_absolue(self()); |
|
| 368 | - |
|
| 369 | - // verifier le token |
|
| 370 | - $_token = calculer_token_previsu($url, $id_auteur, 'alea_ephemere'); |
|
| 371 | - if (!$_token || !hash_equals($token, $_token)) { |
|
| 372 | - $_token = calculer_token_previsu($url, $id_auteur, 'alea_ephemere_ancien'); |
|
| 373 | - if (!$_token || !hash_equals($token, $_token)) { |
|
| 374 | - return false; |
|
| 375 | - } |
|
| 376 | - } |
|
| 377 | - |
|
| 378 | - return [ |
|
| 379 | - 'id_auteur' => $id_auteur, |
|
| 380 | - ]; |
|
| 356 | + // retrouver auteur / hash |
|
| 357 | + $e = explode('-', $token, 2); |
|
| 358 | + if (count($e) == 2 && is_numeric(reset($e))) { |
|
| 359 | + $id_auteur = (int) reset($e); |
|
| 360 | + } else { |
|
| 361 | + return false; |
|
| 362 | + } |
|
| 363 | + |
|
| 364 | + // calculer le type et id de l’url actuelle |
|
| 365 | + include_spip('inc/urls'); |
|
| 366 | + include_spip('inc/filtres_mini'); |
|
| 367 | + $url = url_absolue(self()); |
|
| 368 | + |
|
| 369 | + // verifier le token |
|
| 370 | + $_token = calculer_token_previsu($url, $id_auteur, 'alea_ephemere'); |
|
| 371 | + if (!$_token || !hash_equals($token, $_token)) { |
|
| 372 | + $_token = calculer_token_previsu($url, $id_auteur, 'alea_ephemere_ancien'); |
|
| 373 | + if (!$_token || !hash_equals($token, $_token)) { |
|
| 374 | + return false; |
|
| 375 | + } |
|
| 376 | + } |
|
| 377 | + |
|
| 378 | + return [ |
|
| 379 | + 'id_auteur' => $id_auteur, |
|
| 380 | + ]; |
|
| 381 | 381 | } |
| 382 | 382 | |
| 383 | 383 | /** |
@@ -386,9 +386,9 @@ discard block |
||
| 386 | 386 | * @return bool|array |
| 387 | 387 | */ |
| 388 | 388 | function decrire_token_previsu() { |
| 389 | - static $desc = null; |
|
| 390 | - if (is_null($desc)) { |
|
| 391 | - $desc = ($token = _request('var_previewtoken')) ? verifier_token_previsu($token) : false; |
|
| 392 | - } |
|
| 393 | - return $desc; |
|
| 389 | + static $desc = null; |
|
| 390 | + if (is_null($desc)) { |
|
| 391 | + $desc = ($token = _request('var_previewtoken')) ? verifier_token_previsu($token) : false; |
|
| 392 | + } |
|
| 393 | + return $desc; |
|
| 394 | 394 | } |