function formulaires_rediriger_article_charger_dist($id_article, $retour = '') { $row = sql_fetsel('id_article,virtuel', 'spip_articles', 'id_article=' . intval($id_article)); if (!$row['id_article']) { return false; } include_spip('inc/lien'); $redirection = virtuel_redirige($row["virtuel"]); if (!$redirection and $GLOBALS['meta']['articles_redirection'] != 'oui') { return false; } include_spip('inc/texte'); $valeurs = array('redirection' => $redirection, 'id' => $id_article, '_afficher_url' => $redirection ? propre("[->{$redirection}]") : ''); return $valeurs; }
/** * Afficher le lien de redirection d'un article virtuel si il y a lieu * (rien si l'article n'est pas redirige) * * @param string $virtuel * @return string */ function lien_article_virtuel($virtuel) { include_spip('inc/lien'); if (!($virtuel = virtuel_redirige($virtuel))) { return ''; } return propre("[->" . $virtuel . "]"); }
/** * 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; }