@@ -40,7 +40,7 @@ discard block |
||
| 40 | 40 | $mode = preg_replace(",\W,", '', $mode); |
| 41 | 41 | if ($mode) { |
| 42 | 42 | // chercher dans la base |
| 43 | - $mode_document = 'logo' . $mode; |
|
| 43 | + $mode_document = 'logo'.$mode; |
|
| 44 | 44 | $objet = objet_type($_id_objet); |
| 45 | 45 | $doc = sql_fetsel('D.*', 'spip_documents AS D JOIN spip_documents_liens AS L ON L.id_document=D.id_document', "D.mode=".sql_quote($mode_document)." AND L.objet=".sql_quote($objet)." AND id_objet=".intval($id)); |
| 46 | 46 | if ($doc) { |
@@ -52,10 +52,10 @@ discard block |
||
| 52 | 52 | if ($compat_old_logos) { |
| 53 | 53 | # attention au cas $id = '0' pour LOGO_SITE_SPIP : utiliser intval() |
| 54 | 54 | $type = type_du_logo($_id_objet); |
| 55 | - $nom = $type . $mode . intval($id); |
|
| 55 | + $nom = $type.$mode.intval($id); |
|
| 56 | 56 | |
| 57 | 57 | foreach ($GLOBALS['formats_logos'] as $format) { |
| 58 | - if (@file_exists($d = (_DIR_LOGOS . $nom . '.' . $format))) { |
|
| 58 | + if (@file_exists($d = (_DIR_LOGOS.$nom.'.'.$format))) { |
|
| 59 | 59 | return array($d, _DIR_LOGOS, $nom, $format, @filemtime($d)); |
| 60 | 60 | } |
| 61 | 61 | } |
@@ -16,7 +16,7 @@ discard block |
||
| 16 | 16 | * @package SPIP\Core\Logos |
| 17 | 17 | **/ |
| 18 | 18 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 19 | - return; |
|
| 19 | + return; |
|
| 20 | 20 | } |
| 21 | 21 | |
| 22 | 22 | /** |
@@ -37,34 +37,34 @@ discard block |
||
| 37 | 37 | **/ |
| 38 | 38 | function inc_chercher_logo_dist($id, $_id_objet, $mode = 'on', $compat_old_logos = true) { |
| 39 | 39 | |
| 40 | - $mode = preg_replace(",\W,", '', $mode); |
|
| 41 | - if ($mode) { |
|
| 42 | - // chercher dans la base |
|
| 43 | - $mode_document = 'logo' . $mode; |
|
| 44 | - $objet = objet_type($_id_objet); |
|
| 45 | - $doc = sql_fetsel('D.*', 'spip_documents AS D JOIN spip_documents_liens AS L ON L.id_document=D.id_document', "D.mode=".sql_quote($mode_document)." AND L.objet=".sql_quote($objet)." AND id_objet=".intval($id)); |
|
| 46 | - if ($doc) { |
|
| 47 | - include_spip('inc/documents'); |
|
| 48 | - $d = get_spip_doc($doc['fichier']); |
|
| 49 | - return array($d, _DIR_IMG, basename($d), $doc['extension'], @filemtime($d), $doc); |
|
| 50 | - } |
|
| 40 | + $mode = preg_replace(",\W,", '', $mode); |
|
| 41 | + if ($mode) { |
|
| 42 | + // chercher dans la base |
|
| 43 | + $mode_document = 'logo' . $mode; |
|
| 44 | + $objet = objet_type($_id_objet); |
|
| 45 | + $doc = sql_fetsel('D.*', 'spip_documents AS D JOIN spip_documents_liens AS L ON L.id_document=D.id_document', "D.mode=".sql_quote($mode_document)." AND L.objet=".sql_quote($objet)." AND id_objet=".intval($id)); |
|
| 46 | + if ($doc) { |
|
| 47 | + include_spip('inc/documents'); |
|
| 48 | + $d = get_spip_doc($doc['fichier']); |
|
| 49 | + return array($d, _DIR_IMG, basename($d), $doc['extension'], @filemtime($d), $doc); |
|
| 50 | + } |
|
| 51 | 51 | |
| 52 | - # deprecated TODO remove |
|
| 53 | - if ($compat_old_logos) { |
|
| 54 | - # attention au cas $id = '0' pour LOGO_SITE_SPIP : utiliser intval() |
|
| 55 | - $type = type_du_logo($_id_objet); |
|
| 56 | - $nom = $type . $mode . intval($id); |
|
| 52 | + # deprecated TODO remove |
|
| 53 | + if ($compat_old_logos) { |
|
| 54 | + # attention au cas $id = '0' pour LOGO_SITE_SPIP : utiliser intval() |
|
| 55 | + $type = type_du_logo($_id_objet); |
|
| 56 | + $nom = $type . $mode . intval($id); |
|
| 57 | 57 | |
| 58 | - foreach ($GLOBALS['formats_logos'] as $format) { |
|
| 59 | - if (@file_exists($d = (_DIR_LOGOS . $nom . '.' . $format))) { |
|
| 60 | - return array($d, _DIR_LOGOS, $nom, $format, @filemtime($d)); |
|
| 61 | - } |
|
| 62 | - } |
|
| 63 | - } |
|
| 64 | - } |
|
| 58 | + foreach ($GLOBALS['formats_logos'] as $format) { |
|
| 59 | + if (@file_exists($d = (_DIR_LOGOS . $nom . '.' . $format))) { |
|
| 60 | + return array($d, _DIR_LOGOS, $nom, $format, @filemtime($d)); |
|
| 61 | + } |
|
| 62 | + } |
|
| 63 | + } |
|
| 64 | + } |
|
| 65 | 65 | |
| 66 | - # coherence de type pour servir comme filtre (formulaire_login) |
|
| 67 | - return array(); |
|
| 66 | + # coherence de type pour servir comme filtre (formulaire_login) |
|
| 67 | + return array(); |
|
| 68 | 68 | } |
| 69 | 69 | |
| 70 | 70 | /** |
@@ -83,15 +83,15 @@ discard block |
||
| 83 | 83 | * @deprecated MAIS NE PAS SUPPRIMER CAR SERT POUR L'UPGRADE des logos et leur mise en base |
| 84 | 84 | **/ |
| 85 | 85 | function type_du_logo($_id_objet) { |
| 86 | - return isset($GLOBALS['table_logos'][$_id_objet]) |
|
| 87 | - ? $GLOBALS['table_logos'][$_id_objet] |
|
| 88 | - : objet_type(preg_replace(',^id_,', '', $_id_objet)); |
|
| 86 | + return isset($GLOBALS['table_logos'][$_id_objet]) |
|
| 87 | + ? $GLOBALS['table_logos'][$_id_objet] |
|
| 88 | + : objet_type(preg_replace(',^id_,', '', $_id_objet)); |
|
| 89 | 89 | } |
| 90 | 90 | |
| 91 | 91 | // Exceptions standards (historique) |
| 92 | 92 | $GLOBALS['table_logos'] = array( |
| 93 | - 'id_article' => 'art', |
|
| 94 | - 'id_auteur' => 'aut', |
|
| 95 | - 'id_rubrique' => 'rub', |
|
| 96 | - 'id_groupe' => 'groupe', |
|
| 93 | + 'id_article' => 'art', |
|
| 94 | + 'id_auteur' => 'aut', |
|
| 95 | + 'id_rubrique' => 'rub', |
|
| 96 | + 'id_groupe' => 'groupe', |
|
| 97 | 97 | ); |
@@ -42,8 +42,7 @@ |
||
| 42 | 42 | if (count($logo) < 6) { |
| 43 | 43 | spip_log("Supprimer ancien logo $logo", 'logo'); |
| 44 | 44 | spip_unlink($logo[0]); |
| 45 | - } |
|
| 46 | - elseif ($doc = $logo[5] |
|
| 45 | + } elseif ($doc = $logo[5] |
|
| 47 | 46 | and isset($doc['id_document']) |
| 48 | 47 | and $id_document = $doc['id_document']) { |
| 49 | 48 | |
@@ -81,14 +81,14 @@ discard block |
||
| 81 | 81 | include_spip('inc/chercher_logo'); |
| 82 | 82 | |
| 83 | 83 | $mode = preg_replace(",\W,", '', $etat); |
| 84 | - if (!$mode){ |
|
| 84 | + if (!$mode) { |
|
| 85 | 85 | spip_log("logo_modifier : etat $etat invalide", 'logo'); |
| 86 | 86 | $erreur = 'etat invalide'; |
| 87 | 87 | |
| 88 | 88 | return $erreur; |
| 89 | 89 | } |
| 90 | 90 | // chercher dans la base |
| 91 | - $mode_document = 'logo' . $mode; |
|
| 91 | + $mode_document = 'logo'.$mode; |
|
| 92 | 92 | |
| 93 | 93 | include_spip('inc/documents'); |
| 94 | 94 | $erreur = ''; |
@@ -105,7 +105,7 @@ discard block |
||
| 105 | 105 | $tmp_name = false; |
| 106 | 106 | if (file_exists($source)) { |
| 107 | 107 | $tmp_name = $source; |
| 108 | - } elseif (file_exists($f = determine_upload() . $source)) { |
|
| 108 | + } elseif (file_exists($f = determine_upload().$source)) { |
|
| 109 | 109 | $tmp_name = $f; |
| 110 | 110 | } |
| 111 | 111 | if (!$tmp_name) { |
@@ -162,27 +162,27 @@ discard block |
||
| 162 | 162 | $type = type_du_logo($_id_objet); |
| 163 | 163 | |
| 164 | 164 | foreach (['on', 'off'] as $mode) { |
| 165 | - $nom_base = $type . $mode; |
|
| 165 | + $nom_base = $type.$mode; |
|
| 166 | 166 | $dir = (defined('_DIR_LOGOS') ? _DIR_LOGOS : _DIR_IMG); |
| 167 | 167 | |
| 168 | 168 | $deja = array(); |
| 169 | - $files = glob($dir . $nom_base . "*"); |
|
| 169 | + $files = glob($dir.$nom_base."*"); |
|
| 170 | 170 | |
| 171 | 171 | foreach ($files as $file) { |
| 172 | - $logo = substr($file, strlen($dir . $nom_base)); |
|
| 172 | + $logo = substr($file, strlen($dir.$nom_base)); |
|
| 173 | 173 | $logo = explode('.', $logo); |
| 174 | 174 | if (is_numeric($logo[0]) |
| 175 | 175 | and ($id_objet = intval($logo[0]) or in_array($objet, ['site', 'rubrique']))) { |
| 176 | 176 | if (!isset($deja[$id_objet])) { |
| 177 | 177 | $logo = $chercher_logo($id_objet, $_id_objet, $mode); |
| 178 | 178 | // if no logo in base |
| 179 | - if (!$logo or count($logo)<6) { |
|
| 179 | + if (!$logo or count($logo) < 6) { |
|
| 180 | 180 | foreach ($formats_logos as $format) { |
| 181 | - if (@file_exists($d = ($dir . ($nom = $nom_base . intval($id_objet) . '.' . $format)))) { |
|
| 181 | + if (@file_exists($d = ($dir.($nom = $nom_base.intval($id_objet).'.'.$format)))) { |
|
| 182 | 182 | // logo_modifier commence par supprimer le logo existant, donc on le deplace pour pas le perdre |
| 183 | - @rename($d, $dir_logos . $nom); |
|
| 183 | + @rename($d, $dir_logos.$nom); |
|
| 184 | 184 | // et on le declare comme nouveau logo |
| 185 | - logo_modifier($objet, $id_objet, $mode, $dir_logos . $nom); |
|
| 185 | + logo_modifier($objet, $id_objet, $mode, $dir_logos.$nom); |
|
| 186 | 186 | break; |
| 187 | 187 | } |
| 188 | 188 | } |
@@ -192,7 +192,7 @@ discard block |
||
| 192 | 192 | } |
| 193 | 193 | // si le fichier est encore la on le move : rien a faire ici |
| 194 | 194 | if (file_exists($file)) { |
| 195 | - @rename($file, $dir_logos_erreurs . basename($file)); |
|
| 195 | + @rename($file, $dir_logos_erreurs.basename($file)); |
|
| 196 | 196 | } |
| 197 | 197 | |
| 198 | 198 | if ($time_limit and time() > $time_limit) { |
@@ -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 | |
@@ -30,35 +30,35 @@ discard block |
||
| 30 | 30 | * `on` ou `off` |
| 31 | 31 | */ |
| 32 | 32 | function logo_supprimer($objet, $id_objet, $etat) { |
| 33 | - $chercher_logo = charger_fonction('chercher_logo', 'inc'); |
|
| 34 | - $objet = objet_type($objet); |
|
| 35 | - $primary = id_table_objet($objet); |
|
| 36 | - include_spip('inc/chercher_logo'); |
|
| 37 | - |
|
| 38 | - // existe-t-il deja un logo ? |
|
| 39 | - $logo = $chercher_logo($id_objet, $primary, $etat); |
|
| 40 | - if ($logo) { |
|
| 41 | - # TODO : deprecated, a supprimer -> anciens logos IMG/artonxx.png pas en base |
|
| 42 | - if (count($logo) < 6) { |
|
| 43 | - spip_log("Supprimer ancien logo $logo", 'logo'); |
|
| 44 | - spip_unlink($logo[0]); |
|
| 45 | - } |
|
| 46 | - elseif ($doc = $logo[5] |
|
| 47 | - and isset($doc['id_document']) |
|
| 48 | - and $id_document = $doc['id_document']) { |
|
| 49 | - |
|
| 50 | - include_spip('action/editer_liens'); |
|
| 51 | - // supprimer le lien dans la base |
|
| 52 | - objet_dissocier(array('document' => $id_document), array($objet => $id_objet), array('role' => '*')); |
|
| 53 | - |
|
| 54 | - // verifier si il reste des liens avec d'autres objets et sinon supprimer |
|
| 55 | - $liens = objet_trouver_liens(array('document' => $id_document), '*'); |
|
| 56 | - if (!count($liens)) { |
|
| 57 | - $supprimer_document = charger_fonction('supprimer_document', 'action'); |
|
| 58 | - $supprimer_document($doc['id_document']); |
|
| 59 | - } |
|
| 60 | - } |
|
| 61 | - } |
|
| 33 | + $chercher_logo = charger_fonction('chercher_logo', 'inc'); |
|
| 34 | + $objet = objet_type($objet); |
|
| 35 | + $primary = id_table_objet($objet); |
|
| 36 | + include_spip('inc/chercher_logo'); |
|
| 37 | + |
|
| 38 | + // existe-t-il deja un logo ? |
|
| 39 | + $logo = $chercher_logo($id_objet, $primary, $etat); |
|
| 40 | + if ($logo) { |
|
| 41 | + # TODO : deprecated, a supprimer -> anciens logos IMG/artonxx.png pas en base |
|
| 42 | + if (count($logo) < 6) { |
|
| 43 | + spip_log("Supprimer ancien logo $logo", 'logo'); |
|
| 44 | + spip_unlink($logo[0]); |
|
| 45 | + } |
|
| 46 | + elseif ($doc = $logo[5] |
|
| 47 | + and isset($doc['id_document']) |
|
| 48 | + and $id_document = $doc['id_document']) { |
|
| 49 | + |
|
| 50 | + include_spip('action/editer_liens'); |
|
| 51 | + // supprimer le lien dans la base |
|
| 52 | + objet_dissocier(array('document' => $id_document), array($objet => $id_objet), array('role' => '*')); |
|
| 53 | + |
|
| 54 | + // verifier si il reste des liens avec d'autres objets et sinon supprimer |
|
| 55 | + $liens = objet_trouver_liens(array('document' => $id_document), '*'); |
|
| 56 | + if (!count($liens)) { |
|
| 57 | + $supprimer_document = charger_fonction('supprimer_document', 'action'); |
|
| 58 | + $supprimer_document($doc['id_document']); |
|
| 59 | + } |
|
| 60 | + } |
|
| 61 | + } |
|
| 62 | 62 | } |
| 63 | 63 | |
| 64 | 64 | /** |
@@ -75,133 +75,133 @@ discard block |
||
| 75 | 75 | * Erreur, sinon '' |
| 76 | 76 | */ |
| 77 | 77 | function logo_modifier($objet, $id_objet, $etat, $source) { |
| 78 | - $chercher_logo = charger_fonction('chercher_logo', 'inc'); |
|
| 79 | - $objet = objet_type($objet); |
|
| 80 | - $primary = id_table_objet($objet); |
|
| 81 | - include_spip('inc/chercher_logo'); |
|
| 82 | - |
|
| 83 | - $mode = preg_replace(",\W,", '', $etat); |
|
| 84 | - if (!$mode){ |
|
| 85 | - spip_log("logo_modifier : etat $etat invalide", 'logo'); |
|
| 86 | - $erreur = 'etat invalide'; |
|
| 87 | - |
|
| 88 | - return $erreur; |
|
| 89 | - } |
|
| 90 | - // chercher dans la base |
|
| 91 | - $mode_document = 'logo' . $mode; |
|
| 92 | - |
|
| 93 | - include_spip('inc/documents'); |
|
| 94 | - $erreur = ''; |
|
| 95 | - |
|
| 96 | - if (!$source) { |
|
| 97 | - spip_log('spip_image_ajouter : source inconnue', 'logo'); |
|
| 98 | - $erreur = 'source inconnue'; |
|
| 99 | - |
|
| 100 | - return $erreur; |
|
| 101 | - } |
|
| 102 | - |
|
| 103 | - // fichier dans upload/ |
|
| 104 | - if (is_string($source)) { |
|
| 105 | - $tmp_name = false; |
|
| 106 | - if (file_exists($source)) { |
|
| 107 | - $tmp_name = $source; |
|
| 108 | - } elseif (file_exists($f = determine_upload() . $source)) { |
|
| 109 | - $tmp_name = $f; |
|
| 110 | - } |
|
| 111 | - if (!$tmp_name) { |
|
| 112 | - spip_log('spip_image_ajouter : source inconnue', 'logo'); |
|
| 113 | - $erreur = 'source inconnue'; |
|
| 114 | - |
|
| 115 | - return $erreur; |
|
| 116 | - } |
|
| 117 | - $source = array( |
|
| 118 | - 'tmp_name' => $tmp_name, |
|
| 119 | - 'name' => basename($tmp_name), |
|
| 120 | - ); |
|
| 121 | - } elseif ($erreur = check_upload_error($source['error'], '', true)) { |
|
| 122 | - return $erreur; |
|
| 123 | - } |
|
| 124 | - |
|
| 125 | - // supprimer le logo eventueel existant |
|
| 126 | - // TODO : si un logo existe, le modifier plutot que supprimer + reinserer (mais il faut gerer le cas ou il est utilise par plusieurs objets, donc pas si simple) |
|
| 127 | - // mais de toute facon l'interface actuelle oblige a supprimer + reinserer |
|
| 128 | - logo_supprimer($objet, $id_objet, $etat); |
|
| 129 | - |
|
| 130 | - |
|
| 131 | - include_spip('inc/autoriser'); |
|
| 132 | - $source['mode'] = $mode_document; |
|
| 133 | - $ajouter_documents = charger_fonction('ajouter_documents', 'action'); |
|
| 134 | - autoriser_exception('associerdocuments', $objet, $id_objet); |
|
| 135 | - $ajoutes = $ajouter_documents('new', [$source], $objet, $id_objet, $mode_document); |
|
| 136 | - autoriser_exception('associerdocuments', $objet, $id_objet, false); |
|
| 137 | - |
|
| 138 | - $id_document = reset($ajoutes); |
|
| 139 | - |
|
| 140 | - if (!is_numeric($id_document)) { |
|
| 141 | - $erreur = ($id_document ? $id_document : 'Erreur inconnue'); |
|
| 142 | - spip_log("Erreur ajout logo : $erreur pour source=".json_encode($source), 'logo'); |
|
| 143 | - return $erreur; |
|
| 144 | - } |
|
| 145 | - |
|
| 146 | - return ''; // tout est bon, pas d'erreur |
|
| 78 | + $chercher_logo = charger_fonction('chercher_logo', 'inc'); |
|
| 79 | + $objet = objet_type($objet); |
|
| 80 | + $primary = id_table_objet($objet); |
|
| 81 | + include_spip('inc/chercher_logo'); |
|
| 82 | + |
|
| 83 | + $mode = preg_replace(",\W,", '', $etat); |
|
| 84 | + if (!$mode){ |
|
| 85 | + spip_log("logo_modifier : etat $etat invalide", 'logo'); |
|
| 86 | + $erreur = 'etat invalide'; |
|
| 87 | + |
|
| 88 | + return $erreur; |
|
| 89 | + } |
|
| 90 | + // chercher dans la base |
|
| 91 | + $mode_document = 'logo' . $mode; |
|
| 92 | + |
|
| 93 | + include_spip('inc/documents'); |
|
| 94 | + $erreur = ''; |
|
| 95 | + |
|
| 96 | + if (!$source) { |
|
| 97 | + spip_log('spip_image_ajouter : source inconnue', 'logo'); |
|
| 98 | + $erreur = 'source inconnue'; |
|
| 99 | + |
|
| 100 | + return $erreur; |
|
| 101 | + } |
|
| 102 | + |
|
| 103 | + // fichier dans upload/ |
|
| 104 | + if (is_string($source)) { |
|
| 105 | + $tmp_name = false; |
|
| 106 | + if (file_exists($source)) { |
|
| 107 | + $tmp_name = $source; |
|
| 108 | + } elseif (file_exists($f = determine_upload() . $source)) { |
|
| 109 | + $tmp_name = $f; |
|
| 110 | + } |
|
| 111 | + if (!$tmp_name) { |
|
| 112 | + spip_log('spip_image_ajouter : source inconnue', 'logo'); |
|
| 113 | + $erreur = 'source inconnue'; |
|
| 114 | + |
|
| 115 | + return $erreur; |
|
| 116 | + } |
|
| 117 | + $source = array( |
|
| 118 | + 'tmp_name' => $tmp_name, |
|
| 119 | + 'name' => basename($tmp_name), |
|
| 120 | + ); |
|
| 121 | + } elseif ($erreur = check_upload_error($source['error'], '', true)) { |
|
| 122 | + return $erreur; |
|
| 123 | + } |
|
| 124 | + |
|
| 125 | + // supprimer le logo eventueel existant |
|
| 126 | + // TODO : si un logo existe, le modifier plutot que supprimer + reinserer (mais il faut gerer le cas ou il est utilise par plusieurs objets, donc pas si simple) |
|
| 127 | + // mais de toute facon l'interface actuelle oblige a supprimer + reinserer |
|
| 128 | + logo_supprimer($objet, $id_objet, $etat); |
|
| 129 | + |
|
| 130 | + |
|
| 131 | + include_spip('inc/autoriser'); |
|
| 132 | + $source['mode'] = $mode_document; |
|
| 133 | + $ajouter_documents = charger_fonction('ajouter_documents', 'action'); |
|
| 134 | + autoriser_exception('associerdocuments', $objet, $id_objet); |
|
| 135 | + $ajoutes = $ajouter_documents('new', [$source], $objet, $id_objet, $mode_document); |
|
| 136 | + autoriser_exception('associerdocuments', $objet, $id_objet, false); |
|
| 137 | + |
|
| 138 | + $id_document = reset($ajoutes); |
|
| 139 | + |
|
| 140 | + if (!is_numeric($id_document)) { |
|
| 141 | + $erreur = ($id_document ? $id_document : 'Erreur inconnue'); |
|
| 142 | + spip_log("Erreur ajout logo : $erreur pour source=".json_encode($source), 'logo'); |
|
| 143 | + return $erreur; |
|
| 144 | + } |
|
| 145 | + |
|
| 146 | + return ''; // tout est bon, pas d'erreur |
|
| 147 | 147 | |
| 148 | 148 | } |
| 149 | 149 | |
| 150 | 150 | function logo_migrer_en_base($objet, $time_limit) { |
| 151 | 151 | |
| 152 | - $dir_logos_erreurs = sous_repertoire(_DIR_IMG, 'logo_erreurs'); |
|
| 153 | - $dir_logos = sous_repertoire(_DIR_IMG, 'logo'); |
|
| 154 | - $formats_logos = array('jpg', 'png', 'svg', 'gif'); |
|
| 155 | - if (isset($GLOBALS['formats_logos'])) { |
|
| 156 | - $formats_logos = $GLOBALS['formats_logos']; |
|
| 157 | - } |
|
| 158 | - |
|
| 159 | - |
|
| 160 | - $chercher_logo = charger_fonction('chercher_logo', 'inc'); |
|
| 161 | - include_spip('inc/chercher_logo'); |
|
| 162 | - $_id_objet = id_table_objet($objet); |
|
| 163 | - $type = type_du_logo($_id_objet); |
|
| 164 | - |
|
| 165 | - foreach (['on', 'off'] as $mode) { |
|
| 166 | - $nom_base = $type . $mode; |
|
| 167 | - $dir = (defined('_DIR_LOGOS') ? _DIR_LOGOS : _DIR_IMG); |
|
| 168 | - |
|
| 169 | - $deja = array(); |
|
| 170 | - $files = glob($dir . $nom_base . "*"); |
|
| 171 | - |
|
| 172 | - foreach ($files as $file) { |
|
| 173 | - $logo = substr($file, strlen($dir . $nom_base)); |
|
| 174 | - $logo = explode('.', $logo); |
|
| 175 | - if (is_numeric($logo[0]) |
|
| 176 | - and ($id_objet = intval($logo[0]) or in_array($objet, ['site', 'rubrique']))) { |
|
| 177 | - if (!isset($deja[$id_objet])) { |
|
| 178 | - $logo = $chercher_logo($id_objet, $_id_objet, $mode); |
|
| 179 | - // if no logo in base |
|
| 180 | - if (!$logo or count($logo)<6) { |
|
| 181 | - foreach ($formats_logos as $format) { |
|
| 182 | - if (@file_exists($d = ($dir . ($nom = $nom_base . intval($id_objet) . '.' . $format)))) { |
|
| 183 | - // logo_modifier commence par supprimer le logo existant, donc on le deplace pour pas le perdre |
|
| 184 | - @rename($d, $dir_logos . $nom); |
|
| 185 | - // et on le declare comme nouveau logo |
|
| 186 | - logo_modifier($objet, $id_objet, $mode, $dir_logos . $nom); |
|
| 187 | - break; |
|
| 188 | - } |
|
| 189 | - } |
|
| 190 | - } |
|
| 191 | - $deja[$id_objet] = true; |
|
| 192 | - } |
|
| 193 | - } |
|
| 194 | - // si le fichier est encore la on le move : rien a faire ici |
|
| 195 | - if (file_exists($file)) { |
|
| 196 | - @rename($file, $dir_logos_erreurs . basename($file)); |
|
| 197 | - } |
|
| 198 | - |
|
| 199 | - if ($time_limit and time() > $time_limit) { |
|
| 200 | - effacer_meta('drapeau_edition'); |
|
| 201 | - return; |
|
| 202 | - } |
|
| 203 | - } |
|
| 204 | - |
|
| 205 | - } |
|
| 206 | - effacer_meta('drapeau_edition'); |
|
| 152 | + $dir_logos_erreurs = sous_repertoire(_DIR_IMG, 'logo_erreurs'); |
|
| 153 | + $dir_logos = sous_repertoire(_DIR_IMG, 'logo'); |
|
| 154 | + $formats_logos = array('jpg', 'png', 'svg', 'gif'); |
|
| 155 | + if (isset($GLOBALS['formats_logos'])) { |
|
| 156 | + $formats_logos = $GLOBALS['formats_logos']; |
|
| 157 | + } |
|
| 158 | + |
|
| 159 | + |
|
| 160 | + $chercher_logo = charger_fonction('chercher_logo', 'inc'); |
|
| 161 | + include_spip('inc/chercher_logo'); |
|
| 162 | + $_id_objet = id_table_objet($objet); |
|
| 163 | + $type = type_du_logo($_id_objet); |
|
| 164 | + |
|
| 165 | + foreach (['on', 'off'] as $mode) { |
|
| 166 | + $nom_base = $type . $mode; |
|
| 167 | + $dir = (defined('_DIR_LOGOS') ? _DIR_LOGOS : _DIR_IMG); |
|
| 168 | + |
|
| 169 | + $deja = array(); |
|
| 170 | + $files = glob($dir . $nom_base . "*"); |
|
| 171 | + |
|
| 172 | + foreach ($files as $file) { |
|
| 173 | + $logo = substr($file, strlen($dir . $nom_base)); |
|
| 174 | + $logo = explode('.', $logo); |
|
| 175 | + if (is_numeric($logo[0]) |
|
| 176 | + and ($id_objet = intval($logo[0]) or in_array($objet, ['site', 'rubrique']))) { |
|
| 177 | + if (!isset($deja[$id_objet])) { |
|
| 178 | + $logo = $chercher_logo($id_objet, $_id_objet, $mode); |
|
| 179 | + // if no logo in base |
|
| 180 | + if (!$logo or count($logo)<6) { |
|
| 181 | + foreach ($formats_logos as $format) { |
|
| 182 | + if (@file_exists($d = ($dir . ($nom = $nom_base . intval($id_objet) . '.' . $format)))) { |
|
| 183 | + // logo_modifier commence par supprimer le logo existant, donc on le deplace pour pas le perdre |
|
| 184 | + @rename($d, $dir_logos . $nom); |
|
| 185 | + // et on le declare comme nouveau logo |
|
| 186 | + logo_modifier($objet, $id_objet, $mode, $dir_logos . $nom); |
|
| 187 | + break; |
|
| 188 | + } |
|
| 189 | + } |
|
| 190 | + } |
|
| 191 | + $deja[$id_objet] = true; |
|
| 192 | + } |
|
| 193 | + } |
|
| 194 | + // si le fichier est encore la on le move : rien a faire ici |
|
| 195 | + if (file_exists($file)) { |
|
| 196 | + @rename($file, $dir_logos_erreurs . basename($file)); |
|
| 197 | + } |
|
| 198 | + |
|
| 199 | + if ($time_limit and time() > $time_limit) { |
|
| 200 | + effacer_meta('drapeau_edition'); |
|
| 201 | + return; |
|
| 202 | + } |
|
| 203 | + } |
|
| 204 | + |
|
| 205 | + } |
|
| 206 | + effacer_meta('drapeau_edition'); |
|
| 207 | 207 | } |
| 208 | 208 | \ No newline at end of file |
@@ -37,7 +37,7 @@ discard block |
||
| 37 | 37 | |
| 38 | 38 | $GLOBALS['contexte'] = calculer_contexte(); |
| 39 | 39 | $page = array('contexte_implicite' => calculer_contexte_implicite()); |
| 40 | - $page['contexte_implicite']['cache'] = $fond . preg_replace(',\.[a-zA-Z0-9]*$,', '', |
|
| 40 | + $page['contexte_implicite']['cache'] = $fond.preg_replace(',\.[a-zA-Z0-9]*$,', '', |
|
| 41 | 41 | preg_replace('/[?].*$/', '', $GLOBALS['REQUEST_URI'])); |
| 42 | 42 | // Cette fonction est utilisee deux fois |
| 43 | 43 | $cacher = charger_fonction('cacher', 'public', true); |
@@ -118,7 +118,7 @@ discard block |
||
| 118 | 118 | $lastmodified, $connect); |
| 119 | 119 | if ($page === '') { |
| 120 | 120 | $erreur = _T('info_erreur_squelette2', |
| 121 | - array('fichier' => spip_htmlspecialchars($fond) . '.' . _EXTENSION_SQUELETTES)); |
|
| 121 | + array('fichier' => spip_htmlspecialchars($fond).'.'._EXTENSION_SQUELETTES)); |
|
| 122 | 122 | erreur_squelette($erreur); |
| 123 | 123 | // eviter des erreurs strictes ensuite sur $page['cle'] en PHP >= 5.4 |
| 124 | 124 | $page = array('texte' => '', 'erreur' => $erreur); |
@@ -160,7 +160,7 @@ discard block |
||
| 160 | 160 | and !isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) |
| 161 | 161 | and !isset($page['entetes']["Last-Modified"]) |
| 162 | 162 | ) { |
| 163 | - $page['entetes']["Last-Modified"] = gmdate("D, d M Y H:i:s", $lastmodified) . " GMT"; |
|
| 163 | + $page['entetes']["Last-Modified"] = gmdate("D, d M Y H:i:s", $lastmodified)." GMT"; |
|
| 164 | 164 | } |
| 165 | 165 | |
| 166 | 166 | // fermer la connexion apres les headers si requete HEAD |
@@ -225,7 +225,7 @@ discard block |
||
| 225 | 225 | 'spip_version_code' => $GLOBALS['spip_version_code'], |
| 226 | 226 | ); |
| 227 | 227 | if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) { |
| 228 | - $contexte_implicite['host'] .= "|" . $_SERVER['HTTP_X_FORWARDED_HOST']; |
|
| 228 | + $contexte_implicite['host'] .= "|".$_SERVER['HTTP_X_FORWARDED_HOST']; |
|
| 229 | 229 | } |
| 230 | 230 | |
| 231 | 231 | return $contexte_implicite; |
@@ -497,7 +497,7 @@ discard block |
||
| 497 | 497 | * et il ne doit etre utilise que pour trouver le id_xx si pas de $id fourni (cas appel depuis styliser) |
| 498 | 498 | * @return string |
| 499 | 499 | */ |
| 500 | -function styliser_modele($modele, $id, $contexte=null) { |
|
| 500 | +function styliser_modele($modele, $id, $contexte = null) { |
|
| 501 | 501 | static $styliseurs = null; |
| 502 | 502 | if (is_null($styliseurs)) { |
| 503 | 503 | $tables_objet = lister_tables_objets_sql(); |
@@ -523,7 +523,7 @@ discard block |
||
| 523 | 523 | } |
| 524 | 524 | } |
| 525 | 525 | if (is_null($id)) { |
| 526 | - $msg = "modeles/$modele : " . _T('zbug_parametres_inclus_incorrects', array('param' => "id/$primary")); |
|
| 526 | + $msg = "modeles/$modele : "._T('zbug_parametres_inclus_incorrects', array('param' => "id/$primary")); |
|
| 527 | 527 | erreur_squelette($msg); |
| 528 | 528 | // on passe id=0 au routeur pour tomber sur le modele par defaut et eviter une seconde erreur sur un modele inexistant |
| 529 | 529 | $id = 0; |
@@ -570,7 +570,7 @@ discard block |
||
| 570 | 570 | } |
| 571 | 571 | |
| 572 | 572 | if (preg_match(',^[a-z0-9_]+$,', $soustype)) { |
| 573 | - if (!trouve_modele($fond = ($type . '_' . $soustype))) { |
|
| 573 | + if (!trouve_modele($fond = ($type.'_'.$soustype))) { |
|
| 574 | 574 | $fond = ''; |
| 575 | 575 | $class = $soustype; |
| 576 | 576 | } |
@@ -585,7 +585,7 @@ discard block |
||
| 585 | 585 | |
| 586 | 586 | return false; |
| 587 | 587 | } |
| 588 | - $fond = 'modeles/' . $fond; |
|
| 588 | + $fond = 'modeles/'.$fond; |
|
| 589 | 589 | // Creer le contexte |
| 590 | 590 | $contexte = $env; |
| 591 | 591 | $contexte['dir_racine'] = _DIR_RACINE; # eviter de mixer un cache racine et un cache ecrire (meme si pour l'instant les modeles ne sont pas caches, le resultat etant different il faut que le contexte en tienne compte |
@@ -624,13 +624,13 @@ discard block |
||
| 624 | 624 | // Regarder si le modele tient compte des liens (il *doit* alors indiquer |
| 625 | 625 | // spip_lien_ok dans les classes de son conteneur de premier niveau ; |
| 626 | 626 | // sinon, s'il y a un lien, on l'ajoute classiquement |
| 627 | - if (strstr(' ' . ($classes = extraire_attribut($retour, 'class')) . ' ', |
|
| 627 | + if (strstr(' '.($classes = extraire_attribut($retour, 'class')).' ', |
|
| 628 | 628 | 'spip_lien_ok')) { |
| 629 | 629 | $retour = inserer_attribut($retour, 'class', |
| 630 | 630 | trim(str_replace(' spip_lien_ok ', ' ', " $classes "))); |
| 631 | 631 | } else { |
| 632 | 632 | if ($lien) { |
| 633 | - $retour = "<a href='" . $lien['href'] . "' class='" . $lien['class'] . "'>" . $retour . "</a>"; |
|
| 633 | + $retour = "<a href='".$lien['href']."' class='".$lien['class']."'>".$retour."</a>"; |
|
| 634 | 634 | } |
| 635 | 635 | } |
| 636 | 636 | |
@@ -654,7 +654,7 @@ discard block |
||
| 654 | 654 | return $page; |
| 655 | 655 | } |
| 656 | 656 | // eval $page et affecte $res |
| 657 | - include _ROOT_RESTREINT . "public/evaluer_page.php"; |
|
| 657 | + include _ROOT_RESTREINT."public/evaluer_page.php"; |
|
| 658 | 658 | |
| 659 | 659 | // Lever un drapeau (global) si le fond utilise #SESSION |
| 660 | 660 | // a destination de public/parametrer |
@@ -717,14 +717,14 @@ discard block |
||
| 717 | 717 | if (($pos = strpos($head, '<head>')) !== false) { |
| 718 | 718 | $head = substr_replace($head, $bbase, $pos + 6, 0); |
| 719 | 719 | } elseif (preg_match(",<head[^>]*>,i", $head, $r)) { |
| 720 | - $head = str_replace($r[0], $r[0] . $bbase, $head); |
|
| 720 | + $head = str_replace($r[0], $r[0].$bbase, $head); |
|
| 721 | 721 | } |
| 722 | - $texte = $head . substr($texte, $poshead); |
|
| 722 | + $texte = $head.substr($texte, $poshead); |
|
| 723 | 723 | // gerer les ancres |
| 724 | 724 | $base = $_SERVER['REQUEST_URI']; |
| 725 | 725 | // pas de guillemets ni < dans l'URL qu'on insere dans le HTML |
| 726 | - if (strpos($base,"'") or strpos($base,'"') or strpos($base,'<')) { |
|
| 727 | - $base = str_replace(array("'",'"','<'),array("%27",'%22','%3C'), $base); |
|
| 726 | + if (strpos($base, "'") or strpos($base, '"') or strpos($base, '<')) { |
|
| 727 | + $base = str_replace(array("'", '"', '<'), array("%27", '%22', '%3C'), $base); |
|
| 728 | 728 | } |
| 729 | 729 | if (strpos($texte, "href='#") !== false) { |
| 730 | 730 | $texte = str_replace("href='#", "href='$base#", $texte); |
@@ -471,9 +471,11 @@ discard block |
||
| 471 | 471 | $contexte[$var] = $val; |
| 472 | 472 | } else { |
| 473 | 473 | $args = explode('=', $val); |
| 474 | - if (count($args) >= 2) // Flashvars=arg1=machin&arg2=truc genere plus de deux args |
|
| 474 | + if (count($args) >= 2) { |
|
| 475 | + // Flashvars=arg1=machin&arg2=truc genere plus de deux args |
|
| 475 | 476 | { |
| 476 | 477 | $contexte[trim($args[0])] = substr($val, strlen($args[0]) + 1); |
| 478 | + } |
|
| 477 | 479 | } else // notation abregee |
| 478 | 480 | { |
| 479 | 481 | $contexte[trim($val)] = trim($val); |
@@ -676,8 +678,8 @@ discard block |
||
| 676 | 678 | function page_base_href(&$texte) { |
| 677 | 679 | static $set_html_base = null; |
| 678 | 680 | if (is_null($set_html_base)) { |
| 679 | - if (!defined('_SET_HTML_BASE')) |
|
| 680 | - // si la profondeur est superieure a 1 |
|
| 681 | + if (!defined('_SET_HTML_BASE')) { |
|
| 682 | + // si la profondeur est superieure a 1 |
|
| 681 | 683 | // est que ce n'est pas une url page ni une url action |
| 682 | 684 | // activer par defaut |
| 683 | 685 | { |
@@ -685,6 +687,7 @@ discard block |
||
| 685 | 687 | $GLOBALS['profondeur_url'] >= (_DIR_RESTREINT ? 1 : 2) |
| 686 | 688 | and _request(_SPIP_PAGE) !== 'login' |
| 687 | 689 | and !_request('action')) ? true : false); |
| 690 | + } |
|
| 688 | 691 | } else { |
| 689 | 692 | $set_html_base = _SET_HTML_BASE; |
| 690 | 693 | } |
@@ -742,8 +745,10 @@ discard block |
||
| 742 | 745 | // et demarrent par X-Spip-... |
| 743 | 746 | // https://code.spip.net/@envoyer_entetes |
| 744 | 747 | function envoyer_entetes($entetes) { |
| 745 | - foreach ($entetes as $k => $v) # if (strncmp($k, 'X-Spip-', 7)) |
|
| 748 | + foreach ($entetes as $k => $v) { |
|
| 749 | + # if (strncmp($k, 'X-Spip-', 7)) |
|
| 746 | 750 | { |
| 747 | 751 | @header(strlen($v) ? "$k: $v" : $k); |
| 748 | 752 | } |
| 753 | + } |
|
| 749 | 754 | } |
@@ -467,7 +467,7 @@ |
||
| 467 | 467 | * |
| 468 | 468 | * @param string|null $arg |
| 469 | 469 | * @param string $operation |
| 470 | - * @return mixed |
|
| 470 | + * @return null|string |
|
| 471 | 471 | */ |
| 472 | 472 | function arguments_balise_dyn_depuis_modele($arg, $operation = 'set') { |
| 473 | 473 | static $balise_dyn_appellee_par_modele = null; |
@@ -20,155 +20,155 @@ discard block |
||
| 20 | 20 | **/ |
| 21 | 21 | |
| 22 | 22 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 23 | - return; |
|
| 23 | + return; |
|
| 24 | 24 | } |
| 25 | 25 | |
| 26 | 26 | // En cas de modification, il faut aussi actualiser la regexp de nettoyer_uri_var() dans inc/utils.php |
| 27 | 27 | if (!defined('_CONTEXTE_IGNORE_VARIABLES')) { |
| 28 | - define('_CONTEXTE_IGNORE_VARIABLES', "/(^var_|^PHPSESSID$|^fbclid$|^utm_)/"); |
|
| 28 | + define('_CONTEXTE_IGNORE_VARIABLES', "/(^var_|^PHPSESSID$|^fbclid$|^utm_)/"); |
|
| 29 | 29 | } |
| 30 | 30 | |
| 31 | 31 | // https://code.spip.net/@assembler |
| 32 | 32 | function assembler($fond, $connect = '') { |
| 33 | 33 | |
| 34 | - // flag_preserver est modifie ici, et utilise en globale |
|
| 35 | - // use_cache sert a informer le bouton d'admin pr savoir s'il met un * |
|
| 36 | - // contexte est utilise en globale dans le formulaire d'admin |
|
| 37 | - |
|
| 38 | - $GLOBALS['contexte'] = calculer_contexte(); |
|
| 39 | - $page = array('contexte_implicite' => calculer_contexte_implicite()); |
|
| 40 | - $page['contexte_implicite']['cache'] = $fond . preg_replace(',\.[a-zA-Z0-9]*$,', '', |
|
| 41 | - preg_replace('/[?].*$/', '', $GLOBALS['REQUEST_URI'])); |
|
| 42 | - // Cette fonction est utilisee deux fois |
|
| 43 | - $cacher = charger_fonction('cacher', 'public', true); |
|
| 44 | - // Les quatre derniers parametres sont modifies par la fonction: |
|
| 45 | - // emplacement, validite, et, s'il est valide, contenu & age |
|
| 46 | - if ($cacher) { |
|
| 47 | - $res = $cacher($GLOBALS['contexte'], $GLOBALS['use_cache'], $chemin_cache, $page, $lastmodified); |
|
| 48 | - } else { |
|
| 49 | - $GLOBALS['use_cache'] = -1; |
|
| 50 | - } |
|
| 51 | - // Si un resultat est retourne, c'est un message d'impossibilite |
|
| 52 | - if ($res) { |
|
| 53 | - return array('texte' => $res); |
|
| 54 | - } |
|
| 55 | - |
|
| 56 | - if (!$chemin_cache || !$lastmodified) { |
|
| 57 | - $lastmodified = time(); |
|
| 58 | - } |
|
| 59 | - |
|
| 60 | - $headers_only = ($_SERVER['REQUEST_METHOD'] == 'HEAD'); |
|
| 61 | - $calculer_page = true; |
|
| 62 | - |
|
| 63 | - // Pour les pages non-dynamiques (indiquees par #CACHE{duree,cache-client}) |
|
| 64 | - // une perennite valide a meme reponse qu'une requete HEAD (par defaut les |
|
| 65 | - // pages sont dynamiques) |
|
| 66 | - if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) |
|
| 67 | - and (!defined('_VAR_MODE') or !_VAR_MODE) |
|
| 68 | - and $chemin_cache |
|
| 69 | - and isset($page['entetes']) |
|
| 70 | - and isset($page['entetes']['Cache-Control']) |
|
| 71 | - and strstr($page['entetes']['Cache-Control'], 'max-age=') |
|
| 72 | - and !strstr($_SERVER['SERVER_SOFTWARE'], 'IIS/') |
|
| 73 | - ) { |
|
| 74 | - $since = preg_replace('/;.*/', '', |
|
| 75 | - $_SERVER['HTTP_IF_MODIFIED_SINCE']); |
|
| 76 | - $since = str_replace('GMT', '', $since); |
|
| 77 | - if (trim($since) == gmdate("D, d M Y H:i:s", $lastmodified)) { |
|
| 78 | - $page['status'] = 304; |
|
| 79 | - $headers_only = true; |
|
| 80 | - $calculer_page = false; |
|
| 81 | - } |
|
| 82 | - } |
|
| 83 | - |
|
| 84 | - // Si requete HEAD ou Last-modified compatible, ignorer le texte |
|
| 85 | - // et pas de content-type (pour contrer le bouton admin de inc-public) |
|
| 86 | - if (!$calculer_page) { |
|
| 87 | - $page['texte'] = ""; |
|
| 88 | - } else { |
|
| 89 | - // si la page est prise dans le cache |
|
| 90 | - if (!$GLOBALS['use_cache']) { |
|
| 91 | - // Informer les boutons d'admin du contexte |
|
| 92 | - // (fourni par urls_decoder_url ci-dessous lors de la mise en cache) |
|
| 93 | - $GLOBALS['contexte'] = $page['contexte']; |
|
| 94 | - |
|
| 95 | - // vider les globales url propres qui ne doivent plus etre utilisees en cas |
|
| 96 | - // d'inversion url => objet |
|
| 97 | - // plus necessaire si on utilise bien la fonction urls_decoder_url |
|
| 98 | - #unset($_SERVER['REDIRECT_url_propre']); |
|
| 99 | - #unset($_ENV['url_propre']); |
|
| 100 | - } else { |
|
| 101 | - // Compat ascendante : |
|
| 102 | - // 1. $contexte est global |
|
| 103 | - // (a evacuer car urls_decoder_url gere ce probleme ?) |
|
| 104 | - // et calculer la page |
|
| 105 | - if (!test_espace_prive()) { |
|
| 106 | - include_spip('inc/urls'); |
|
| 107 | - list($fond, $GLOBALS['contexte'], $url_redirect) = urls_decoder_url(nettoyer_uri(), $fond, $GLOBALS['contexte'], |
|
| 108 | - true); |
|
| 109 | - } |
|
| 110 | - // squelette par defaut |
|
| 111 | - if (!strlen($fond)) { |
|
| 112 | - $fond = 'sommaire'; |
|
| 113 | - } |
|
| 114 | - |
|
| 115 | - // produire la page : peut mettre a jour $lastmodified |
|
| 116 | - $produire_page = charger_fonction('produire_page', 'public'); |
|
| 117 | - $page = $produire_page($fond, $GLOBALS['contexte'], $GLOBALS['use_cache'], $chemin_cache, null, $page, |
|
| 118 | - $lastmodified, $connect); |
|
| 119 | - if ($page === '') { |
|
| 120 | - $erreur = _T('info_erreur_squelette2', |
|
| 121 | - array('fichier' => spip_htmlspecialchars($fond) . '.' . _EXTENSION_SQUELETTES)); |
|
| 122 | - erreur_squelette($erreur); |
|
| 123 | - // eviter des erreurs strictes ensuite sur $page['cle'] en PHP >= 5.4 |
|
| 124 | - $page = array('texte' => '', 'erreur' => $erreur); |
|
| 125 | - } |
|
| 126 | - } |
|
| 127 | - |
|
| 128 | - if ($page and $chemin_cache) { |
|
| 129 | - $page['cache'] = $chemin_cache; |
|
| 130 | - } |
|
| 131 | - |
|
| 132 | - auto_content_type($page); |
|
| 133 | - |
|
| 134 | - $GLOBALS['flag_preserver'] |= headers_sent(); |
|
| 135 | - |
|
| 136 | - // Definir les entetes si ce n'est fait |
|
| 137 | - if (!$GLOBALS['flag_preserver']) { |
|
| 138 | - if ($GLOBALS['flag_ob']) { |
|
| 139 | - // Si la page est vide, produire l'erreur 404 ou message d'erreur pour les inclusions |
|
| 140 | - if (trim($page['texte']) === '' |
|
| 141 | - and _VAR_MODE != 'debug' |
|
| 142 | - and !isset($page['entetes']['Location']) // cette page realise une redirection, donc pas d'erreur |
|
| 143 | - ) { |
|
| 144 | - $GLOBALS['contexte']['fond_erreur'] = $fond; |
|
| 145 | - $page = message_page_indisponible($page, $GLOBALS['contexte']); |
|
| 146 | - } |
|
| 147 | - // pas de cache client en mode 'observation' |
|
| 148 | - if (defined('_VAR_MODE') and _VAR_MODE) { |
|
| 149 | - $page['entetes']["Cache-Control"] = "no-cache,must-revalidate"; |
|
| 150 | - $page['entetes']["Pragma"] = "no-cache"; |
|
| 151 | - } |
|
| 152 | - } |
|
| 153 | - } |
|
| 154 | - } |
|
| 155 | - |
|
| 156 | - // Entete Last-Modified: |
|
| 157 | - // eviter d'etre incoherent en envoyant un lastmodified identique |
|
| 158 | - // a celui qu'on a refuse d'honorer plus haut (cf. #655) |
|
| 159 | - if ($lastmodified |
|
| 160 | - and !isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) |
|
| 161 | - and !isset($page['entetes']["Last-Modified"]) |
|
| 162 | - ) { |
|
| 163 | - $page['entetes']["Last-Modified"] = gmdate("D, d M Y H:i:s", $lastmodified) . " GMT"; |
|
| 164 | - } |
|
| 165 | - |
|
| 166 | - // fermer la connexion apres les headers si requete HEAD |
|
| 167 | - if ($headers_only) { |
|
| 168 | - $page['entetes']["Connection"] = "close"; |
|
| 169 | - } |
|
| 170 | - |
|
| 171 | - return $page; |
|
| 34 | + // flag_preserver est modifie ici, et utilise en globale |
|
| 35 | + // use_cache sert a informer le bouton d'admin pr savoir s'il met un * |
|
| 36 | + // contexte est utilise en globale dans le formulaire d'admin |
|
| 37 | + |
|
| 38 | + $GLOBALS['contexte'] = calculer_contexte(); |
|
| 39 | + $page = array('contexte_implicite' => calculer_contexte_implicite()); |
|
| 40 | + $page['contexte_implicite']['cache'] = $fond . preg_replace(',\.[a-zA-Z0-9]*$,', '', |
|
| 41 | + preg_replace('/[?].*$/', '', $GLOBALS['REQUEST_URI'])); |
|
| 42 | + // Cette fonction est utilisee deux fois |
|
| 43 | + $cacher = charger_fonction('cacher', 'public', true); |
|
| 44 | + // Les quatre derniers parametres sont modifies par la fonction: |
|
| 45 | + // emplacement, validite, et, s'il est valide, contenu & age |
|
| 46 | + if ($cacher) { |
|
| 47 | + $res = $cacher($GLOBALS['contexte'], $GLOBALS['use_cache'], $chemin_cache, $page, $lastmodified); |
|
| 48 | + } else { |
|
| 49 | + $GLOBALS['use_cache'] = -1; |
|
| 50 | + } |
|
| 51 | + // Si un resultat est retourne, c'est un message d'impossibilite |
|
| 52 | + if ($res) { |
|
| 53 | + return array('texte' => $res); |
|
| 54 | + } |
|
| 55 | + |
|
| 56 | + if (!$chemin_cache || !$lastmodified) { |
|
| 57 | + $lastmodified = time(); |
|
| 58 | + } |
|
| 59 | + |
|
| 60 | + $headers_only = ($_SERVER['REQUEST_METHOD'] == 'HEAD'); |
|
| 61 | + $calculer_page = true; |
|
| 62 | + |
|
| 63 | + // Pour les pages non-dynamiques (indiquees par #CACHE{duree,cache-client}) |
|
| 64 | + // une perennite valide a meme reponse qu'une requete HEAD (par defaut les |
|
| 65 | + // pages sont dynamiques) |
|
| 66 | + if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) |
|
| 67 | + and (!defined('_VAR_MODE') or !_VAR_MODE) |
|
| 68 | + and $chemin_cache |
|
| 69 | + and isset($page['entetes']) |
|
| 70 | + and isset($page['entetes']['Cache-Control']) |
|
| 71 | + and strstr($page['entetes']['Cache-Control'], 'max-age=') |
|
| 72 | + and !strstr($_SERVER['SERVER_SOFTWARE'], 'IIS/') |
|
| 73 | + ) { |
|
| 74 | + $since = preg_replace('/;.*/', '', |
|
| 75 | + $_SERVER['HTTP_IF_MODIFIED_SINCE']); |
|
| 76 | + $since = str_replace('GMT', '', $since); |
|
| 77 | + if (trim($since) == gmdate("D, d M Y H:i:s", $lastmodified)) { |
|
| 78 | + $page['status'] = 304; |
|
| 79 | + $headers_only = true; |
|
| 80 | + $calculer_page = false; |
|
| 81 | + } |
|
| 82 | + } |
|
| 83 | + |
|
| 84 | + // Si requete HEAD ou Last-modified compatible, ignorer le texte |
|
| 85 | + // et pas de content-type (pour contrer le bouton admin de inc-public) |
|
| 86 | + if (!$calculer_page) { |
|
| 87 | + $page['texte'] = ""; |
|
| 88 | + } else { |
|
| 89 | + // si la page est prise dans le cache |
|
| 90 | + if (!$GLOBALS['use_cache']) { |
|
| 91 | + // Informer les boutons d'admin du contexte |
|
| 92 | + // (fourni par urls_decoder_url ci-dessous lors de la mise en cache) |
|
| 93 | + $GLOBALS['contexte'] = $page['contexte']; |
|
| 94 | + |
|
| 95 | + // vider les globales url propres qui ne doivent plus etre utilisees en cas |
|
| 96 | + // d'inversion url => objet |
|
| 97 | + // plus necessaire si on utilise bien la fonction urls_decoder_url |
|
| 98 | + #unset($_SERVER['REDIRECT_url_propre']); |
|
| 99 | + #unset($_ENV['url_propre']); |
|
| 100 | + } else { |
|
| 101 | + // Compat ascendante : |
|
| 102 | + // 1. $contexte est global |
|
| 103 | + // (a evacuer car urls_decoder_url gere ce probleme ?) |
|
| 104 | + // et calculer la page |
|
| 105 | + if (!test_espace_prive()) { |
|
| 106 | + include_spip('inc/urls'); |
|
| 107 | + list($fond, $GLOBALS['contexte'], $url_redirect) = urls_decoder_url(nettoyer_uri(), $fond, $GLOBALS['contexte'], |
|
| 108 | + true); |
|
| 109 | + } |
|
| 110 | + // squelette par defaut |
|
| 111 | + if (!strlen($fond)) { |
|
| 112 | + $fond = 'sommaire'; |
|
| 113 | + } |
|
| 114 | + |
|
| 115 | + // produire la page : peut mettre a jour $lastmodified |
|
| 116 | + $produire_page = charger_fonction('produire_page', 'public'); |
|
| 117 | + $page = $produire_page($fond, $GLOBALS['contexte'], $GLOBALS['use_cache'], $chemin_cache, null, $page, |
|
| 118 | + $lastmodified, $connect); |
|
| 119 | + if ($page === '') { |
|
| 120 | + $erreur = _T('info_erreur_squelette2', |
|
| 121 | + array('fichier' => spip_htmlspecialchars($fond) . '.' . _EXTENSION_SQUELETTES)); |
|
| 122 | + erreur_squelette($erreur); |
|
| 123 | + // eviter des erreurs strictes ensuite sur $page['cle'] en PHP >= 5.4 |
|
| 124 | + $page = array('texte' => '', 'erreur' => $erreur); |
|
| 125 | + } |
|
| 126 | + } |
|
| 127 | + |
|
| 128 | + if ($page and $chemin_cache) { |
|
| 129 | + $page['cache'] = $chemin_cache; |
|
| 130 | + } |
|
| 131 | + |
|
| 132 | + auto_content_type($page); |
|
| 133 | + |
|
| 134 | + $GLOBALS['flag_preserver'] |= headers_sent(); |
|
| 135 | + |
|
| 136 | + // Definir les entetes si ce n'est fait |
|
| 137 | + if (!$GLOBALS['flag_preserver']) { |
|
| 138 | + if ($GLOBALS['flag_ob']) { |
|
| 139 | + // Si la page est vide, produire l'erreur 404 ou message d'erreur pour les inclusions |
|
| 140 | + if (trim($page['texte']) === '' |
|
| 141 | + and _VAR_MODE != 'debug' |
|
| 142 | + and !isset($page['entetes']['Location']) // cette page realise une redirection, donc pas d'erreur |
|
| 143 | + ) { |
|
| 144 | + $GLOBALS['contexte']['fond_erreur'] = $fond; |
|
| 145 | + $page = message_page_indisponible($page, $GLOBALS['contexte']); |
|
| 146 | + } |
|
| 147 | + // pas de cache client en mode 'observation' |
|
| 148 | + if (defined('_VAR_MODE') and _VAR_MODE) { |
|
| 149 | + $page['entetes']["Cache-Control"] = "no-cache,must-revalidate"; |
|
| 150 | + $page['entetes']["Pragma"] = "no-cache"; |
|
| 151 | + } |
|
| 152 | + } |
|
| 153 | + } |
|
| 154 | + } |
|
| 155 | + |
|
| 156 | + // Entete Last-Modified: |
|
| 157 | + // eviter d'etre incoherent en envoyant un lastmodified identique |
|
| 158 | + // a celui qu'on a refuse d'honorer plus haut (cf. #655) |
|
| 159 | + if ($lastmodified |
|
| 160 | + and !isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) |
|
| 161 | + and !isset($page['entetes']["Last-Modified"]) |
|
| 162 | + ) { |
|
| 163 | + $page['entetes']["Last-Modified"] = gmdate("D, d M Y H:i:s", $lastmodified) . " GMT"; |
|
| 164 | + } |
|
| 165 | + |
|
| 166 | + // fermer la connexion apres les headers si requete HEAD |
|
| 167 | + if ($headers_only) { |
|
| 168 | + $page['entetes']["Connection"] = "close"; |
|
| 169 | + } |
|
| 170 | + |
|
| 171 | + return $page; |
|
| 172 | 172 | } |
| 173 | 173 | |
| 174 | 174 | /** |
@@ -187,19 +187,19 @@ discard block |
||
| 187 | 187 | */ |
| 188 | 188 | function calculer_contexte() { |
| 189 | 189 | |
| 190 | - $contexte = array(); |
|
| 191 | - foreach ($_GET as $var => $val) { |
|
| 192 | - if (!preg_match(_CONTEXTE_IGNORE_VARIABLES, $var)) { |
|
| 193 | - $contexte[$var] = $val; |
|
| 194 | - } |
|
| 195 | - } |
|
| 196 | - foreach ($_POST as $var => $val) { |
|
| 197 | - if (!preg_match(_CONTEXTE_IGNORE_VARIABLES, $var)) { |
|
| 198 | - $contexte[$var] = $val; |
|
| 199 | - } |
|
| 200 | - } |
|
| 201 | - |
|
| 202 | - return $contexte; |
|
| 190 | + $contexte = array(); |
|
| 191 | + foreach ($_GET as $var => $val) { |
|
| 192 | + if (!preg_match(_CONTEXTE_IGNORE_VARIABLES, $var)) { |
|
| 193 | + $contexte[$var] = $val; |
|
| 194 | + } |
|
| 195 | + } |
|
| 196 | + foreach ($_POST as $var => $val) { |
|
| 197 | + if (!preg_match(_CONTEXTE_IGNORE_VARIABLES, $var)) { |
|
| 198 | + $contexte[$var] = $val; |
|
| 199 | + } |
|
| 200 | + } |
|
| 201 | + |
|
| 202 | + return $contexte; |
|
| 203 | 203 | } |
| 204 | 204 | |
| 205 | 205 | /** |
@@ -210,25 +210,25 @@ discard block |
||
| 210 | 210 | * @return array |
| 211 | 211 | */ |
| 212 | 212 | function calculer_contexte_implicite() { |
| 213 | - static $notes = null; |
|
| 214 | - if (is_null($notes)) { |
|
| 215 | - $notes = charger_fonction('notes', 'inc', true); |
|
| 216 | - } |
|
| 217 | - $contexte_implicite = array( |
|
| 218 | - 'squelettes' => $GLOBALS['dossier_squelettes'], // devrait etre 'chemin' => $GLOBALS['path_sig'], ? |
|
| 219 | - 'host' => (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : null), |
|
| 220 | - 'https' => (isset($_SERVER['HTTPS']) ? $_SERVER['HTTPS'] : ''), |
|
| 221 | - 'espace' => test_espace_prive(), |
|
| 222 | - 'marqueur' => (isset($GLOBALS['marqueur']) ? $GLOBALS['marqueur'] : ''), |
|
| 223 | - 'marqueur_skel' => (isset($GLOBALS['marqueur_skel']) ? $GLOBALS['marqueur_skel'] : ''), |
|
| 224 | - 'notes' => $notes ? $notes('', 'contexter_cache') : '', |
|
| 225 | - 'spip_version_code' => $GLOBALS['spip_version_code'], |
|
| 226 | - ); |
|
| 227 | - if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) { |
|
| 228 | - $contexte_implicite['host'] .= "|" . $_SERVER['HTTP_X_FORWARDED_HOST']; |
|
| 229 | - } |
|
| 230 | - |
|
| 231 | - return $contexte_implicite; |
|
| 213 | + static $notes = null; |
|
| 214 | + if (is_null($notes)) { |
|
| 215 | + $notes = charger_fonction('notes', 'inc', true); |
|
| 216 | + } |
|
| 217 | + $contexte_implicite = array( |
|
| 218 | + 'squelettes' => $GLOBALS['dossier_squelettes'], // devrait etre 'chemin' => $GLOBALS['path_sig'], ? |
|
| 219 | + 'host' => (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : null), |
|
| 220 | + 'https' => (isset($_SERVER['HTTPS']) ? $_SERVER['HTTPS'] : ''), |
|
| 221 | + 'espace' => test_espace_prive(), |
|
| 222 | + 'marqueur' => (isset($GLOBALS['marqueur']) ? $GLOBALS['marqueur'] : ''), |
|
| 223 | + 'marqueur_skel' => (isset($GLOBALS['marqueur_skel']) ? $GLOBALS['marqueur_skel'] : ''), |
|
| 224 | + 'notes' => $notes ? $notes('', 'contexter_cache') : '', |
|
| 225 | + 'spip_version_code' => $GLOBALS['spip_version_code'], |
|
| 226 | + ); |
|
| 227 | + if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) { |
|
| 228 | + $contexte_implicite['host'] .= "|" . $_SERVER['HTTP_X_FORWARDED_HOST']; |
|
| 229 | + } |
|
| 230 | + |
|
| 231 | + return $contexte_implicite; |
|
| 232 | 232 | } |
| 233 | 233 | |
| 234 | 234 | // |
@@ -238,50 +238,50 @@ discard block |
||
| 238 | 238 | // https://code.spip.net/@auto_content_type |
| 239 | 239 | function auto_content_type($page) { |
| 240 | 240 | |
| 241 | - if (!isset($GLOBALS['flag_preserver'])) { |
|
| 242 | - $GLOBALS['flag_preserver'] = ($page && preg_match("/header\s*\(\s*.content\-type:/isx", |
|
| 243 | - $page['texte']) || (isset($page['entetes']['Content-Type']))); |
|
| 244 | - } |
|
| 241 | + if (!isset($GLOBALS['flag_preserver'])) { |
|
| 242 | + $GLOBALS['flag_preserver'] = ($page && preg_match("/header\s*\(\s*.content\-type:/isx", |
|
| 243 | + $page['texte']) || (isset($page['entetes']['Content-Type']))); |
|
| 244 | + } |
|
| 245 | 245 | } |
| 246 | 246 | |
| 247 | 247 | // https://code.spip.net/@inclure_page |
| 248 | 248 | function inclure_page($fond, $contexte, $connect = '') { |
| 249 | - static $cacher, $produire_page; |
|
| 250 | - |
|
| 251 | - // enlever le fond de contexte inclus car sinon il prend la main |
|
| 252 | - // dans les sous inclusions -> boucle infinie d'inclusion identique |
|
| 253 | - // (cette precaution n'est probablement plus utile) |
|
| 254 | - unset($contexte['fond']); |
|
| 255 | - $page = array('contexte_implicite' => calculer_contexte_implicite()); |
|
| 256 | - $page['contexte_implicite']['cache'] = $fond; |
|
| 257 | - if (is_null($cacher)) { |
|
| 258 | - $cacher = charger_fonction('cacher', 'public', true); |
|
| 259 | - } |
|
| 260 | - // Les quatre derniers parametres sont modifies par la fonction: |
|
| 261 | - // emplacement, validite, et, s'il est valide, contenu & age |
|
| 262 | - if ($cacher) { |
|
| 263 | - $res = $cacher($contexte, $use_cache, $chemin_cache, $page, $lastinclude); |
|
| 264 | - } else { |
|
| 265 | - $use_cache = -1; |
|
| 266 | - } |
|
| 267 | - // $res = message d'erreur : on sort de la |
|
| 268 | - if ($res) { |
|
| 269 | - return array('texte' => $res); |
|
| 270 | - } |
|
| 271 | - |
|
| 272 | - // Si use_cache ne vaut pas 0, la page doit etre calculee |
|
| 273 | - // produire la page : peut mettre a jour $lastinclude |
|
| 274 | - // le contexte_cache envoye a cacher() a ete conserve et est passe a produire |
|
| 275 | - if ($use_cache) { |
|
| 276 | - if (is_null($produire_page)) { |
|
| 277 | - $produire_page = charger_fonction('produire_page', 'public'); |
|
| 278 | - } |
|
| 279 | - $page = $produire_page($fond, $contexte, $use_cache, $chemin_cache, $contexte, $page, $lastinclude, $connect); |
|
| 280 | - } |
|
| 281 | - // dans tous les cas, mettre a jour $GLOBALS['lastmodified'] |
|
| 282 | - $GLOBALS['lastmodified'] = max((isset($GLOBALS['lastmodified']) ? $GLOBALS['lastmodified'] : 0), $lastinclude); |
|
| 283 | - |
|
| 284 | - return $page; |
|
| 249 | + static $cacher, $produire_page; |
|
| 250 | + |
|
| 251 | + // enlever le fond de contexte inclus car sinon il prend la main |
|
| 252 | + // dans les sous inclusions -> boucle infinie d'inclusion identique |
|
| 253 | + // (cette precaution n'est probablement plus utile) |
|
| 254 | + unset($contexte['fond']); |
|
| 255 | + $page = array('contexte_implicite' => calculer_contexte_implicite()); |
|
| 256 | + $page['contexte_implicite']['cache'] = $fond; |
|
| 257 | + if (is_null($cacher)) { |
|
| 258 | + $cacher = charger_fonction('cacher', 'public', true); |
|
| 259 | + } |
|
| 260 | + // Les quatre derniers parametres sont modifies par la fonction: |
|
| 261 | + // emplacement, validite, et, s'il est valide, contenu & age |
|
| 262 | + if ($cacher) { |
|
| 263 | + $res = $cacher($contexte, $use_cache, $chemin_cache, $page, $lastinclude); |
|
| 264 | + } else { |
|
| 265 | + $use_cache = -1; |
|
| 266 | + } |
|
| 267 | + // $res = message d'erreur : on sort de la |
|
| 268 | + if ($res) { |
|
| 269 | + return array('texte' => $res); |
|
| 270 | + } |
|
| 271 | + |
|
| 272 | + // Si use_cache ne vaut pas 0, la page doit etre calculee |
|
| 273 | + // produire la page : peut mettre a jour $lastinclude |
|
| 274 | + // le contexte_cache envoye a cacher() a ete conserve et est passe a produire |
|
| 275 | + if ($use_cache) { |
|
| 276 | + if (is_null($produire_page)) { |
|
| 277 | + $produire_page = charger_fonction('produire_page', 'public'); |
|
| 278 | + } |
|
| 279 | + $page = $produire_page($fond, $contexte, $use_cache, $chemin_cache, $contexte, $page, $lastinclude, $connect); |
|
| 280 | + } |
|
| 281 | + // dans tous les cas, mettre a jour $GLOBALS['lastmodified'] |
|
| 282 | + $GLOBALS['lastmodified'] = max((isset($GLOBALS['lastmodified']) ? $GLOBALS['lastmodified'] : 0), $lastinclude); |
|
| 283 | + |
|
| 284 | + return $page; |
|
| 285 | 285 | } |
| 286 | 286 | |
| 287 | 287 | /** |
@@ -299,40 +299,40 @@ discard block |
||
| 299 | 299 | * @return array |
| 300 | 300 | */ |
| 301 | 301 | function public_produire_page_dist( |
| 302 | - $fond, |
|
| 303 | - $contexte, |
|
| 304 | - $use_cache, |
|
| 305 | - $chemin_cache, |
|
| 306 | - $contexte_cache, |
|
| 307 | - &$page, |
|
| 308 | - &$lastinclude, |
|
| 309 | - $connect = '' |
|
| 302 | + $fond, |
|
| 303 | + $contexte, |
|
| 304 | + $use_cache, |
|
| 305 | + $chemin_cache, |
|
| 306 | + $contexte_cache, |
|
| 307 | + &$page, |
|
| 308 | + &$lastinclude, |
|
| 309 | + $connect = '' |
|
| 310 | 310 | ) { |
| 311 | - static $parametrer, $cacher; |
|
| 312 | - if (!$parametrer) { |
|
| 313 | - $parametrer = charger_fonction('parametrer', 'public'); |
|
| 314 | - } |
|
| 315 | - $page = $parametrer($fond, $contexte, $chemin_cache, $connect); |
|
| 316 | - // et on l'enregistre sur le disque |
|
| 317 | - if ($chemin_cache |
|
| 318 | - and $use_cache > -1 |
|
| 319 | - and is_array($page) |
|
| 320 | - and count($page) |
|
| 321 | - and isset($page['entetes']['X-Spip-Cache']) |
|
| 322 | - and $page['entetes']['X-Spip-Cache'] > 0 |
|
| 323 | - ) { |
|
| 324 | - if (is_null($cacher)) { |
|
| 325 | - $cacher = charger_fonction('cacher', 'public', true); |
|
| 326 | - } |
|
| 327 | - $lastinclude = time(); |
|
| 328 | - if ($cacher) { |
|
| 329 | - $cacher($contexte_cache, $use_cache, $chemin_cache, $page, $lastinclude); |
|
| 330 | - } else { |
|
| 331 | - $use_cache = -1; |
|
| 332 | - } |
|
| 333 | - } |
|
| 334 | - |
|
| 335 | - return $page; |
|
| 311 | + static $parametrer, $cacher; |
|
| 312 | + if (!$parametrer) { |
|
| 313 | + $parametrer = charger_fonction('parametrer', 'public'); |
|
| 314 | + } |
|
| 315 | + $page = $parametrer($fond, $contexte, $chemin_cache, $connect); |
|
| 316 | + // et on l'enregistre sur le disque |
|
| 317 | + if ($chemin_cache |
|
| 318 | + and $use_cache > -1 |
|
| 319 | + and is_array($page) |
|
| 320 | + and count($page) |
|
| 321 | + and isset($page['entetes']['X-Spip-Cache']) |
|
| 322 | + and $page['entetes']['X-Spip-Cache'] > 0 |
|
| 323 | + ) { |
|
| 324 | + if (is_null($cacher)) { |
|
| 325 | + $cacher = charger_fonction('cacher', 'public', true); |
|
| 326 | + } |
|
| 327 | + $lastinclude = time(); |
|
| 328 | + if ($cacher) { |
|
| 329 | + $cacher($contexte_cache, $use_cache, $chemin_cache, $page, $lastinclude); |
|
| 330 | + } else { |
|
| 331 | + $use_cache = -1; |
|
| 332 | + } |
|
| 333 | + } |
|
| 334 | + |
|
| 335 | + return $page; |
|
| 336 | 336 | } |
| 337 | 337 | |
| 338 | 338 | // Fonction inseree par le compilateur dans le code compile. |
@@ -346,14 +346,14 @@ discard block |
||
| 346 | 346 | // 4: langue |
| 347 | 347 | |
| 348 | 348 | function inserer_balise_dynamique($contexte_exec, $contexte_compil) { |
| 349 | - arguments_balise_dyn_depuis_modele(null, 'reset'); |
|
| 350 | - |
|
| 351 | - if (!is_array($contexte_exec)) { |
|
| 352 | - echo $contexte_exec; |
|
| 353 | - } // message d'erreur etc |
|
| 354 | - else { |
|
| 355 | - inclure_balise_dynamique($contexte_exec, true, $contexte_compil); |
|
| 356 | - } |
|
| 349 | + arguments_balise_dyn_depuis_modele(null, 'reset'); |
|
| 350 | + |
|
| 351 | + if (!is_array($contexte_exec)) { |
|
| 352 | + echo $contexte_exec; |
|
| 353 | + } // message d'erreur etc |
|
| 354 | + else { |
|
| 355 | + inclure_balise_dynamique($contexte_exec, true, $contexte_compil); |
|
| 356 | + } |
|
| 357 | 357 | } |
| 358 | 358 | |
| 359 | 359 | /** |
@@ -368,97 +368,97 @@ discard block |
||
| 368 | 368 | * @return string |
| 369 | 369 | */ |
| 370 | 370 | function inclure_balise_dynamique($texte, $echo = true, $contexte_compil = array()) { |
| 371 | - if (is_array($texte)) { |
|
| 372 | - |
|
| 373 | - list($fond, $delainc, $contexte_inclus) = $texte; |
|
| 374 | - |
|
| 375 | - // delais a l'ancienne, c'est pratiquement mort |
|
| 376 | - $d = isset($GLOBALS['delais']) ? $GLOBALS['delais'] : null; |
|
| 377 | - $GLOBALS['delais'] = $delainc; |
|
| 378 | - |
|
| 379 | - $page = recuperer_fond($fond, $contexte_inclus, |
|
| 380 | - array('trim' => false, 'raw' => true, 'compil' => $contexte_compil)); |
|
| 381 | - |
|
| 382 | - $texte = $page['texte']; |
|
| 383 | - |
|
| 384 | - $GLOBALS['delais'] = $d; |
|
| 385 | - // Faire remonter les entetes |
|
| 386 | - if (is_array($page['entetes'])) { |
|
| 387 | - // mais pas toutes |
|
| 388 | - unset($page['entetes']['X-Spip-Cache']); |
|
| 389 | - unset($page['entetes']['Content-Type']); |
|
| 390 | - if (isset($GLOBALS['page']) and is_array($GLOBALS['page'])) { |
|
| 391 | - if (!is_array($GLOBALS['page']['entetes'])) { |
|
| 392 | - $GLOBALS['page']['entetes'] = array(); |
|
| 393 | - } |
|
| 394 | - $GLOBALS['page']['entetes'] = |
|
| 395 | - array_merge($GLOBALS['page']['entetes'], $page['entetes']); |
|
| 396 | - } |
|
| 397 | - } |
|
| 398 | - // _pipelines au pluriel array('nom_pipeline' => $args...) avec une syntaxe permettant plusieurs pipelines |
|
| 399 | - if (isset($page['contexte']['_pipelines']) |
|
| 400 | - and is_array($page['contexte']['_pipelines']) |
|
| 401 | - and count($page['contexte']['_pipelines']) |
|
| 402 | - ) { |
|
| 403 | - foreach ($page['contexte']['_pipelines'] as $pipe => $args) { |
|
| 404 | - $args['contexte'] = $page['contexte']; |
|
| 405 | - unset($args['contexte']['_pipelines']); // par precaution, meme si le risque de boucle infinie est a priori nul |
|
| 406 | - $texte = pipeline( |
|
| 407 | - $pipe, |
|
| 408 | - array( |
|
| 409 | - 'data' => $texte, |
|
| 410 | - 'args' => $args |
|
| 411 | - ), |
|
| 412 | - false |
|
| 413 | - ); |
|
| 414 | - } |
|
| 415 | - } |
|
| 416 | - } |
|
| 417 | - |
|
| 418 | - if (defined('_VAR_MODE') and _VAR_MODE == 'debug') { |
|
| 419 | - // compatibilite : avant on donnait le numero de ligne ou rien. |
|
| 420 | - $ligne = intval(isset($contexte_compil[3]) ? $contexte_compil[3] : $contexte_compil); |
|
| 421 | - $GLOBALS['debug_objets']['resultat'][$ligne] = $texte; |
|
| 422 | - } |
|
| 423 | - if ($echo) { |
|
| 424 | - echo $texte; |
|
| 425 | - } else { |
|
| 426 | - return $texte; |
|
| 427 | - } |
|
| 371 | + if (is_array($texte)) { |
|
| 372 | + |
|
| 373 | + list($fond, $delainc, $contexte_inclus) = $texte; |
|
| 374 | + |
|
| 375 | + // delais a l'ancienne, c'est pratiquement mort |
|
| 376 | + $d = isset($GLOBALS['delais']) ? $GLOBALS['delais'] : null; |
|
| 377 | + $GLOBALS['delais'] = $delainc; |
|
| 378 | + |
|
| 379 | + $page = recuperer_fond($fond, $contexte_inclus, |
|
| 380 | + array('trim' => false, 'raw' => true, 'compil' => $contexte_compil)); |
|
| 381 | + |
|
| 382 | + $texte = $page['texte']; |
|
| 383 | + |
|
| 384 | + $GLOBALS['delais'] = $d; |
|
| 385 | + // Faire remonter les entetes |
|
| 386 | + if (is_array($page['entetes'])) { |
|
| 387 | + // mais pas toutes |
|
| 388 | + unset($page['entetes']['X-Spip-Cache']); |
|
| 389 | + unset($page['entetes']['Content-Type']); |
|
| 390 | + if (isset($GLOBALS['page']) and is_array($GLOBALS['page'])) { |
|
| 391 | + if (!is_array($GLOBALS['page']['entetes'])) { |
|
| 392 | + $GLOBALS['page']['entetes'] = array(); |
|
| 393 | + } |
|
| 394 | + $GLOBALS['page']['entetes'] = |
|
| 395 | + array_merge($GLOBALS['page']['entetes'], $page['entetes']); |
|
| 396 | + } |
|
| 397 | + } |
|
| 398 | + // _pipelines au pluriel array('nom_pipeline' => $args...) avec une syntaxe permettant plusieurs pipelines |
|
| 399 | + if (isset($page['contexte']['_pipelines']) |
|
| 400 | + and is_array($page['contexte']['_pipelines']) |
|
| 401 | + and count($page['contexte']['_pipelines']) |
|
| 402 | + ) { |
|
| 403 | + foreach ($page['contexte']['_pipelines'] as $pipe => $args) { |
|
| 404 | + $args['contexte'] = $page['contexte']; |
|
| 405 | + unset($args['contexte']['_pipelines']); // par precaution, meme si le risque de boucle infinie est a priori nul |
|
| 406 | + $texte = pipeline( |
|
| 407 | + $pipe, |
|
| 408 | + array( |
|
| 409 | + 'data' => $texte, |
|
| 410 | + 'args' => $args |
|
| 411 | + ), |
|
| 412 | + false |
|
| 413 | + ); |
|
| 414 | + } |
|
| 415 | + } |
|
| 416 | + } |
|
| 417 | + |
|
| 418 | + if (defined('_VAR_MODE') and _VAR_MODE == 'debug') { |
|
| 419 | + // compatibilite : avant on donnait le numero de ligne ou rien. |
|
| 420 | + $ligne = intval(isset($contexte_compil[3]) ? $contexte_compil[3] : $contexte_compil); |
|
| 421 | + $GLOBALS['debug_objets']['resultat'][$ligne] = $texte; |
|
| 422 | + } |
|
| 423 | + if ($echo) { |
|
| 424 | + echo $texte; |
|
| 425 | + } else { |
|
| 426 | + return $texte; |
|
| 427 | + } |
|
| 428 | 428 | } |
| 429 | 429 | |
| 430 | 430 | // https://code.spip.net/@message_page_indisponible |
| 431 | 431 | function message_page_indisponible($page, $contexte) { |
| 432 | - static $deja = false; |
|
| 433 | - if ($deja) { |
|
| 434 | - return "erreur"; |
|
| 435 | - } |
|
| 436 | - $codes = array( |
|
| 437 | - '404' => '404 Not Found', |
|
| 438 | - '503' => '503 Service Unavailable', |
|
| 439 | - ); |
|
| 440 | - |
|
| 441 | - $contexte['status'] = ($page !== false) ? '404' : '503'; |
|
| 442 | - $contexte['code'] = $codes[$contexte['status']]; |
|
| 443 | - $contexte['fond'] = '404'; // gere les 2 erreurs |
|
| 444 | - if (!isset($contexte['lang'])) { |
|
| 445 | - include_spip('inc/lang'); |
|
| 446 | - $contexte['lang'] = $GLOBALS['spip_lang']; |
|
| 447 | - } |
|
| 448 | - |
|
| 449 | - $deja = true; |
|
| 450 | - // passer aux plugins qui peuvent decider d'une page d'erreur plus pertinent |
|
| 451 | - // ex restriction d'acces => 401 |
|
| 452 | - $contexte = pipeline('page_indisponible', $contexte); |
|
| 453 | - |
|
| 454 | - // produire la page d'erreur |
|
| 455 | - $page = inclure_page($contexte['fond'], $contexte); |
|
| 456 | - if (!$page) { |
|
| 457 | - $page = inclure_page('404', $contexte); |
|
| 458 | - } |
|
| 459 | - $page['status'] = $contexte['status']; |
|
| 460 | - |
|
| 461 | - return $page; |
|
| 432 | + static $deja = false; |
|
| 433 | + if ($deja) { |
|
| 434 | + return "erreur"; |
|
| 435 | + } |
|
| 436 | + $codes = array( |
|
| 437 | + '404' => '404 Not Found', |
|
| 438 | + '503' => '503 Service Unavailable', |
|
| 439 | + ); |
|
| 440 | + |
|
| 441 | + $contexte['status'] = ($page !== false) ? '404' : '503'; |
|
| 442 | + $contexte['code'] = $codes[$contexte['status']]; |
|
| 443 | + $contexte['fond'] = '404'; // gere les 2 erreurs |
|
| 444 | + if (!isset($contexte['lang'])) { |
|
| 445 | + include_spip('inc/lang'); |
|
| 446 | + $contexte['lang'] = $GLOBALS['spip_lang']; |
|
| 447 | + } |
|
| 448 | + |
|
| 449 | + $deja = true; |
|
| 450 | + // passer aux plugins qui peuvent decider d'une page d'erreur plus pertinent |
|
| 451 | + // ex restriction d'acces => 401 |
|
| 452 | + $contexte = pipeline('page_indisponible', $contexte); |
|
| 453 | + |
|
| 454 | + // produire la page d'erreur |
|
| 455 | + $page = inclure_page($contexte['fond'], $contexte); |
|
| 456 | + if (!$page) { |
|
| 457 | + $page = inclure_page('404', $contexte); |
|
| 458 | + } |
|
| 459 | + $page['status'] = $contexte['status']; |
|
| 460 | + |
|
| 461 | + return $page; |
|
| 462 | 462 | } |
| 463 | 463 | |
| 464 | 464 | /** |
@@ -470,46 +470,46 @@ discard block |
||
| 470 | 470 | * @return mixed |
| 471 | 471 | */ |
| 472 | 472 | function arguments_balise_dyn_depuis_modele($arg, $operation = 'set') { |
| 473 | - static $balise_dyn_appellee_par_modele = null; |
|
| 474 | - switch ($operation) { |
|
| 475 | - case 'read': |
|
| 476 | - return $balise_dyn_appellee_par_modele; |
|
| 477 | - case 'reset': |
|
| 478 | - $balise_dyn_appellee_par_modele = null; |
|
| 479 | - return null; |
|
| 480 | - case 'set': |
|
| 481 | - default: |
|
| 482 | - $balise_dyn_appellee_par_modele = $arg; |
|
| 483 | - return $arg; |
|
| 484 | - } |
|
| 473 | + static $balise_dyn_appellee_par_modele = null; |
|
| 474 | + switch ($operation) { |
|
| 475 | + case 'read': |
|
| 476 | + return $balise_dyn_appellee_par_modele; |
|
| 477 | + case 'reset': |
|
| 478 | + $balise_dyn_appellee_par_modele = null; |
|
| 479 | + return null; |
|
| 480 | + case 'set': |
|
| 481 | + default: |
|
| 482 | + $balise_dyn_appellee_par_modele = $arg; |
|
| 483 | + return $arg; |
|
| 484 | + } |
|
| 485 | 485 | } |
| 486 | 486 | |
| 487 | 487 | // temporairement ici : a mettre dans le futur inc/modeles |
| 488 | 488 | // creer_contexte_de_modele('left', 'autostart=true', ...) renvoie un array() |
| 489 | 489 | // https://code.spip.net/@creer_contexte_de_modele |
| 490 | 490 | function creer_contexte_de_modele($args) { |
| 491 | - $contexte = array(); |
|
| 492 | - foreach ($args as $var => $val) { |
|
| 493 | - if (is_int($var)) { // argument pas formate |
|
| 494 | - if (in_array($val, array('left', 'right', 'center'))) { |
|
| 495 | - $var = 'align'; |
|
| 496 | - $contexte[$var] = $val; |
|
| 497 | - } else { |
|
| 498 | - $args = explode('=', $val); |
|
| 499 | - if (count($args) >= 2) // Flashvars=arg1=machin&arg2=truc genere plus de deux args |
|
| 500 | - { |
|
| 501 | - $contexte[trim($args[0])] = substr($val, strlen($args[0]) + 1); |
|
| 502 | - } else // notation abregee |
|
| 503 | - { |
|
| 504 | - $contexte[trim($val)] = trim($val); |
|
| 505 | - } |
|
| 506 | - } |
|
| 507 | - } else { |
|
| 508 | - $contexte[$var] = $val; |
|
| 509 | - } |
|
| 510 | - } |
|
| 511 | - |
|
| 512 | - return $contexte; |
|
| 491 | + $contexte = array(); |
|
| 492 | + foreach ($args as $var => $val) { |
|
| 493 | + if (is_int($var)) { // argument pas formate |
|
| 494 | + if (in_array($val, array('left', 'right', 'center'))) { |
|
| 495 | + $var = 'align'; |
|
| 496 | + $contexte[$var] = $val; |
|
| 497 | + } else { |
|
| 498 | + $args = explode('=', $val); |
|
| 499 | + if (count($args) >= 2) // Flashvars=arg1=machin&arg2=truc genere plus de deux args |
|
| 500 | + { |
|
| 501 | + $contexte[trim($args[0])] = substr($val, strlen($args[0]) + 1); |
|
| 502 | + } else // notation abregee |
|
| 503 | + { |
|
| 504 | + $contexte[trim($val)] = trim($val); |
|
| 505 | + } |
|
| 506 | + } |
|
| 507 | + } else { |
|
| 508 | + $contexte[$var] = $val; |
|
| 509 | + } |
|
| 510 | + } |
|
| 511 | + |
|
| 512 | + return $contexte; |
|
| 513 | 513 | } |
| 514 | 514 | |
| 515 | 515 | /** |
@@ -524,40 +524,40 @@ discard block |
||
| 524 | 524 | * @return string |
| 525 | 525 | */ |
| 526 | 526 | function styliser_modele($modele, $id, $contexte=null) { |
| 527 | - static $styliseurs = null; |
|
| 528 | - if (is_null($styliseurs)) { |
|
| 529 | - $tables_objet = lister_tables_objets_sql(); |
|
| 530 | - foreach ($tables_objet as $table => $desc) { |
|
| 531 | - if (isset($desc['modeles']) and $desc['modeles'] |
|
| 532 | - and isset($desc['modeles_styliser']) and $desc['modeles_styliser'] |
|
| 533 | - and function_exists($desc['modeles_styliser'])) { |
|
| 534 | - $primary = id_table_objet($table); |
|
| 535 | - foreach ($desc['modeles'] as $m) { |
|
| 536 | - $styliseurs[$m] = ['primary' => $primary, 'callback' => $desc['modeles_styliser']]; |
|
| 537 | - } |
|
| 538 | - } |
|
| 539 | - } |
|
| 540 | - } |
|
| 541 | - |
|
| 542 | - if (isset($styliseurs[$modele])) { |
|
| 543 | - $styliseur = $styliseurs[$modele]['callback']; |
|
| 544 | - if (is_null($id) and $contexte) { |
|
| 545 | - if (isset($contexte['id'])) { |
|
| 546 | - $id = $contexte['id']; |
|
| 547 | - } elseif (isset($contexte[$primary])) { |
|
| 548 | - $id = $contexte[$primary]; |
|
| 549 | - } |
|
| 550 | - } |
|
| 551 | - if (is_null($id)) { |
|
| 552 | - $msg = "modeles/$modele : " . _T('zbug_parametres_inclus_incorrects', array('param' => "id/$primary")); |
|
| 553 | - erreur_squelette($msg); |
|
| 554 | - // on passe id=0 au routeur pour tomber sur le modele par defaut et eviter une seconde erreur sur un modele inexistant |
|
| 555 | - $id = 0; |
|
| 556 | - } |
|
| 557 | - $modele = $styliseur($modele, $id); |
|
| 558 | - } |
|
| 559 | - |
|
| 560 | - return $modele; |
|
| 527 | + static $styliseurs = null; |
|
| 528 | + if (is_null($styliseurs)) { |
|
| 529 | + $tables_objet = lister_tables_objets_sql(); |
|
| 530 | + foreach ($tables_objet as $table => $desc) { |
|
| 531 | + if (isset($desc['modeles']) and $desc['modeles'] |
|
| 532 | + and isset($desc['modeles_styliser']) and $desc['modeles_styliser'] |
|
| 533 | + and function_exists($desc['modeles_styliser'])) { |
|
| 534 | + $primary = id_table_objet($table); |
|
| 535 | + foreach ($desc['modeles'] as $m) { |
|
| 536 | + $styliseurs[$m] = ['primary' => $primary, 'callback' => $desc['modeles_styliser']]; |
|
| 537 | + } |
|
| 538 | + } |
|
| 539 | + } |
|
| 540 | + } |
|
| 541 | + |
|
| 542 | + if (isset($styliseurs[$modele])) { |
|
| 543 | + $styliseur = $styliseurs[$modele]['callback']; |
|
| 544 | + if (is_null($id) and $contexte) { |
|
| 545 | + if (isset($contexte['id'])) { |
|
| 546 | + $id = $contexte['id']; |
|
| 547 | + } elseif (isset($contexte[$primary])) { |
|
| 548 | + $id = $contexte[$primary]; |
|
| 549 | + } |
|
| 550 | + } |
|
| 551 | + if (is_null($id)) { |
|
| 552 | + $msg = "modeles/$modele : " . _T('zbug_parametres_inclus_incorrects', array('param' => "id/$primary")); |
|
| 553 | + erreur_squelette($msg); |
|
| 554 | + // on passe id=0 au routeur pour tomber sur le modele par defaut et eviter une seconde erreur sur un modele inexistant |
|
| 555 | + $id = 0; |
|
| 556 | + } |
|
| 557 | + $modele = $styliseur($modele, $id); |
|
| 558 | + } |
|
| 559 | + |
|
| 560 | + return $modele; |
|
| 561 | 561 | } |
| 562 | 562 | |
| 563 | 563 | /** |
@@ -576,95 +576,95 @@ discard block |
||
| 576 | 576 | */ |
| 577 | 577 | function inclure_modele($type, $id, $params, $lien, $connect = '', $env = array()) { |
| 578 | 578 | |
| 579 | - static $compteur; |
|
| 580 | - if (++$compteur > 10) { |
|
| 581 | - return ''; |
|
| 582 | - } # ne pas boucler indefiniment |
|
| 583 | - |
|
| 584 | - $type = strtolower($type); |
|
| 585 | - $type = styliser_modele($type, $id); |
|
| 586 | - |
|
| 587 | - $fond = $class = ''; |
|
| 588 | - |
|
| 589 | - $params = array_filter(explode('|', $params)); |
|
| 590 | - if ($params) { |
|
| 591 | - $soustype = current($params); |
|
| 592 | - $soustype = strtolower(trim($soustype)); |
|
| 593 | - if (in_array($soustype, array('left', 'right', 'center', 'ajax'))) { |
|
| 594 | - $soustype = next($params); |
|
| 595 | - $soustype = strtolower($soustype); |
|
| 596 | - } |
|
| 597 | - |
|
| 598 | - if (preg_match(',^[a-z0-9_]+$,', $soustype)) { |
|
| 599 | - if (!trouve_modele($fond = ($type . '_' . $soustype))) { |
|
| 600 | - $fond = ''; |
|
| 601 | - $class = $soustype; |
|
| 602 | - } |
|
| 603 | - // enlever le sous type des params |
|
| 604 | - $params = array_diff($params, array($soustype)); |
|
| 605 | - } |
|
| 606 | - } |
|
| 607 | - |
|
| 608 | - // Si ca marche pas en precisant le sous-type, prendre le type |
|
| 609 | - if (!$fond and !trouve_modele($fond = $type)) { |
|
| 610 | - spip_log("Modele $type introuvable", _LOG_INFO_IMPORTANTE); |
|
| 611 | - |
|
| 612 | - return false; |
|
| 613 | - } |
|
| 614 | - $fond = 'modeles/' . $fond; |
|
| 615 | - // Creer le contexte |
|
| 616 | - $contexte = $env; |
|
| 617 | - $contexte['dir_racine'] = _DIR_RACINE; # eviter de mixer un cache racine et un cache ecrire (meme si pour l'instant les modeles ne sont pas caches, le resultat etant different il faut que le contexte en tienne compte |
|
| 618 | - |
|
| 619 | - // Le numero du modele est mis dans l'environnement |
|
| 620 | - // d'une part sous l'identifiant "id" |
|
| 621 | - // et d'autre part sous l'identifiant de la cle primaire |
|
| 622 | - // par la fonction id_table_objet, |
|
| 623 | - // (<article1> =>> article =>> id_article =>> id_article=1) |
|
| 624 | - $_id = id_table_objet($type); |
|
| 625 | - $contexte['id'] = $contexte[$_id] = $id; |
|
| 626 | - |
|
| 627 | - if (isset($class)) { |
|
| 628 | - $contexte['class'] = $class; |
|
| 629 | - } |
|
| 630 | - |
|
| 631 | - // Si un lien a ete passe en parametre, ex: [<modele1>->url] ou [<modele1|title_du_lien{hreflang}->url] |
|
| 632 | - if ($lien) { |
|
| 633 | - # un eventuel guillemet (") sera reechappe par #ENV |
|
| 634 | - $contexte['lien'] = str_replace(""", '"', $lien['href']); |
|
| 635 | - $contexte['lien_class'] = $lien['class']; |
|
| 636 | - $contexte['lien_mime'] = $lien['mime']; |
|
| 637 | - $contexte['lien_title'] = $lien['title']; |
|
| 638 | - $contexte['lien_hreflang'] = $lien['hreflang']; |
|
| 639 | - } |
|
| 640 | - |
|
| 641 | - // Traiter les parametres |
|
| 642 | - // par exemple : <img1|center>, <emb12|autostart=true> ou <doc1|lang=en> |
|
| 643 | - $arg_list = creer_contexte_de_modele($params); |
|
| 644 | - $contexte['args'] = $arg_list; // on passe la liste des arguments du modeles dans une variable args |
|
| 645 | - $contexte = array_merge($contexte, $arg_list); |
|
| 646 | - |
|
| 647 | - // Appliquer le modele avec le contexte |
|
| 648 | - $retour = recuperer_fond($fond, $contexte, array(), $connect); |
|
| 649 | - |
|
| 650 | - // Regarder si le modele tient compte des liens (il *doit* alors indiquer |
|
| 651 | - // spip_lien_ok dans les classes de son conteneur de premier niveau ; |
|
| 652 | - // sinon, s'il y a un lien, on l'ajoute classiquement |
|
| 653 | - if (strstr(' ' . ($classes = extraire_attribut($retour, 'class')) . ' ', |
|
| 654 | - 'spip_lien_ok')) { |
|
| 655 | - $retour = inserer_attribut($retour, 'class', |
|
| 656 | - trim(str_replace(' spip_lien_ok ', ' ', " $classes "))); |
|
| 657 | - } else { |
|
| 658 | - if ($lien) { |
|
| 659 | - $retour = "<a href='" . $lien['href'] . "' class='" . $lien['class'] . "'>" . $retour . "</a>"; |
|
| 660 | - } |
|
| 661 | - } |
|
| 662 | - |
|
| 663 | - $compteur--; |
|
| 664 | - |
|
| 665 | - return (isset($arg_list['ajax']) and $arg_list['ajax'] == 'ajax') |
|
| 666 | - ? encoder_contexte_ajax($contexte, '', $retour) |
|
| 667 | - : $retour; |
|
| 579 | + static $compteur; |
|
| 580 | + if (++$compteur > 10) { |
|
| 581 | + return ''; |
|
| 582 | + } # ne pas boucler indefiniment |
|
| 583 | + |
|
| 584 | + $type = strtolower($type); |
|
| 585 | + $type = styliser_modele($type, $id); |
|
| 586 | + |
|
| 587 | + $fond = $class = ''; |
|
| 588 | + |
|
| 589 | + $params = array_filter(explode('|', $params)); |
|
| 590 | + if ($params) { |
|
| 591 | + $soustype = current($params); |
|
| 592 | + $soustype = strtolower(trim($soustype)); |
|
| 593 | + if (in_array($soustype, array('left', 'right', 'center', 'ajax'))) { |
|
| 594 | + $soustype = next($params); |
|
| 595 | + $soustype = strtolower($soustype); |
|
| 596 | + } |
|
| 597 | + |
|
| 598 | + if (preg_match(',^[a-z0-9_]+$,', $soustype)) { |
|
| 599 | + if (!trouve_modele($fond = ($type . '_' . $soustype))) { |
|
| 600 | + $fond = ''; |
|
| 601 | + $class = $soustype; |
|
| 602 | + } |
|
| 603 | + // enlever le sous type des params |
|
| 604 | + $params = array_diff($params, array($soustype)); |
|
| 605 | + } |
|
| 606 | + } |
|
| 607 | + |
|
| 608 | + // Si ca marche pas en precisant le sous-type, prendre le type |
|
| 609 | + if (!$fond and !trouve_modele($fond = $type)) { |
|
| 610 | + spip_log("Modele $type introuvable", _LOG_INFO_IMPORTANTE); |
|
| 611 | + |
|
| 612 | + return false; |
|
| 613 | + } |
|
| 614 | + $fond = 'modeles/' . $fond; |
|
| 615 | + // Creer le contexte |
|
| 616 | + $contexte = $env; |
|
| 617 | + $contexte['dir_racine'] = _DIR_RACINE; # eviter de mixer un cache racine et un cache ecrire (meme si pour l'instant les modeles ne sont pas caches, le resultat etant different il faut que le contexte en tienne compte |
|
| 618 | + |
|
| 619 | + // Le numero du modele est mis dans l'environnement |
|
| 620 | + // d'une part sous l'identifiant "id" |
|
| 621 | + // et d'autre part sous l'identifiant de la cle primaire |
|
| 622 | + // par la fonction id_table_objet, |
|
| 623 | + // (<article1> =>> article =>> id_article =>> id_article=1) |
|
| 624 | + $_id = id_table_objet($type); |
|
| 625 | + $contexte['id'] = $contexte[$_id] = $id; |
|
| 626 | + |
|
| 627 | + if (isset($class)) { |
|
| 628 | + $contexte['class'] = $class; |
|
| 629 | + } |
|
| 630 | + |
|
| 631 | + // Si un lien a ete passe en parametre, ex: [<modele1>->url] ou [<modele1|title_du_lien{hreflang}->url] |
|
| 632 | + if ($lien) { |
|
| 633 | + # un eventuel guillemet (") sera reechappe par #ENV |
|
| 634 | + $contexte['lien'] = str_replace(""", '"', $lien['href']); |
|
| 635 | + $contexte['lien_class'] = $lien['class']; |
|
| 636 | + $contexte['lien_mime'] = $lien['mime']; |
|
| 637 | + $contexte['lien_title'] = $lien['title']; |
|
| 638 | + $contexte['lien_hreflang'] = $lien['hreflang']; |
|
| 639 | + } |
|
| 640 | + |
|
| 641 | + // Traiter les parametres |
|
| 642 | + // par exemple : <img1|center>, <emb12|autostart=true> ou <doc1|lang=en> |
|
| 643 | + $arg_list = creer_contexte_de_modele($params); |
|
| 644 | + $contexte['args'] = $arg_list; // on passe la liste des arguments du modeles dans une variable args |
|
| 645 | + $contexte = array_merge($contexte, $arg_list); |
|
| 646 | + |
|
| 647 | + // Appliquer le modele avec le contexte |
|
| 648 | + $retour = recuperer_fond($fond, $contexte, array(), $connect); |
|
| 649 | + |
|
| 650 | + // Regarder si le modele tient compte des liens (il *doit* alors indiquer |
|
| 651 | + // spip_lien_ok dans les classes de son conteneur de premier niveau ; |
|
| 652 | + // sinon, s'il y a un lien, on l'ajoute classiquement |
|
| 653 | + if (strstr(' ' . ($classes = extraire_attribut($retour, 'class')) . ' ', |
|
| 654 | + 'spip_lien_ok')) { |
|
| 655 | + $retour = inserer_attribut($retour, 'class', |
|
| 656 | + trim(str_replace(' spip_lien_ok ', ' ', " $classes "))); |
|
| 657 | + } else { |
|
| 658 | + if ($lien) { |
|
| 659 | + $retour = "<a href='" . $lien['href'] . "' class='" . $lien['class'] . "'>" . $retour . "</a>"; |
|
| 660 | + } |
|
| 661 | + } |
|
| 662 | + |
|
| 663 | + $compteur--; |
|
| 664 | + |
|
| 665 | + return (isset($arg_list['ajax']) and $arg_list['ajax'] == 'ajax') |
|
| 666 | + ? encoder_contexte_ajax($contexte, '', $retour) |
|
| 667 | + : $retour; |
|
| 668 | 668 | } |
| 669 | 669 | |
| 670 | 670 | // Un inclure_page qui marche aussi pour l'espace prive |
@@ -674,92 +674,92 @@ discard block |
||
| 674 | 674 | // https://code.spip.net/@evaluer_fond |
| 675 | 675 | function evaluer_fond($fond, $contexte = array(), $connect = null) { |
| 676 | 676 | |
| 677 | - $page = inclure_page($fond, $contexte, $connect); |
|
| 678 | - |
|
| 679 | - if (!$page) { |
|
| 680 | - return $page; |
|
| 681 | - } |
|
| 682 | - // eval $page et affecte $res |
|
| 683 | - include _ROOT_RESTREINT . "public/evaluer_page.php"; |
|
| 684 | - |
|
| 685 | - // Lever un drapeau (global) si le fond utilise #SESSION |
|
| 686 | - // a destination de public/parametrer |
|
| 687 | - // pour remonter vers les inclusions appelantes |
|
| 688 | - // il faut bien lever ce drapeau apres avoir evalue le fond |
|
| 689 | - // pour ne pas faire descendre le flag vers les inclusions appelees |
|
| 690 | - if (isset($page['invalideurs']) |
|
| 691 | - and isset($page['invalideurs']['session']) |
|
| 692 | - ) { |
|
| 693 | - $GLOBALS['cache_utilise_session'] = $page['invalideurs']['session']; |
|
| 694 | - } |
|
| 695 | - |
|
| 696 | - return $page; |
|
| 677 | + $page = inclure_page($fond, $contexte, $connect); |
|
| 678 | + |
|
| 679 | + if (!$page) { |
|
| 680 | + return $page; |
|
| 681 | + } |
|
| 682 | + // eval $page et affecte $res |
|
| 683 | + include _ROOT_RESTREINT . "public/evaluer_page.php"; |
|
| 684 | + |
|
| 685 | + // Lever un drapeau (global) si le fond utilise #SESSION |
|
| 686 | + // a destination de public/parametrer |
|
| 687 | + // pour remonter vers les inclusions appelantes |
|
| 688 | + // il faut bien lever ce drapeau apres avoir evalue le fond |
|
| 689 | + // pour ne pas faire descendre le flag vers les inclusions appelees |
|
| 690 | + if (isset($page['invalideurs']) |
|
| 691 | + and isset($page['invalideurs']['session']) |
|
| 692 | + ) { |
|
| 693 | + $GLOBALS['cache_utilise_session'] = $page['invalideurs']['session']; |
|
| 694 | + } |
|
| 695 | + |
|
| 696 | + return $page; |
|
| 697 | 697 | } |
| 698 | 698 | |
| 699 | 699 | |
| 700 | 700 | // https://code.spip.net/@page_base_href |
| 701 | 701 | function page_base_href(&$texte) { |
| 702 | - static $set_html_base = null; |
|
| 703 | - if (is_null($set_html_base)) { |
|
| 704 | - if (!defined('_SET_HTML_BASE')) |
|
| 705 | - // si la profondeur est superieure a 1 |
|
| 706 | - // est que ce n'est pas une url page ni une url action |
|
| 707 | - // activer par defaut |
|
| 708 | - { |
|
| 709 | - $set_html_base = (( |
|
| 710 | - $GLOBALS['profondeur_url'] >= (_DIR_RESTREINT ? 1 : 2) |
|
| 711 | - and _request(_SPIP_PAGE) !== 'login' |
|
| 712 | - and !_request('action')) ? true : false); |
|
| 713 | - } else { |
|
| 714 | - $set_html_base = _SET_HTML_BASE; |
|
| 715 | - } |
|
| 716 | - } |
|
| 717 | - |
|
| 718 | - if ($set_html_base |
|
| 719 | - and isset($GLOBALS['html']) and $GLOBALS['html'] |
|
| 720 | - and $GLOBALS['profondeur_url'] > 0 |
|
| 721 | - and ($poshead = strpos($texte, '</head>')) !== false |
|
| 722 | - ) { |
|
| 723 | - $head = substr($texte, 0, $poshead); |
|
| 724 | - $insert = false; |
|
| 725 | - if (strpos($head, '<base') === false) { |
|
| 726 | - $insert = true; |
|
| 727 | - } else { |
|
| 728 | - // si aucun <base ...> n'a de href c'est bon quand meme ! |
|
| 729 | - $insert = true; |
|
| 730 | - include_spip('inc/filtres'); |
|
| 731 | - $bases = extraire_balises($head, 'base'); |
|
| 732 | - foreach ($bases as $base) { |
|
| 733 | - if (extraire_attribut($base, 'href')) { |
|
| 734 | - $insert = false; |
|
| 735 | - } |
|
| 736 | - } |
|
| 737 | - } |
|
| 738 | - if ($insert) { |
|
| 739 | - include_spip('inc/filtres_mini'); |
|
| 740 | - // ajouter un base qui reglera tous les liens relatifs |
|
| 741 | - $base = url_absolue('./'); |
|
| 742 | - $bbase = "\n<base href=\"$base\" />"; |
|
| 743 | - if (($pos = strpos($head, '<head>')) !== false) { |
|
| 744 | - $head = substr_replace($head, $bbase, $pos + 6, 0); |
|
| 745 | - } elseif (preg_match(",<head[^>]*>,i", $head, $r)) { |
|
| 746 | - $head = str_replace($r[0], $r[0] . $bbase, $head); |
|
| 747 | - } |
|
| 748 | - $texte = $head . substr($texte, $poshead); |
|
| 749 | - // gerer les ancres |
|
| 750 | - $base = $_SERVER['REQUEST_URI']; |
|
| 751 | - // pas de guillemets ni < dans l'URL qu'on insere dans le HTML |
|
| 752 | - if (strpos($base,"'") or strpos($base,'"') or strpos($base,'<')) { |
|
| 753 | - $base = str_replace(array("'",'"','<'),array("%27",'%22','%3C'), $base); |
|
| 754 | - } |
|
| 755 | - if (strpos($texte, "href='#") !== false) { |
|
| 756 | - $texte = str_replace("href='#", "href='$base#", $texte); |
|
| 757 | - } |
|
| 758 | - if (strpos($texte, "href=\"#") !== false) { |
|
| 759 | - $texte = str_replace("href=\"#", "href=\"$base#", $texte); |
|
| 760 | - } |
|
| 761 | - } |
|
| 762 | - } |
|
| 702 | + static $set_html_base = null; |
|
| 703 | + if (is_null($set_html_base)) { |
|
| 704 | + if (!defined('_SET_HTML_BASE')) |
|
| 705 | + // si la profondeur est superieure a 1 |
|
| 706 | + // est que ce n'est pas une url page ni une url action |
|
| 707 | + // activer par defaut |
|
| 708 | + { |
|
| 709 | + $set_html_base = (( |
|
| 710 | + $GLOBALS['profondeur_url'] >= (_DIR_RESTREINT ? 1 : 2) |
|
| 711 | + and _request(_SPIP_PAGE) !== 'login' |
|
| 712 | + and !_request('action')) ? true : false); |
|
| 713 | + } else { |
|
| 714 | + $set_html_base = _SET_HTML_BASE; |
|
| 715 | + } |
|
| 716 | + } |
|
| 717 | + |
|
| 718 | + if ($set_html_base |
|
| 719 | + and isset($GLOBALS['html']) and $GLOBALS['html'] |
|
| 720 | + and $GLOBALS['profondeur_url'] > 0 |
|
| 721 | + and ($poshead = strpos($texte, '</head>')) !== false |
|
| 722 | + ) { |
|
| 723 | + $head = substr($texte, 0, $poshead); |
|
| 724 | + $insert = false; |
|
| 725 | + if (strpos($head, '<base') === false) { |
|
| 726 | + $insert = true; |
|
| 727 | + } else { |
|
| 728 | + // si aucun <base ...> n'a de href c'est bon quand meme ! |
|
| 729 | + $insert = true; |
|
| 730 | + include_spip('inc/filtres'); |
|
| 731 | + $bases = extraire_balises($head, 'base'); |
|
| 732 | + foreach ($bases as $base) { |
|
| 733 | + if (extraire_attribut($base, 'href')) { |
|
| 734 | + $insert = false; |
|
| 735 | + } |
|
| 736 | + } |
|
| 737 | + } |
|
| 738 | + if ($insert) { |
|
| 739 | + include_spip('inc/filtres_mini'); |
|
| 740 | + // ajouter un base qui reglera tous les liens relatifs |
|
| 741 | + $base = url_absolue('./'); |
|
| 742 | + $bbase = "\n<base href=\"$base\" />"; |
|
| 743 | + if (($pos = strpos($head, '<head>')) !== false) { |
|
| 744 | + $head = substr_replace($head, $bbase, $pos + 6, 0); |
|
| 745 | + } elseif (preg_match(",<head[^>]*>,i", $head, $r)) { |
|
| 746 | + $head = str_replace($r[0], $r[0] . $bbase, $head); |
|
| 747 | + } |
|
| 748 | + $texte = $head . substr($texte, $poshead); |
|
| 749 | + // gerer les ancres |
|
| 750 | + $base = $_SERVER['REQUEST_URI']; |
|
| 751 | + // pas de guillemets ni < dans l'URL qu'on insere dans le HTML |
|
| 752 | + if (strpos($base,"'") or strpos($base,'"') or strpos($base,'<')) { |
|
| 753 | + $base = str_replace(array("'",'"','<'),array("%27",'%22','%3C'), $base); |
|
| 754 | + } |
|
| 755 | + if (strpos($texte, "href='#") !== false) { |
|
| 756 | + $texte = str_replace("href='#", "href='$base#", $texte); |
|
| 757 | + } |
|
| 758 | + if (strpos($texte, "href=\"#") !== false) { |
|
| 759 | + $texte = str_replace("href=\"#", "href=\"$base#", $texte); |
|
| 760 | + } |
|
| 761 | + } |
|
| 762 | + } |
|
| 763 | 763 | } |
| 764 | 764 | |
| 765 | 765 | |
@@ -767,8 +767,8 @@ discard block |
||
| 767 | 767 | // et demarrent par X-Spip-... |
| 768 | 768 | // https://code.spip.net/@envoyer_entetes |
| 769 | 769 | function envoyer_entetes($entetes) { |
| 770 | - foreach ($entetes as $k => $v) # if (strncmp($k, 'X-Spip-', 7)) |
|
| 771 | - { |
|
| 772 | - @header(strlen($v) ? "$k: $v" : $k); |
|
| 773 | - } |
|
| 770 | + foreach ($entetes as $k => $v) # if (strncmp($k, 'X-Spip-', 7)) |
|
| 771 | + { |
|
| 772 | + @header(strlen($v) ? "$k: $v" : $k); |
|
| 773 | + } |
|
| 774 | 774 | } |
@@ -20,7 +20,7 @@ discard block |
||
| 20 | 20 | **/ |
| 21 | 21 | |
| 22 | 22 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 23 | - return; |
|
| 23 | + return; |
|
| 24 | 24 | } |
| 25 | 25 | |
| 26 | 26 | // Ce fichier doit imperativement definir la fonction ci-dessous: |
@@ -39,59 +39,59 @@ discard block |
||
| 39 | 39 | * @return array |
| 40 | 40 | */ |
| 41 | 41 | function public_styliser_dist($fond, $contexte, $lang = '', $connect = '') { |
| 42 | - static $styliser_par_z; |
|
| 43 | - |
|
| 44 | - // s'assurer que le fond est licite |
|
| 45 | - // car il peut etre construit a partir d'une variable d'environnement |
|
| 46 | - if (strpos($fond, "../") !== false or strncmp($fond, '/', 1) == 0) { |
|
| 47 | - $fond = "404"; |
|
| 48 | - } |
|
| 49 | - |
|
| 50 | - if (strncmp($fond, 'modeles/', 8) == 0) { |
|
| 51 | - $modele = substr($fond, 8); |
|
| 52 | - $modele = styliser_modele($modele, null, $contexte); |
|
| 53 | - $fond = "modeles/$modele"; |
|
| 54 | - } |
|
| 55 | - |
|
| 56 | - // Choisir entre $fond-dist.html, $fond=7.html, etc? |
|
| 57 | - $id_rubrique = 0; |
|
| 58 | - // Chercher le fond qui va servir de squelette |
|
| 59 | - if ($r = quete_rubrique_fond($contexte)) { |
|
| 60 | - list($id_rubrique, $lang) = $r; |
|
| 61 | - } |
|
| 62 | - |
|
| 63 | - // trouver un squelette du nom demande |
|
| 64 | - // ne rien dire si on ne trouve pas, |
|
| 65 | - // c'est l'appelant qui sait comment gerer la situation |
|
| 66 | - // ou les plugins qui feront mieux dans le pipeline |
|
| 67 | - $squelette = trouver_fond($fond, "", true); |
|
| 68 | - $ext = $squelette['extension']; |
|
| 69 | - |
|
| 70 | - $flux = array( |
|
| 71 | - 'args' => array( |
|
| 72 | - 'id_rubrique' => $id_rubrique, |
|
| 73 | - 'ext' => $ext, |
|
| 74 | - 'fond' => $fond, |
|
| 75 | - 'lang' => $lang, |
|
| 76 | - 'contexte' => $contexte, // le style d'un objet peut dependre de lui meme |
|
| 77 | - 'connect' => $connect |
|
| 78 | - ), |
|
| 79 | - 'data' => $squelette['fond'], |
|
| 80 | - ); |
|
| 81 | - |
|
| 82 | - if (test_espace_prive() or defined('_ZPIP')) { |
|
| 83 | - if (!$styliser_par_z) { |
|
| 84 | - $styliser_par_z = charger_fonction('styliser_par_z', 'public'); |
|
| 85 | - } |
|
| 86 | - $flux = $styliser_par_z($flux); |
|
| 87 | - } |
|
| 88 | - |
|
| 89 | - $flux = styliser_par_objets($flux); |
|
| 90 | - |
|
| 91 | - // pipeline styliser |
|
| 92 | - $squelette = pipeline('styliser', $flux); |
|
| 93 | - |
|
| 94 | - return array($squelette, $ext, $ext, "$squelette.$ext"); |
|
| 42 | + static $styliser_par_z; |
|
| 43 | + |
|
| 44 | + // s'assurer que le fond est licite |
|
| 45 | + // car il peut etre construit a partir d'une variable d'environnement |
|
| 46 | + if (strpos($fond, "../") !== false or strncmp($fond, '/', 1) == 0) { |
|
| 47 | + $fond = "404"; |
|
| 48 | + } |
|
| 49 | + |
|
| 50 | + if (strncmp($fond, 'modeles/', 8) == 0) { |
|
| 51 | + $modele = substr($fond, 8); |
|
| 52 | + $modele = styliser_modele($modele, null, $contexte); |
|
| 53 | + $fond = "modeles/$modele"; |
|
| 54 | + } |
|
| 55 | + |
|
| 56 | + // Choisir entre $fond-dist.html, $fond=7.html, etc? |
|
| 57 | + $id_rubrique = 0; |
|
| 58 | + // Chercher le fond qui va servir de squelette |
|
| 59 | + if ($r = quete_rubrique_fond($contexte)) { |
|
| 60 | + list($id_rubrique, $lang) = $r; |
|
| 61 | + } |
|
| 62 | + |
|
| 63 | + // trouver un squelette du nom demande |
|
| 64 | + // ne rien dire si on ne trouve pas, |
|
| 65 | + // c'est l'appelant qui sait comment gerer la situation |
|
| 66 | + // ou les plugins qui feront mieux dans le pipeline |
|
| 67 | + $squelette = trouver_fond($fond, "", true); |
|
| 68 | + $ext = $squelette['extension']; |
|
| 69 | + |
|
| 70 | + $flux = array( |
|
| 71 | + 'args' => array( |
|
| 72 | + 'id_rubrique' => $id_rubrique, |
|
| 73 | + 'ext' => $ext, |
|
| 74 | + 'fond' => $fond, |
|
| 75 | + 'lang' => $lang, |
|
| 76 | + 'contexte' => $contexte, // le style d'un objet peut dependre de lui meme |
|
| 77 | + 'connect' => $connect |
|
| 78 | + ), |
|
| 79 | + 'data' => $squelette['fond'], |
|
| 80 | + ); |
|
| 81 | + |
|
| 82 | + if (test_espace_prive() or defined('_ZPIP')) { |
|
| 83 | + if (!$styliser_par_z) { |
|
| 84 | + $styliser_par_z = charger_fonction('styliser_par_z', 'public'); |
|
| 85 | + } |
|
| 86 | + $flux = $styliser_par_z($flux); |
|
| 87 | + } |
|
| 88 | + |
|
| 89 | + $flux = styliser_par_objets($flux); |
|
| 90 | + |
|
| 91 | + // pipeline styliser |
|
| 92 | + $squelette = pipeline('styliser', $flux); |
|
| 93 | + |
|
| 94 | + return array($squelette, $ext, $ext, "$squelette.$ext"); |
|
| 95 | 95 | } |
| 96 | 96 | |
| 97 | 97 | /** |
@@ -110,31 +110,31 @@ discard block |
||
| 110 | 110 | * Données du pipeline styliser |
| 111 | 111 | **/ |
| 112 | 112 | function styliser_par_objets($flux) { |
| 113 | - if (test_espace_prive() |
|
| 114 | - and !$squelette = $flux['data'] |
|
| 115 | - and strncmp($flux['args']['fond'], 'prive/objets/', 13) == 0 |
|
| 116 | - and $echafauder = charger_fonction('echafauder', 'prive', true) |
|
| 117 | - ) { |
|
| 118 | - if (strncmp($flux['args']['fond'], 'prive/objets/liste/', 19) == 0) { |
|
| 119 | - $table = table_objet(substr($flux['args']['fond'], 19)); |
|
| 120 | - $table_sql = table_objet_sql($table); |
|
| 121 | - $objets = lister_tables_objets_sql(); |
|
| 122 | - if (isset($objets[$table_sql])) { |
|
| 123 | - $flux['data'] = $echafauder($table, $table, $table_sql, "prive/objets/liste/objets", $flux['args']['ext']); |
|
| 124 | - } |
|
| 125 | - } |
|
| 126 | - if (strncmp($flux['args']['fond'], 'prive/objets/contenu/', 21) == 0) { |
|
| 127 | - $type = substr($flux['args']['fond'], 21); |
|
| 128 | - $table = table_objet($type); |
|
| 129 | - $table_sql = table_objet_sql($table); |
|
| 130 | - $objets = lister_tables_objets_sql(); |
|
| 131 | - if (isset($objets[$table_sql])) { |
|
| 132 | - $flux['data'] = $echafauder($type, $table, $table_sql, "prive/objets/contenu/objet", $flux['args']['ext']); |
|
| 133 | - } |
|
| 134 | - } |
|
| 135 | - } |
|
| 136 | - |
|
| 137 | - return $flux; |
|
| 113 | + if (test_espace_prive() |
|
| 114 | + and !$squelette = $flux['data'] |
|
| 115 | + and strncmp($flux['args']['fond'], 'prive/objets/', 13) == 0 |
|
| 116 | + and $echafauder = charger_fonction('echafauder', 'prive', true) |
|
| 117 | + ) { |
|
| 118 | + if (strncmp($flux['args']['fond'], 'prive/objets/liste/', 19) == 0) { |
|
| 119 | + $table = table_objet(substr($flux['args']['fond'], 19)); |
|
| 120 | + $table_sql = table_objet_sql($table); |
|
| 121 | + $objets = lister_tables_objets_sql(); |
|
| 122 | + if (isset($objets[$table_sql])) { |
|
| 123 | + $flux['data'] = $echafauder($table, $table, $table_sql, "prive/objets/liste/objets", $flux['args']['ext']); |
|
| 124 | + } |
|
| 125 | + } |
|
| 126 | + if (strncmp($flux['args']['fond'], 'prive/objets/contenu/', 21) == 0) { |
|
| 127 | + $type = substr($flux['args']['fond'], 21); |
|
| 128 | + $table = table_objet($type); |
|
| 129 | + $table_sql = table_objet_sql($table); |
|
| 130 | + $objets = lister_tables_objets_sql(); |
|
| 131 | + if (isset($objets[$table_sql])) { |
|
| 132 | + $flux['data'] = $echafauder($type, $table, $table_sql, "prive/objets/contenu/objet", $flux['args']['ext']); |
|
| 133 | + } |
|
| 134 | + } |
|
| 135 | + } |
|
| 136 | + |
|
| 137 | + return $flux; |
|
| 138 | 138 | } |
| 139 | 139 | |
| 140 | 140 | /** |
@@ -150,49 +150,49 @@ discard block |
||
| 150 | 150 | * @return array |
| 151 | 151 | */ |
| 152 | 152 | function quete_rubrique_fond($contexte) { |
| 153 | - static $liste_objets = null; |
|
| 154 | - static $quete = array(); |
|
| 155 | - if (is_null($liste_objets)) { |
|
| 156 | - $liste_objets = array(); |
|
| 157 | - include_spip('inc/urls'); |
|
| 158 | - include_spip('public/quete'); |
|
| 159 | - $l = urls_liste_objets(false); |
|
| 160 | - // placer la rubrique en tete des objets |
|
| 161 | - $l = array_diff($l, array('rubrique')); |
|
| 162 | - array_unshift($l, 'rubrique'); |
|
| 163 | - foreach ($l as $objet) { |
|
| 164 | - $id = id_table_objet($objet); |
|
| 165 | - if (!isset($liste_objets[$id])) { |
|
| 166 | - $liste_objets[$id] = objet_type($objet, false); |
|
| 167 | - } |
|
| 168 | - } |
|
| 169 | - } |
|
| 170 | - $c = array_intersect_key($contexte, $liste_objets); |
|
| 171 | - if (!count($c)) { |
|
| 172 | - return false; |
|
| 173 | - } |
|
| 174 | - |
|
| 175 | - $c = array_map('intval', $c); |
|
| 176 | - $s = serialize($c); |
|
| 177 | - if (isset($quete[$s])) { |
|
| 178 | - return $quete[$s]; |
|
| 179 | - } |
|
| 180 | - |
|
| 181 | - if (isset($c['id_rubrique']) and $r = $c['id_rubrique']) { |
|
| 182 | - unset($c['id_rubrique']); |
|
| 183 | - $c = array('id_rubrique' => $r) + $c; |
|
| 184 | - } |
|
| 185 | - |
|
| 186 | - foreach ($c as $_id => $id) { |
|
| 187 | - if ($id |
|
| 188 | - and $row = quete_parent_lang(table_objet_sql($liste_objets[$_id]), $id) |
|
| 189 | - ) { |
|
| 190 | - $lang = isset($row['lang']) ? $row['lang'] : ''; |
|
| 191 | - if ($_id == 'id_rubrique' or (isset($row['id_rubrique']) and $id = $row['id_rubrique'])) { |
|
| 192 | - return $quete[$s] = array($id, $lang); |
|
| 193 | - } |
|
| 194 | - } |
|
| 195 | - } |
|
| 196 | - |
|
| 197 | - return $quete[$s] = false; |
|
| 153 | + static $liste_objets = null; |
|
| 154 | + static $quete = array(); |
|
| 155 | + if (is_null($liste_objets)) { |
|
| 156 | + $liste_objets = array(); |
|
| 157 | + include_spip('inc/urls'); |
|
| 158 | + include_spip('public/quete'); |
|
| 159 | + $l = urls_liste_objets(false); |
|
| 160 | + // placer la rubrique en tete des objets |
|
| 161 | + $l = array_diff($l, array('rubrique')); |
|
| 162 | + array_unshift($l, 'rubrique'); |
|
| 163 | + foreach ($l as $objet) { |
|
| 164 | + $id = id_table_objet($objet); |
|
| 165 | + if (!isset($liste_objets[$id])) { |
|
| 166 | + $liste_objets[$id] = objet_type($objet, false); |
|
| 167 | + } |
|
| 168 | + } |
|
| 169 | + } |
|
| 170 | + $c = array_intersect_key($contexte, $liste_objets); |
|
| 171 | + if (!count($c)) { |
|
| 172 | + return false; |
|
| 173 | + } |
|
| 174 | + |
|
| 175 | + $c = array_map('intval', $c); |
|
| 176 | + $s = serialize($c); |
|
| 177 | + if (isset($quete[$s])) { |
|
| 178 | + return $quete[$s]; |
|
| 179 | + } |
|
| 180 | + |
|
| 181 | + if (isset($c['id_rubrique']) and $r = $c['id_rubrique']) { |
|
| 182 | + unset($c['id_rubrique']); |
|
| 183 | + $c = array('id_rubrique' => $r) + $c; |
|
| 184 | + } |
|
| 185 | + |
|
| 186 | + foreach ($c as $_id => $id) { |
|
| 187 | + if ($id |
|
| 188 | + and $row = quete_parent_lang(table_objet_sql($liste_objets[$_id]), $id) |
|
| 189 | + ) { |
|
| 190 | + $lang = isset($row['lang']) ? $row['lang'] : ''; |
|
| 191 | + if ($_id == 'id_rubrique' or (isset($row['id_rubrique']) and $id = $row['id_rubrique'])) { |
|
| 192 | + return $quete[$s] = array($id, $lang); |
|
| 193 | + } |
|
| 194 | + } |
|
| 195 | + } |
|
| 196 | + |
|
| 197 | + return $quete[$s] = false; |
|
| 198 | 198 | } |
@@ -148,7 +148,7 @@ |
||
| 148 | 148 | * @param int $fichier |
| 149 | 149 | * - -1 pour retourner juste le chemin de l'image |
| 150 | 150 | * - 0 pour retourner le code HTML de l'image |
| 151 | - * @param string $lien |
|
| 151 | + * @param string $_lien |
|
| 152 | 152 | * Lien pour encadrer l'image avec si présent |
| 153 | 153 | * @param Champ $p |
| 154 | 154 | * Pile au niveau de la balise |
@@ -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 | |
@@ -54,84 +54,84 @@ discard block |
||
| 54 | 54 | */ |
| 55 | 55 | function balise_LOGO__dist($p) { |
| 56 | 56 | |
| 57 | - preg_match(',^LOGO_([A-Z_]+?)(|_NORMAL|_SURVOL|_RUBRIQUE)$,i', $p->nom_champ, $regs); |
|
| 58 | - $type = strtolower($regs[1]); |
|
| 59 | - $suite_logo = $regs[2]; |
|
| 60 | - |
|
| 61 | - // cas de #LOGO_SITE_SPIP |
|
| 62 | - if ($type == 'site_spip') { |
|
| 63 | - $type = 'site'; |
|
| 64 | - $_id_objet = "\"'0'\""; |
|
| 65 | - } |
|
| 66 | - |
|
| 67 | - $id_objet = id_table_objet($type); |
|
| 68 | - if (!isset($_id_objet)) { |
|
| 69 | - $_id_objet = champ_sql($id_objet, $p); |
|
| 70 | - } |
|
| 71 | - |
|
| 72 | - $fichier = ($p->etoile === '**') ? -1 : 0; |
|
| 73 | - $coord = array(); |
|
| 74 | - $align = $lien = ''; |
|
| 75 | - $mode_logo = ''; |
|
| 76 | - |
|
| 77 | - if ($p->param and !$p->param[0][0]) { |
|
| 78 | - $params = $p->param[0]; |
|
| 79 | - array_shift($params); |
|
| 80 | - foreach ($params as $a) { |
|
| 81 | - if ($a[0]->type === 'texte') { |
|
| 82 | - $n = $a[0]->texte; |
|
| 83 | - if (is_numeric($n)) { |
|
| 84 | - $coord[] = $n; |
|
| 85 | - } elseif (in_array($n, array('top', 'left', 'right', 'center', 'bottom'))) { |
|
| 86 | - $align = $n; |
|
| 87 | - } elseif (in_array($n, array('auto', 'icone', 'apercu', 'vignette'))) { |
|
| 88 | - $mode_logo = $n; |
|
| 89 | - } |
|
| 90 | - } else { |
|
| 91 | - $lien = calculer_liste($a, $p->descr, $p->boucles, $p->id_boucle); |
|
| 92 | - } |
|
| 93 | - } |
|
| 94 | - } |
|
| 95 | - |
|
| 96 | - $coord_x = !$coord ? 0 : intval(array_shift($coord)); |
|
| 97 | - $coord_y = !$coord ? 0 : intval(array_shift($coord)); |
|
| 98 | - |
|
| 99 | - if ($p->etoile === '*') { |
|
| 100 | - include_spip('balise/url_'); |
|
| 101 | - $lien = generer_generer_url_arg($type, $p, $_id_objet); |
|
| 102 | - } |
|
| 103 | - |
|
| 104 | - $connect = $p->id_boucle ? $p->boucles[$p->id_boucle]->sql_serveur : ''; |
|
| 105 | - if ($type == 'document') { |
|
| 106 | - $qconnect = _q($connect); |
|
| 107 | - $doc = "quete_document($_id_objet, $qconnect)"; |
|
| 108 | - if ($fichier) { |
|
| 109 | - $code = "quete_logo_file($doc, $qconnect)"; |
|
| 110 | - } else { |
|
| 111 | - $code = "quete_logo_document($doc, " . ($lien ? $lien : "''") . ", '$align', '$mode_logo', $coord_x, $coord_y, $qconnect)"; |
|
| 112 | - } |
|
| 113 | - // (x=non-faux ? y : '') pour affecter x en retournant y |
|
| 114 | - if ($p->descr['documents']) { |
|
| 115 | - $code = '(($doublons["documents"] .= ",". ' |
|
| 116 | - . $_id_objet |
|
| 117 | - . ") ? $code : '')"; |
|
| 118 | - } |
|
| 119 | - } elseif ($connect) { |
|
| 120 | - $code = "''"; |
|
| 121 | - spip_log('Les logos distants ne sont pas prevus'); |
|
| 122 | - } else { |
|
| 123 | - $code = logo_survol($id_objet, $_id_objet, $type, $align, $fichier, $lien, $p, $suite_logo); |
|
| 124 | - } |
|
| 125 | - |
|
| 126 | - // demande de reduction sur logo avec ecriture spip 2.1 : #LOGO_xxx{200, 0} |
|
| 127 | - if ($coord_x or $coord_y) { |
|
| 128 | - $code = "filtrer('image_graver',filtrer('image_reduire'," . $code . ", '$coord_x', '$coord_y'))"; |
|
| 129 | - } |
|
| 130 | - |
|
| 131 | - $p->code = $code; |
|
| 132 | - $p->interdire_scripts = false; |
|
| 133 | - |
|
| 134 | - return $p; |
|
| 57 | + preg_match(',^LOGO_([A-Z_]+?)(|_NORMAL|_SURVOL|_RUBRIQUE)$,i', $p->nom_champ, $regs); |
|
| 58 | + $type = strtolower($regs[1]); |
|
| 59 | + $suite_logo = $regs[2]; |
|
| 60 | + |
|
| 61 | + // cas de #LOGO_SITE_SPIP |
|
| 62 | + if ($type == 'site_spip') { |
|
| 63 | + $type = 'site'; |
|
| 64 | + $_id_objet = "\"'0'\""; |
|
| 65 | + } |
|
| 66 | + |
|
| 67 | + $id_objet = id_table_objet($type); |
|
| 68 | + if (!isset($_id_objet)) { |
|
| 69 | + $_id_objet = champ_sql($id_objet, $p); |
|
| 70 | + } |
|
| 71 | + |
|
| 72 | + $fichier = ($p->etoile === '**') ? -1 : 0; |
|
| 73 | + $coord = array(); |
|
| 74 | + $align = $lien = ''; |
|
| 75 | + $mode_logo = ''; |
|
| 76 | + |
|
| 77 | + if ($p->param and !$p->param[0][0]) { |
|
| 78 | + $params = $p->param[0]; |
|
| 79 | + array_shift($params); |
|
| 80 | + foreach ($params as $a) { |
|
| 81 | + if ($a[0]->type === 'texte') { |
|
| 82 | + $n = $a[0]->texte; |
|
| 83 | + if (is_numeric($n)) { |
|
| 84 | + $coord[] = $n; |
|
| 85 | + } elseif (in_array($n, array('top', 'left', 'right', 'center', 'bottom'))) { |
|
| 86 | + $align = $n; |
|
| 87 | + } elseif (in_array($n, array('auto', 'icone', 'apercu', 'vignette'))) { |
|
| 88 | + $mode_logo = $n; |
|
| 89 | + } |
|
| 90 | + } else { |
|
| 91 | + $lien = calculer_liste($a, $p->descr, $p->boucles, $p->id_boucle); |
|
| 92 | + } |
|
| 93 | + } |
|
| 94 | + } |
|
| 95 | + |
|
| 96 | + $coord_x = !$coord ? 0 : intval(array_shift($coord)); |
|
| 97 | + $coord_y = !$coord ? 0 : intval(array_shift($coord)); |
|
| 98 | + |
|
| 99 | + if ($p->etoile === '*') { |
|
| 100 | + include_spip('balise/url_'); |
|
| 101 | + $lien = generer_generer_url_arg($type, $p, $_id_objet); |
|
| 102 | + } |
|
| 103 | + |
|
| 104 | + $connect = $p->id_boucle ? $p->boucles[$p->id_boucle]->sql_serveur : ''; |
|
| 105 | + if ($type == 'document') { |
|
| 106 | + $qconnect = _q($connect); |
|
| 107 | + $doc = "quete_document($_id_objet, $qconnect)"; |
|
| 108 | + if ($fichier) { |
|
| 109 | + $code = "quete_logo_file($doc, $qconnect)"; |
|
| 110 | + } else { |
|
| 111 | + $code = "quete_logo_document($doc, " . ($lien ? $lien : "''") . ", '$align', '$mode_logo', $coord_x, $coord_y, $qconnect)"; |
|
| 112 | + } |
|
| 113 | + // (x=non-faux ? y : '') pour affecter x en retournant y |
|
| 114 | + if ($p->descr['documents']) { |
|
| 115 | + $code = '(($doublons["documents"] .= ",". ' |
|
| 116 | + . $_id_objet |
|
| 117 | + . ") ? $code : '')"; |
|
| 118 | + } |
|
| 119 | + } elseif ($connect) { |
|
| 120 | + $code = "''"; |
|
| 121 | + spip_log('Les logos distants ne sont pas prevus'); |
|
| 122 | + } else { |
|
| 123 | + $code = logo_survol($id_objet, $_id_objet, $type, $align, $fichier, $lien, $p, $suite_logo); |
|
| 124 | + } |
|
| 125 | + |
|
| 126 | + // demande de reduction sur logo avec ecriture spip 2.1 : #LOGO_xxx{200, 0} |
|
| 127 | + if ($coord_x or $coord_y) { |
|
| 128 | + $code = "filtrer('image_graver',filtrer('image_reduire'," . $code . ", '$coord_x', '$coord_y'))"; |
|
| 129 | + } |
|
| 130 | + |
|
| 131 | + $p->code = $code; |
|
| 132 | + $p->interdire_scripts = false; |
|
| 133 | + |
|
| 134 | + return $p; |
|
| 135 | 135 | } |
| 136 | 136 | |
| 137 | 137 | /** |
@@ -158,20 +158,20 @@ discard block |
||
| 158 | 158 | * Code compilé retournant le chemin du logo ou le code HTML du logo. |
| 159 | 159 | **/ |
| 160 | 160 | function logo_survol($id_objet, $_id_objet, $type, $align, $fichier, $_lien, $p, $suite) { |
| 161 | - $code = "quete_logo('$id_objet', '" . |
|
| 162 | - (($suite == '_SURVOL') ? 'off' : |
|
| 163 | - (($suite == '_NORMAL') ? 'on' : 'ON')) . |
|
| 164 | - "', $_id_objet," . |
|
| 165 | - (($suite == '_RUBRIQUE') ? |
|
| 166 | - champ_sql('id_rubrique', $p) : |
|
| 167 | - (($type == 'rubrique') ? "quete_parent($_id_objet)" : "''")) . |
|
| 168 | - ', ' . intval($fichier) . ')'; |
|
| 169 | - |
|
| 170 | - if ($fichier) { |
|
| 171 | - return $code; |
|
| 172 | - } |
|
| 173 | - |
|
| 174 | - $align = preg_replace(",\W,", "", $align); |
|
| 175 | - |
|
| 176 | - return "quete_html_logo($code, '$align', " .($_lien ? $_lien : "''") .")"; |
|
| 161 | + $code = "quete_logo('$id_objet', '" . |
|
| 162 | + (($suite == '_SURVOL') ? 'off' : |
|
| 163 | + (($suite == '_NORMAL') ? 'on' : 'ON')) . |
|
| 164 | + "', $_id_objet," . |
|
| 165 | + (($suite == '_RUBRIQUE') ? |
|
| 166 | + champ_sql('id_rubrique', $p) : |
|
| 167 | + (($type == 'rubrique') ? "quete_parent($_id_objet)" : "''")) . |
|
| 168 | + ', ' . intval($fichier) . ')'; |
|
| 169 | + |
|
| 170 | + if ($fichier) { |
|
| 171 | + return $code; |
|
| 172 | + } |
|
| 173 | + |
|
| 174 | + $align = preg_replace(",\W,", "", $align); |
|
| 175 | + |
|
| 176 | + return "quete_html_logo($code, '$align', " .($_lien ? $_lien : "''") .")"; |
|
| 177 | 177 | } |
@@ -108,7 +108,7 @@ discard block |
||
| 108 | 108 | if ($fichier) { |
| 109 | 109 | $code = "quete_logo_file($doc, $qconnect)"; |
| 110 | 110 | } else { |
| 111 | - $code = "quete_logo_document($doc, " . ($lien ? $lien : "''") . ", '$align', '$mode_logo', $coord_x, $coord_y, $qconnect)"; |
|
| 111 | + $code = "quete_logo_document($doc, ".($lien ? $lien : "''").", '$align', '$mode_logo', $coord_x, $coord_y, $qconnect)"; |
|
| 112 | 112 | } |
| 113 | 113 | // (x=non-faux ? y : '') pour affecter x en retournant y |
| 114 | 114 | if ($p->descr['documents']) { |
@@ -125,7 +125,7 @@ discard block |
||
| 125 | 125 | |
| 126 | 126 | // demande de reduction sur logo avec ecriture spip 2.1 : #LOGO_xxx{200, 0} |
| 127 | 127 | if ($coord_x or $coord_y) { |
| 128 | - $code = "filtrer('image_graver',filtrer('image_reduire'," . $code . ", '$coord_x', '$coord_y'))"; |
|
| 128 | + $code = "filtrer('image_graver',filtrer('image_reduire',".$code.", '$coord_x', '$coord_y'))"; |
|
| 129 | 129 | } |
| 130 | 130 | |
| 131 | 131 | $p->code = $code; |
@@ -158,14 +158,12 @@ discard block |
||
| 158 | 158 | * Code compilé retournant le chemin du logo ou le code HTML du logo. |
| 159 | 159 | **/ |
| 160 | 160 | function logo_survol($id_objet, $_id_objet, $type, $align, $fichier, $_lien, $p, $suite) { |
| 161 | - $code = "quete_logo('$id_objet', '" . |
|
| 162 | - (($suite == '_SURVOL') ? 'off' : |
|
| 163 | - (($suite == '_NORMAL') ? 'on' : 'ON')) . |
|
| 164 | - "', $_id_objet," . |
|
| 161 | + $code = "quete_logo('$id_objet', '". |
|
| 162 | + (($suite == '_SURVOL') ? 'off' : (($suite == '_NORMAL') ? 'on' : 'ON')). |
|
| 163 | + "', $_id_objet,". |
|
| 165 | 164 | (($suite == '_RUBRIQUE') ? |
| 166 | - champ_sql('id_rubrique', $p) : |
|
| 167 | - (($type == 'rubrique') ? "quete_parent($_id_objet)" : "''")) . |
|
| 168 | - ', ' . intval($fichier) . ')'; |
|
| 165 | + champ_sql('id_rubrique', $p) : (($type == 'rubrique') ? "quete_parent($_id_objet)" : "''")). |
|
| 166 | + ', '.intval($fichier).')'; |
|
| 169 | 167 | |
| 170 | 168 | if ($fichier) { |
| 171 | 169 | return $code; |
@@ -173,5 +171,5 @@ discard block |
||
| 173 | 171 | |
| 174 | 172 | $align = preg_replace(",\W,", "", $align); |
| 175 | 173 | |
| 176 | - return "quete_html_logo($code, '$align', " .($_lien ? $_lien : "''") .")"; |
|
| 174 | + return "quete_html_logo($code, '$align', ".($_lien ? $_lien : "''").")"; |
|
| 177 | 175 | } |
@@ -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 | /** |
@@ -32,78 +32,78 @@ discard block |
||
| 32 | 32 | */ |
| 33 | 33 | function auth_spip_dist($login, $pass, $serveur = '', $phpauth = false) { |
| 34 | 34 | |
| 35 | - // retrouver le login |
|
| 36 | - $login = auth_spip_retrouver_login($login); |
|
| 37 | - // login inconnu, n'allons pas plus loin |
|
| 38 | - if (!$login) { |
|
| 39 | - return array(); |
|
| 40 | - } |
|
| 41 | - |
|
| 42 | - $md5pass = ""; |
|
| 43 | - $shapass = $shanext = ""; |
|
| 44 | - |
|
| 45 | - if (preg_match(",^\{([0-9a-f]{64});([0-9a-f]{64})\}$,i", $pass, $regs)) { |
|
| 46 | - $shapass = $regs[1]; |
|
| 47 | - $shanext = $regs[2]; |
|
| 48 | - } // compat avec une base mixte md5/sha256 : le js a envoye les 2 hash |
|
| 49 | - elseif (preg_match(",^\{([0-9a-f]{64});([0-9a-f]{64});([0-9a-f]{32});([0-9a-f]{32})\}$,i", $pass, $regs)) { |
|
| 50 | - $shapass = $regs[1]; |
|
| 51 | - $shanext = $regs[2]; |
|
| 52 | - $md5pass = $regs[3]; |
|
| 53 | - //$md5next = $regs[4]; |
|
| 54 | - } // si envoi non crypte, crypter maintenant |
|
| 55 | - elseif ($pass) { |
|
| 56 | - $row = sql_fetsel("alea_actuel, alea_futur", "spip_auteurs", "login=" . sql_quote($login, $serveur, 'text'), '', '', |
|
| 57 | - '', '', $serveur); |
|
| 58 | - |
|
| 59 | - if ($row) { |
|
| 60 | - include_spip('auth/sha256.inc'); |
|
| 61 | - $shapass = spip_sha256($row['alea_actuel'] . $pass); |
|
| 62 | - $shanext = spip_sha256($row['alea_futur'] . $pass); |
|
| 63 | - $md5pass = md5($row['alea_actuel'] . $pass); |
|
| 64 | - } |
|
| 65 | - } |
|
| 66 | - |
|
| 67 | - // login inexistant ou mot de passe vide |
|
| 68 | - if (!$shapass and !$md5pass) { |
|
| 69 | - return array(); |
|
| 70 | - } |
|
| 71 | - |
|
| 72 | - $row = sql_fetsel("*", "spip_auteurs", |
|
| 73 | - "login=" . sql_quote($login, $serveur, 'text') . " AND pass=" . sql_quote($shapass, $serveur, |
|
| 74 | - 'text') . " AND statut<>'5poubelle'", '', '', '', '', $serveur); |
|
| 75 | - |
|
| 76 | - // compat avec les anciennes bases en md5 |
|
| 77 | - if (!$row and $md5pass) { |
|
| 78 | - $row = sql_fetsel("*", "spip_auteurs", |
|
| 79 | - "login=" . sql_quote($login, $serveur, 'text') . " AND pass=" . sql_quote($md5pass, $serveur, |
|
| 80 | - 'text') . " AND statut<>'5poubelle'", '', '', '', '', $serveur); |
|
| 81 | - } |
|
| 82 | - |
|
| 83 | - // login/mot de passe incorrect |
|
| 84 | - if (!$row) { |
|
| 85 | - return array(); |
|
| 86 | - } |
|
| 87 | - |
|
| 88 | - // fait tourner le codage du pass dans la base |
|
| 89 | - // sauf si phpauth : cela reviendrait a changer l'alea a chaque hit, et aucune action verifiable par securiser_action() |
|
| 90 | - if ($shanext and !$phpauth) { |
|
| 91 | - |
|
| 92 | - include_spip('inc/acces'); // pour creer_uniqid |
|
| 93 | - @sql_update('spip_auteurs', array( |
|
| 94 | - 'alea_actuel' => 'alea_futur', |
|
| 95 | - 'pass' => sql_quote($shanext, $serveur, 'text'), |
|
| 96 | - 'alea_futur' => sql_quote(creer_uniqid(), $serveur, 'text') |
|
| 97 | - ), "id_auteur=" . $row['id_auteur'] . ' AND pass IN (' . sql_quote($shapass, $serveur, |
|
| 98 | - 'text') . ', ' . sql_quote($md5pass, $serveur, 'text') . ')', '', $serveur); |
|
| 99 | - // En profiter pour verifier la securite de tmp/ |
|
| 100 | - // Si elle ne fonctionne pas a l'installation, prevenir |
|
| 101 | - if (!verifier_htaccess(_DIR_TMP) and defined('_ECRIRE_INSTALL')) { |
|
| 102 | - return false; |
|
| 103 | - } |
|
| 104 | - } |
|
| 105 | - |
|
| 106 | - return $row; |
|
| 35 | + // retrouver le login |
|
| 36 | + $login = auth_spip_retrouver_login($login); |
|
| 37 | + // login inconnu, n'allons pas plus loin |
|
| 38 | + if (!$login) { |
|
| 39 | + return array(); |
|
| 40 | + } |
|
| 41 | + |
|
| 42 | + $md5pass = ""; |
|
| 43 | + $shapass = $shanext = ""; |
|
| 44 | + |
|
| 45 | + if (preg_match(",^\{([0-9a-f]{64});([0-9a-f]{64})\}$,i", $pass, $regs)) { |
|
| 46 | + $shapass = $regs[1]; |
|
| 47 | + $shanext = $regs[2]; |
|
| 48 | + } // compat avec une base mixte md5/sha256 : le js a envoye les 2 hash |
|
| 49 | + elseif (preg_match(",^\{([0-9a-f]{64});([0-9a-f]{64});([0-9a-f]{32});([0-9a-f]{32})\}$,i", $pass, $regs)) { |
|
| 50 | + $shapass = $regs[1]; |
|
| 51 | + $shanext = $regs[2]; |
|
| 52 | + $md5pass = $regs[3]; |
|
| 53 | + //$md5next = $regs[4]; |
|
| 54 | + } // si envoi non crypte, crypter maintenant |
|
| 55 | + elseif ($pass) { |
|
| 56 | + $row = sql_fetsel("alea_actuel, alea_futur", "spip_auteurs", "login=" . sql_quote($login, $serveur, 'text'), '', '', |
|
| 57 | + '', '', $serveur); |
|
| 58 | + |
|
| 59 | + if ($row) { |
|
| 60 | + include_spip('auth/sha256.inc'); |
|
| 61 | + $shapass = spip_sha256($row['alea_actuel'] . $pass); |
|
| 62 | + $shanext = spip_sha256($row['alea_futur'] . $pass); |
|
| 63 | + $md5pass = md5($row['alea_actuel'] . $pass); |
|
| 64 | + } |
|
| 65 | + } |
|
| 66 | + |
|
| 67 | + // login inexistant ou mot de passe vide |
|
| 68 | + if (!$shapass and !$md5pass) { |
|
| 69 | + return array(); |
|
| 70 | + } |
|
| 71 | + |
|
| 72 | + $row = sql_fetsel("*", "spip_auteurs", |
|
| 73 | + "login=" . sql_quote($login, $serveur, 'text') . " AND pass=" . sql_quote($shapass, $serveur, |
|
| 74 | + 'text') . " AND statut<>'5poubelle'", '', '', '', '', $serveur); |
|
| 75 | + |
|
| 76 | + // compat avec les anciennes bases en md5 |
|
| 77 | + if (!$row and $md5pass) { |
|
| 78 | + $row = sql_fetsel("*", "spip_auteurs", |
|
| 79 | + "login=" . sql_quote($login, $serveur, 'text') . " AND pass=" . sql_quote($md5pass, $serveur, |
|
| 80 | + 'text') . " AND statut<>'5poubelle'", '', '', '', '', $serveur); |
|
| 81 | + } |
|
| 82 | + |
|
| 83 | + // login/mot de passe incorrect |
|
| 84 | + if (!$row) { |
|
| 85 | + return array(); |
|
| 86 | + } |
|
| 87 | + |
|
| 88 | + // fait tourner le codage du pass dans la base |
|
| 89 | + // sauf si phpauth : cela reviendrait a changer l'alea a chaque hit, et aucune action verifiable par securiser_action() |
|
| 90 | + if ($shanext and !$phpauth) { |
|
| 91 | + |
|
| 92 | + include_spip('inc/acces'); // pour creer_uniqid |
|
| 93 | + @sql_update('spip_auteurs', array( |
|
| 94 | + 'alea_actuel' => 'alea_futur', |
|
| 95 | + 'pass' => sql_quote($shanext, $serveur, 'text'), |
|
| 96 | + 'alea_futur' => sql_quote(creer_uniqid(), $serveur, 'text') |
|
| 97 | + ), "id_auteur=" . $row['id_auteur'] . ' AND pass IN (' . sql_quote($shapass, $serveur, |
|
| 98 | + 'text') . ', ' . sql_quote($md5pass, $serveur, 'text') . ')', '', $serveur); |
|
| 99 | + // En profiter pour verifier la securite de tmp/ |
|
| 100 | + // Si elle ne fonctionne pas a l'installation, prevenir |
|
| 101 | + if (!verifier_htaccess(_DIR_TMP) and defined('_ECRIRE_INSTALL')) { |
|
| 102 | + return false; |
|
| 103 | + } |
|
| 104 | + } |
|
| 105 | + |
|
| 106 | + return $row; |
|
| 107 | 107 | } |
| 108 | 108 | |
| 109 | 109 | /** |
@@ -113,41 +113,41 @@ discard block |
||
| 113 | 113 | * @return array |
| 114 | 114 | */ |
| 115 | 115 | function auth_spip_formulaire_login($flux) { |
| 116 | - // faut il encore envoyer md5 ? |
|
| 117 | - // on regarde si il reste des pass md5 en base pour des auteurs en statut pas poubelle |
|
| 118 | - // les hash md5 ont une longueur 32, les sha 64 |
|
| 119 | - // en evitant une requete sql a chaque affichage du formulaire login sans session |
|
| 120 | - // (perf issue pour les sites qui mettent le formulaire de login sur la home) |
|
| 121 | - $compat_md5 = false; |
|
| 122 | - if (!isset($GLOBALS['meta']['sha_256_only']) or _request('var_mode')) { |
|
| 123 | - $compat_md5 = sql_countsel("spip_auteurs", "length(pass)=32 AND statut<>'poubelle'"); |
|
| 124 | - if ($compat_md5 and isset($GLOBALS['meta']['sha_256_only'])) { |
|
| 125 | - effacer_meta('sha_256_only'); |
|
| 126 | - } |
|
| 127 | - if (!$compat_md5) { |
|
| 128 | - ecrire_meta('sha_256_only', 'oui'); |
|
| 129 | - } |
|
| 130 | - } |
|
| 131 | - |
|
| 132 | - // javascript qui gere la securite du login en evitant de faire circuler le pass en clair |
|
| 133 | - $flux['data'] .= |
|
| 134 | - ($compat_md5 ? '<script type="text/javascript" src="' . _DIR_JAVASCRIPT . 'md5.js"></script>' : '') |
|
| 135 | - . '<script type="text/javascript" src="' . _DIR_JAVASCRIPT . 'login-sha-min.js"></script>' |
|
| 136 | - . '<script type="text/javascript">/*<![CDATA[*/' |
|
| 137 | - . "var login_info={'alea_actuel':'" . $flux['args']['contexte']['_alea_actuel'] . "'," |
|
| 138 | - . "'alea_futur':'" . $flux['args']['contexte']['_alea_futur'] . "'," |
|
| 139 | - . "'login':'" . $flux['args']['contexte']['var_login'] . "'," |
|
| 140 | - . "'page_auteur': '" . generer_url_public('informer_auteur') . "'," |
|
| 141 | - . "'informe_auteur_en_cours':false," |
|
| 142 | - . "'attente_informe':0," |
|
| 143 | - . "'compat_md5':" . ($compat_md5 ? "true" : "false") . "};" |
|
| 144 | - . "jQuery(function(){ |
|
| 116 | + // faut il encore envoyer md5 ? |
|
| 117 | + // on regarde si il reste des pass md5 en base pour des auteurs en statut pas poubelle |
|
| 118 | + // les hash md5 ont une longueur 32, les sha 64 |
|
| 119 | + // en evitant une requete sql a chaque affichage du formulaire login sans session |
|
| 120 | + // (perf issue pour les sites qui mettent le formulaire de login sur la home) |
|
| 121 | + $compat_md5 = false; |
|
| 122 | + if (!isset($GLOBALS['meta']['sha_256_only']) or _request('var_mode')) { |
|
| 123 | + $compat_md5 = sql_countsel("spip_auteurs", "length(pass)=32 AND statut<>'poubelle'"); |
|
| 124 | + if ($compat_md5 and isset($GLOBALS['meta']['sha_256_only'])) { |
|
| 125 | + effacer_meta('sha_256_only'); |
|
| 126 | + } |
|
| 127 | + if (!$compat_md5) { |
|
| 128 | + ecrire_meta('sha_256_only', 'oui'); |
|
| 129 | + } |
|
| 130 | + } |
|
| 131 | + |
|
| 132 | + // javascript qui gere la securite du login en evitant de faire circuler le pass en clair |
|
| 133 | + $flux['data'] .= |
|
| 134 | + ($compat_md5 ? '<script type="text/javascript" src="' . _DIR_JAVASCRIPT . 'md5.js"></script>' : '') |
|
| 135 | + . '<script type="text/javascript" src="' . _DIR_JAVASCRIPT . 'login-sha-min.js"></script>' |
|
| 136 | + . '<script type="text/javascript">/*<![CDATA[*/' |
|
| 137 | + . "var login_info={'alea_actuel':'" . $flux['args']['contexte']['_alea_actuel'] . "'," |
|
| 138 | + . "'alea_futur':'" . $flux['args']['contexte']['_alea_futur'] . "'," |
|
| 139 | + . "'login':'" . $flux['args']['contexte']['var_login'] . "'," |
|
| 140 | + . "'page_auteur': '" . generer_url_public('informer_auteur') . "'," |
|
| 141 | + . "'informe_auteur_en_cours':false," |
|
| 142 | + . "'attente_informe':0," |
|
| 143 | + . "'compat_md5':" . ($compat_md5 ? "true" : "false") . "};" |
|
| 144 | + . "jQuery(function(){ |
|
| 145 | 145 | jQuery('#var_login').change(actualise_auteur); |
| 146 | 146 | jQuery('form#formulaire_login').submit(login_submit); |
| 147 | 147 | });" |
| 148 | - . "/*]]>*/</script>"; |
|
| 148 | + . "/*]]>*/</script>"; |
|
| 149 | 149 | |
| 150 | - return $flux; |
|
| 150 | + return $flux; |
|
| 151 | 151 | } |
| 152 | 152 | |
| 153 | 153 | |
@@ -159,10 +159,10 @@ discard block |
||
| 159 | 159 | * toujours true pour un auteur cree dans SPIP |
| 160 | 160 | */ |
| 161 | 161 | function auth_spip_autoriser_modifier_login($serveur = '') { |
| 162 | - if (strlen($serveur)) { |
|
| 163 | - return false; |
|
| 164 | - } // les fonctions d'ecriture sur base distante sont encore incompletes |
|
| 165 | - return true; |
|
| 162 | + if (strlen($serveur)) { |
|
| 163 | + return false; |
|
| 164 | + } // les fonctions d'ecriture sur base distante sont encore incompletes |
|
| 165 | + return true; |
|
| 166 | 166 | } |
| 167 | 167 | |
| 168 | 168 | /** |
@@ -176,21 +176,21 @@ discard block |
||
| 176 | 176 | * message d'erreur si login non valide, chaine vide sinon |
| 177 | 177 | */ |
| 178 | 178 | function auth_spip_verifier_login($new_login, $id_auteur = 0, $serveur = '') { |
| 179 | - // login et mot de passe |
|
| 180 | - if (strlen($new_login)) { |
|
| 181 | - if (strlen($new_login) < _LOGIN_TROP_COURT) { |
|
| 182 | - return _T('info_login_trop_court_car_pluriel', array('nb' => _LOGIN_TROP_COURT)); |
|
| 183 | - } else { |
|
| 184 | - $n = sql_countsel('spip_auteurs', |
|
| 185 | - "login=" . sql_quote($new_login) . " AND id_auteur!=" . intval($id_auteur) . " AND statut!='5poubelle'", '', '', |
|
| 186 | - $serveur); |
|
| 187 | - if ($n) { |
|
| 188 | - return _T('info_login_existant'); |
|
| 189 | - } |
|
| 190 | - } |
|
| 191 | - } |
|
| 192 | - |
|
| 193 | - return ''; |
|
| 179 | + // login et mot de passe |
|
| 180 | + if (strlen($new_login)) { |
|
| 181 | + if (strlen($new_login) < _LOGIN_TROP_COURT) { |
|
| 182 | + return _T('info_login_trop_court_car_pluriel', array('nb' => _LOGIN_TROP_COURT)); |
|
| 183 | + } else { |
|
| 184 | + $n = sql_countsel('spip_auteurs', |
|
| 185 | + "login=" . sql_quote($new_login) . " AND id_auteur!=" . intval($id_auteur) . " AND statut!='5poubelle'", '', '', |
|
| 186 | + $serveur); |
|
| 187 | + if ($n) { |
|
| 188 | + return _T('info_login_existant'); |
|
| 189 | + } |
|
| 190 | + } |
|
| 191 | + } |
|
| 192 | + |
|
| 193 | + return ''; |
|
| 194 | 194 | } |
| 195 | 195 | |
| 196 | 196 | /** |
@@ -202,32 +202,32 @@ discard block |
||
| 202 | 202 | * @return bool |
| 203 | 203 | */ |
| 204 | 204 | function auth_spip_modifier_login($new_login, $id_auteur, $serveur = '') { |
| 205 | - if (is_null($new_login) or auth_spip_verifier_login($new_login, $id_auteur, $serveur) != '') { |
|
| 206 | - return false; |
|
| 207 | - } |
|
| 208 | - if (!$id_auteur = intval($id_auteur) |
|
| 209 | - or !$auteur = sql_fetsel('login', 'spip_auteurs', 'id_auteur=' . intval($id_auteur), '', '', '', '', $serveur) |
|
| 210 | - ) { |
|
| 211 | - return false; |
|
| 212 | - } |
|
| 213 | - if ($new_login == $auteur['login']) { |
|
| 214 | - return true; |
|
| 215 | - } // on a rien fait mais c'est bon ! |
|
| 216 | - |
|
| 217 | - include_spip('action/editer_auteur'); |
|
| 218 | - |
|
| 219 | - // vider le login des auteurs a la poubelle qui avaient ce meme login |
|
| 220 | - if (strlen($new_login)) { |
|
| 221 | - $anciens = sql_allfetsel('id_auteur', 'spip_auteurs', |
|
| 222 | - 'login=' . sql_quote($new_login, $serveur, 'text') . " AND statut='5poubelle'", '', '', '', '', $serveur); |
|
| 223 | - while ($row = array_pop($anciens)) { |
|
| 224 | - auteur_modifier($row['id_auteur'], array('login' => ''), true); // manque la gestion de $serveur |
|
| 225 | - } |
|
| 226 | - } |
|
| 227 | - |
|
| 228 | - auteur_modifier($id_auteur, array('login' => $new_login), true); // manque la gestion de $serveur |
|
| 229 | - |
|
| 230 | - return true; |
|
| 205 | + if (is_null($new_login) or auth_spip_verifier_login($new_login, $id_auteur, $serveur) != '') { |
|
| 206 | + return false; |
|
| 207 | + } |
|
| 208 | + if (!$id_auteur = intval($id_auteur) |
|
| 209 | + or !$auteur = sql_fetsel('login', 'spip_auteurs', 'id_auteur=' . intval($id_auteur), '', '', '', '', $serveur) |
|
| 210 | + ) { |
|
| 211 | + return false; |
|
| 212 | + } |
|
| 213 | + if ($new_login == $auteur['login']) { |
|
| 214 | + return true; |
|
| 215 | + } // on a rien fait mais c'est bon ! |
|
| 216 | + |
|
| 217 | + include_spip('action/editer_auteur'); |
|
| 218 | + |
|
| 219 | + // vider le login des auteurs a la poubelle qui avaient ce meme login |
|
| 220 | + if (strlen($new_login)) { |
|
| 221 | + $anciens = sql_allfetsel('id_auteur', 'spip_auteurs', |
|
| 222 | + 'login=' . sql_quote($new_login, $serveur, 'text') . " AND statut='5poubelle'", '', '', '', '', $serveur); |
|
| 223 | + while ($row = array_pop($anciens)) { |
|
| 224 | + auteur_modifier($row['id_auteur'], array('login' => ''), true); // manque la gestion de $serveur |
|
| 225 | + } |
|
| 226 | + } |
|
| 227 | + |
|
| 228 | + auteur_modifier($id_auteur, array('login' => $new_login), true); // manque la gestion de $serveur |
|
| 229 | + |
|
| 230 | + return true; |
|
| 231 | 231 | } |
| 232 | 232 | |
| 233 | 233 | /** |
@@ -239,27 +239,27 @@ discard block |
||
| 239 | 239 | * @return string |
| 240 | 240 | */ |
| 241 | 241 | function auth_spip_retrouver_login($login, $serveur = '') { |
| 242 | - if (!strlen($login)) { |
|
| 243 | - return null; |
|
| 244 | - } // pas la peine de requeter |
|
| 245 | - $l = sql_quote($login, $serveur, 'text'); |
|
| 246 | - if ($r = sql_getfetsel('login', 'spip_auteurs', |
|
| 247 | - "statut<>'5poubelle'" . |
|
| 248 | - " AND (length(pass)>0)" . |
|
| 249 | - " AND (login=$l)", '', '', '', '', $serveur) |
|
| 250 | - ) { |
|
| 251 | - return $r; |
|
| 252 | - } |
|
| 253 | - // Si pas d'auteur avec ce login |
|
| 254 | - // regarder s'il a saisi son nom ou son mail. |
|
| 255 | - // Ne pas fusionner avec la requete precedente |
|
| 256 | - // car un nom peut etre homonyme d'un autre login |
|
| 257 | - else { |
|
| 258 | - return sql_getfetsel('login', 'spip_auteurs', |
|
| 259 | - "statut<>'5poubelle'" . |
|
| 260 | - " AND (length(pass)>0)" . |
|
| 261 | - " AND (login<>'' AND (nom=$l OR email=$l))", '', '', '', '', $serveur); |
|
| 262 | - } |
|
| 242 | + if (!strlen($login)) { |
|
| 243 | + return null; |
|
| 244 | + } // pas la peine de requeter |
|
| 245 | + $l = sql_quote($login, $serveur, 'text'); |
|
| 246 | + if ($r = sql_getfetsel('login', 'spip_auteurs', |
|
| 247 | + "statut<>'5poubelle'" . |
|
| 248 | + " AND (length(pass)>0)" . |
|
| 249 | + " AND (login=$l)", '', '', '', '', $serveur) |
|
| 250 | + ) { |
|
| 251 | + return $r; |
|
| 252 | + } |
|
| 253 | + // Si pas d'auteur avec ce login |
|
| 254 | + // regarder s'il a saisi son nom ou son mail. |
|
| 255 | + // Ne pas fusionner avec la requete precedente |
|
| 256 | + // car un nom peut etre homonyme d'un autre login |
|
| 257 | + else { |
|
| 258 | + return sql_getfetsel('login', 'spip_auteurs', |
|
| 259 | + "statut<>'5poubelle'" . |
|
| 260 | + " AND (length(pass)>0)" . |
|
| 261 | + " AND (login<>'' AND (nom=$l OR email=$l))", '', '', '', '', $serveur); |
|
| 262 | + } |
|
| 263 | 263 | } |
| 264 | 264 | |
| 265 | 265 | |
@@ -277,11 +277,11 @@ discard block |
||
| 277 | 277 | */ |
| 278 | 278 | function auth_spip_informer_login($infos, $row, $serveur = '') { |
| 279 | 279 | |
| 280 | - // pour la methode SPIP on a besoin des alea en plus pour encoder le pass avec |
|
| 281 | - $infos['alea_actuel'] = $row['alea_actuel']; |
|
| 282 | - $infos['alea_futur'] = $row['alea_futur']; |
|
| 280 | + // pour la methode SPIP on a besoin des alea en plus pour encoder le pass avec |
|
| 281 | + $infos['alea_actuel'] = $row['alea_actuel']; |
|
| 282 | + $infos['alea_futur'] = $row['alea_futur']; |
|
| 283 | 283 | |
| 284 | - return $infos; |
|
| 284 | + return $infos; |
|
| 285 | 285 | } |
| 286 | 286 | |
| 287 | 287 | /** |
@@ -292,10 +292,10 @@ discard block |
||
| 292 | 292 | * toujours true pour un auteur cree dans SPIP |
| 293 | 293 | */ |
| 294 | 294 | function auth_spip_autoriser_modifier_pass($serveur = '') { |
| 295 | - if (strlen($serveur)) { |
|
| 296 | - return false; |
|
| 297 | - } // les fonctions d'ecriture sur base distante sont encore incompletes |
|
| 298 | - return true; |
|
| 295 | + if (strlen($serveur)) { |
|
| 296 | + return false; |
|
| 297 | + } // les fonctions d'ecriture sur base distante sont encore incompletes |
|
| 298 | + return true; |
|
| 299 | 299 | } |
| 300 | 300 | |
| 301 | 301 | |
@@ -316,12 +316,12 @@ discard block |
||
| 316 | 316 | * message d'erreur si login non valide, chaine vide sinon |
| 317 | 317 | */ |
| 318 | 318 | function auth_spip_verifier_pass($login, $new_pass, $id_auteur = 0, $serveur = '') { |
| 319 | - // login et mot de passe |
|
| 320 | - if (strlen($new_pass) < _PASS_LONGUEUR_MINI) { |
|
| 321 | - return _T('info_passe_trop_court_car_pluriel', array('nb' => _PASS_LONGUEUR_MINI)); |
|
| 322 | - } |
|
| 319 | + // login et mot de passe |
|
| 320 | + if (strlen($new_pass) < _PASS_LONGUEUR_MINI) { |
|
| 321 | + return _T('info_passe_trop_court_car_pluriel', array('nb' => _PASS_LONGUEUR_MINI)); |
|
| 322 | + } |
|
| 323 | 323 | |
| 324 | - return ''; |
|
| 324 | + return ''; |
|
| 325 | 325 | } |
| 326 | 326 | |
| 327 | 327 | /** |
@@ -335,33 +335,33 @@ discard block |
||
| 335 | 335 | * @return bool |
| 336 | 336 | */ |
| 337 | 337 | function auth_spip_modifier_pass($login, $new_pass, $id_auteur, $serveur = '') { |
| 338 | - if (is_null($new_pass) or auth_spip_verifier_pass($login, $new_pass, $id_auteur, $serveur) != '') { |
|
| 339 | - return false; |
|
| 340 | - } |
|
| 341 | - |
|
| 342 | - if (!$id_auteur = intval($id_auteur) |
|
| 343 | - or !sql_fetsel('login', 'spip_auteurs', 'id_auteur=' . intval($id_auteur), '', '', '', '', $serveur) |
|
| 344 | - ) { |
|
| 345 | - return false; |
|
| 346 | - } |
|
| 347 | - |
|
| 348 | - $c = array(); |
|
| 349 | - include_spip('inc/acces'); |
|
| 350 | - include_spip('auth/sha256.inc'); |
|
| 351 | - $htpass = generer_htpass($new_pass); |
|
| 352 | - $alea_actuel = creer_uniqid(); |
|
| 353 | - $alea_futur = creer_uniqid(); |
|
| 354 | - $pass = spip_sha256($alea_actuel . $new_pass); |
|
| 355 | - $c['pass'] = $pass; |
|
| 356 | - $c['htpass'] = $htpass; |
|
| 357 | - $c['alea_actuel'] = $alea_actuel; |
|
| 358 | - $c['alea_futur'] = $alea_futur; |
|
| 359 | - $c['low_sec'] = ''; |
|
| 360 | - |
|
| 361 | - include_spip('action/editer_auteur'); |
|
| 362 | - auteur_modifier($id_auteur, $c, true); // manque la gestion de $serveur |
|
| 363 | - |
|
| 364 | - return true; // on a bien modifie le pass |
|
| 338 | + if (is_null($new_pass) or auth_spip_verifier_pass($login, $new_pass, $id_auteur, $serveur) != '') { |
|
| 339 | + return false; |
|
| 340 | + } |
|
| 341 | + |
|
| 342 | + if (!$id_auteur = intval($id_auteur) |
|
| 343 | + or !sql_fetsel('login', 'spip_auteurs', 'id_auteur=' . intval($id_auteur), '', '', '', '', $serveur) |
|
| 344 | + ) { |
|
| 345 | + return false; |
|
| 346 | + } |
|
| 347 | + |
|
| 348 | + $c = array(); |
|
| 349 | + include_spip('inc/acces'); |
|
| 350 | + include_spip('auth/sha256.inc'); |
|
| 351 | + $htpass = generer_htpass($new_pass); |
|
| 352 | + $alea_actuel = creer_uniqid(); |
|
| 353 | + $alea_futur = creer_uniqid(); |
|
| 354 | + $pass = spip_sha256($alea_actuel . $new_pass); |
|
| 355 | + $c['pass'] = $pass; |
|
| 356 | + $c['htpass'] = $htpass; |
|
| 357 | + $c['alea_actuel'] = $alea_actuel; |
|
| 358 | + $c['alea_futur'] = $alea_futur; |
|
| 359 | + $c['low_sec'] = ''; |
|
| 360 | + |
|
| 361 | + include_spip('action/editer_auteur'); |
|
| 362 | + auteur_modifier($id_auteur, $c, true); // manque la gestion de $serveur |
|
| 363 | + |
|
| 364 | + return true; // on a bien modifie le pass |
|
| 365 | 365 | } |
| 366 | 366 | |
| 367 | 367 | /** |
@@ -375,54 +375,54 @@ discard block |
||
| 375 | 375 | * @return void |
| 376 | 376 | */ |
| 377 | 377 | function auth_spip_synchroniser_distant($id_auteur, $champs, $options = array(), $serveur = '') { |
| 378 | - // ne rien faire pour une base distante : on ne sait pas regenerer les htaccess |
|
| 379 | - if (strlen($serveur)) { |
|
| 380 | - return; |
|
| 381 | - } |
|
| 382 | - // si un login, pass ou statut a ete modifie |
|
| 383 | - // regenerer les fichier htpass |
|
| 384 | - if (isset($champs['login']) |
|
| 385 | - or isset($champs['pass']) |
|
| 386 | - or isset($champs['statut']) |
|
| 387 | - or (isset($options['all']) and $options['all']) |
|
| 388 | - ) { |
|
| 389 | - |
|
| 390 | - $htaccess = _DIR_RESTREINT . _ACCESS_FILE_NAME; |
|
| 391 | - $htpasswd = _DIR_TMP . _AUTH_USER_FILE; |
|
| 392 | - |
|
| 393 | - // Cette variable de configuration peut etre posee par un plugin |
|
| 394 | - // par exemple acces_restreint ; |
|
| 395 | - // si .htaccess existe, outrepasser spip_meta |
|
| 396 | - if ((!isset($GLOBALS['meta']['creer_htpasswd']) or ($GLOBALS['meta']['creer_htpasswd'] != 'oui')) |
|
| 397 | - and !@file_exists($htaccess) |
|
| 398 | - ) { |
|
| 399 | - spip_unlink($htpasswd); |
|
| 400 | - spip_unlink($htpasswd . "-admin"); |
|
| 401 | - |
|
| 402 | - return; |
|
| 403 | - } |
|
| 404 | - |
|
| 405 | - # remarque : ici on laisse passer les "nouveau" de maniere a leur permettre |
|
| 406 | - # de devenir redacteur le cas echeant (auth http)... a nettoyer |
|
| 407 | - // attention, il faut au prealable se connecter a la base (necessaire car utilise par install) |
|
| 408 | - |
|
| 409 | - $p1 = ''; // login:htpass pour tous |
|
| 410 | - $p2 = ''; // login:htpass pour les admins |
|
| 411 | - $s = sql_select("login, htpass, statut", "spip_auteurs", |
|
| 412 | - sql_in("statut", array('1comite', '0minirezo', 'nouveau'))); |
|
| 413 | - while ($t = sql_fetch($s)) { |
|
| 414 | - if (strlen($t['login']) and strlen($t['htpass'])) { |
|
| 415 | - $p1 .= $t['login'] . ':' . $t['htpass'] . "\n"; |
|
| 416 | - if ($t['statut'] == '0minirezo') { |
|
| 417 | - $p2 .= $t['login'] . ':' . $t['htpass'] . "\n"; |
|
| 418 | - } |
|
| 419 | - } |
|
| 420 | - } |
|
| 421 | - sql_free($s); |
|
| 422 | - if ($p1) { |
|
| 423 | - ecrire_fichier($htpasswd, $p1); |
|
| 424 | - ecrire_fichier($htpasswd . '-admin', $p2); |
|
| 425 | - spip_log("Ecriture de $htpasswd et $htpasswd-admin"); |
|
| 426 | - } |
|
| 427 | - } |
|
| 378 | + // ne rien faire pour une base distante : on ne sait pas regenerer les htaccess |
|
| 379 | + if (strlen($serveur)) { |
|
| 380 | + return; |
|
| 381 | + } |
|
| 382 | + // si un login, pass ou statut a ete modifie |
|
| 383 | + // regenerer les fichier htpass |
|
| 384 | + if (isset($champs['login']) |
|
| 385 | + or isset($champs['pass']) |
|
| 386 | + or isset($champs['statut']) |
|
| 387 | + or (isset($options['all']) and $options['all']) |
|
| 388 | + ) { |
|
| 389 | + |
|
| 390 | + $htaccess = _DIR_RESTREINT . _ACCESS_FILE_NAME; |
|
| 391 | + $htpasswd = _DIR_TMP . _AUTH_USER_FILE; |
|
| 392 | + |
|
| 393 | + // Cette variable de configuration peut etre posee par un plugin |
|
| 394 | + // par exemple acces_restreint ; |
|
| 395 | + // si .htaccess existe, outrepasser spip_meta |
|
| 396 | + if ((!isset($GLOBALS['meta']['creer_htpasswd']) or ($GLOBALS['meta']['creer_htpasswd'] != 'oui')) |
|
| 397 | + and !@file_exists($htaccess) |
|
| 398 | + ) { |
|
| 399 | + spip_unlink($htpasswd); |
|
| 400 | + spip_unlink($htpasswd . "-admin"); |
|
| 401 | + |
|
| 402 | + return; |
|
| 403 | + } |
|
| 404 | + |
|
| 405 | + # remarque : ici on laisse passer les "nouveau" de maniere a leur permettre |
|
| 406 | + # de devenir redacteur le cas echeant (auth http)... a nettoyer |
|
| 407 | + // attention, il faut au prealable se connecter a la base (necessaire car utilise par install) |
|
| 408 | + |
|
| 409 | + $p1 = ''; // login:htpass pour tous |
|
| 410 | + $p2 = ''; // login:htpass pour les admins |
|
| 411 | + $s = sql_select("login, htpass, statut", "spip_auteurs", |
|
| 412 | + sql_in("statut", array('1comite', '0minirezo', 'nouveau'))); |
|
| 413 | + while ($t = sql_fetch($s)) { |
|
| 414 | + if (strlen($t['login']) and strlen($t['htpass'])) { |
|
| 415 | + $p1 .= $t['login'] . ':' . $t['htpass'] . "\n"; |
|
| 416 | + if ($t['statut'] == '0minirezo') { |
|
| 417 | + $p2 .= $t['login'] . ':' . $t['htpass'] . "\n"; |
|
| 418 | + } |
|
| 419 | + } |
|
| 420 | + } |
|
| 421 | + sql_free($s); |
|
| 422 | + if ($p1) { |
|
| 423 | + ecrire_fichier($htpasswd, $p1); |
|
| 424 | + ecrire_fichier($htpasswd . '-admin', $p2); |
|
| 425 | + spip_log("Ecriture de $htpasswd et $htpasswd-admin"); |
|
| 426 | + } |
|
| 427 | + } |
|
| 428 | 428 | } |
@@ -53,14 +53,14 @@ discard block |
||
| 53 | 53 | //$md5next = $regs[4]; |
| 54 | 54 | } // si envoi non crypte, crypter maintenant |
| 55 | 55 | elseif ($pass) { |
| 56 | - $row = sql_fetsel("alea_actuel, alea_futur", "spip_auteurs", "login=" . sql_quote($login, $serveur, 'text'), '', '', |
|
| 56 | + $row = sql_fetsel("alea_actuel, alea_futur", "spip_auteurs", "login=".sql_quote($login, $serveur, 'text'), '', '', |
|
| 57 | 57 | '', '', $serveur); |
| 58 | 58 | |
| 59 | 59 | if ($row) { |
| 60 | 60 | include_spip('auth/sha256.inc'); |
| 61 | - $shapass = spip_sha256($row['alea_actuel'] . $pass); |
|
| 62 | - $shanext = spip_sha256($row['alea_futur'] . $pass); |
|
| 63 | - $md5pass = md5($row['alea_actuel'] . $pass); |
|
| 61 | + $shapass = spip_sha256($row['alea_actuel'].$pass); |
|
| 62 | + $shanext = spip_sha256($row['alea_futur'].$pass); |
|
| 63 | + $md5pass = md5($row['alea_actuel'].$pass); |
|
| 64 | 64 | } |
| 65 | 65 | } |
| 66 | 66 | |
@@ -70,14 +70,14 @@ discard block |
||
| 70 | 70 | } |
| 71 | 71 | |
| 72 | 72 | $row = sql_fetsel("*", "spip_auteurs", |
| 73 | - "login=" . sql_quote($login, $serveur, 'text') . " AND pass=" . sql_quote($shapass, $serveur, |
|
| 74 | - 'text') . " AND statut<>'5poubelle'", '', '', '', '', $serveur); |
|
| 73 | + "login=".sql_quote($login, $serveur, 'text')." AND pass=".sql_quote($shapass, $serveur, |
|
| 74 | + 'text')." AND statut<>'5poubelle'", '', '', '', '', $serveur); |
|
| 75 | 75 | |
| 76 | 76 | // compat avec les anciennes bases en md5 |
| 77 | 77 | if (!$row and $md5pass) { |
| 78 | 78 | $row = sql_fetsel("*", "spip_auteurs", |
| 79 | - "login=" . sql_quote($login, $serveur, 'text') . " AND pass=" . sql_quote($md5pass, $serveur, |
|
| 80 | - 'text') . " AND statut<>'5poubelle'", '', '', '', '', $serveur); |
|
| 79 | + "login=".sql_quote($login, $serveur, 'text')." AND pass=".sql_quote($md5pass, $serveur, |
|
| 80 | + 'text')." AND statut<>'5poubelle'", '', '', '', '', $serveur); |
|
| 81 | 81 | } |
| 82 | 82 | |
| 83 | 83 | // login/mot de passe incorrect |
@@ -94,8 +94,8 @@ discard block |
||
| 94 | 94 | 'alea_actuel' => 'alea_futur', |
| 95 | 95 | 'pass' => sql_quote($shanext, $serveur, 'text'), |
| 96 | 96 | 'alea_futur' => sql_quote(creer_uniqid(), $serveur, 'text') |
| 97 | - ), "id_auteur=" . $row['id_auteur'] . ' AND pass IN (' . sql_quote($shapass, $serveur, |
|
| 98 | - 'text') . ', ' . sql_quote($md5pass, $serveur, 'text') . ')', '', $serveur); |
|
| 97 | + ), "id_auteur=".$row['id_auteur'].' AND pass IN ('.sql_quote($shapass, $serveur, |
|
| 98 | + 'text').', '.sql_quote($md5pass, $serveur, 'text').')', '', $serveur); |
|
| 99 | 99 | // En profiter pour verifier la securite de tmp/ |
| 100 | 100 | // Si elle ne fonctionne pas a l'installation, prevenir |
| 101 | 101 | if (!verifier_htaccess(_DIR_TMP) and defined('_ECRIRE_INSTALL')) { |
@@ -131,16 +131,16 @@ discard block |
||
| 131 | 131 | |
| 132 | 132 | // javascript qui gere la securite du login en evitant de faire circuler le pass en clair |
| 133 | 133 | $flux['data'] .= |
| 134 | - ($compat_md5 ? '<script type="text/javascript" src="' . _DIR_JAVASCRIPT . 'md5.js"></script>' : '') |
|
| 135 | - . '<script type="text/javascript" src="' . _DIR_JAVASCRIPT . 'login-sha-min.js"></script>' |
|
| 134 | + ($compat_md5 ? '<script type="text/javascript" src="'._DIR_JAVASCRIPT.'md5.js"></script>' : '') |
|
| 135 | + . '<script type="text/javascript" src="'._DIR_JAVASCRIPT.'login-sha-min.js"></script>' |
|
| 136 | 136 | . '<script type="text/javascript">/*<![CDATA[*/' |
| 137 | - . "var login_info={'alea_actuel':'" . $flux['args']['contexte']['_alea_actuel'] . "'," |
|
| 138 | - . "'alea_futur':'" . $flux['args']['contexte']['_alea_futur'] . "'," |
|
| 139 | - . "'login':'" . $flux['args']['contexte']['var_login'] . "'," |
|
| 140 | - . "'page_auteur': '" . generer_url_public('informer_auteur') . "'," |
|
| 137 | + . "var login_info={'alea_actuel':'".$flux['args']['contexte']['_alea_actuel']."'," |
|
| 138 | + . "'alea_futur':'".$flux['args']['contexte']['_alea_futur']."'," |
|
| 139 | + . "'login':'".$flux['args']['contexte']['var_login']."'," |
|
| 140 | + . "'page_auteur': '".generer_url_public('informer_auteur')."'," |
|
| 141 | 141 | . "'informe_auteur_en_cours':false," |
| 142 | 142 | . "'attente_informe':0," |
| 143 | - . "'compat_md5':" . ($compat_md5 ? "true" : "false") . "};" |
|
| 143 | + . "'compat_md5':".($compat_md5 ? "true" : "false")."};" |
|
| 144 | 144 | . "jQuery(function(){ |
| 145 | 145 | jQuery('#var_login').change(actualise_auteur); |
| 146 | 146 | jQuery('form#formulaire_login').submit(login_submit); |
@@ -182,7 +182,7 @@ discard block |
||
| 182 | 182 | return _T('info_login_trop_court_car_pluriel', array('nb' => _LOGIN_TROP_COURT)); |
| 183 | 183 | } else { |
| 184 | 184 | $n = sql_countsel('spip_auteurs', |
| 185 | - "login=" . sql_quote($new_login) . " AND id_auteur!=" . intval($id_auteur) . " AND statut!='5poubelle'", '', '', |
|
| 185 | + "login=".sql_quote($new_login)." AND id_auteur!=".intval($id_auteur)." AND statut!='5poubelle'", '', '', |
|
| 186 | 186 | $serveur); |
| 187 | 187 | if ($n) { |
| 188 | 188 | return _T('info_login_existant'); |
@@ -206,7 +206,7 @@ discard block |
||
| 206 | 206 | return false; |
| 207 | 207 | } |
| 208 | 208 | if (!$id_auteur = intval($id_auteur) |
| 209 | - or !$auteur = sql_fetsel('login', 'spip_auteurs', 'id_auteur=' . intval($id_auteur), '', '', '', '', $serveur) |
|
| 209 | + or !$auteur = sql_fetsel('login', 'spip_auteurs', 'id_auteur='.intval($id_auteur), '', '', '', '', $serveur) |
|
| 210 | 210 | ) { |
| 211 | 211 | return false; |
| 212 | 212 | } |
@@ -219,7 +219,7 @@ discard block |
||
| 219 | 219 | // vider le login des auteurs a la poubelle qui avaient ce meme login |
| 220 | 220 | if (strlen($new_login)) { |
| 221 | 221 | $anciens = sql_allfetsel('id_auteur', 'spip_auteurs', |
| 222 | - 'login=' . sql_quote($new_login, $serveur, 'text') . " AND statut='5poubelle'", '', '', '', '', $serveur); |
|
| 222 | + 'login='.sql_quote($new_login, $serveur, 'text')." AND statut='5poubelle'", '', '', '', '', $serveur); |
|
| 223 | 223 | while ($row = array_pop($anciens)) { |
| 224 | 224 | auteur_modifier($row['id_auteur'], array('login' => ''), true); // manque la gestion de $serveur |
| 225 | 225 | } |
@@ -244,8 +244,8 @@ discard block |
||
| 244 | 244 | } // pas la peine de requeter |
| 245 | 245 | $l = sql_quote($login, $serveur, 'text'); |
| 246 | 246 | if ($r = sql_getfetsel('login', 'spip_auteurs', |
| 247 | - "statut<>'5poubelle'" . |
|
| 248 | - " AND (length(pass)>0)" . |
|
| 247 | + "statut<>'5poubelle'". |
|
| 248 | + " AND (length(pass)>0)". |
|
| 249 | 249 | " AND (login=$l)", '', '', '', '', $serveur) |
| 250 | 250 | ) { |
| 251 | 251 | return $r; |
@@ -256,8 +256,8 @@ discard block |
||
| 256 | 256 | // car un nom peut etre homonyme d'un autre login |
| 257 | 257 | else { |
| 258 | 258 | return sql_getfetsel('login', 'spip_auteurs', |
| 259 | - "statut<>'5poubelle'" . |
|
| 260 | - " AND (length(pass)>0)" . |
|
| 259 | + "statut<>'5poubelle'". |
|
| 260 | + " AND (length(pass)>0)". |
|
| 261 | 261 | " AND (login<>'' AND (nom=$l OR email=$l))", '', '', '', '', $serveur); |
| 262 | 262 | } |
| 263 | 263 | } |
@@ -340,7 +340,7 @@ discard block |
||
| 340 | 340 | } |
| 341 | 341 | |
| 342 | 342 | if (!$id_auteur = intval($id_auteur) |
| 343 | - or !sql_fetsel('login', 'spip_auteurs', 'id_auteur=' . intval($id_auteur), '', '', '', '', $serveur) |
|
| 343 | + or !sql_fetsel('login', 'spip_auteurs', 'id_auteur='.intval($id_auteur), '', '', '', '', $serveur) |
|
| 344 | 344 | ) { |
| 345 | 345 | return false; |
| 346 | 346 | } |
@@ -351,7 +351,7 @@ discard block |
||
| 351 | 351 | $htpass = generer_htpass($new_pass); |
| 352 | 352 | $alea_actuel = creer_uniqid(); |
| 353 | 353 | $alea_futur = creer_uniqid(); |
| 354 | - $pass = spip_sha256($alea_actuel . $new_pass); |
|
| 354 | + $pass = spip_sha256($alea_actuel.$new_pass); |
|
| 355 | 355 | $c['pass'] = $pass; |
| 356 | 356 | $c['htpass'] = $htpass; |
| 357 | 357 | $c['alea_actuel'] = $alea_actuel; |
@@ -387,8 +387,8 @@ discard block |
||
| 387 | 387 | or (isset($options['all']) and $options['all']) |
| 388 | 388 | ) { |
| 389 | 389 | |
| 390 | - $htaccess = _DIR_RESTREINT . _ACCESS_FILE_NAME; |
|
| 391 | - $htpasswd = _DIR_TMP . _AUTH_USER_FILE; |
|
| 390 | + $htaccess = _DIR_RESTREINT._ACCESS_FILE_NAME; |
|
| 391 | + $htpasswd = _DIR_TMP._AUTH_USER_FILE; |
|
| 392 | 392 | |
| 393 | 393 | // Cette variable de configuration peut etre posee par un plugin |
| 394 | 394 | // par exemple acces_restreint ; |
@@ -397,7 +397,7 @@ discard block |
||
| 397 | 397 | and !@file_exists($htaccess) |
| 398 | 398 | ) { |
| 399 | 399 | spip_unlink($htpasswd); |
| 400 | - spip_unlink($htpasswd . "-admin"); |
|
| 400 | + spip_unlink($htpasswd."-admin"); |
|
| 401 | 401 | |
| 402 | 402 | return; |
| 403 | 403 | } |
@@ -412,16 +412,16 @@ discard block |
||
| 412 | 412 | sql_in("statut", array('1comite', '0minirezo', 'nouveau'))); |
| 413 | 413 | while ($t = sql_fetch($s)) { |
| 414 | 414 | if (strlen($t['login']) and strlen($t['htpass'])) { |
| 415 | - $p1 .= $t['login'] . ':' . $t['htpass'] . "\n"; |
|
| 415 | + $p1 .= $t['login'].':'.$t['htpass']."\n"; |
|
| 416 | 416 | if ($t['statut'] == '0minirezo') { |
| 417 | - $p2 .= $t['login'] . ':' . $t['htpass'] . "\n"; |
|
| 417 | + $p2 .= $t['login'].':'.$t['htpass']."\n"; |
|
| 418 | 418 | } |
| 419 | 419 | } |
| 420 | 420 | } |
| 421 | 421 | sql_free($s); |
| 422 | 422 | if ($p1) { |
| 423 | 423 | ecrire_fichier($htpasswd, $p1); |
| 424 | - ecrire_fichier($htpasswd . '-admin', $p2); |
|
| 424 | + ecrire_fichier($htpasswd.'-admin', $p2); |
|
| 425 | 425 | spip_log("Ecriture de $htpasswd et $htpasswd-admin"); |
| 426 | 426 | } |
| 427 | 427 | } |
@@ -11,7 +11,7 @@ discard block |
||
| 11 | 11 | * @return string Le SHA de la chaîne |
| 12 | 12 | */ |
| 13 | 13 | function spip_sha256($str) { |
| 14 | - return hash('sha256', $str); |
|
| 14 | + return hash('sha256', $str); |
|
| 15 | 15 | } |
| 16 | 16 | |
| 17 | 17 | /** |
@@ -21,18 +21,18 @@ discard block |
||
| 21 | 21 | * @deprecated |
| 22 | 22 | */ |
| 23 | 23 | function _nano_sha256($str, $ig_func = true) { |
| 24 | - return spip_sha256($str); |
|
| 24 | + return spip_sha256($str); |
|
| 25 | 25 | } |
| 26 | 26 | |
| 27 | 27 | // 2009-07-23: Added check for function as the Suhosin plugin adds this routine. |
| 28 | 28 | if (!function_exists('sha256')) { |
| 29 | - /** |
|
| 30 | - * Calcul du SHA256 |
|
| 31 | - * |
|
| 32 | - * @param string $str Chaîne dont on veut calculer le SHA |
|
| 33 | - * @param bool $ig_func |
|
| 34 | - * @return string Le SHA de la chaîne |
|
| 35 | - * @deprecated |
|
| 36 | - */ |
|
| 37 | - function sha256($str, $ig_func = true) { return spip_sha256($str); } |
|
| 29 | + /** |
|
| 30 | + * Calcul du SHA256 |
|
| 31 | + * |
|
| 32 | + * @param string $str Chaîne dont on veut calculer le SHA |
|
| 33 | + * @param bool $ig_func |
|
| 34 | + * @return string Le SHA de la chaîne |
|
| 35 | + * @deprecated |
|
| 36 | + */ |
|
| 37 | + function sha256($str, $ig_func = true) { return spip_sha256($str); } |
|
| 38 | 38 | } |
| 39 | 39 | \ No newline at end of file |
@@ -11,143 +11,143 @@ |
||
| 11 | 11 | \***************************************************************************/ |
| 12 | 12 | |
| 13 | 13 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 14 | - return; |
|
| 14 | + return; |
|
| 15 | 15 | } |
| 16 | 16 | |
| 17 | 17 | include_spip('inc/headers'); |
| 18 | 18 | |
| 19 | 19 | function install_etape_3b_dist() { |
| 20 | - $login = _request('login'); |
|
| 21 | - $email = _request('email'); |
|
| 22 | - $nom = _request('nom'); |
|
| 23 | - $pass = _request('pass'); |
|
| 24 | - $pass_verif = _request('pass_verif'); |
|
| 25 | - |
|
| 26 | - $server_db = defined('_INSTALL_SERVER_DB') |
|
| 27 | - ? _INSTALL_SERVER_DB |
|
| 28 | - : _request('server_db'); |
|
| 29 | - |
|
| 30 | - if (!defined('_PASS_LONGUEUR_MINI')) { |
|
| 31 | - define('_PASS_LONGUEUR_MINI', 6); |
|
| 32 | - } |
|
| 33 | - if (!defined('_LOGIN_TROP_COURT')) { |
|
| 34 | - define('_LOGIN_TROP_COURT', 4); |
|
| 35 | - } |
|
| 36 | - if ($login) { |
|
| 37 | - $echec = ($pass != $pass_verif) ? |
|
| 38 | - _T('info_passes_identiques') |
|
| 39 | - : ((strlen($pass) < _PASS_LONGUEUR_MINI) ? |
|
| 40 | - _T('info_passe_trop_court_car_pluriel', array('nb' => _PASS_LONGUEUR_MINI)) |
|
| 41 | - : ((strlen($login) < _LOGIN_TROP_COURT) ? |
|
| 42 | - _T('info_login_trop_court') |
|
| 43 | - : '')); |
|
| 44 | - include_spip('inc/filtres'); |
|
| 45 | - if (!$echec and $email and !email_valide($email)) { |
|
| 46 | - $echec = _T('form_email_non_valide'); |
|
| 47 | - } |
|
| 48 | - if ($echec) { |
|
| 49 | - echo minipres( |
|
| 50 | - 'AUTO', |
|
| 51 | - info_progression_etape(3, 'etape_', 'install/', true) . |
|
| 52 | - "<div class='error'><h3>$echec</h3>\n" . |
|
| 53 | - '<p>' . _T('avis_connexion_echec_2') . '</p>' . |
|
| 54 | - '</div>' |
|
| 55 | - ); |
|
| 56 | - exit; |
|
| 57 | - } |
|
| 58 | - } |
|
| 59 | - |
|
| 60 | - if (@file_exists(_FILE_CHMOD_TMP)) { |
|
| 61 | - include(_FILE_CHMOD_TMP); |
|
| 62 | - } else { |
|
| 63 | - redirige_url_ecrire('install'); |
|
| 64 | - } |
|
| 65 | - |
|
| 66 | - if (!@file_exists(_FILE_CONNECT_TMP)) { |
|
| 67 | - redirige_url_ecrire('install'); |
|
| 68 | - } |
|
| 69 | - |
|
| 70 | - # maintenant on connait le vrai charset du site s'il est deja configure |
|
| 71 | - # sinon par defaut lire_meta reglera _DEFAULT_CHARSET |
|
| 72 | - # (les donnees arrivent de toute facon postees en _DEFAULT_CHARSET) |
|
| 73 | - |
|
| 74 | - lire_metas(); |
|
| 75 | - if ($login) { |
|
| 76 | - include_spip('inc/charsets'); |
|
| 77 | - |
|
| 78 | - $nom = (importer_charset($nom, _DEFAULT_CHARSET)); |
|
| 79 | - $login = (importer_charset($login, _DEFAULT_CHARSET)); |
|
| 80 | - $email = (importer_charset($email, _DEFAULT_CHARSET)); |
|
| 81 | - # pour le passwd, bizarrement il faut le convertir comme s'il avait |
|
| 82 | - # ete tape en iso-8859-1 ; car c'est en fait ce que voit md5.js |
|
| 83 | - $pass = unicode2charset(utf_8_to_unicode($pass), 'iso-8859-1'); |
|
| 84 | - include_spip('auth/sha256.inc'); |
|
| 85 | - include_spip('inc/acces'); |
|
| 86 | - $htpass = generer_htpass($pass); |
|
| 87 | - $alea_actuel = creer_uniqid(); |
|
| 88 | - $alea_futur = creer_uniqid(); |
|
| 89 | - $shapass = spip_sha256($alea_actuel . $pass); |
|
| 90 | - // prelablement, creer le champ webmestre si il n'existe pas (install neuve |
|
| 91 | - // sur une vieille base |
|
| 92 | - $t = sql_showtable('spip_auteurs', true); |
|
| 93 | - if (!isset($t['field']['webmestre'])) { |
|
| 94 | - @sql_alter("TABLE spip_auteurs ADD webmestre varchar(3) DEFAULT 'non' NOT NULL"); |
|
| 95 | - } |
|
| 96 | - |
|
| 97 | - $id_auteur = sql_getfetsel('id_auteur', 'spip_auteurs', 'login=' . sql_quote($login)); |
|
| 98 | - if ($id_auteur !== null) { |
|
| 99 | - sql_updateq('spip_auteurs', array( |
|
| 100 | - 'nom' => $nom, |
|
| 101 | - 'email' => $email, |
|
| 102 | - 'login' => $login, |
|
| 103 | - 'pass' => $shapass, |
|
| 104 | - 'alea_actuel' => $alea_actuel, |
|
| 105 | - 'alea_futur' => $alea_futur, |
|
| 106 | - 'htpass' => $htpass, |
|
| 107 | - 'statut' => '0minirezo' |
|
| 108 | - ), "id_auteur=$id_auteur"); |
|
| 109 | - } else { |
|
| 110 | - $id_auteur = sql_insertq('spip_auteurs', array( |
|
| 111 | - 'nom' => $nom, |
|
| 112 | - 'email' => $email, |
|
| 113 | - 'login' => $login, |
|
| 114 | - 'pass' => $shapass, |
|
| 115 | - 'htpass' => $htpass, |
|
| 116 | - 'alea_actuel' => $alea_actuel, |
|
| 117 | - 'alea_futur' => $alea_futur, |
|
| 118 | - 'statut' => '0minirezo' |
|
| 119 | - )); |
|
| 120 | - } |
|
| 121 | - // le passer webmestre separrement du reste, au cas ou l'alter n'aurait pas fonctionne |
|
| 122 | - @sql_updateq('spip_auteurs', array('webmestre' => 'oui'), "id_auteur=$id_auteur"); |
|
| 123 | - |
|
| 124 | - // inserer email comme email webmaster principal |
|
| 125 | - // (sauf s'il est vide: cas de la re-installation) |
|
| 126 | - if ($email) { |
|
| 127 | - ecrire_meta('email_webmaster', $email); |
|
| 128 | - } |
|
| 129 | - |
|
| 130 | - // Connecter directement celui qui vient de (re)donner son login |
|
| 131 | - // mais sans cookie d'admin ni connexion longue |
|
| 132 | - include_spip('inc/auth'); |
|
| 133 | - if (!$auteur = auth_identifier_login($login, $pass) |
|
| 134 | - or !auth_loger($auteur, true) |
|
| 135 | - ) { |
|
| 136 | - spip_log("login automatique impossible $auth_spip $session" . count($row)); |
|
| 137 | - } |
|
| 138 | - } |
|
| 139 | - |
|
| 140 | - // installer les metas |
|
| 141 | - $config = charger_fonction('config', 'inc'); |
|
| 142 | - $config(); |
|
| 143 | - |
|
| 144 | - // activer les plugins |
|
| 145 | - // leur installation ne peut pas se faire sur le meme hit, il faudra donc |
|
| 146 | - // poursuivre au hit suivant |
|
| 147 | - include_spip('inc/plugin'); |
|
| 148 | - actualise_plugins_actifs(); |
|
| 149 | - |
|
| 150 | - |
|
| 151 | - include_spip('inc/distant'); |
|
| 152 | - redirige_par_entete(parametre_url(self(), 'etape', '4', '&')); |
|
| 20 | + $login = _request('login'); |
|
| 21 | + $email = _request('email'); |
|
| 22 | + $nom = _request('nom'); |
|
| 23 | + $pass = _request('pass'); |
|
| 24 | + $pass_verif = _request('pass_verif'); |
|
| 25 | + |
|
| 26 | + $server_db = defined('_INSTALL_SERVER_DB') |
|
| 27 | + ? _INSTALL_SERVER_DB |
|
| 28 | + : _request('server_db'); |
|
| 29 | + |
|
| 30 | + if (!defined('_PASS_LONGUEUR_MINI')) { |
|
| 31 | + define('_PASS_LONGUEUR_MINI', 6); |
|
| 32 | + } |
|
| 33 | + if (!defined('_LOGIN_TROP_COURT')) { |
|
| 34 | + define('_LOGIN_TROP_COURT', 4); |
|
| 35 | + } |
|
| 36 | + if ($login) { |
|
| 37 | + $echec = ($pass != $pass_verif) ? |
|
| 38 | + _T('info_passes_identiques') |
|
| 39 | + : ((strlen($pass) < _PASS_LONGUEUR_MINI) ? |
|
| 40 | + _T('info_passe_trop_court_car_pluriel', array('nb' => _PASS_LONGUEUR_MINI)) |
|
| 41 | + : ((strlen($login) < _LOGIN_TROP_COURT) ? |
|
| 42 | + _T('info_login_trop_court') |
|
| 43 | + : '')); |
|
| 44 | + include_spip('inc/filtres'); |
|
| 45 | + if (!$echec and $email and !email_valide($email)) { |
|
| 46 | + $echec = _T('form_email_non_valide'); |
|
| 47 | + } |
|
| 48 | + if ($echec) { |
|
| 49 | + echo minipres( |
|
| 50 | + 'AUTO', |
|
| 51 | + info_progression_etape(3, 'etape_', 'install/', true) . |
|
| 52 | + "<div class='error'><h3>$echec</h3>\n" . |
|
| 53 | + '<p>' . _T('avis_connexion_echec_2') . '</p>' . |
|
| 54 | + '</div>' |
|
| 55 | + ); |
|
| 56 | + exit; |
|
| 57 | + } |
|
| 58 | + } |
|
| 59 | + |
|
| 60 | + if (@file_exists(_FILE_CHMOD_TMP)) { |
|
| 61 | + include(_FILE_CHMOD_TMP); |
|
| 62 | + } else { |
|
| 63 | + redirige_url_ecrire('install'); |
|
| 64 | + } |
|
| 65 | + |
|
| 66 | + if (!@file_exists(_FILE_CONNECT_TMP)) { |
|
| 67 | + redirige_url_ecrire('install'); |
|
| 68 | + } |
|
| 69 | + |
|
| 70 | + # maintenant on connait le vrai charset du site s'il est deja configure |
|
| 71 | + # sinon par defaut lire_meta reglera _DEFAULT_CHARSET |
|
| 72 | + # (les donnees arrivent de toute facon postees en _DEFAULT_CHARSET) |
|
| 73 | + |
|
| 74 | + lire_metas(); |
|
| 75 | + if ($login) { |
|
| 76 | + include_spip('inc/charsets'); |
|
| 77 | + |
|
| 78 | + $nom = (importer_charset($nom, _DEFAULT_CHARSET)); |
|
| 79 | + $login = (importer_charset($login, _DEFAULT_CHARSET)); |
|
| 80 | + $email = (importer_charset($email, _DEFAULT_CHARSET)); |
|
| 81 | + # pour le passwd, bizarrement il faut le convertir comme s'il avait |
|
| 82 | + # ete tape en iso-8859-1 ; car c'est en fait ce que voit md5.js |
|
| 83 | + $pass = unicode2charset(utf_8_to_unicode($pass), 'iso-8859-1'); |
|
| 84 | + include_spip('auth/sha256.inc'); |
|
| 85 | + include_spip('inc/acces'); |
|
| 86 | + $htpass = generer_htpass($pass); |
|
| 87 | + $alea_actuel = creer_uniqid(); |
|
| 88 | + $alea_futur = creer_uniqid(); |
|
| 89 | + $shapass = spip_sha256($alea_actuel . $pass); |
|
| 90 | + // prelablement, creer le champ webmestre si il n'existe pas (install neuve |
|
| 91 | + // sur une vieille base |
|
| 92 | + $t = sql_showtable('spip_auteurs', true); |
|
| 93 | + if (!isset($t['field']['webmestre'])) { |
|
| 94 | + @sql_alter("TABLE spip_auteurs ADD webmestre varchar(3) DEFAULT 'non' NOT NULL"); |
|
| 95 | + } |
|
| 96 | + |
|
| 97 | + $id_auteur = sql_getfetsel('id_auteur', 'spip_auteurs', 'login=' . sql_quote($login)); |
|
| 98 | + if ($id_auteur !== null) { |
|
| 99 | + sql_updateq('spip_auteurs', array( |
|
| 100 | + 'nom' => $nom, |
|
| 101 | + 'email' => $email, |
|
| 102 | + 'login' => $login, |
|
| 103 | + 'pass' => $shapass, |
|
| 104 | + 'alea_actuel' => $alea_actuel, |
|
| 105 | + 'alea_futur' => $alea_futur, |
|
| 106 | + 'htpass' => $htpass, |
|
| 107 | + 'statut' => '0minirezo' |
|
| 108 | + ), "id_auteur=$id_auteur"); |
|
| 109 | + } else { |
|
| 110 | + $id_auteur = sql_insertq('spip_auteurs', array( |
|
| 111 | + 'nom' => $nom, |
|
| 112 | + 'email' => $email, |
|
| 113 | + 'login' => $login, |
|
| 114 | + 'pass' => $shapass, |
|
| 115 | + 'htpass' => $htpass, |
|
| 116 | + 'alea_actuel' => $alea_actuel, |
|
| 117 | + 'alea_futur' => $alea_futur, |
|
| 118 | + 'statut' => '0minirezo' |
|
| 119 | + )); |
|
| 120 | + } |
|
| 121 | + // le passer webmestre separrement du reste, au cas ou l'alter n'aurait pas fonctionne |
|
| 122 | + @sql_updateq('spip_auteurs', array('webmestre' => 'oui'), "id_auteur=$id_auteur"); |
|
| 123 | + |
|
| 124 | + // inserer email comme email webmaster principal |
|
| 125 | + // (sauf s'il est vide: cas de la re-installation) |
|
| 126 | + if ($email) { |
|
| 127 | + ecrire_meta('email_webmaster', $email); |
|
| 128 | + } |
|
| 129 | + |
|
| 130 | + // Connecter directement celui qui vient de (re)donner son login |
|
| 131 | + // mais sans cookie d'admin ni connexion longue |
|
| 132 | + include_spip('inc/auth'); |
|
| 133 | + if (!$auteur = auth_identifier_login($login, $pass) |
|
| 134 | + or !auth_loger($auteur, true) |
|
| 135 | + ) { |
|
| 136 | + spip_log("login automatique impossible $auth_spip $session" . count($row)); |
|
| 137 | + } |
|
| 138 | + } |
|
| 139 | + |
|
| 140 | + // installer les metas |
|
| 141 | + $config = charger_fonction('config', 'inc'); |
|
| 142 | + $config(); |
|
| 143 | + |
|
| 144 | + // activer les plugins |
|
| 145 | + // leur installation ne peut pas se faire sur le meme hit, il faudra donc |
|
| 146 | + // poursuivre au hit suivant |
|
| 147 | + include_spip('inc/plugin'); |
|
| 148 | + actualise_plugins_actifs(); |
|
| 149 | + |
|
| 150 | + |
|
| 151 | + include_spip('inc/distant'); |
|
| 152 | + redirige_par_entete(parametre_url(self(), 'etape', '4', '&')); |
|
| 153 | 153 | } |
@@ -48,9 +48,9 @@ discard block |
||
| 48 | 48 | if ($echec) { |
| 49 | 49 | echo minipres( |
| 50 | 50 | 'AUTO', |
| 51 | - info_progression_etape(3, 'etape_', 'install/', true) . |
|
| 52 | - "<div class='error'><h3>$echec</h3>\n" . |
|
| 53 | - '<p>' . _T('avis_connexion_echec_2') . '</p>' . |
|
| 51 | + info_progression_etape(3, 'etape_', 'install/', true). |
|
| 52 | + "<div class='error'><h3>$echec</h3>\n". |
|
| 53 | + '<p>'._T('avis_connexion_echec_2').'</p>'. |
|
| 54 | 54 | '</div>' |
| 55 | 55 | ); |
| 56 | 56 | exit; |
@@ -86,7 +86,7 @@ discard block |
||
| 86 | 86 | $htpass = generer_htpass($pass); |
| 87 | 87 | $alea_actuel = creer_uniqid(); |
| 88 | 88 | $alea_futur = creer_uniqid(); |
| 89 | - $shapass = spip_sha256($alea_actuel . $pass); |
|
| 89 | + $shapass = spip_sha256($alea_actuel.$pass); |
|
| 90 | 90 | // prelablement, creer le champ webmestre si il n'existe pas (install neuve |
| 91 | 91 | // sur une vieille base |
| 92 | 92 | $t = sql_showtable('spip_auteurs', true); |
@@ -94,7 +94,7 @@ discard block |
||
| 94 | 94 | @sql_alter("TABLE spip_auteurs ADD webmestre varchar(3) DEFAULT 'non' NOT NULL"); |
| 95 | 95 | } |
| 96 | 96 | |
| 97 | - $id_auteur = sql_getfetsel('id_auteur', 'spip_auteurs', 'login=' . sql_quote($login)); |
|
| 97 | + $id_auteur = sql_getfetsel('id_auteur', 'spip_auteurs', 'login='.sql_quote($login)); |
|
| 98 | 98 | if ($id_auteur !== null) { |
| 99 | 99 | sql_updateq('spip_auteurs', array( |
| 100 | 100 | 'nom' => $nom, |
@@ -133,7 +133,7 @@ discard block |
||
| 133 | 133 | if (!$auteur = auth_identifier_login($login, $pass) |
| 134 | 134 | or !auth_loger($auteur, true) |
| 135 | 135 | ) { |
| 136 | - spip_log("login automatique impossible $auth_spip $session" . count($row)); |
|
| 136 | + spip_log("login automatique impossible $auth_spip $session".count($row)); |
|
| 137 | 137 | } |
| 138 | 138 | } |
| 139 | 139 | |
@@ -35,7 +35,7 @@ discard block |
||
| 35 | 35 | // Determiner l'action demandee |
| 36 | 36 | // |
| 37 | 37 | |
| 38 | -$exec = (string)_request('exec'); |
|
| 38 | +$exec = (string) _request('exec'); |
|
| 39 | 39 | $reinstall = (!is_null(_request('reinstall'))) ? _request('reinstall') : ($exec == 'install' ? 'oui' : null); |
| 40 | 40 | // |
| 41 | 41 | // Les scripts d'insallation n'authentifient pas, forcement, |
@@ -64,7 +64,7 @@ discard block |
||
| 64 | 64 | |
| 65 | 65 | |
| 66 | 66 | if (_request('action') or _request('var_ajax') or _request('formulaire_action')) { |
| 67 | - if (!autoriser_sans_cookie($exec)){ |
|
| 67 | + if (!autoriser_sans_cookie($exec)) { |
|
| 68 | 68 | // Charger l'aiguilleur qui va mettre sur la bonne voie les traitements derogatoires |
| 69 | 69 | include_spip('public/aiguiller'); |
| 70 | 70 | if ( |
@@ -76,17 +76,17 @@ discard block |
||
| 76 | 76 | or |
| 77 | 77 | // cas des formulaires charger/verifier/traiter |
| 78 | 78 | traiter_formulaires_dynamiques() |
| 79 | - ){ |
|
| 79 | + ) { |
|
| 80 | 80 | exit; |
| 81 | 81 | } // le hit est fini ! |
| 82 | 82 | } |
| 83 | 83 | } |
| 84 | 84 | // securiser les redirect du back-office |
| 85 | 85 | if (_request('redirect')) { |
| 86 | - if (!function_exists('securiser_redirect_action')){ |
|
| 86 | + if (!function_exists('securiser_redirect_action')) { |
|
| 87 | 87 | include_spip('public/aiguiller'); |
| 88 | 88 | } |
| 89 | - set_request('redirect',securiser_redirect_action(_request('redirect'))); |
|
| 89 | + set_request('redirect', securiser_redirect_action(_request('redirect'))); |
|
| 90 | 90 | } |
| 91 | 91 | |
| 92 | 92 | |
@@ -119,9 +119,9 @@ discard block |
||
| 119 | 119 | or (isset($GLOBALS['visiteur_session']) and $GLOBALS['visiteur_session']['statut'] == '0minirezo') |
| 120 | 120 | ) |
| 121 | 121 | ) { |
| 122 | - spip_log("Quand la meta admin vaut " . |
|
| 123 | - $GLOBALS['meta']["admin"] . |
|
| 124 | - " seul un admin peut se connecter et sans AJAX." . |
|
| 122 | + spip_log("Quand la meta admin vaut ". |
|
| 123 | + $GLOBALS['meta']["admin"]. |
|
| 124 | + " seul un admin peut se connecter et sans AJAX.". |
|
| 125 | 125 | " En cas de probleme, detruire cette meta."); |
| 126 | 126 | die(_T('info_travaux_texte')); |
| 127 | 127 | } |
@@ -19,14 +19,14 @@ discard block |
||
| 19 | 19 | /** Drapeau indiquant que l'on est dans l'espace privé */ |
| 20 | 20 | define('_ESPACE_PRIVE', true); |
| 21 | 21 | if (!defined('_ECRIRE_INC_VERSION')) { |
| 22 | - include 'inc_version.php'; |
|
| 22 | + include 'inc_version.php'; |
|
| 23 | 23 | } |
| 24 | 24 | |
| 25 | 25 | // Verification anti magic_quotes_sybase, pour qui addslashes("'") = "''" |
| 26 | 26 | // On prefere la faire ici plutot que dans inc_version, c'est moins souvent et |
| 27 | 27 | // si le reglage est modifie sur un site en prod, ca fait moins mal |
| 28 | 28 | if (addslashes("'") !== "\\'") { |
| 29 | - die('SPIP incompatible magic_quotes_sybase'); |
|
| 29 | + die('SPIP incompatible magic_quotes_sybase'); |
|
| 30 | 30 | } |
| 31 | 31 | |
| 32 | 32 | include_spip('inc/cookie'); |
@@ -42,18 +42,18 @@ discard block |
||
| 42 | 42 | // alors il faut blinder les variables d'URL |
| 43 | 43 | // |
| 44 | 44 | if (autoriser_sans_cookie($exec, false)) { |
| 45 | - if (!isset($reinstall)) { |
|
| 46 | - $reinstall = 'non'; |
|
| 47 | - } |
|
| 48 | - $var_auth = true; |
|
| 45 | + if (!isset($reinstall)) { |
|
| 46 | + $reinstall = 'non'; |
|
| 47 | + } |
|
| 48 | + $var_auth = true; |
|
| 49 | 49 | } else { |
| 50 | - // Authentification, redefinissable |
|
| 51 | - $auth = charger_fonction('auth', 'inc'); |
|
| 52 | - $var_auth = $auth(); |
|
| 53 | - if ($var_auth) { |
|
| 54 | - echo auth_echec($var_auth); |
|
| 55 | - exit; |
|
| 56 | - } |
|
| 50 | + // Authentification, redefinissable |
|
| 51 | + $auth = charger_fonction('auth', 'inc'); |
|
| 52 | + $var_auth = $auth(); |
|
| 53 | + if ($var_auth) { |
|
| 54 | + echo auth_echec($var_auth); |
|
| 55 | + exit; |
|
| 56 | + } |
|
| 57 | 57 | } |
| 58 | 58 | |
| 59 | 59 | // initialiser a la langue par defaut |
@@ -64,29 +64,29 @@ discard block |
||
| 64 | 64 | |
| 65 | 65 | |
| 66 | 66 | if (_request('action') or _request('var_ajax') or _request('formulaire_action')) { |
| 67 | - if (!autoriser_sans_cookie($exec)){ |
|
| 68 | - // Charger l'aiguilleur qui va mettre sur la bonne voie les traitements derogatoires |
|
| 69 | - include_spip('public/aiguiller'); |
|
| 70 | - if ( |
|
| 71 | - // cas des appels actions ?action=xxx |
|
| 72 | - traiter_appels_actions() |
|
| 73 | - or |
|
| 74 | - // cas des hits ajax sur les inclusions ajax |
|
| 75 | - traiter_appels_inclusions_ajax() |
|
| 76 | - or |
|
| 77 | - // cas des formulaires charger/verifier/traiter |
|
| 78 | - traiter_formulaires_dynamiques() |
|
| 79 | - ){ |
|
| 80 | - exit; |
|
| 81 | - } // le hit est fini ! |
|
| 82 | - } |
|
| 67 | + if (!autoriser_sans_cookie($exec)){ |
|
| 68 | + // Charger l'aiguilleur qui va mettre sur la bonne voie les traitements derogatoires |
|
| 69 | + include_spip('public/aiguiller'); |
|
| 70 | + if ( |
|
| 71 | + // cas des appels actions ?action=xxx |
|
| 72 | + traiter_appels_actions() |
|
| 73 | + or |
|
| 74 | + // cas des hits ajax sur les inclusions ajax |
|
| 75 | + traiter_appels_inclusions_ajax() |
|
| 76 | + or |
|
| 77 | + // cas des formulaires charger/verifier/traiter |
|
| 78 | + traiter_formulaires_dynamiques() |
|
| 79 | + ){ |
|
| 80 | + exit; |
|
| 81 | + } // le hit est fini ! |
|
| 82 | + } |
|
| 83 | 83 | } |
| 84 | 84 | // securiser les redirect du back-office |
| 85 | 85 | if (_request('redirect')) { |
| 86 | - if (!function_exists('securiser_redirect_action')){ |
|
| 87 | - include_spip('public/aiguiller'); |
|
| 88 | - } |
|
| 89 | - set_request('redirect',securiser_redirect_action(_request('redirect'))); |
|
| 86 | + if (!function_exists('securiser_redirect_action')){ |
|
| 87 | + include_spip('public/aiguiller'); |
|
| 88 | + } |
|
| 89 | + set_request('redirect',securiser_redirect_action(_request('redirect'))); |
|
| 90 | 90 | } |
| 91 | 91 | |
| 92 | 92 | |
@@ -96,11 +96,11 @@ discard block |
||
| 96 | 96 | |
| 97 | 97 | // Controle de la version, sauf si on est deja en train de s'en occuper |
| 98 | 98 | if (!$reinstall == 'oui' |
| 99 | - and !_AJAX |
|
| 100 | - and isset($GLOBALS['meta']['version_installee']) |
|
| 101 | - and ($GLOBALS['spip_version_base'] != (str_replace(',', '.', $GLOBALS['meta']['version_installee']))) |
|
| 99 | + and !_AJAX |
|
| 100 | + and isset($GLOBALS['meta']['version_installee']) |
|
| 101 | + and ($GLOBALS['spip_version_base'] != (str_replace(',', '.', $GLOBALS['meta']['version_installee']))) |
|
| 102 | 102 | ) { |
| 103 | - $exec = 'demande_mise_a_jour'; |
|
| 103 | + $exec = 'demande_mise_a_jour'; |
|
| 104 | 104 | } |
| 105 | 105 | |
| 106 | 106 | // Quand une action d'administration est en cours (meta "admin"), |
@@ -110,44 +110,44 @@ discard block |
||
| 110 | 110 | // sinon c'est qu'elle a ete interrompue et il faut la reprendre |
| 111 | 111 | |
| 112 | 112 | elseif (isset($GLOBALS['meta']["admin"])) { |
| 113 | - if (preg_match('/^(.*)_(\d+)_/', $GLOBALS['meta']["admin"], $l)) { |
|
| 114 | - list(, $var_f, $n) = $l; |
|
| 115 | - } |
|
| 116 | - if (_AJAX |
|
| 117 | - or !( |
|
| 118 | - isset($_COOKIE['spip_admin']) |
|
| 119 | - or (isset($GLOBALS['visiteur_session']) and $GLOBALS['visiteur_session']['statut'] == '0minirezo') |
|
| 120 | - ) |
|
| 121 | - ) { |
|
| 122 | - spip_log("Quand la meta admin vaut " . |
|
| 123 | - $GLOBALS['meta']["admin"] . |
|
| 124 | - " seul un admin peut se connecter et sans AJAX." . |
|
| 125 | - " En cas de probleme, detruire cette meta."); |
|
| 126 | - die(_T('info_travaux_texte')); |
|
| 127 | - } |
|
| 128 | - if ($n) { |
|
| 129 | - list(, $var_f, $n) = $l; |
|
| 130 | - if (tester_url_ecrire("base_$var_f")) { |
|
| 131 | - $var_f = "base_$var_f"; |
|
| 132 | - } |
|
| 133 | - if ($var_f != $exec) { |
|
| 134 | - spip_log("Le script $var_f lance par auteur$n se substitue a l'exec $exec"); |
|
| 135 | - $exec = $var_f; |
|
| 136 | - set_request('exec', $exec); |
|
| 137 | - } |
|
| 138 | - } |
|
| 113 | + if (preg_match('/^(.*)_(\d+)_/', $GLOBALS['meta']["admin"], $l)) { |
|
| 114 | + list(, $var_f, $n) = $l; |
|
| 115 | + } |
|
| 116 | + if (_AJAX |
|
| 117 | + or !( |
|
| 118 | + isset($_COOKIE['spip_admin']) |
|
| 119 | + or (isset($GLOBALS['visiteur_session']) and $GLOBALS['visiteur_session']['statut'] == '0minirezo') |
|
| 120 | + ) |
|
| 121 | + ) { |
|
| 122 | + spip_log("Quand la meta admin vaut " . |
|
| 123 | + $GLOBALS['meta']["admin"] . |
|
| 124 | + " seul un admin peut se connecter et sans AJAX." . |
|
| 125 | + " En cas de probleme, detruire cette meta."); |
|
| 126 | + die(_T('info_travaux_texte')); |
|
| 127 | + } |
|
| 128 | + if ($n) { |
|
| 129 | + list(, $var_f, $n) = $l; |
|
| 130 | + if (tester_url_ecrire("base_$var_f")) { |
|
| 131 | + $var_f = "base_$var_f"; |
|
| 132 | + } |
|
| 133 | + if ($var_f != $exec) { |
|
| 134 | + spip_log("Le script $var_f lance par auteur$n se substitue a l'exec $exec"); |
|
| 135 | + $exec = $var_f; |
|
| 136 | + set_request('exec', $exec); |
|
| 137 | + } |
|
| 138 | + } |
|
| 139 | 139 | } |
| 140 | 140 | // si nom pas plausible, prendre le script par defaut |
| 141 | 141 | // attention aux deux cas 404/403 qui commencent par un 4 ! |
| 142 | 142 | elseif (!preg_match(',^[a-z4_][0-9a-z_-]*$,i', $exec)) { |
| 143 | - $exec = "accueil"; |
|
| 144 | - set_request('exec', $exec); |
|
| 143 | + $exec = "accueil"; |
|
| 144 | + set_request('exec', $exec); |
|
| 145 | 145 | } |
| 146 | 146 | |
| 147 | 147 | // compatibilite ascendante : obsolete, ne plus utiliser |
| 148 | 148 | $GLOBALS['spip_display'] = isset($GLOBALS['visiteur_session']['prefs']['display']) |
| 149 | - ? (int) $GLOBALS['visiteur_session']['prefs']['display'] |
|
| 150 | - : 0; |
|
| 149 | + ? (int) $GLOBALS['visiteur_session']['prefs']['display'] |
|
| 150 | + : 0; |
|
| 151 | 151 | $GLOBALS['spip_ecran'] = isset($_COOKIE['spip_ecran']) ? preg_replace('/[^a-z0-9]/i', '', $_COOKIE['spip_ecran']) : "etroit"; |
| 152 | 152 | |
| 153 | 153 | // si la langue est specifiee par cookie et ne correspond pas |
@@ -155,18 +155,18 @@ discard block |
||
| 155 | 155 | // on appelle directement la fonction, car un appel d'action peut conduire a une boucle infinie |
| 156 | 156 | // si le cookie n'est pas pose correctement dans l'action |
| 157 | 157 | if (!$var_auth and isset($_COOKIE['spip_lang_ecrire']) |
| 158 | - and $_COOKIE['spip_lang_ecrire'] <> $GLOBALS['visiteur_session']['lang'] |
|
| 158 | + and $_COOKIE['spip_lang_ecrire'] <> $GLOBALS['visiteur_session']['lang'] |
|
| 159 | 159 | ) { |
| 160 | - include_spip('action/converser'); |
|
| 161 | - action_converser_post($GLOBALS['visiteur_session']['lang'], true); |
|
| 160 | + include_spip('action/converser'); |
|
| 161 | + action_converser_post($GLOBALS['visiteur_session']['lang'], true); |
|
| 162 | 162 | } |
| 163 | 163 | |
| 164 | 164 | if ($var_f = tester_url_ecrire($exec)) { |
| 165 | - $var_f = charger_fonction($var_f); |
|
| 166 | - $var_f(); // at last |
|
| 165 | + $var_f = charger_fonction($var_f); |
|
| 166 | + $var_f(); // at last |
|
| 167 | 167 | } else { |
| 168 | - // Rien de connu: rerouter vers exec=404 au lieu d'echouer |
|
| 169 | - // ce qui permet de laisser la main a un plugin |
|
| 170 | - $var_f = charger_fonction('404'); |
|
| 171 | - $var_f($exec); |
|
| 168 | + // Rien de connu: rerouter vers exec=404 au lieu d'echouer |
|
| 169 | + // ce qui permet de laisser la main a un plugin |
|
| 170 | + $var_f = charger_fonction('404'); |
|
| 171 | + $var_f($exec); |
|
| 172 | 172 | } |