/**
 * 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;
}
Example #2
0
/**
 * 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('&amp;', '&', $url);
                return array('texte' => "<" . "?php header('Location: " . texte_script($url) . "'); echo '" . addslashes($url) . "'.\"\n\"?" . ">", 'process_ins' => 'php');
            }
        }
    }
    return false;
}