/** * si le champ virtuel est non vide c'est une redirection. * avec un eventuel raccourci Spip * si le raccourci a un titre il sera pris comme corps du 302 * * http://code.spip.net/@tester_redirection * * @param string $fond * @param array $contexte * @param string $connect * @return array|bool */ function tester_redirection($fond, $contexte, $connect) { if ($fond == 'article' and $id_article = intval($contexte['id_article'])) { include_spip('public/quete'); // pour quete_virtuel et ses dependances $m = quete_virtuel($id_article, $connect); if (strlen($m)) { include_spip('inc/texte'); // les navigateurs pataugent si l'URL est vide if ($url = virtuel_redirige($m, true)) { // passer en url absolue car cette redirection pourra // etre utilisee dans un contexte d'url qui change // y compris url arbo $status = 302; if (defined('_STATUS_REDIRECTION_VIRTUEL')) { $status = _STATUS_REDIRECTION_VIRTUEL; } if (!preg_match(',^\\w+:,', $url)) { include_spip('inc/filtres_mini'); $url = url_absolue($url); } $url = str_replace('&', '&', $url); return array('texte' => "<" . "?php include_spip('inc/headers');redirige_par_entete('" . texte_script($url) . "','',{$status});" . "?" . ">", 'process_ins' => 'php', 'status' => $status); } } } return false; }
/** * si le champ virtuel est non vide c'est une redirection. * avec un eventuel raccourci Spip * si le raccourci a un titre il sera pris comme corps du 302 * * http://doc.spip.org/@tester_redirection * * @param string $fond * @param array $contexte * @param string $connect * @return array|bool */ function tester_redirection($fond, $contexte, $connect) { if ($fond == 'article' and $id_article = intval($contexte['id_article'])) { include_spip('public/quete'); // pour quete_virtuel et ses dependances $m = quete_virtuel($id_article, $connect); if (strlen($m)) { include_spip('inc/texte'); // les navigateurs pataugent si l'URL est vide if ($url = virtuel_redirige($m, true)) { // passer en url absolue car cette redirection pourra // etre utilisee dans un contexte d'url qui change // y compris url arbo if (!preg_match(',^\\w+:,', $url)) { include_spip('inc/filtres_mini'); $url = url_absolue($url); } $url = str_replace('&', '&', $url); return array('texte' => "<" . "?php header('Location: " . texte_script($url) . "'); echo '" . addslashes($url) . "'.\"\n\"?" . ">", 'process_ins' => 'php'); } } } return false; }