Changeset 114794 in spip-zone


Ignore:
Timestamp:
Apr 4, 2019, 7:37:56 PM (3 months ago)
Author:
maieul@…
Message:

mettre à part le bout de code qui trouve la bonne url à partir de la mauvaise

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/correction_liens_internes/trunk/correction_liens_internes_pipelines.php

    r114793 r114794  
    8383        }
    8484
    85         // alias historiques
    86         static $racc = array('article' => '', 'auteur' => 'aut', 'rubrique' => 'rub', 'breve' => 'br');
    8785
    8886        // traiter d'autre domaines ?
     
    108106                $mauvais_raccourci = $lien[0];
    109107                $mauvaise_url = $lien[1];
    110                 $mauvaise_url_reelle = str_replace($domaines_origine, url_de_base(), $mauvaise_url);
    111                 $composants_url = parse_url($mauvaise_url_reelle);
    112                 // Url copiée depuis le privé ou depuis le public?
    113                 if (strrpos($composants_url['path'],_DIR_RESTREINT_ABS)!=false){
    114                         list ($objet, $id_objet,$ancre) = correction_liens_internes_correction_url_prive($mauvaise_url,$composants_url);
     108                $bonne_url = correction_liens_internes_trouver_bonne_url($mauvaise_url, $domaines_origine);
     109                if ($bonne_url) {
     110                        $bon_raccourci = str_replace($mauvaise_url, $bonne_url, $mauvais_raccourci);
    115111                }
    116                 else{
    117                         list ($objet, $id_objet,$ancre) = correction_liens_internes_correction_url_public($mauvaise_url_reelle,$composants_url);
    118                 }
    119                 if (!$objet && !$id_objet && strpos($mauvaise_url_reelle, str_replace(_DIR_RACINE, '', _DIR_IMG)) != false) {
    120                         $url_doc = str_replace(array(url_de_base(), str_replace(_DIR_RACINE, '', _DIR_IMG)), '', $mauvaise_url_reelle);
    121                         $id_objet = sql_getfetsel('id_document', 'spip_documents', 'fichier='.sql_quote($url_doc));
    122                         $objet = 'document';
    123                 }
    124                 if($objet && $id_objet){
    125                         if(isset($racc[$objet])){
    126                                 $objet = $racc[$objet];
    127                         }
    128                         // Exception historique : sites, cf https://core.spip.net/issues/4283
    129                         if ($objet === 'site') {
    130                                 if (!defined('_CORRECTION_LIENS_INTERNES_LIEN_SITES'))
    131                                         define('_CORRECTION_LIENS_INTERNES_LIEN_SITES', 'site');
    132                                 $objet = _CORRECTION_LIENS_INTERNES_LIEN_SITES;
    133                         }
    134                         $bonne_url  = $objet . $id_objet . $ancre;
    135                         $bon_raccourci = str_replace($mauvaise_url, $bonne_url, $mauvais_raccourci);
    136                         $texte = str_replace($mauvais_raccourci, $bon_raccourci, $texte);
    137                         spip_log(self() . (_request('self')?' / '._request('self'):'')  //pour crayons notamment...
    138                                                         . " : $mauvais_raccourci => $bon_raccourci", 'liens_internes.' . _LOG_AVERTISSEMENT);
    139                 }
     112                $texte = str_replace($mauvais_raccourci, $bon_raccourci, $texte);
     113                spip_log(self() . (_request('self')?' / '._request('self'):'')  //pour crayons notamment...
     114                        . " : $mauvais_raccourci => $bon_raccourci", 'liens_internes.' . _LOG_AVERTISSEMENT);
    140115        }
    141116        return $texte;
    142117}
    143118
     119/**
     120 * Trouver la bonne url a partir de la mauvaise
     121 * @param string $mauvaise_url la mauvaise url
     122 * @param array $domaines_origine les domaines
     123 * @return string la bonne url
     124**/
     125function correction_liens_internes_trouver_bonne_url($mauvaise_url, $domaines_origine) {
     126        // alias historiques
     127        static $racc = array('article' => '', 'auteur' => 'aut', 'rubrique' => 'rub', 'breve' => 'br');
     128        $bonne_url = '';
     129        $mauvaise_url_reelle = str_replace($domaines_origine, url_de_base(), $mauvaise_url);
     130        $composants_url = parse_url($mauvaise_url_reelle);
     131        // Url copiée depuis le privé ou depuis le public?
     132        if (strrpos($composants_url['path'],_DIR_RESTREINT_ABS)!=false){
     133                list ($objet, $id_objet,$ancre) = correction_liens_internes_correction_url_prive($mauvaise_url,$composants_url);
     134        }
     135        else{
     136                list ($objet, $id_objet,$ancre) = correction_liens_internes_correction_url_public($mauvaise_url_reelle,$composants_url);
     137        }
     138        if (!$objet && !$id_objet && strpos($mauvaise_url_reelle, str_replace(_DIR_RACINE, '', _DIR_IMG)) != false) {
     139                $url_doc = str_replace(array(url_de_base(), str_replace(_DIR_RACINE, '', _DIR_IMG)), '', $mauvaise_url_reelle);
     140                $id_objet = sql_getfetsel('id_document', 'spip_documents', 'fichier='.sql_quote($url_doc));
     141                $objet = 'document';
     142        }
     143        if($objet && $id_objet){
     144                if(isset($racc[$objet])){
     145                        $objet = $racc[$objet];
     146                }
     147                // Exception historique : sites, cf https://core.spip.net/issues/4283
     148                if ($objet === 'site') {
     149                        if (!defined('_CORRECTION_LIENS_INTERNES_LIEN_SITES'))
     150                                define('_CORRECTION_LIENS_INTERNES_LIEN_SITES', 'site');
     151                        $objet = _CORRECTION_LIENS_INTERNES_LIEN_SITES;
     152                }
     153                $bonne_url  = $objet . $id_objet . $ancre;
     154        }
     155        return $bonne_url;
     156}
    144157/**
    145158 * Retourne les domaines qu'on peut gérer, en plus du domaine de la requette http courante
Note: See TracChangeset for help on using the changeset viewer.