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; }
/** * 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; }
// 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;
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; }