示例#1
0
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;
}
示例#2
0
/**
 * 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 . "]");
}
示例#3
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://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;
}
示例#4
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;
}