public function reecrire($url = "")
 {
     $ret = 0;
     if ($url == "") {
         $url = $this->texte_url_reecrite();
     }
     $url = eregurl($url);
     $param = "&" . $this->clef_url_reecrite();
     $reecriture = new Reecriture();
     if (!$reecriture->charger($url)) {
         $reecriture->charger_param($this->colonne, $param, $this->lang, 1);
         if ($reecriture->url != $url) {
             $reecriture->actif = 0;
             $reecriture->maj();
             $reecriture = new Reecriture();
             $reecriture->fond = $this->colonne;
             $reecriture->url = $url;
             $reecriture->param = $param;
             $reecriture->lang = $this->lang;
             $reecriture->actif = 1;
             $ret = $reecriture->add();
         }
     }
     return $ret;
 }
예제 #2
0
/**
 * Calculer une URL à partir d'un nom de fond.
 *
 * @param string fond le nom du fond
 * @param string parametres les parametres éventuels à ajouter à l'URL
 * @param boolean escape si true, on sépoare l'URL et les paramètres par &. Si false, par '&'
 */
function urlfond($fond = "", $parametres = false, $escape = false)
{
    $urlsite = urlsite();
    if (!empty($fond)) {
        if (Variable::lire("rewrite") != 0) {
            // Trouver une éventuelle reecriture
            $rw = new Reecriture();
            if ($rw->charger_param($fond, $parametres == false ? '' : "&" . $parametres, ActionsLang::instance()->get_id_langue_courante(), 1)) {
                return "{$urlsite}/{$rw->url}";
            }
        }
        $urlsite = sprintf("%s/?fond=%s", $urlsite, $fond);
    }
    if ($parametres !== false) {
        if ($escape) {
            $parametres = escape_ampersand($parametres);
        }
        $urlsite .= ($escape ? "&" : "&") . $parametres;
    }
    return $urlsite;
}
예제 #3
0
// Chargement du contexte dans le cas d'une réécriture
if ($url != "") {
    $reecriture = new Reecriture();
    if ($reecriture->charger($url)) {
        if (!$reecriture->actif) {
            $redir = new Reecriture();
            if ($redir->charger_param($reecriture->fond, $reecriture->param, $reecriture->lang, 1)) {
                header("HTTP/1.1 301 Moved Permanently");
                redirige(urlsite($reecriture->lang) . "/" . $redir->url);
            }
        }
        // Si un changement de langue est demandé
        if (isset($_GET['lang'])) {
            // Rediriger vers l'URL dans cette langue, si elle existe
            $redir = new Reecriture();
            if ($redir->charger_param($reecriture->fond, $reecriture->param, $lang, 1)) {
                header("HTTP/1.1 301 Moved Permanently");
                redirige(urlsite($lang) . "/" . $redir->url);
            }
        } else {
            $urlcurr = urlsite($lang);
            $urlnext = urlsite($reecriture->lang);
            if ($urlcurr != $urlnext) {
                // URLs différentes: rediriger vers le domaine spécifique de la langue.
                redirige($urlnext . '/' . $reecriture->url);
            } else {
                // Mêmes URLs => fixer la langue courante est celle définie par l'URL ré-écrite, inutile de rediriger.
                $lang = $reecriture->lang;
            }
        }
        $fond = $reecriture->fond;
예제 #4
0
function boucleLangue($texte, $args)
{
    $exclure = lireTag($args, 'exclure');
    $id = lireTag($args, 'id');
    $res = '';
    $url = preg_replace('/[\\&\\?]*lang=[0-9]+/', '', url_page_courante());
    // S'il faut suffixer par lang=x, s'assurer de placer le bon séparateur
    if (!ActionsLang::instance()->get_un_domaine_par_langue()) {
        $url .= strstr($url, '?') == false ? '?' : '&';
    }
    $lng = new Lang();
    $query = 'select * from ' . $lng->table . ' where 1 ';
    if ($id != '') {
        $query .= ' and id in ( ' . $id . ')';
    }
    if ($exclure != '') {
        $query .= ' and id not in ( ' . $exclure . ')';
    }
    // Trouver l'url ré-écrite, si elle existe
    $reecriture = new Reecriture();
    if (Variable::lire("rewrite") != 0) {
        // L'URL de la page courante
        $requrl = lireParam('url', 'string');
        if ($requrl != '') {
            $reecriture->charger($requrl);
        }
    }
    $lngredir = new Reecriture();
    $result = $lng->query($query);
    while ($result && ($row = $lng->fetch_object($result))) {
        $lng->charger($row->id);
        if ($reecriture->actif && $lngredir->charger_param($reecriture->fond, $reecriture->param, $lng->id, 1)) {
            if (ActionsLang::instance()->get_un_domaine_par_langue()) {
                $lngurl = "{$row->url}/{$lngredir->url}";
            } else {
                $lngurl = $lngredir->url;
            }
        } else {
            if (ActionsLang::instance()->get_un_domaine_par_langue()) {
                $lngurl = str_replace(ActionsLang::instance()->get_langue_courante()->url, $row->url, $url);
            } else {
                $lngurl = $url . 'lang=' . $lng->id;
            }
        }
        $tmp = str_replace('#ID', $lng->id, $texte);
        $tmp = str_replace('#DESCRIPTION', $lng->description, $tmp);
        $tmp = str_replace('#CODE', $lng->code, $tmp);
        $tmp = str_replace('#DEFAUT', $lng->defaut ? '1' : '0', $tmp);
        $tmp = str_replace('#URL', $lngurl, $tmp);
        $res .= $tmp;
    }
    return $res;
}