Changeset 93629 in spip-zone


Ignore:
Timestamp:
Dec 13, 2015, 11:58:52 AM (5 years ago)
Author:
cedric@…
Message:

Indentation et regles de codage selon http://www.spip.net/fr_article3497.html#regles_codage

Location:
_core_/plugins/urls_etendues
Files:
21 edited

Legend:

Unmodified
Added
Removed
  • _core_/plugins/urls_etendues/action/editer_url.php

    r93092 r93629  
    1111\***************************************************************************/
    1212
    13 if (!defined("_ECRIRE_INC_VERSION")) return;
     13if (!defined("_ECRIRE_INC_VERSION")) {
     14        return;
     15}
    1416
    1517function action_editer_url_dist() {
     
    2224
    2325
    24 function url_nettoyer($titre, $longueur_maxi, $longueur_min = 0, $separateur = '-', $filtre = ''){
     26function url_nettoyer($titre, $longueur_maxi, $longueur_min = 0, $separateur = '-', $filtre = '') {
    2527
    2628        $titre = supprimer_tags(supprimer_numero(extraire_multi($titre)));
    2729        $url = translitteration(corriger_caracteres($titre));
    2830
    29         if ($filtre)
     31        if ($filtre) {
    3032                $url = $filtre($url);
     33        }
    3134
    3235        // on va convertir tous les caracteres de ponctuation et espaces
     
    4649
    4750        // S'il reste trop peu, renvoyer vide
    48         if (strlen($url) < $longueur_min)
     51        if (strlen($url) < $longueur_min) {
    4952                return '';
     53        }
    5054
    5155        // Sinon couper les mots et les relier par des $separateur
     
    5357        $url = '';
    5458        foreach ($mots as $mot) {
    55                 if (!strlen($mot)) continue;
    56                 $url2 = $url.$separateur.$mot;
     59                if (!strlen($mot)) {
     60                        continue;
     61                }
     62                $url2 = $url . $separateur . $mot;
    5763
    5864                // Si on depasse $longueur_maxi caracteres, s'arreter
     
    7076        $url = rawurldecode($url);
    7177
    72         if (strlen($url) < $longueur_min)
     78        if (strlen($url) < $longueur_min) {
    7379                return '';
     80        }
     81
    7482        return $url;
    7583}
    7684
    77 function url_insert(&$set, $confirmer, $separateur){
     85function url_insert(&$set, $confirmer, $separateur) {
    7886        $has_parent = true;
    7987        # assurer la coherence des champs techniques si non fournis
    80         if (!isset($set['id_parent'])){
     88        if (!isset($set['id_parent'])) {
    8189                $has_parent = false;
    8290                $set['id_parent'] = 0;
    8391        }
    84         if (!isset($set['segments']))
    85                 $set['segments'] = count(explode('/',$set['url']));
     92        if (!isset($set['segments'])) {
     93                $set['segments'] = count(explode('/', $set['url']));
     94        }
    8695        $perma = false;
    87         if (isset($set['perma']) AND $set['perma']){
     96        if (isset($set['perma']) AND $set['perma']) {
    8897                unset($set['perma']);
    8998                $perma = true;
     
    92101
    93102        # le separateur ne peut pas contenir de /
    94         if (strpos($separateur,'/')!==false)
     103        if (strpos($separateur, '/') !== false) {
    95104                $separateur = "-";
     105        }
    96106
    97107        // Si l'insertion echoue, c'est une violation d'unicite.
    98         $where_urllike = 'url LIKE '.url_sql_quote_like($set['url'])." AND NOT(type=".sql_quote($set['type'])." AND id_objet=".intval($set['id_objet']).")";
    99         $where_thisurl = $where_urllike.($has_parent?" AND id_parent=".intval($set['id_parent']):"");
     108        $where_urllike = 'url LIKE ' . url_sql_quote_like($set['url']) . " AND NOT(type=" . sql_quote($set['type']) . " AND id_objet=" . intval($set['id_objet']) . ")";
     109        $where_thisurl = $where_urllike . ($has_parent ? " AND id_parent=" . intval($set['id_parent']) : "");
    100110        if (
    101111                // si pas de parent defini, il faut que cette url soit unique, independamment de id_parent
    102112                // il faut utiliser un LIKE pour etre case unsensitive en sqlite
    103           (!$has_parent AND sql_countsel("spip_urls",$where_urllike))
    104                 OR @sql_insertq('spip_urls', $set) <= 0) {
     113                (!$has_parent AND sql_countsel("spip_urls", $where_urllike))
     114                OR @sql_insertq('spip_urls', $set) <= 0
     115        ) {
    105116
    106117                // On veut chiper une ancienne adresse ou prendre celle d'un repertoire deja present?
    107118                if (
    108                         (!is_dir(_DIR_RACINE.$set['url']) AND !file_exists(_DIR_RACINE.$set['url']))
     119                        (!is_dir(_DIR_RACINE . $set['url']) AND !file_exists(_DIR_RACINE . $set['url']))
    109120                        // un vieux url
    110                         AND $vieux = sql_fetsel('*', 'spip_urls', $where_thisurl,'','perma DESC')
     121                        AND $vieux = sql_fetsel('*', 'spip_urls', $where_thisurl, '', 'perma DESC')
    111122                        // qui n'est pas permanente
    112123                        AND !$vieux['perma']
    113                   // et dont l'objet a une url plus recente
    114                   AND $courant = sql_fetsel('*', 'spip_urls',
    115                           'type='.sql_quote($vieux['type']).' AND id_objet='.sql_quote($vieux['id_objet'])
    116                           .' AND url<>'.sql_quote($set['url'])
    117                           .' AND date>'.sql_quote($vieux['date']), '', 'date DESC', 1)
    118                   ) {
     124                        // et dont l'objet a une url plus recente
     125                        AND $courant = sql_fetsel('*', 'spip_urls',
     126                                'type=' . sql_quote($vieux['type']) . ' AND id_objet=' . sql_quote($vieux['id_objet'])
     127                                . ' AND url<>' . sql_quote($set['url'])
     128                                . ' AND date>' . sql_quote($vieux['date']), '', 'date DESC', 1)
     129                ) {
    119130                        if ($confirmer AND !_request('ok2')) {
    120                                 die ("Vous voulez chiper l'URL de l'objet ".$courant['type']." "
    121                                         . $courant['id_objet']." qui a maintenant l'url "
     131                                die ("Vous voulez chiper l'URL de l'objet " . $courant['type'] . " "
     132                                        . $courant['id_objet'] . " qui a maintenant l'url "
    122133                                        . $courant['url']);
    123134                        }
    124                         $where_thisurl = "url=".sql_quote($vieux['url'])." AND id_parent=".intval($vieux['id_parent']);
     135                        $where_thisurl = "url=" . sql_quote($vieux['url']) . " AND id_parent=" . intval($vieux['id_parent']);
    125136                        // si oui on le chipe
    126137                        sql_updateq('spip_urls', $set, $where_thisurl);
    127138                        sql_updateq('spip_urls', array('date' => date('Y-m-d H:i:s')), $where_thisurl);
    128                         spip_log("reattribue url ".$vieux['url']
    129                                 ." de ".$vieux['type']."#".$vieux['id_objet']." (parent ".$vieux['id_parent'].")"
    130                                 ." A ".$set['type']."#".$set['id_objet']." (parent ".$set['id_parent'].")","urls"._LOG_INFO_IMPORTANTE);
    131                 }
    132 
    133                 // Sinon
     139                        spip_log("reattribue url " . $vieux['url']
     140                                . " de " . $vieux['type'] . "#" . $vieux['id_objet'] . " (parent " . $vieux['id_parent'] . ")"
     141                                . " A " . $set['type'] . "#" . $set['id_objet'] . " (parent " . $set['id_parent'] . ")",
     142                                "urls" . _LOG_INFO_IMPORTANTE);
     143                } // Sinon
    134144                else {
    135145
     
    140150                        // il peut etre du a un changement de casse de l'url simplement
    141151                        // pour ce cas, on reecrit systematiquement l'url en plus d'actualiser la date
    142                         $where = "type=".sql_quote($set['type'])
    143                                                          ." AND id_objet=".intval($set['id_objet'])
    144                                                          ." AND id_parent=".intval($set['id_parent'])
    145                                                          ." AND url LIKE ";
     152                        $where = "type=" . sql_quote($set['type'])
     153                                . " AND id_objet=" . intval($set['id_objet'])
     154                                . " AND id_parent=" . intval($set['id_parent'])
     155                                . " AND url LIKE ";
    146156                        if (
    147                                 !is_dir(_DIR_RACINE.$set['url']) AND !file_exists(_DIR_RACINE.$set['url'])
    148                                 AND sql_countsel('spip_urls', $where  .url_sql_quote_like($set['url']))) {
    149                                 sql_updateq('spip_urls', array('url'=>$set['url'], 'date' => date('Y-m-d H:i:s')), $where  .url_sql_quote_like($set['url']));
    150                                 spip_log("reordonne ".$set['type']." ".$set['id_objet'],"urls");
     157                                !is_dir(_DIR_RACINE . $set['url']) AND !file_exists(_DIR_RACINE . $set['url'])
     158                                AND sql_countsel('spip_urls', $where . url_sql_quote_like($set['url']))
     159                        ) {
     160                                sql_updateq('spip_urls', array('url' => $set['url'], 'date' => date('Y-m-d H:i:s')),
     161                                        $where . url_sql_quote_like($set['url']));
     162                                spip_log("reordonne " . $set['type'] . " " . $set['id_objet'], "urls");
    151163                                $redate = false;
    152                         }
    153                         else {
    154                                 $set['url'] .= $separateur.$set['id_objet'];
    155                                 if (strlen($set['url']) > 200)
    156                                         //serveur out ? retourner au mieux
     164                        } else {
     165                                $set['url'] .= $separateur . $set['id_objet'];
     166                                if (strlen($set['url']) > 200) //serveur out ? retourner au mieux
     167                                {
    157168                                        return false;
    158                                 elseif (sql_countsel('spip_urls', $where . url_sql_quote_like($set['url']))) {
    159                                         sql_updateq('spip_urls', array('url'=>$set['url'], 'date' => date('Y-m-d H:i:s')), $where .url_sql_quote_like($set['url']));
     169                                } elseif (sql_countsel('spip_urls', $where . url_sql_quote_like($set['url']))) {
     170                                        sql_updateq('spip_urls', array('url' => $set['url'], 'date' => date('Y-m-d H:i:s')),
     171                                                $where . url_sql_quote_like($set['url']));
    160172                                        $redate = false;
    161                                 }
    162                                 else {
     173                                } else {
    163174                                        // remettre id_parent et perma comme il faut si besoin
    164                                         if (!$has_parent) unset($set['id_parent']);
    165                                         if ($perma) $set['perma'] = true;
     175                                        if (!$has_parent) {
     176                                                unset($set['id_parent']);
     177                                        }
     178                                        if ($perma) {
     179                                                $set['perma'] = true;
     180                                        }
     181
    166182                                        return url_insert($set, $confirmer, $separateur);
    167183                                }
     
    170186        }
    171187
    172         $where_thisurl = 'url='.sql_quote($set['url'])." AND id_parent=".intval($set['id_parent']); // maj
    173         if ($redate)
     188        $where_thisurl = 'url=' . sql_quote($set['url']) . " AND id_parent=" . intval($set['id_parent']); // maj
     189        if ($redate) {
    174190                sql_updateq('spip_urls', array('date' => date('Y-m-d H:i:s')), $where_thisurl);
     191        }
    175192
    176193        // si url perma, poser le flag sur la seule url qu'on vient de mettre
    177         if ($perma)
    178                 sql_update('spip_urls', array('perma' => "($where_thisurl)"), "type=".sql_quote($set['type'])." AND id_objet=".intval($set['id_objet']));
    179        
    180         spip_log("Creation de l'url propre '" . $set['url'] . "' pour ".$set['type']." ".$set['id_objet']." (parent ".$set['id_parent']." perma ".($perma?"1":"0").")","urls");
     194        if ($perma) {
     195                sql_update('spip_urls', array('perma' => "($where_thisurl)"),
     196                        "type=" . sql_quote($set['type']) . " AND id_objet=" . intval($set['id_objet']));
     197        }
     198
     199        spip_log("Creation de l'url propre '" . $set['url'] . "' pour " . $set['type'] . " " . $set['id_objet'] . " (parent " . $set['id_parent'] . " perma " . ($perma ? "1" : "0") . ")",
     200                "urls");
     201
    181202        return true;
    182203}
    183204
    184 function url_sql_quote_like($url){
    185         return sql_quote(str_replace(array("%","_"),array("\\%","\\_"),$url))." ESCAPE ".sql_quote('\\');
    186 }
    187 
    188 function url_verrouiller($objet, $id_objet, $url){
    189         $where = "id_objet=".intval($id_objet)." AND type=".sql_quote($objet);
    190         $where .= " AND url=".sql_quote($url);
     205function url_sql_quote_like($url) {
     206        return sql_quote(str_replace(array("%", "_"), array("\\%", "\\_"), $url)) . " ESCAPE " . sql_quote('\\');
     207}
     208
     209function url_verrouiller($objet, $id_objet, $url) {
     210        $where = "id_objet=" . intval($id_objet) . " AND type=" . sql_quote($objet);
     211        $where .= " AND url=" . sql_quote($url);
    191212
    192213        // pour verrouiller une url, on fixe sa date dans le futur, dans 10 ans
    193         sql_updateq('spip_urls', array('date' => date('Y-m-d H:i:s',time()+10*365.25*24*3600)), $where);
    194 }
    195 
    196 function url_delete($objet, $id_objet, $url = ""){
    197         $where = "id_objet=".intval($id_objet)." AND type=".sql_quote($objet);
    198         if (strlen($url))
    199                 $where .= " AND url=".sql_quote($url);
    200 
    201         sql_delete("spip_urls",$where);
    202 }
     214        sql_updateq('spip_urls', array('date' => date('Y-m-d H:i:s', time()+10*365.25*24*3600)), $where);
     215}
     216
     217function url_delete($objet, $id_objet, $url = "") {
     218        $where = "id_objet=" . intval($id_objet) . " AND type=" . sql_quote($objet);
     219        if (strlen($url)) {
     220                $where .= " AND url=" . sql_quote($url);
     221        }
     222
     223        sql_delete("spip_urls", $where);
     224}
     225
    203226?>
  • _core_/plugins/urls_etendues/action/supprimer_url.php

    r93431 r93629  
    1111\***************************************************************************/
    1212
    13 if (!defined("_ECRIRE_INC_VERSION")) return;
     13if (!defined("_ECRIRE_INC_VERSION")) {
     14        return;
     15}
    1416
    1517function action_supprimer_url_dist($arg = null) {
    1618
    17         if (is_null($arg)){
     19        if (is_null($arg)) {
    1820                // Rien a faire ici pour le moment
    1921                $securiser_action = charger_fonction('securiser_action', 'inc');
    2022                $arg = $securiser_action();
    2123        }
    22         if (strncmp($arg,"-1-",3)==0){
     24        if (strncmp($arg, "-1-", 3) == 0) {
    2325                $id_parent = -1;
    24                 $url = substr($arg,3);
    25         }
    26         else {
    27                 $arg = explode('-',$arg);
     26                $url = substr($arg, 3);
     27        } else {
     28                $arg = explode('-', $arg);
    2829                $id_parent = array_shift($arg);
    29                 $url = implode('-',$arg);
     30                $url = implode('-', $arg);
    3031        }
    3132
    32         $where = 'id_parent='.intval($id_parent)." AND url=".sql_quote($url);
    33         if($row = sql_fetsel('*','spip_urls',$where)){
     33        $where = 'id_parent=' . intval($id_parent) . " AND url=" . sql_quote($url);
     34        if ($row = sql_fetsel('*', 'spip_urls', $where)) {
    3435
    35                 if (autoriser('modifierurl',$row['type'],$row['id_objet'])){
    36                         sql_delete('spip_urls',$where);
     36                if (autoriser('modifierurl', $row['type'], $row['id_objet'])) {
     37                        sql_delete('spip_urls', $where);
     38                } else {
     39                        spip_log('supprimer sans autorisation l\'URL ' . $id_parent . "://" . $url, "urls." . _LOG_ERREUR);
    3740                }
    38                 else
    39                         spip_log('supprimer sans autorisation l\'URL '.$id_parent."://".$url,"urls."._LOG_ERREUR);
    4041
     42        } else {
     43                spip_log('Impossible de supprimer une URL inconnue ' . $id_parent . "://" . $url, "urls." . _LOG_INFO_IMPORTANTE);
    4144        }
    42         else
    43                 spip_log('Impossible de supprimer une URL inconnue '.$id_parent."://".$url,"urls."._LOG_INFO_IMPORTANTE);
    44        
     45
    4546
    4647}
  • _core_/plugins/urls_etendues/action/urls_actualiser.php

    r89285 r93629  
    1515 *
    1616 * @package SPIP\Urls_etendues\Action
    17 **/
     17 **/
    1818
    19 if (!defined("_ECRIRE_INC_VERSION")) return;
     19if (!defined("_ECRIRE_INC_VERSION")) {
     20        return;
     21}
    2022
    2123/**
     
    2830 * Cette action ne supprime pas les anciennes urls.
    2931 * Elle n'invalide pas non plus les URLs «permanentes».
    30 **/
     32 **/
    3133function action_urls_actualiser_dist() {
    3234
     
    3436        $arg = $securiser_action();
    3537
    36         if (!defined('_VAR_URLS')) define('_VAR_URLS',true);
     38        if (!defined('_VAR_URLS')) {
     39                define('_VAR_URLS', true);
     40        }
    3741        $type = $id = "";
    38         $res = sql_select("type,id_objet","spip_urls","","","type,id_objet");
    39         while ($row = sql_fetch($res)){
    40                 if ($row['id_objet']!==$id
    41                         OR $row['type']!==$type){
     42        $res = sql_select("type,id_objet", "spip_urls", "", "", "type,id_objet");
     43        while ($row = sql_fetch($res)) {
     44                if ($row['id_objet'] !== $id
     45                        OR $row['type'] !== $type
     46                ) {
    4247                        $id = $row['id_objet'];
    4348                        $type = $row['type'];
    44                         generer_url_entite($id,$type,"","",true);
     49                        generer_url_entite($id, $type, "", "", true);
    4550                }
    4651        }
  • _core_/plugins/urls_etendues/action/urls_liberer.php

    r93431 r93629  
    1111\***************************************************************************/
    1212
    13 if (!defined("_ECRIRE_INC_VERSION")) return;
     13if (!defined("_ECRIRE_INC_VERSION")) {
     14        return;
     15}
    1416
    1517// http://code.spip.net/@action_instituer_syndic_article_dist
     
    2022
    2123        include_spip('inc/autoriser');
    22         $arg = explode('-',$arg);
     24        $arg = explode('-', $arg);
    2325        $type = array_shift($arg);
    2426        $id = array_shift($arg);
    25         $url = implode('-',$arg);
    26         if (autoriser('modifierurl',$type,$id)){
     27        $url = implode('-', $arg);
     28        if (autoriser('modifierurl', $type, $id)) {
    2729                include_spip('action/editer_url');
    2830                url_delete($type, $id, $url);
  • _core_/plugins/urls_etendues/action/urls_verrouiller.php

    r93431 r93629  
    1111\***************************************************************************/
    1212
    13 if (!defined("_ECRIRE_INC_VERSION")) return;
     13if (!defined("_ECRIRE_INC_VERSION")) {
     14        return;
     15}
    1416
    1517// http://code.spip.net/@action_instituer_syndic_article_dist
     
    2022
    2123        include_spip('inc/autoriser');
    22         $arg = explode('-',$arg);
     24        $arg = explode('-', $arg);
    2325        $type = array_shift($arg);
    2426        $id = array_shift($arg);
    25         $url = implode('-',$arg);
    26         if (autoriser('modifierurl',$type,$id)){
     27        $url = implode('-', $arg);
     28        if (autoriser('modifierurl', $type, $id)) {
    2729                include_spip('action/editer_url');
    2830                url_verrouiller($type, $id, $url);
  • _core_/plugins/urls_etendues/base/urls.php

    r89285 r93629  
    1111\***************************************************************************/
    1212
    13 if (!defined('_ECRIRE_INC_VERSION')) return;
     13if (!defined('_ECRIRE_INC_VERSION')) {
     14        return;
     15}
    1416
    1517/**
    1618 * Declarer les interfaces
    17  * 
     19 *
    1820 * @param array $interfaces
    1921 * @return array
    2022 */
    2123function urls_declarer_tables_interfaces($interfaces) {
    22         $interfaces['table_des_tables']['urls']='urls';
     24        $interfaces['table_des_tables']['urls'] = 'urls';
     25
    2326        return $interfaces;
    2427}
     28
    2529/**
    2630 * Tables de jointures
     
    2933 * @return array
    3034 */
    31 function urls_declarer_tables_auxiliaires($tables_auxiliaires){
     35function urls_declarer_tables_auxiliaires($tables_auxiliaires) {
    3236
    3337        $spip_urls = array(
    3438                // un id parent eventuel, pour discriminer les doublons arborescents
    35                 "id_parent"     => "bigint(21) DEFAULT '0' NOT NULL",
    36                 "url"                   => "VARCHAR(255) NOT NULL",
     39                "id_parent" => "bigint(21) DEFAULT '0' NOT NULL",
     40                "url" => "VARCHAR(255) NOT NULL",
    3741                // la table cible
    38                 "type"                  => "varchar(25) DEFAULT 'article' NOT NULL",
     42                "type" => "varchar(25) DEFAULT 'article' NOT NULL",
    3943                // l'id dans la table
    40                 "id_objet"              => "bigint(21) NOT NULL",
     44                "id_objet" => "bigint(21) NOT NULL",
    4145                // pour connaitre la plus recente.
    4246                // ATTENTION, pas on update CURRENT_TIMESTAMP implicite
    4347                // et pas le nom maj, surinterprete par inc/import_1_3
    44                 "date"                  => "DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL",
     48                "date" => "DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL",
    4549                // nombre de segments dans url
    46                 "segments"      => "SMALLINT(3) DEFAULT '1' NOT NULL",
     50                "segments" => "SMALLINT(3) DEFAULT '1' NOT NULL",
    4751                // URL permanente, prioritaire
    48                 "perma"     => "TINYINT(1) DEFAULT '0' NOT NULL",
     52                "perma" => "TINYINT(1) DEFAULT '0' NOT NULL",
    4953        );
    5054
    5155        $spip_urls_key = array(
    52                 "PRIMARY KEY"           => "id_parent, url",
    53                 "KEY type"              => "type, id_objet");
     56                "PRIMARY KEY" => "id_parent, url",
     57                "KEY type" => "type, id_objet"
     58        );
    5459
    5560        $tables_auxiliaires['spip_urls'] = array(
    5661                'field' => &$spip_urls,
    57                 'key' => &$spip_urls_key);
     62                'key' => &$spip_urls_key
     63        );
    5864
    5965        return $tables_auxiliaires;
  • _core_/plugins/urls_etendues/formulaires/configurer_urls.php

    r93092 r93629  
    1111\***************************************************************************/
    1212
    13 if (!defined("_ECRIRE_INC_VERSION")) return;
     13if (!defined("_ECRIRE_INC_VERSION")) {
     14        return;
     15}
    1416
    15 function formulaires_configurer_urls_charger_dist(){
     17function formulaires_configurer_urls_charger_dist() {
    1618        if (isset($GLOBALS['type_urls'])) // priorité au fichier d'options
    17                 return "<p>"._T('urls:erreur_config_url_forcee')."</p>";
     19        {
     20                return "<p>" . _T('urls:erreur_config_url_forcee') . "</p>";
     21        }
    1822
    1923        $valeurs = array(
    2024                'type_urls' => $GLOBALS['meta']['type_urls'],
    2125                'urls_activer_controle' => (isset($GLOBALS['meta']['urls_activer_controle']) ? $GLOBALS['meta']['urls_activer_controle'] : ''),
    22                 '_urls_dispos'=>type_urls_lister(),
     26                '_urls_dispos' => type_urls_lister(),
    2327        );
    2428
     
    2731}
    2832
    29 function formulaires_configurer_urls_traiter_dist(){
    30         ecrire_meta('type_urls',_request('type_urls'));
    31         ecrire_meta('urls_activer_controle',_request('urls_activer_controle')?'oui':'non');
     33function formulaires_configurer_urls_traiter_dist() {
     34        ecrire_meta('type_urls', _request('type_urls'));
     35        ecrire_meta('urls_activer_controle', _request('urls_activer_controle') ? 'oui' : 'non');
    3236
    33         return array('message_ok'=>_T('config_info_enregistree'),'editable'=>true);
     37        return array('message_ok' => _T('config_info_enregistree'), 'editable' => true);
    3438}
    3539
    36 function type_url_choisir($liste, $name, $selected){
     40function type_url_choisir($liste, $name, $selected) {
    3741        $res = '<dl class="choix">';
    38         foreach($liste as $url){
     42        foreach ($liste as $url) {
    3943                $k = $url[0];
    4044                $res .= '<dt>'
    41                         .'<input type="radio" name="'.$name.'" id="'.$name.'_'.$k.'" value="'.$k.'"'
    42                         .($selected==$k ? ' checked="checked"':'')
    43                         .'/>'
    44                         .'<label for="'.$name.'_'.$k.'">'.$url[1].'</label></dt>'
    45                   .'<dd><tt>'.$url[2].'</tt></dd>'
    46                   ."\n";
     45                        . '<input type="radio" name="' . $name . '" id="' . $name . '_' . $k . '" value="' . $k . '"'
     46                        . ($selected == $k ? ' checked="checked"' : '')
     47                        . '/>'
     48                        . '<label for="' . $name . '_' . $k . '">' . $url[1] . '</label></dt>'
     49                        . '<dd><tt>' . $url[2] . '</tt></dd>'
     50                        . "\n";
    4751        }
    4852        $res .= "</dl>";
     53
    4954        return $res;
    5055}
    5156
    52 function type_urls_lister(){
     57function type_urls_lister() {
    5358
    5459        $dispo = array();
    5560        foreach (find_all_in_path('urls/', '\w+\.php$', array()) as $f) {
    5661                $r = basename($f, '.php');
    57                 if ($r == 'index' OR strncmp('generer_',$r,8)==0 OR $r=="standard") continue;
     62                if ($r == 'index' OR strncmp('generer_', $r, 8) == 0 OR $r == "standard") {
     63                        continue;
     64                }
    5865                include_once $f;
    5966                $exemple = 'URLS_' . strtoupper($r) . '_EXEMPLE';
    6067                $exemple = defined($exemple) ? constant($exemple) : '?';
    61                 $dispo[_T("urls:titre_type_$r")] = array($r, _T("urls:titre_type_$r"),$exemple);
     68                $dispo[_T("urls:titre_type_$r")] = array($r, _T("urls:titre_type_$r"), $exemple);
    6269        }
    6370
     
    6673        return $dispo;
    6774}
     75
    6876?>
  • _core_/plugins/urls_etendues/formulaires/configurer_urls_arbo_fonctions.php

    r53218 r93629  
    11<?php
    22
    3 if (!defined('_ECRIRE_INC_VERSION')) return;
     3if (!defined('_ECRIRE_INC_VERSION')) {
     4        return;
     5}
    46
    57include_spip('urls/arbo');
  • _core_/plugins/urls_etendues/formulaires/configurer_urls_propres_fonctions.php

    r53218 r93629  
    11<?php
    22
    3 if (!defined('_ECRIRE_INC_VERSION')) return;
     3if (!defined('_ECRIRE_INC_VERSION')) {
     4        return;
     5}
    46
    57include_spip('urls/propres');
  • _core_/plugins/urls_etendues/formulaires/editer_url_objet.php

    r93092 r93629  
    1111\***************************************************************************/
    1212
    13 if (!defined('_ECRIRE_INC_VERSION')) return;
     13if (!defined('_ECRIRE_INC_VERSION')) {
     14        return;
     15}
    1416
    1517/**
     
    2022 * @return array
    2123 */
    22 function formulaires_editer_url_objet_charger($type, $id){
    23         $valeurs = array('url'=>'','_objet'=>$type,'_id_objet'=>$id);
     24function formulaires_editer_url_objet_charger($type, $id) {
     25        $valeurs = array('url' => '', '_objet' => $type, '_id_objet' => $id);
    2426
    2527        return $valeurs;
    2628}
    2729
    28 function formulaires_editer_url_objet_verifier($type, $id){
     30function formulaires_editer_url_objet_verifier($type, $id) {
    2931        $erreurs = array();
    3032        include_spip('action/editer_url');
    31         if (!$url = _request('url')){
     33        if (!$url = _request('url')) {
    3234                $erreurs['url'] = _T('info_obligatoire');
    33         }
    34         else {
    35                 $type_urls = (isset($GLOBALS['type_urls'])?$GLOBALS['type_urls']:$GLOBALS['meta']['type_urls']);
    36                 if ($type_urls=='arbo' AND strpos($url,'/')!==false){
    37                         $url = explode('/',$url);
    38                         if (count($url)>2)
     35        } else {
     36                $type_urls = (isset($GLOBALS['type_urls']) ? $GLOBALS['type_urls'] : $GLOBALS['meta']['type_urls']);
     37                if ($type_urls == 'arbo' AND strpos($url, '/') !== false) {
     38                        $url = explode('/', $url);
     39                        if (count($url) > 2) {
    3940                                $erreurs['url'] = _T('urls:erreur_arbo_2_segments_max');
    40                         else{
    41                                 foreach($url as $u){
     41                        } else {
     42                                foreach ($url as $u) {
    4243                                        $url_clean[] = url_nettoyer($u, 255);
    4344                                }
    44                                 $url = implode('/',$url);
    45                                 $url_clean = implode('/',$url_clean);
     45                                $url = implode('/', $url);
     46                                $url_clean = implode('/', $url_clean);
    4647                        }
     48                } else {
     49                        $url_clean = url_nettoyer($url, 255);
    4750                }
    48                 else
    49                         $url_clean = url_nettoyer($url, 255);
    50                 if (!isset($erreurs['url']) AND $url!=$url_clean){
    51                         set_request('url',$url_clean);
     51                if (!isset($erreurs['url']) AND $url != $url_clean) {
     52                        set_request('url', $url_clean);
    5253                        $erreurs['url'] = _T('urls:verifier_url_nettoyee');
    5354                }
     
    6465 * @return array
    6566 */
    66 function formulaires_editer_url_objet_traiter($type, $id){
    67         $valeurs = array('editable'=>true);
     67function formulaires_editer_url_objet_traiter($type, $id) {
     68        $valeurs = array('editable' => true);
    6869
    6970        include_spip('action/editer_url');
    7071        // les urls manuelles sont toujours permanentes
    71         $set = array('url' => _request('url'), 'type' => $type, 'id_objet' => $id, 'perma'=>1);
     72        $set = array('url' => _request('url'), 'type' => $type, 'id_objet' => $id, 'perma' => 1);
    7273
    73         $type_urls = (isset($GLOBALS['type_urls'])?$GLOBALS['type_urls']:$GLOBALS['meta']['type_urls']);
     74        $type_urls = (isset($GLOBALS['type_urls']) ? $GLOBALS['type_urls'] : $GLOBALS['meta']['type_urls']);
    7475        if (include_spip("urls/$type_urls")
    7576                AND function_exists($renseigner_url = "renseigner_url_$type_urls")
    76                 AND $r = $renseigner_url($type,$id)
    77                 AND isset($r['parent']))
     77                AND $r = $renseigner_url($type, $id)
     78                AND isset($r['parent'])
     79        ) {
    7880                $set['id_parent'] = $r['parent'];
     81        }
    7982
    8083        $separateur = "-";
    81         if (defined('_url_sep_id')) $separateur = _url_sep_id;
     84        if (defined('_url_sep_id')) {
     85                $separateur = _url_sep_id;
     86        }
    8287
    83         if (url_insert($set,false,$separateur)) {
     88        if (url_insert($set, false, $separateur)) {
    8489                set_request('url');
    8590                $valeurs['message_ok'] = _T("urls:url_ajoutee");
     91        } else {
     92                $valeurs['message_erreur'] = _T("urls:url_ajout_impossible");
    8693        }
    87         else
    88                 $valeurs['message_erreur'] = _T("urls:url_ajout_impossible");
    8994
    9095        return $valeurs;
  • _core_/plugins/urls_etendues/prive/squelettes/contenu/configurer_urls_fonctions.php

    r53218 r93629  
    11<?php
    22
    3 if (!defined('_ECRIRE_INC_VERSION')) return;
     3if (!defined('_ECRIRE_INC_VERSION')) {
     4        return;
     5}
    46
    5 function choisir_form_configuration($type_url){
     7function choisir_form_configuration($type_url) {
    68        if (include_spip("urls/$type_url")
    7           AND defined($c='URLS_'.strtoupper($type_url).'_CONFIG'))
    8                 return "configurer_urls_".strtolower(constant($c));
     9                AND defined($c = 'URLS_' . strtoupper($type_url) . '_CONFIG')
     10        ) {
     11                return "configurer_urls_" . strtolower(constant($c));
     12        }
    913
    1014        return '';
    1115}
     16
    1217?>
  • _core_/plugins/urls_etendues/urls/arbo.php

    r93427 r93629  
    1111\***************************************************************************/
    1212
    13 if (!defined("_ECRIRE_INC_VERSION")) return; // securiser
     13if (!defined("_ECRIRE_INC_VERSION")) {
     14        return;
     15} // securiser
    1416
    1517# donner un exemple d'url pour le formulaire de choix
     
    2931 * "sous-repertoire", vous devrez aussi editer la ligne "RewriteBase" ce fichier.
    3032 * Les URLs definies seront alors redirigees vers les fichiers de SPIP.
    31  * 
     33 *
    3234 * Choisissez "arbo" dans les pages de configuration d'URL
    3335 *
    3436 * SPIP calculera alors ses liens sous la forme "Mon-titre-d-article".
    3537 * Variantes :
    36  * 
     38 *
    3739 * Terminaison :
    3840 * les terminaisons ne *sont pas* stockees en base, elles servent juste
     
    4042 * pour avoir des url terminant par html
    4143 * define ('_terminaison_urls_arbo', '.html');
    42  * 
     44 *
    4345 * pour preciser des terminaisons particulieres pour certains types
    4446 * $GLOBALS['url_arbo_terminaisons']=array(
     
    4749 * 'groupe' => '/',
    4850 * 'defaut' => '.html');
    49  * 
     51 *
    5052 * pour avoir des url numeriques (id) du type 12/5/4/article/23
    5153 * define ('_URLS_ARBO_MIN',255);
    52  * 
    53  * 
     54 *
     55 *
    5456 * pour conserver la casse des titres dans les url
    5557 * define ('_url_arbo_minuscules',0);
    56  * 
    57  * pour choisir le caractere de separation titre-id en cas de doublon 
     58 *
     59 * pour choisir le caractere de separation titre-id en cas de doublon
    5860 * (ne pas utiliser '/')
    5961 * define ('_url_arbo_sep_id','-');
    60  * 
     62 *
    6163 * pour modifier la hierarchie apparente dans la constitution des urls
    6264 * ex pour que les mots soient classes par groupes
    6365 * $GLOBALS['url_arbo_parents']=array(
    64  *                        'article'=>array('id_rubrique','rubrique'),
    65  *                        'rubrique'=>array('id_parent','rubrique'),
    66  *                        'breve'=>array('id_rubrique','rubrique'),
    67  *                        'site'=>array('id_rubrique','rubrique'),
    68  *                              'mot'=>array('id_groupe','groupes_mot'));
    69  * 
     66 *        'article'=>array('id_rubrique','rubrique'),
     67 *        'rubrique'=>array('id_parent','rubrique'),
     68 *        'breve'=>array('id_rubrique','rubrique'),
     69 *        'site'=>array('id_rubrique','rubrique'),
     70 *        'mot'=>array('id_groupe','groupes_mot'));
     71 *
    7072 * pour personaliser les types
    7173 * $GLOBALS['url_arbo_types']=array(
     
    7476 * 'mot'=>'tags'
    7577 * );
    76  * 
     78 *
    7779 */
    7880
    7981include_spip('inc/xcache');
    8082if (!function_exists('Cache')) {
    81         function Cache(){return null;}
    82 }
    83 
    84 $config_urls_arbo = isset($GLOBALS['meta']['urls_arbo'])?unserialize($GLOBALS['meta']['urls_arbo']):array();
    85 if (!defined('_debut_urls_arbo')) define('_debut_urls_arbo', '');
    86 if (!defined('_terminaison_urls_arbo')) define('_terminaison_urls_arbo', '');
     83        function Cache() { return null; }
     84}
     85
     86$config_urls_arbo = isset($GLOBALS['meta']['urls_arbo']) ? unserialize($GLOBALS['meta']['urls_arbo']) : array();
     87if (!defined('_debut_urls_arbo')) {
     88        define('_debut_urls_arbo', '');
     89}
     90if (!defined('_terminaison_urls_arbo')) {
     91        define('_terminaison_urls_arbo', '');
     92}
    8793// pour choisir le caractere de separation titre-id en cas de doublon
    8894// (ne pas utiliser '/')
    89 if (!defined('_url_arbo_sep_id')) define('_url_arbo_sep_id',isset($config_urls_arbo['url_arbo_sep_id'])?$config_urls_arbo['url_arbo_sep_id']:'-');
     95if (!defined('_url_arbo_sep_id')) {
     96        define('_url_arbo_sep_id', isset($config_urls_arbo['url_arbo_sep_id']) ? $config_urls_arbo['url_arbo_sep_id'] : '-');
     97}
    9098// option pour tout passer en minuscules
    91 if (!defined('_url_arbo_minuscules')) define('_url_arbo_minuscules',isset($config_urls_arbo['url_arbo_minuscules'])?$config_urls_arbo['url_arbo_minuscules']:1);
    92 if (!defined('_URLS_ARBO_MAX')) define('_URLS_ARBO_MAX', isset($config_urls_arbo['URLS_ARBO_MAX'])?$config_urls_arbo['URLS_ARBO_MAX']:80);
    93 if (!defined('_URLS_ARBO_MIN')) define('_URLS_ARBO_MIN', isset($config_urls_arbo['URLS_ARBO_MIN'])?$config_urls_arbo['URLS_ARBO_MIN']:3);
    94 
    95 if (!defined('_url_sep_id')) define('_url_sep_id',_url_arbo_sep_id);
     99if (!defined('_url_arbo_minuscules')) {
     100        define('_url_arbo_minuscules', isset($config_urls_arbo['url_arbo_minuscules']) ? $config_urls_arbo['url_arbo_minuscules'] : 1);
     101}
     102if (!defined('_URLS_ARBO_MAX')) {
     103        define('_URLS_ARBO_MAX', isset($config_urls_arbo['URLS_ARBO_MAX']) ? $config_urls_arbo['URLS_ARBO_MAX'] : 80);
     104}
     105if (!defined('_URLS_ARBO_MIN')) {
     106        define('_URLS_ARBO_MIN', isset($config_urls_arbo['URLS_ARBO_MIN']) ? $config_urls_arbo['URLS_ARBO_MIN'] : 3);
     107}
     108
     109if (!defined('_url_sep_id')) {
     110        define('_url_sep_id', _url_arbo_sep_id);
     111}
    96112
    97113// Ces chaines servaient de marqueurs a l'epoque ou les URL propres devaient
     
    102118
    103119#define('_MARQUEUR_URL', serialize(array('rubrique1' => '-', 'rubrique2' => '-', 'breve1' => '+', 'breve2' => '+', 'site1' => '@', 'site2' => '@', 'auteur1' => '_', 'auteur2' => '_', 'mot1' => '+-', 'mot2' => '-+')));
    104 if (!defined('_MARQUEUR_URL')) define('_MARQUEUR_URL', false);
     120if (!defined('_MARQUEUR_URL')) {
     121        define('_MARQUEUR_URL', false);
     122}
    105123
    106124/**
     
    110128 * @return string
    111129 */
    112 function url_arbo_parent($type){
     130function url_arbo_parent($type) {
    113131        static $parents = null;
    114         if (is_null($parents)){
     132        if (is_null($parents)) {
    115133                $parents = array(
    116                           'article'=>array('id_rubrique','rubrique'),
    117                           'rubrique'=>array('id_parent','rubrique'),
    118                           'breve'=>array('id_rubrique','rubrique'),
    119                           'site'=>array('id_rubrique','rubrique'));
    120                 if (isset($GLOBALS['url_arbo_parents']) AND !isset($_REQUEST['url_arbo_parents'])){
    121                         $parents = array_merge($parents,$GLOBALS['url_arbo_parents']);
    122                 }                         
    123         }
    124         return (isset($parents[$type])?$parents[$type]:'');
     134                        'article' => array('id_rubrique', 'rubrique'),
     135                        'rubrique' => array('id_parent', 'rubrique'),
     136                        'breve' => array('id_rubrique', 'rubrique'),
     137                        'site' => array('id_rubrique', 'rubrique')
     138                );
     139                if (isset($GLOBALS['url_arbo_parents']) AND !isset($_REQUEST['url_arbo_parents'])) {
     140                        $parents = array_merge($parents, $GLOBALS['url_arbo_parents']);
     141                }
     142        }
     143
     144        return (isset($parents[$type]) ? $parents[$type] : '');
    125145}
    126146
     
    133153 * @return string
    134154 */
    135 function url_arbo_terminaison($type){
     155function url_arbo_terminaison($type) {
    136156        static $terminaison_types = null;
    137         if ($terminaison_types==null){
    138                 $terminaison_types = array('rubrique' => '/','mot' => '','defaut' => defined('_terminaison_urls_arbo')?_terminaison_urls_arbo:'.html');
    139                 if (isset($GLOBALS['url_arbo_terminaisons']))
    140                         $terminaison_types = array_merge($terminaison_types,$GLOBALS['url_arbo_terminaisons']);
     157        if ($terminaison_types == null) {
     158                $terminaison_types = array(
     159                        'rubrique' => '/',
     160                        'mot' => '',
     161                        'defaut' => defined('_terminaison_urls_arbo') ? _terminaison_urls_arbo : '.html'
     162                );
     163                if (isset($GLOBALS['url_arbo_terminaisons'])) {
     164                        $terminaison_types = array_merge($terminaison_types, $GLOBALS['url_arbo_terminaisons']);
     165                }
    141166        }
    142167        // si c'est un appel avec type='' c'est pour avoir la liste des terminaisons
    143         if (!$type)
     168        if (!$type) {
    144169                return array_unique(array_values($terminaison_types));
    145         if (isset($terminaison_types[$type]))
     170        }
     171        if (isset($terminaison_types[$type])) {
    146172                return $terminaison_types[$type];
    147         elseif (isset($terminaison_types['defaut']))
     173        } elseif (isset($terminaison_types['defaut'])) {
    148174                return $terminaison_types['defaut'];
     175        }
     176
    149177        return "";
    150178}
     
    158186 * @return array|string
    159187 */
    160 function url_arbo_type($type){
     188function url_arbo_type($type) {
    161189        static $synonymes_types = null;
    162         if (!$synonymes_types){
    163                 $synonymes_types = array('rubrique'=>'');
    164                 if (isset($GLOBALS['url_arbo_types']) AND is_array($GLOBALS['url_arbo_types']))
    165                         $synonymes_types = array_merge($synonymes_types,$GLOBALS['url_arbo_types']);
     190        if (!$synonymes_types) {
     191                $synonymes_types = array('rubrique' => '');
     192                if (isset($GLOBALS['url_arbo_types']) AND is_array($GLOBALS['url_arbo_types'])) {
     193                        $synonymes_types = array_merge($synonymes_types, $GLOBALS['url_arbo_types']);
     194                }
    166195        }
    167196        // si c'est un appel avec type='' c'est pour avoir la liste inversee des synonymes
    168         if (!$type)
     197        if (!$type) {
    169198                return array_flip($synonymes_types);
    170         return
    171             ($t=(isset($synonymes_types[$type])?$synonymes_types[$type]:$type))  // le type ou son synonyme
    172           . ($t?'/':''); // le / eventuel pour separer, si le synonyme n'est pas vide
     199        }
     200
     201        return
     202                ($t = (isset($synonymes_types[$type]) ? $synonymes_types[$type] : $type))  // le type ou son synonyme
     203                . ($t ? '/' : ''); // le / eventuel pour separer, si le synonyme n'est pas vide
    173204}
    174205
     
    191222
    192223        include_spip('action/editer_url');
    193         if (!$url = url_nettoyer($objet['titre'],_URLS_ARBO_MAX,_URLS_ARBO_MIN,'-',_url_arbo_minuscules?'strtolower':''))
     224        if (!$url = url_nettoyer($objet['titre'], _URLS_ARBO_MAX, _URLS_ARBO_MIN, '-',
     225                _url_arbo_minuscules ? 'strtolower' : '')
     226        ) {
    194227                $url = $objet['id_objet'];
    195        
     228        }
     229
    196230        $x['data'] =
    197                   url_arbo_type($objet['type']) // le type ou son synonyme
    198           . $url; // le titre
     231                url_arbo_type($objet['type']) // le type ou son synonyme
     232                . $url; // le titre
    199233
    200234        return $x;
     
    211245 * @return string
    212246 */
    213 function declarer_url_arbo_rec($url, $type, $parent, $type_parent){
    214         if (is_null($parent)){
     247function declarer_url_arbo_rec($url, $type, $parent, $type_parent) {
     248        if (is_null($parent)) {
    215249                return $url;
    216250        }
    217251        // Si pas de parent ou si son URL est vide, on ne renvoit que l'URL de l'objet en court
    218         if ($parent==0 or !($url_parent = declarer_url_arbo($type_parent?$type_parent:'rubrique',$parent))){
    219                 return rtrim($url,'/');
    220         }
    221         // Sinon on renvoit l'URL de l'objet concaténée avec celle du parent
     252        if ($parent == 0 or !($url_parent = declarer_url_arbo($type_parent ? $type_parent : 'rubrique', $parent))) {
     253                return rtrim($url, '/');
     254        } // Sinon on renvoit l'URL de l'objet concaténée avec celle du parent
    222255        else {
    223                 return rtrim($url_parent,'/') . '/' . rtrim($url,'/');
     256                return rtrim($url_parent, '/') . '/' . rtrim($url, '/');
    224257        }
    225258}
     
    228261 * Renseigner les infos les plus recentes de l'url d'un objet
    229262 * et de quoi la (re)construire si besoin
     263 *
    230264 * @param string $type
    231265 * @param int $id_objet
    232266 * @return bool|null|array
    233267 */
    234 function renseigner_url_arbo($type, $id_objet){
     268function renseigner_url_arbo($type, $id_objet) {
    235269        $urls = array();
    236270        $trouver_table = charger_fonction('trouver_table', 'base');
    237271        $desc = $trouver_table(table_objet($type));
    238272        $table = $desc['table'];
    239         $col_id =  @$desc['key']["PRIMARY KEY"];
    240         if (!$col_id) return false; // Quand $type ne reference pas une table
     273        $col_id = @$desc['key']["PRIMARY KEY"];
     274        if (!$col_id) {
     275                return false;
     276        } // Quand $type ne reference pas une table
    241277        $id_objet = intval($id_objet);
    242278
    243279        $champ_titre = $desc['titre'] ? $desc['titre'] : 'titre';
    244        
     280
    245281        // parent
    246282        $champ_parent = url_arbo_parent($type);
    247283        $sel_parent = ', 0 as parent';
    248284        $order_by_parent = "";
    249         if ($champ_parent){
    250                 $sel_parent = ", O.".reset($champ_parent).' as parent';
     285        if ($champ_parent) {
     286                $sel_parent = ", O." . reset($champ_parent) . ' as parent';
    251287                // trouver l'url qui matche le parent en premier
    252                 $order_by_parent = "O.".reset($champ_parent)."=U.id_parent DESC, ";
     288                $order_by_parent = "O." . reset($champ_parent) . "=U.id_parent DESC, ";
    253289        }
    254290        //  Recuperer une URL propre correspondant a l'objet.
    255291        $row = sql_fetsel("U.url, U.date, U.id_parent, U.perma, $champ_titre $sel_parent",
    256                                                                                 "$table AS O LEFT JOIN spip_urls AS U ON (U.type='$type' AND U.id_objet=O.$col_id)",
    257                                                                                 "O.$col_id=$id_objet",
    258                                                                                 '',
    259                                                                                 $order_by_parent.'U.perma DESC, U.date DESC', 1);
    260         if ($row){
     292                "$table AS O LEFT JOIN spip_urls AS U ON (U.type='$type' AND U.id_objet=O.$col_id)",
     293                "O.$col_id=$id_objet",
     294                '',
     295                $order_by_parent . 'U.perma DESC, U.date DESC', 1);
     296        if ($row) {
    261297                $urls[$type][$id_objet] = $row;
    262                 $urls[$type][$id_objet]['type_parent'] = $champ_parent?end($champ_parent):'';
    263         }
    264         return isset($urls[$type][$id_objet])?$urls[$type][$id_objet]:null;
     298                $urls[$type][$id_objet]['type_parent'] = $champ_parent ? end($champ_parent) : '';
     299        }
     300
     301        return isset($urls[$type][$id_objet]) ? $urls[$type][$id_objet] : null;
    265302}
    266303
     
    275312 */
    276313function declarer_url_arbo($type, $id_objet) {
    277         static $urls=array();
     314        static $urls = array();
    278315        // utiliser un cache memoire pour aller plus vite
    279         if(!is_null($C=Cache())) return$C;
    280        
     316        if (!is_null($C = Cache())) {
     317                return $C;
     318        }
     319
    281320        // Se contenter de cette URL si elle existe ;
    282321        // sauf si on invoque par "voir en ligne" avec droit de modifier l'url
     
    286325        // qui requetent en base
    287326        $modifier_url = (defined('_VAR_URLS') AND _VAR_URLS);
    288        
     327
    289328        if (!isset($urls[$type][$id_objet]) OR $modifier_url) {
    290                 $r = renseigner_url_arbo($type,$id_objet);
     329                $r = renseigner_url_arbo($type, $id_objet);
    291330                // Quand $type ne reference pas une table
    292                 if ($r===false)
     331                if ($r === false) {
    293332                        return false;
    294 
    295                 if (!is_null($r))
     333                }
     334
     335                if (!is_null($r)) {
    296336                        $urls[$type][$id_objet] = $r;
    297         }
    298 
    299         if (!isset($urls[$type][$id_objet])) return ""; # objet inexistant
     337                }
     338        }
     339
     340        if (!isset($urls[$type][$id_objet])) {
     341                return "";
     342        } # objet inexistant
    300343
    301344        $url_propre = $urls[$type][$id_objet]['url'];
     
    305348        // et (permanente ou pas de demande de modif)
    306349        if (!is_null($url_propre)
    307           AND $urls[$type][$id_objet]['id_parent'] == $urls[$type][$id_objet]['parent']
    308           AND ($urls[$type][$id_objet]['perma'] OR !$modifier_url))
    309                 return declarer_url_arbo_rec($url_propre,$type,
    310                   isset($urls[$type][$id_objet]['parent'])?$urls[$type][$id_objet]['parent']:0,
    311                   isset($urls[$type][$id_objet]['type_parent'])?$urls[$type][$id_objet]['type_parent']:null);
     350                AND $urls[$type][$id_objet]['id_parent'] == $urls[$type][$id_objet]['parent']
     351                AND ($urls[$type][$id_objet]['perma'] OR !$modifier_url)
     352        ) {
     353                return declarer_url_arbo_rec($url_propre, $type,
     354                        isset($urls[$type][$id_objet]['parent']) ? $urls[$type][$id_objet]['parent'] : 0,
     355                        isset($urls[$type][$id_objet]['type_parent']) ? $urls[$type][$id_objet]['type_parent'] : null);
     356        }
    312357
    313358        // Si URL inconnue ou maj forcee sur une url non permanente, recreer une url
     
    327372                include_spip('inc/urls');
    328373                $objets = urls_liste_objets();
    329                 if (preg_match(',^('.$objets.')[0-9]*$,', $url, $r)
    330                 AND $r[1] != $type)
    331                         $url = $url._url_arbo_sep_id.$id_objet;
     374                if (preg_match(',^(' . $objets . ')[0-9]*$,', $url, $r)
     375                        AND $r[1] != $type
     376                ) {
     377                        $url = $url . _url_arbo_sep_id . $id_objet;
     378                }
    332379        }
    333380
     
    335382        // Pas de changement d'url ni de parent
    336383        if ($url == $url_propre
    337           AND $urls[$type][$id_objet]['id_parent'] == $urls[$type][$id_objet]['parent'])
    338                 return declarer_url_arbo_rec($url_propre,$type,$urls[$type][$id_objet]['parent'],$urls[$type][$id_objet]['type_parent']);
     384                AND $urls[$type][$id_objet]['id_parent'] == $urls[$type][$id_objet]['parent']
     385        ) {
     386                return declarer_url_arbo_rec($url_propre, $type, $urls[$type][$id_objet]['parent'],
     387                        $urls[$type][$id_objet]['type_parent']);
     388        }
    339389
    340390        // verifier l'autorisation, maintenant qu'on est sur qu'on va agir
     
    348398                AND $url_propre
    349399                // on essaye pas de regenerer une url en -xxx (suffixe id anti collision)
    350                 AND $url != preg_replace('/'.preg_quote(_url_propres_sep_id,'/').'.*/', '', $url_propre))
     400                AND $url != preg_replace('/' . preg_quote(_url_propres_sep_id, '/') . '.*/', '', $url_propre)
     401        ) {
    351402                $confirmer = true;
    352         else
     403        } else {
    353404                $confirmer = false;
     405        }
    354406
    355407        if ($confirmer AND !_request('ok')) {
     
    357409        }
    358410
    359         $set = array('url' => $url, 'type' => $type, 'id_objet' => $id_objet, 'id_parent'=>$urls[$type][$id_objet]['parent'],'perma'=>intval($urls[$type][$id_objet]['perma']));
     411        $set = array(
     412                'url' => $url,
     413                'type' => $type,
     414                'id_objet' => $id_objet,
     415                'id_parent' => $urls[$type][$id_objet]['parent'],
     416                'perma' => intval($urls[$type][$id_objet]['perma'])
     417        );
    360418        include_spip('action/editer_url');
    361         if (url_insert($set,$confirmer,_url_arbo_sep_id)){
     419        if (url_insert($set, $confirmer, _url_arbo_sep_id)) {
    362420                $urls[$type][$id_objet]['url'] = $set['url'];
    363421                $urls[$type][$id_objet]['id_parent'] = $set['id_parent'];
    364         }
    365         else {
     422        } else {
    366423                // l'insertion a echoue,
    367424                //serveur out ? retourner au mieux
    368                 $urls[$type][$id_objet]['url']=$url_propre;
    369         }
    370 
    371         return declarer_url_arbo_rec($urls[$type][$id_objet]['url'],$type,$urls[$type][$id_objet]['parent'],$urls[$type][$id_objet]['type_parent']);
     425                $urls[$type][$id_objet]['url'] = $url_propre;
     426        }
     427
     428        return declarer_url_arbo_rec($urls[$type][$id_objet]['url'], $type, $urls[$type][$id_objet]['parent'],
     429                $urls[$type][$id_objet]['type_parent']);
    372430}
    373431
     
    385443function _generer_url_arbo($type, $id, $args = '', $ancre = '') {
    386444
    387         if ($generer_url_externe = charger_fonction("generer_url_$type",'urls',true)) {
     445        if ($generer_url_externe = charger_fonction("generer_url_$type", 'urls', true)) {
    388446                $url = $generer_url_externe($id, $args, $ancre);
    389                 if (NULL != $url) return $url;
     447                if (null != $url) {
     448                        return $url;
     449                }
    390450        }
    391451
     
    393453        $propre = declarer_url_arbo($type, $id);
    394454
    395         if ($propre === false) return ''; // objet inconnu. raccourci ?
     455        if ($propre === false) {
     456                return '';
     457        } // objet inconnu. raccourci ?
    396458
    397459        if ($propre) {
    398460                $url = _debut_urls_arbo
    399                         . rtrim($propre,'/')
     461                        . rtrim($propre, '/')
    400462                        . url_arbo_terminaison($type);
    401463        } else {
     
    404466                include_spip('base/connect_sql');
    405467                $id_type = id_table_objet($type);
    406                 $url = get_spip_script('./')."?"._SPIP_PAGE."=$type&$id_type=$id";
     468                $url = get_spip_script('./') . "?" . _SPIP_PAGE . "=$type&$id_type=$id";
    407469        }
    408470
    409471        // Ajouter les args
    410         if ($args)
    411                 $url .= ((strpos($url, '?')===false) ? '?' : '&') . $args;
     472        if ($args) {
     473                $url .= ((strpos($url, '?') === false) ? '?' : '&') . $args;
     474        }
    412475
    413476        // Ajouter l'ancre
    414         if ($ancre)
     477        if ($ancre) {
    415478                $url .= "#$ancre";
     479        }
    416480
    417481        return _DIR_RACINE . $url;
     
    433497 */
    434498function urls_arbo_dist($i, $entite, $args = '', $ancre = '') {
    435         if (is_numeric($i))
     499        if (is_numeric($i)) {
    436500                return _generer_url_arbo($entite, $i, $args, $ancre);
     501        }
    437502
    438503        // traiter les injections du type domaine.org/spip.php/cestnimportequoi/ou/encore/plus/rubrique23
    439         if ($GLOBALS['profondeur_url']>0 AND $entite=='sommaire'){
     504        if ($GLOBALS['profondeur_url'] > 0 AND $entite == 'sommaire') {
    440505                $entite = 'type_urls';
    441506        }
    442507
    443508        // recuperer les &debut_xx;
    444         if (is_array($args))
     509        if (is_array($args)) {
    445510                $contexte = $args;
    446         else
    447                 parse_str($args,$contexte);
     511        } else {
     512                parse_str($args, $contexte);
     513        }
    448514
    449515        $url = $i;
     
    453519        // Migration depuis anciennes URLs ?
    454520        // traiter les injections domain.tld/spip.php/n/importe/quoi/rubrique23
    455         if ($GLOBALS['profondeur_url']<=0
    456         AND $_SERVER['REQUEST_METHOD'] != 'POST') {
     521        if ($GLOBALS['profondeur_url'] <= 0
     522                AND $_SERVER['REQUEST_METHOD'] != 'POST'
     523        ) {
    457524                include_spip('inc/urls');
    458525                $r = nettoyer_url_page($i, $contexte);
    459526                if ($r) {
    460                         list($contexte, $type,,, $suite) = $r;
     527                        list($contexte, $type, , , $suite) = $r;
    461528                        $_id = id_table_objet($type);
    462529                        $id_objet = $contexte[$_id];
    463530                        $url_propre = generer_url_entite($id_objet, $type);
    464531                        if (strlen($url_propre)
    465                         AND !strstr($url,$url_propre)) {
    466                                 list(,$hash) = array_pad(explode('#', $url_propre), 2, null);
     532                                AND !strstr($url, $url_propre)
     533                        ) {
     534                                list(, $hash) = array_pad(explode('#', $url_propre), 2, null);
    467535                                $args = array();
    468                                 foreach(array_filter(explode('&', $suite)) as $fragment) {
    469                                         if ($fragment != "$_id=$id_objet")
     536                                foreach (array_filter(explode('&', $suite)) as $fragment) {
     537                                        if ($fragment != "$_id=$id_objet") {
    470538                                                $args[] = $fragment;
     539                                        }
    471540                                }
    472                                 $url_redirect = generer_url_entite($id_objet, $type, join('&',array_filter($args)), $hash);
     541                                $url_redirect = generer_url_entite($id_objet, $type, join('&', array_filter($args)), $hash);
    473542
    474543                                return array($contexte, $type, $url_redirect, $type);
     
    483552        // Mode Query-String ?
    484553        if (!$url_propre
    485         AND preg_match(',[?]([^=/?&]+)(&.*)?$,', $url, $r)) {
     554                AND preg_match(',[?]([^=/?&]+)(&.*)?$,', $url, $r)
     555        ) {
    486556                $url_propre = $r[1];
    487557        }
    488558
    489559        if (!$url_propre
    490           OR $url_propre==_DIR_RESTREINT_ABS
    491           OR $url_propre==_SPIP_SCRIPT) return; // qu'est-ce qu'il veut ???
     560                OR $url_propre == _DIR_RESTREINT_ABS
     561                OR $url_propre == _SPIP_SCRIPT
     562        ) {
     563                return;
     564        } // qu'est-ce qu'il veut ???
    492565
    493566
     
    498571
    499572        // Compatibilite avec .htm/.html et autres terminaisons
    500         $t = array_diff(array_unique(array_merge(array('.html','.htm','/'),url_arbo_terminaison(''))),array(''));
    501         if (count($t))
     573        $t = array_diff(array_unique(array_merge(array('.html', '.htm', '/'), url_arbo_terminaison(''))), array(''));
     574        if (count($t)) {
    502575                $url_propre = preg_replace('{('
    503                   .implode('|',array_map('preg_quote',$t)).')$}i', '', $url_propre);
    504 
    505         if (strlen($url_propre) AND !preg_match(',^[^/]*[.]php,',$url_propre)){
     576                        . implode('|', array_map('preg_quote', $t)) . ')$}i', '', $url_propre);
     577        }
     578
     579        if (strlen($url_propre) AND !preg_match(',^[^/]*[.]php,', $url_propre)) {
    506580                $parents_vus = array();
    507                
     581
    508582                // recuperer tous les objets de larbo xxx/article/yyy/mot/zzzz
    509583                // on parcourt les segments de gauche a droite
    510584                // pour pouvoir contextualiser un segment par son parent
    511                 $url_arbo = explode('/',$url_propre);
     585                $url_arbo = explode('/', $url_propre);
    512586                $url_arbo_new = array();
    513587                $dernier_parent_vu = false;
    514588                $objet_segments = 0;
    515                 while (count($url_arbo)>0){
    516                         $type=null;
    517                         if (count($url_arbo)>1)
     589                while (count($url_arbo) > 0) {
     590                        $type = null;
     591                        if (count($url_arbo) > 1) {
    518592                                $type = array_shift($url_arbo);
     593                        }
    519594                        $url_segment = array_shift($url_arbo);
    520595                        // Rechercher le segment de candidat
     
    522597                        // prefixer le segment recherche avec ce contexte
    523598                        $cp = "0"; // par defaut : parent racine, id=0
    524                         if ($dernier_parent_vu)
     599                        if ($dernier_parent_vu) {
    525600                                $cp = $parents_vus[$dernier_parent_vu];
     601                        }
    526602                        // d'abord recherche avec prefixe parent, en une requete car aucun risque de colision
    527                         $row=sql_fetsel('id_objet, type, url',
    528                                                                                         'spip_urls',
    529                                                                                         is_null($type)
    530                                                                                                 ? "url=".sql_quote($url_segment, '', 'TEXT')
    531                                                                                                 : sql_in('url',array("$type/$url_segment",$type)),
    532                                                                                         '',
    533                                                                                         // en priorite celui qui a le bon parent et les deux segments
    534                                                                                         // puis le bon parent avec 1 segment
    535                                                                                         // puis un parent indefini (le 0 de preference) et les deux segments
    536                                                                                         // puis un parent indefini (le 0 de preference) et 1 segment
    537                                                                                         (intval($cp)?"id_parent=".intval($cp)." DESC, ":"id_parent>=0 DESC, ")."segments DESC, id_parent"
     603                        $row = sql_fetsel('id_objet, type, url',
     604                                'spip_urls',
     605                                is_null($type)
     606                                        ? "url=" . sql_quote($url_segment, '', 'TEXT')
     607                                        : sql_in('url', array("$type/$url_segment", $type)),
     608                                '',
     609                                // en priorite celui qui a le bon parent et les deux segments
     610                                // puis le bon parent avec 1 segment
     611                                // puis un parent indefini (le 0 de preference) et les deux segments
     612                                // puis un parent indefini (le 0 de preference) et 1 segment
     613                                (intval($cp) ? "id_parent=" . intval($cp) . " DESC, " : "id_parent>=0 DESC, ") . "segments DESC, id_parent"
    538614                        );
    539                         if ($row){
    540                                 if (!is_null($type) AND $row['url']==$type){
    541                                         array_unshift($url_arbo,$url_segment);
     615                        if ($row) {
     616                                if (!is_null($type) AND $row['url'] == $type) {
     617                                        array_unshift($url_arbo, $url_segment);
    542618                                        $url_segment = $type;
    543619                                        $type = null;
     
    545621                                $type = $row['type'];
    546622                                $col_id = id_table_objet($type);
    547                                
     623
    548624                                // le plus a droite l'emporte pour des objets presents plusieurs fois dans l'url (ie rubrique)
    549625                                $contexte[$col_id] = $row['id_objet'];
    550626
    551627                                $type_parent = '';
    552                                 if ($p = url_arbo_parent($type))
    553                                         $type_parent=end($p);
     628                                if ($p = url_arbo_parent($type)) {
     629                                        $type_parent = end($p);
     630                                }
    554631                                // l'entite la plus a droite l'emporte, si le type de son parent a ete vu
    555632                                // sinon c'est un segment contextuel supplementaire a ignorer
    556633                                // ex : rub1/article/art1/mot1 : il faut ignorer le mot1, la vrai url est celle de l'article
    557634                                if (!$entite
    558                                   OR $dernier_parent_vu == $type_parent){
    559                                         if ($objet_segments==0)
     635                                        OR $dernier_parent_vu == $type_parent
     636                                ) {
     637                                        if ($objet_segments == 0) {
    560638                                                $entite = $type;
    561                                 }
    562                                 // sinon on change d'objet concerne
    563                                 else{
     639                                        }
     640                                } // sinon on change d'objet concerne
     641                                else {
    564642                                        $objet_segments++;
    565643                                }
     
    571649                                // on note le dernier parent vu de chaque type
    572650                                $parents_vus[$dernier_parent_vu = $type] = $row['id_objet'];
    573                         }
    574                         else {
     651                        } else {
    575652                                // un segment est inconnu
    576                                 if ($entite=='' OR $entite=='type_urls') {
     653                                if ($entite == '' OR $entite == 'type_urls') {
    577654                                        // on genere une 404 comme il faut si on ne sait pas ou aller
    578                                         return array(array(),'404');
     655                                        return array(array(), '404');
    579656                                }
    580657                                // ici on a bien reconnu un segment en amont, mais le segment en cours est inconnu
     
    582659                                // mais de fait l'url entiere est inconnu : 404 aussi
    583660                                // mais conserver le contexte qui peut contenir un fond d'ou venait peut etre $entite (reecriture urls)
    584                                 return array($contexte,'404');
     661                                return array($contexte, '404');
    585662                        }
    586663                }
    587664
    588                 if (count($url_arbo_new)){
     665                if (count($url_arbo_new)) {
    589666                        $caller = debug_backtrace();
    590667                        $caller = $caller[1]['function'];
     
    592669                        // ne pas regenerer des segments arbo, mais rediriger vers la nouvelle URL
    593670                        // dans la nouvelle forme
    594                         if (strncmp($caller,"urls_",5)==0 AND $caller!=="urls_decoder_url"){
     671                        if (strncmp($caller, "urls_", 5) == 0 AND $caller !== "urls_decoder_url") {
    595672                                // en absolue, car assembler ne gere pas ce cas particulier
    596673                                include_spip('inc/filtres_mini');
    597674                                $col_id = id_table_objet($entite);
    598                                 $url_new = generer_url_entite($contexte[$col_id],$entite);
     675                                $url_new = generer_url_entite($contexte[$col_id], $entite);
    599676                                // securite contre redirection infinie
    600                                 if ($url_new!==$url_propre
    601                                         AND rtrim($url_new,"/")!==rtrim($url_propre,"/"))
     677                                if ($url_new !== $url_propre
     678                                        AND rtrim($url_new, "/") !== rtrim($url_propre, "/")
     679                                ) {
    602680                                        $url_redirect = url_absolue($url_new);
    603                         }
    604                         else {
    605                                 foreach($url_arbo_new as $k=>$o)
    606                                         if ($s = declarer_url_arbo($o['objet'],$o['id_objet']))
     681                                }
     682                        } else {
     683                                foreach ($url_arbo_new as $k => $o) {
     684                                        if ($s = declarer_url_arbo($o['objet'], $o['id_objet'])) {
    607685                                                $url_arbo_new[$k] = $s;
    608                                         else
    609                                                 $url_arbo_new[$k] = implode('/',$o['segment']);
    610                                 $url_arbo_new = ltrim(implode('/',$url_arbo_new),'/');
    611 
    612                                 if ($url_arbo_new!==$url_propre){
     686                                        } else {
     687                                                $url_arbo_new[$k] = implode('/', $o['segment']);
     688                                        }
     689                                }
     690                                $url_arbo_new = ltrim(implode('/', $url_arbo_new), '/');
     691
     692                                if ($url_arbo_new !== $url_propre) {
    613693                                        $url_redirect = $url_arbo_new;
    614694                                        // en absolue, car assembler ne gere pas ce cas particulier
     
    620700
    621701                // gerer le retour depuis des urls propres
    622                 if (($entite=='' OR $entite=='type_urls')
    623                 AND $GLOBALS['profondeur_url']<=0){
    624                         $urls_anciennes = charger_fonction('propres','urls');
     702                if (($entite == '' OR $entite == 'type_urls')
     703                        AND $GLOBALS['profondeur_url'] <= 0
     704                ) {
     705                        $urls_anciennes = charger_fonction('propres', 'urls');
     706
    625707                        return $urls_anciennes($url_propre, $entite, $contexte);
    626708                }
    627709        }
    628         if ($entite=='' OR $entite=='type_urls' /* compat .htaccess 2.0 */) {
    629                 if ($type)
    630                         $entite = objet_type ($type);
    631                 else {
     710        if ($entite == '' OR $entite == 'type_urls' /* compat .htaccess 2.0 */) {
     711                if ($type) {
     712                        $entite = objet_type($type);
     713                } else {
    632714                        // Si ca ressemble a une URL d'objet, ce n'est pas la home
    633715                        // et on provoque un 404
     
    638720                }
    639721        }
    640         define('_SET_HTML_BASE',1);
     722        define('_SET_HTML_BASE', 1);
    641723
    642724        return array($contexte, $entite, $url_redirect, null);
  • _core_/plugins/urls_etendues/urls/html.php

    r93092 r93629  
    3232*/
    3333
    34 if (!defined("_ECRIRE_INC_VERSION")) return; // securiser
     34if (!defined("_ECRIRE_INC_VERSION")) {
     35        return;
     36} // securiser
    3537
    3638# donner un exemple d'url pour le formulaire de choix
     
    3941// http://code.spip.net/@_generer_url_html
    4042function _generer_url_html($type, $id, $args = '', $ancre = '') {
    41         if ($generer_url_externe = charger_fonction("generer_url_$type",'urls',true)) {
     43        if ($generer_url_externe = charger_fonction("generer_url_$type", 'urls', true)) {
    4244                $url = $generer_url_externe($id, $args, $ancre);
    43                 if (NULL != $url) return $url;
     45                if (null != $url) {
     46                        return $url;
     47                }
    4448        }
    4549
    46         return _DIR_RACINE . $type . $id . '.html' . ($args ? "?$args" : '') .($ancre ? "#$ancre" : '');
     50        return _DIR_RACINE . $type . $id . '.html' . ($args ? "?$args" : '') . ($ancre ? "#$ancre" : '');
    4751}
    4852
     
    5155function urls_html_dist($i, $entite, $args = '', $ancre = '') {
    5256
    53         if (is_numeric($i))
     57        if (is_numeric($i)) {
    5458                return _generer_url_html($entite, $i, $args, $ancre);
     59        }
    5560
    5661        // recuperer les &debut_xx;
    57         if (is_array($args))
     62        if (is_array($args)) {
    5863                $contexte = $args;
    59         else
    60                 parse_str($args,$contexte);
     64        } else {
     65                parse_str($args, $contexte);
     66        }
    6167
    6268
    6369        // traiter les injections du type domaine.org/spip.php/cestnimportequoi/ou/encore/plus/rubrique23
    64         if ($GLOBALS['profondeur_url']>0 AND $entite=='sommaire'){
    65                 return array(array(),'404');
     70        if ($GLOBALS['profondeur_url'] > 0 AND $entite == 'sommaire') {
     71                return array(array(), '404');
    6672        }
    6773
     
    7379                // il n'est pas necessaire de forcer le fond en 4eme arg car l'url n'est pas query string
    7480                // sauf si pas de fond connu
    75                 if ($entite)
     81                if ($entite) {
    7682                        array_pop($r);
     83                }
     84
    7785                return $r;
    7886        }
     
    8896        $url_propre = $i;
    8997        if ($url_propre) {
    90                 if ($GLOBALS['profondeur_url']<=0)
    91                         $urls_anciennes = charger_fonction('propres','urls');
    92                 else
    93                         $urls_anciennes = charger_fonction('arbo','urls');
     98                if ($GLOBALS['profondeur_url'] <= 0) {
     99                        $urls_anciennes = charger_fonction('propres', 'urls');
     100                } else {
     101                        $urls_anciennes = charger_fonction('arbo', 'urls');
     102                }
     103
    94104                return $urls_anciennes($url_propre, $entite, $contexte);
    95105        }
  • _core_/plugins/urls_etendues/urls/libres.php

    r93092 r93629  
    1111\***************************************************************************/
    1212
    13 if (!defined("_ECRIRE_INC_VERSION")) return; // securiser
     13if (!defined("_ECRIRE_INC_VERSION")) {
     14        return;
     15} // securiser
    1416
    1517/*
     
    2325define('URLS_LIBRES_CONFIG', 'propres');
    2426
    25 if (!defined('_MARQUEUR_URL'))
     27if (!defined('_MARQUEUR_URL')) {
    2628        define('_MARQUEUR_URL', false);
     29}
    2730
    2831// http://code.spip.net/@urls_libres_dist
    2932function urls_libres_dist($i, &$entite, $args = '', $ancre = '') {
    3033        $f = charger_fonction('propres', 'urls');
     34
    3135        return $f($i, $entite, $args, $ancre);
    3236}
  • _core_/plugins/urls_etendues/urls/propres.php

    r93092 r93629  
    1111\***************************************************************************/
    1212
    13 if (!defined("_ECRIRE_INC_VERSION")) return; // securiser
     13if (!defined("_ECRIRE_INC_VERSION")) {
     14        return;
     15} // securiser
    1416
    1517# donner un exemple d'url pour le formulaire de choix
     
    4547*/
    4648
    47 if (!defined('_terminaison_urls_propres')) define ('_terminaison_urls_propres', '');
    48 if (!defined('_debut_urls_propres')) define ('_debut_urls_propres', '');
    49 
    50 $config_urls_propres = isset($GLOBALS['meta']['urls_propres'])?unserialize($GLOBALS['meta']['urls_propres']):array();
     49if (!defined('_terminaison_urls_propres')) {
     50        define('_terminaison_urls_propres', '');
     51}
     52if (!defined('_debut_urls_propres')) {
     53        define('_debut_urls_propres', '');
     54}
     55
     56$config_urls_propres = isset($GLOBALS['meta']['urls_propres']) ? unserialize($GLOBALS['meta']['urls_propres']) : array();
    5157// pour choisir le caractere de separation titre-id en cas de doublon
    5258// (ne pas utiliser '/')
    53 if (!defined('_url_propres_sep_id')) define('_url_propres_sep_id',isset($config_urls_propres['url_propres_sep_id'])?$config_urls_propres['url_propres_sep_id']:'-');
     59if (!defined('_url_propres_sep_id')) {
     60        define('_url_propres_sep_id', isset($config_urls_propres['url_propres_sep_id']) ? $config_urls_propres['url_propres_sep_id'] : '-');
     61}
    5462// option pour tout passer en minuscules
    55 if (!defined('_url_minuscules')) define('_url_minuscules',isset($config_urls_propres['url_minuscules'])?$config_urls_propres['url_minuscules']:0);
    56 if (!defined('_URLS_PROPRES_MAX')) define('_URLS_PROPRES_MAX', isset($config_urls_propres['URLS_PROPRES_MAX'])?$config_urls_propres['URLS_PROPRES_MAX']:80);
    57 if (!defined('_URLS_PROPRES_MIN')) define('_URLS_PROPRES_MIN', isset($config_urls_propres['URLS_PROPRES_MIN'])?$config_urls_propres['URLS_PROPRES_MIN']:3);
    58 
    59 if (!defined('_url_sep_id')) define('_url_sep_id',_url_propres_sep_id);
     63if (!defined('_url_minuscules')) {
     64        define('_url_minuscules', isset($config_urls_propres['url_minuscules']) ? $config_urls_propres['url_minuscules'] : 0);
     65}
     66if (!defined('_URLS_PROPRES_MAX')) {
     67        define('_URLS_PROPRES_MAX', isset($config_urls_propres['URLS_PROPRES_MAX']) ? $config_urls_propres['URLS_PROPRES_MAX'] : 80);
     68}
     69if (!defined('_URLS_PROPRES_MIN')) {
     70        define('_URLS_PROPRES_MIN', isset($config_urls_propres['URLS_PROPRES_MIN']) ? $config_urls_propres['URLS_PROPRES_MIN'] : 3);
     71}
     72
     73if (!defined('_url_sep_id')) {
     74        define('_url_sep_id', _url_propres_sep_id);
     75}
    6076
    6177// Ces chaines servaient de marqueurs a l'epoque ou les URL propres devaient
     
    6581// Les preg_match restent necessaires pour gerer les anciens signets.
    6682
    67 if (!defined('_MARQUEUR_URL')) define('_MARQUEUR_URL', serialize(array('rubrique1' => '-', 'rubrique2' => '-', 'breve1' => '+', 'breve2' => '+', 'site1' => '@', 'site2' => '@', 'auteur1' => '_', 'auteur2' => '_', 'mot1' => '+-', 'mot2' => '-+')));
     83if (!defined('_MARQUEUR_URL')) {
     84        define('_MARQUEUR_URL', serialize(array(
     85                'rubrique1' => '-',
     86                'rubrique2' => '-',
     87                'breve1' => '+',
     88                'breve2' => '+',
     89                'site1' => '@',
     90                'site2' => '@',
     91                'auteur1' => '_',
     92                'auteur2' => '_',
     93                'mot1' => '+-',
     94                'mot2' => '-+'
     95        )));
     96}
    6897
    6998// Retire les marqueurs de type dans une URL propre ancienne maniere
     
    73102        if (preg_match(',^[+][-](.*?)[-][+]$,', $url_propre, $regs)) {
    74103                return $regs[1];
    75         }
    76         else if (preg_match(',^([-+_@])(.*?)\1?$,', $url_propre, $regs)) {
    77                 return $regs[2];
    78         }
     104        } else {
     105                if (preg_match(',^([-+_@])(.*?)\1?$,', $url_propre, $regs)) {
     106                        return $regs[2];
     107                }
     108        }
     109
    79110        // les articles n'ont pas de marqueur
    80111        return $url_propre;
     
    95126
    96127        include_spip('action/editer_url');
    97         if (!$url = url_nettoyer($objet['titre'],_URLS_PROPRES_MAX,_URLS_PROPRES_MIN,'-',_url_minuscules?'strtolower':''))
    98                 $url = $objet['type'].$objet['id_objet'];
     128        if (!$url = url_nettoyer($objet['titre'], _URLS_PROPRES_MAX, _URLS_PROPRES_MIN, '-',
     129                _url_minuscules ? 'strtolower' : '')
     130        ) {
     131                $url = $objet['type'] . $objet['id_objet'];
     132        }
    99133
    100134        $x['data'] = $url;
     
    111145        $table = $desc['table'];
    112146        $champ_titre = $desc['titre'] ? $desc['titre'] : 'titre';
    113         $col_id =  @$desc['key']["PRIMARY KEY"];
    114         if (!$col_id) return false; // Quand $type ne reference pas une table
     147        $col_id = @$desc['key']["PRIMARY KEY"];
     148        if (!$col_id) {
     149                return false;
     150        } // Quand $type ne reference pas une table
    115151
    116152        $id_objet = intval($id_objet);
     
    121157        // de preference avec id_parent=0, puis perma, puis par date desc
    122158        $row = sql_fetsel("U.url, U.date, U.id_parent, U.perma, $champ_titre",
    123                           "$table AS O LEFT JOIN spip_urls AS U ON (U.type='$type' AND U.id_objet=O.$col_id)",
    124                           "O.$col_id=$id_objet AND (U.segments IS NULL OR U.segments=1)", '', 'U.id_parent=0 DESC, U.perma DESC, U.date DESC', 1);
     159                "$table AS O LEFT JOIN spip_urls AS U ON (U.type='$type' AND U.id_objet=O.$col_id)",
     160                "O.$col_id=$id_objet AND (U.segments IS NULL OR U.segments=1)", '', 'U.id_parent=0 DESC, U.perma DESC, U.date DESC',
     161                1);
    125162
    126163        // en SQLite le left join retourne du vide si il y a une url mais qui ne correspond pas pour la condition sur le segment
    127164        // on verifie donc que l'objet existe bien avant de sortir ou de creer une url pour cet objet
    128         if (!$row)
     165        if (!$row) {
    129166                $row = sql_fetsel("'' as url, '' as date, 0 as id_parent, 0 as perma, $champ_titre",
    130                                   "$table AS O",
    131                                   "O.$col_id=$id_objet");
    132 
    133         if (!$row) return ""; # Quand $id_objet n'est pas un numero connu
     167                        "$table AS O",
     168                        "O.$col_id=$id_objet");
     169        }
     170
     171        if (!$row) {
     172                return "";
     173        } # Quand $id_objet n'est pas un numero connu
    134174
    135175        $url_propre = $row['url'];
    136176
    137177        // si url_propre connue mais avec id_parent non nul, essayer de reinserer tel quel avec id_parent=0
    138         if ($url_propre AND $row['id_parent']){
     178        if ($url_propre AND $row['id_parent']) {
    139179                include_spip('action/editer_url');
    140180                $set = array('url' => $url_propre, 'type' => $type, 'id_objet' => $id_objet, 'perma' => $row['perma']);
    141181                // si on arrive pas a reinserer tel quel, on annule url_propre pour forcer un recalcul d'url
    142                 if (!url_insert($set,false,_url_propres_sep_id))
     182                if (!url_insert($set, false, _url_propres_sep_id)) {
    143183                        $url_propre = "";
    144                 else
     184                } else {
    145185                        $url_propre = $row['url'] = $set['url'];
     186                }
    146187        }
    147188
     
    153194        // qui requetent en base
    154195        $modifier_url = (defined('_VAR_URLS') AND _VAR_URLS AND !$row['perma']);
    155         if ($url_propre AND !$modifier_url)
     196        if ($url_propre AND !$modifier_url) {
    156197                return $url_propre;
     198        }
    157199
    158200        // Sinon, creer une URL
     
    170212        include_spip('inc/urls');
    171213        $objets = urls_liste_objets();
    172         if (preg_match(',^('.$objets.')[0-9]+$,', $url, $r)
    173         AND $r[1] != $type)
    174                 $url = $url._url_propres_sep_id.$id_objet;
     214        if (preg_match(',^(' . $objets . ')[0-9]+$,', $url, $r)
     215                AND $r[1] != $type
     216        ) {
     217                $url = $url . _url_propres_sep_id . $id_objet;
     218        }
    175219
    176220        // Pas de changement d'url
    177         if ($url == $url_propre)
     221        if ($url == $url_propre) {
    178222                return $url_propre;
     223        }
    179224
    180225        // verifier l'autorisation, maintenant qu'on est sur qu'on va agir
     
    188233                AND CONFIRMER_MODIFIER_URL
    189234                AND $url_propre
    190                 AND $url != preg_replace('/'.preg_quote(_url_propres_sep_id,'/').'.*/', '', $url_propre))
     235                AND $url != preg_replace('/' . preg_quote(_url_propres_sep_id, '/') . '.*/', '', $url_propre)
     236        ) {
    191237                $confirmer = true;
    192         else
     238        } else {
    193239                $confirmer = false;
     240        }
    194241
    195242        if ($confirmer AND !_request('ok')) {
     
    199246        $set = array('url' => $url, 'type' => $type, 'id_objet' => $id_objet);
    200247        include_spip('action/editer_url');
    201         if (!url_insert($set,$confirmer,_url_propres_sep_id))
    202                 return $url_propre; //serveur out ? retourner au mieux
     248        if (!url_insert($set, $confirmer, _url_propres_sep_id)) {
     249                return $url_propre;
     250        } //serveur out ? retourner au mieux
    203251
    204252        return $set['url'];
     
    208256function _generer_url_propre($type, $id, $args = '', $ancre = '') {
    209257
    210         if ($generer_url_externe = charger_fonction("generer_url_$type",'urls',true)) {
     258        if ($generer_url_externe = charger_fonction("generer_url_$type", 'urls', true)) {
    211259                $url = $generer_url_externe($id, $args, $ancre);
    212                 if (NULL != $url) return $url;
     260                if (null != $url) {
     261                        return $url;
     262                }
    213263        }
    214264
     
    216266        if (_MARQUEUR_URL) {
    217267                $marqueur = unserialize(_MARQUEUR_URL);
    218                 $marqueur1 = isset($marqueur[$type.'1']) ? $marqueur[$type.'1'] : '' ; // debut '+-'
    219                 $marqueur2 = isset($marqueur[$type.'2']) ? $marqueur[$type.'2'] : '' ; // fin '-+'
    220         } else
     268                $marqueur1 = isset($marqueur[$type . '1']) ? $marqueur[$type . '1'] : ''; // debut '+-'
     269                $marqueur2 = isset($marqueur[$type . '2']) ? $marqueur[$type . '2'] : ''; // fin '-+'
     270        } else {
    221271                $marqueur1 = $marqueur2 = '';
     272        }
    222273        // fin
    223274
     
    225276        $propre = declarer_url_propre($type, $id);
    226277
    227         if ($propre === false) return ''; // objet inconnu. raccourci ?
     278        if ($propre === false) {
     279                return '';
     280        } // objet inconnu. raccourci ?
    228281
    229282        if ($propre) {
     
    236289                // les urls de type /1234 sont interpretees comme urls courte vers article 1234
    237290                // on les encadre d'un - : /-1234-
    238                 if (is_numeric($url)){
    239                         $url = "-".$url."-";
    240                 }
    241 
    242                 if (!defined('_SET_HTML_BASE') OR !_SET_HTML_BASE)
    243                         // Repositionne l'URL par rapport a la racine du site (#GLOBALS)
    244                         $url = str_repeat('../', $GLOBALS['profondeur_url']).$url;
    245                 else
     291                if (is_numeric($url)) {
     292                        $url = "-" . $url . "-";
     293                }
     294
     295                if (!defined('_SET_HTML_BASE') OR !_SET_HTML_BASE) // Repositionne l'URL par rapport a la racine du site (#GLOBALS)
     296                {
     297                        $url = str_repeat('../', $GLOBALS['profondeur_url']) . $url;
     298                } else {
    246299                        $url = _DIR_RACINE . $url;
     300                }
    247301        } else {
    248302
     
    250304                include_spip('base/connect_sql');
    251305                $id_type = id_table_objet($type);
    252                 $url = _DIR_RACINE . get_spip_script('./')."?"._SPIP_PAGE."=$type&$id_type=$id";
     306                $url = _DIR_RACINE . get_spip_script('./') . "?" . _SPIP_PAGE . "=$type&$id_type=$id";
    253307        }
    254308
    255309        // Ajouter les args
    256         if ($args)
    257                 $url .= ((strpos($url, '?')===false) ? '?' : '&') . $args;
     310        if ($args) {
     311                $url .= ((strpos($url, '?') === false) ? '?' : '&') . $args;
     312        }
    258313
    259314        // Ajouter l'ancre
    260         if ($ancre)
     315        if ($ancre) {
    261316                $url .= "#$ancre";
     317        }
    262318
    263319        return $url;
     
    270326function urls_propres_dist($i, $entite, $args = '', $ancre = '') {
    271327
    272         if (is_numeric($i))
     328        if (is_numeric($i)) {
    273329                return _generer_url_propre($entite, $i, $args, $ancre);
     330        }
    274331
    275332        $url = $i;
     
    277334        $url_redirect = null;
    278335        // recuperer les &debut_xx;
    279         if (is_array($args))
     336        if (is_array($args)) {
    280337                $contexte = $args;
    281         else
    282                 parse_str($args,$contexte);
     338        } else {
     339                parse_str($args, $contexte);
     340        }
    283341
    284342
    285343        // Migration depuis anciennes URLs ?
    286344        // traiter les injections domain.tld/spip.php/n/importe/quoi/rubrique23
    287         if ($GLOBALS['profondeur_url']<=0
    288         AND $_SERVER['REQUEST_METHOD'] != 'POST') {
     345        if ($GLOBALS['profondeur_url'] <= 0
     346                AND $_SERVER['REQUEST_METHOD'] != 'POST'
     347        ) {
    289348                include_spip('inc/urls');
    290349                $r = nettoyer_url_page($i, $contexte);
    291350                if ($r) {
    292                         list($contexte, $type,,, $suite) = $r;
     351                        list($contexte, $type, , , $suite) = $r;
    293352                        $_id = id_table_objet($type);
    294353                        $id_objet = $contexte[$_id];
    295354                        $url_propre = generer_url_entite($id_objet, $type);
    296355                        if (strlen($url_propre)
    297                         AND !strstr($url,$url_propre)) {
    298                                 list(,$hash) = array_pad(explode('#', $url_propre), 2, null);
     356                                AND !strstr($url, $url_propre)
     357                        ) {
     358                                list(, $hash) = array_pad(explode('#', $url_propre), 2, null);
    299359                                $args = array();
    300                                 foreach(array_filter(explode('&', $suite)) as $fragment) {
    301                                         if ($fragment != "$_id=$id_objet")
     360                                foreach (array_filter(explode('&', $suite)) as $fragment) {
     361                                        if ($fragment != "$_id=$id_objet") {
    302362                                                $args[] = $fragment;
     363                                        }
    303364                                }
    304                                 $url_redirect = generer_url_entite($id_objet, $type, join('&',array_filter($args)), $hash);
     365                                $url_redirect = generer_url_entite($id_objet, $type, join('&', array_filter($args)), $hash);
    305366
    306367                                return array($contexte, $type, $url_redirect, $type);
     
    316377        $is_qs = false;
    317378        if (!$url_propre
    318         AND preg_match(',[?]([^=/?&]+)(&.*)?$,', $url, $r)) {
     379                AND preg_match(',[?]([^=/?&]+)(&.*)?$,', $url, $r)
     380        ) {
    319381                $url_propre = $r[1];
    320382                $is_qs = true;
     
    322384
    323385        if (!$url_propre
    324           OR $url_propre==_DIR_RESTREINT_ABS
    325           OR $url_propre==_SPIP_SCRIPT) return; // qu'est-ce qu'il veut ???
    326 
    327        
     386                OR $url_propre == _DIR_RESTREINT_ABS
     387                OR $url_propre == _SPIP_SCRIPT
     388        ) {
     389                return;
     390        } // qu'est-ce qu'il veut ???
     391
     392
    328393        // gerer le cas de retour depuis des urls arbos
    329394        // mais si url arbo ne trouve pas, on veut une 404 par securite
    330         if ($GLOBALS['profondeur_url']>0 AND !defined('_FORCE_URLS_PROPRES')){
    331                 $urls_anciennes = charger_fonction('arbo','urls');
     395        if ($GLOBALS['profondeur_url'] > 0 AND !defined('_FORCE_URLS_PROPRES')) {
     396                $urls_anciennes = charger_fonction('arbo', 'urls');
     397
    332398                return $urls_anciennes($url_propre, $entite, $contexte);
    333399        }
    334        
     400
    335401        include_spip('base/abstract_sql'); // chercher dans la table des URLS
    336402
     
    343409        // Compatibilite avec les anciens marqueurs d'URL propres
    344410        // Tester l'entree telle quelle (avec 'url_libre' des sites ont pu avoir des entrees avec marqueurs dans la table spip_urls)
    345         if (!$row = sql_fetsel('id_objet, type, date, url', 'spip_urls', 'url='.sql_quote($url_propre, '', 'TEXT'))) {
     411        if (!$row = sql_fetsel('id_objet, type, date, url', 'spip_urls', 'url=' . sql_quote($url_propre, '', 'TEXT'))) {
    346412                // Sinon enlever les marqueurs eventuels
    347413                $url_propre2 = retirer_marqueurs_url_propre($url_propre);
    348414
    349                 $row = sql_fetsel('id_objet, type, date, url', 'spip_urls', 'url='.sql_quote($url_propre2, '', 'TEXT'));
     415                $row = sql_fetsel('id_objet, type, date, url', 'spip_urls', 'url=' . sql_quote($url_propre2, '', 'TEXT'));
    350416        }
    351417
     
    358424                // Si l'url est vieux, donner le nouveau
    359425                if ($recent = sql_fetsel('url, date', 'spip_urls',
    360                 'type='.sql_quote($row['type'], '', 'TEXT').' AND id_objet='.sql_quote($row['id_objet'])
    361                 .' AND date>'.sql_quote($row['date'], '', 'TEXT')
    362                 .' AND url<>'.sql_quote($row['url'], '', 'TEXT'), '', 'date DESC', 1)) {
     426                        'type=' . sql_quote($row['type'], '', 'TEXT') . ' AND id_objet=' . sql_quote($row['id_objet'])
     427                        . ' AND date>' . sql_quote($row['date'], '', 'TEXT')
     428                        . ' AND url<>' . sql_quote($row['url'], '', 'TEXT'), '', 'date DESC', 1)
     429                ) {
    363430                        // Mode compatibilite pour conserver la distinction -Rubrique-
    364431                        if (_MARQUEUR_URL) {
    365432                                $marqueur = unserialize(_MARQUEUR_URL);
    366                                 $marqueur1 = $marqueur[$type.'1']; // debut '+-'
    367                                 $marqueur2 = $marqueur[$type.'2']; // fin '-+'
    368                         } else
     433                                $marqueur1 = $marqueur[$type . '1']; // debut '+-'
     434                                $marqueur2 = $marqueur[$type . '2']; // fin '-+'
     435                        } else {
    369436                                $marqueur1 = $marqueur2 = '';
     437                        }
    370438                        $url_redirect = $marqueur1 . $recent['url'] . $marqueur2;
    371439                }
    372440        }
    373441
    374         if ($entite=='' OR $entite=='type_urls' /* compat .htaccess 2.0 */) {
     442        if ($entite == '' OR $entite == 'type_urls' /* compat .htaccess 2.0 */) {
    375443                if ($type) {
    376                         $entite =  objet_type($type);
     444                        $entite = objet_type($type);
    377445                } else {
    378446                        // Si ca ressemble a une URL d'objet, ce n'est pas la home
     
    388456                                        $fmarqueur = @array_flip(unserialize(_MARQUEUR_URL));
    389457                                        preg_match(',^([+][-]|[-+@_]),', $url_propre, $regs);
    390                                         $objet = $regs ? substr($fmarqueur[$regs[1]],0,n-1) : 'article';
     458                                        $objet = $regs ? substr($fmarqueur[$regs[1]], 0, n-1) : 'article';
    391459                                        $contexte['erreur'] = _T(
    392                                                 ($objet=='rubrique' OR $objet=='breve')
    393                                                         ? 'public:aucune_'.$objet
    394                                                         : 'public:aucun_'.$objet
     460                                                ($objet == 'rubrique' OR $objet == 'breve')
     461                                                        ? 'public:aucune_' . $objet
     462                                                        : 'public:aucun_' . $objet
    395463                                        );
    396464                                }
     
    399467        }
    400468
    401         return array($contexte, $entite, $url_redirect, $is_qs?$entite:null);
     469        return array($contexte, $entite, $url_redirect, $is_qs ? $entite : null);
    402470}
    403471
  • _core_/plugins/urls_etendues/urls/propres2.php

    r93092 r93629  
    1111\***************************************************************************/
    1212
    13 if (!defined("_ECRIRE_INC_VERSION")) return; // securiser
     13if (!defined("_ECRIRE_INC_VERSION")) {
     14        return;
     15} // securiser
    1416
    1517/*
     
    2325define('URLS_PROPRES2_CONFIG', 'propres');
    2426
    25 if (!defined('_terminaison_urls_propres'))
    26         define ('_terminaison_urls_propres', '.html');
     27if (!defined('_terminaison_urls_propres')) {
     28        define('_terminaison_urls_propres', '.html');
     29}
    2730
    2831// http://code.spip.net/@urls_propres2_dist
    2932function urls_propres2_dist($i, &$entite, $args = '', $ancre = '') {
    3033        $f = charger_fonction('propres', 'urls');
     34
    3135        return $f($i, $entite, $args, $ancre);
    3236}
  • _core_/plugins/urls_etendues/urls/propres_qs.php

    r93092 r93629  
    1111\***************************************************************************/
    1212
    13 if (!defined("_ECRIRE_INC_VERSION")) return; // securiser
     13if (!defined("_ECRIRE_INC_VERSION")) {
     14        return;
     15} // securiser
    1416
    1517/*
     
    3032define('URLS_PROPRES_QS_CONFIG', 'propres');
    3133
    32 if (!defined('_terminaison_urls_propres'))
    33         define ('_terminaison_urls_propres', '');
     34if (!defined('_terminaison_urls_propres')) {
     35        define('_terminaison_urls_propres', '');
     36}
    3437
    35 defined('_debut_urls_propres') || define ('_debut_urls_propres', './?');
     38defined('_debut_urls_propres') || define('_debut_urls_propres', './?');
    3639
    3740// http://code.spip.net/@urls_propres_qs_dist
    3841function urls_propres_qs_dist($i, &$entite, $args = '', $ancre = '') {
    3942        $f = charger_fonction('propres', 'urls');
     43
    4044        return $f($i, $entite, $args, $ancre);
    4145}
     46
    4247?>
  • _core_/plugins/urls_etendues/urls/simple.php

    r93092 r93629  
    1111\***************************************************************************/
    1212
    13 if (!defined('_ECRIRE_INC_VERSION')) return;
     13if (!defined('_ECRIRE_INC_VERSION')) {
     14        return;
     15}
    1416
    1517# donner un exemple d'url pour le formulaire de choix
     
    1820####### modifications possibles dans ecrire/mes_options
    1921# on peut indiquer '.html' pour faire joli
    20 define ('_terminaison_urls_simple', '');
    21 define ('_debut_urls_simple', get_spip_script('./').'?'._SPIP_PAGE.'=');
     22define('_terminaison_urls_simple', '');
     23define('_debut_urls_simple', get_spip_script('./') . '?' . _SPIP_PAGE . '=');
    2224#######
    2325
     
    2527function _generer_url_simple($type, $id, $args = '', $ancre = '') {
    2628
    27         if ($generer_url_externe = charger_fonction("generer_url_$type",'urls',true)) {
     29        if ($generer_url_externe = charger_fonction("generer_url_$type", 'urls', true)) {
    2830                $url = $generer_url_externe($id, $args, $ancre);
    29                 if (NULL != $url) return $url;
     31                if (null != $url) {
     32                        return $url;
     33                }
    3034        }
    3135
    3236        $url = _debut_urls_simple . $type
    33           . "&" . id_table_objet($type) . "="
    34           . $id . _terminaison_urls_page;
     37                . "&" . id_table_objet($type) . "="
     38                . $id . _terminaison_urls_page;
    3539
    36         if ($args) $args = strpos($url,'?') ? "&$args" : "?$args";
     40        if ($args) {
     41                $args = strpos($url, '?') ? "&$args" : "?$args";
     42        }
     43
    3744        return _DIR_RACINE . $url . $args . ($ancre ? "#$ancre" : '');
    3845}
     
    4148// le contexte deja existant est fourni dans args sous forme de tableau ou query string
    4249// http://code.spip.net/@urls_page_dist
    43 function urls_simple_dist($i, &$entite, $args = '', $ancre = '')
    44 {
    45         if (is_numeric($i)){
     50function urls_simple_dist($i, &$entite, $args = '', $ancre = '') {
     51        if (is_numeric($i)) {
    4652                include_spip('urls/page');
     53
    4754                return _generer_url_simple($entite, $i, $args, $ancre);
    4855        }
    4956        // traiter les injections du type domaine.org/spip.php/cestnimportequoi/ou/encore/plus/rubrique23
    50         if ($GLOBALS['profondeur_url']>0 AND $entite=='sommaire'){
    51                 return array(array(),'404');
     57        if ($GLOBALS['profondeur_url'] > 0 AND $entite == 'sommaire') {
     58                return array(array(), '404');
    5259        }
    5360
    5461        // voir s'il faut recuperer le id_* implicite et les &debut_xx;
    55         if (is_array($args))
     62        if (is_array($args)) {
    5663                $contexte = $args;
    57         else
    58                 parse_str($args,$contexte);
     64        } else {
     65                parse_str($args, $contexte);
     66        }
    5967        include_spip('inc/urls');
    6068        $r = nettoyer_url_page($i, $contexte);
     
    6573
    6674        if ($type = _request(_SPIP_PAGE)
    67           AND $_id = id_table_objet($type)
    68           AND $id = _request($_id)){
     75                AND $_id = id_table_objet($type)
     76                AND $id = _request($_id)
     77        ) {
    6978                $contexte[$_id] = $id;
     79
    7080                return array($contexte, $type, null, $type);
    7181        }
     
    8191        $url_propre = $i;
    8292        if ($url_propre) {
    83                 if ($GLOBALS['profondeur_url']<=0)
    84                         $urls_anciennes = charger_fonction('propres','urls',true);
    85                 else
    86                         $urls_anciennes = charger_fonction('arbo','urls',true);
    87                 return $urls_anciennes?$urls_anciennes($url_propre, $entite, $contexte):'';
     93                if ($GLOBALS['profondeur_url'] <= 0) {
     94                        $urls_anciennes = charger_fonction('propres', 'urls', true);
     95                } else {
     96                        $urls_anciennes = charger_fonction('arbo', 'urls', true);
     97                }
     98
     99                return $urls_anciennes ? $urls_anciennes($url_propre, $entite, $contexte) : '';
    88100        }
    89101        /* Fin du bloc compatibilite url-propres */
  • _core_/plugins/urls_etendues/urls_administrations.php

    r93092 r93629  
    1111\***************************************************************************/
    1212
    13 if (!defined('_ECRIRE_INC_VERSION')) return;
     13if (!defined('_ECRIRE_INC_VERSION')) {
     14        return;
     15}
    1416
    1517/**
     
    1921 * @param string $version_cible
    2022 */
    21 function urls_upgrade($nom_meta_base_version, $version_cible){
     23function urls_upgrade($nom_meta_base_version, $version_cible) {
    2224        // cas particulier :
    2325        // si plugin pas installe mais que la table existe
    2426        // considerer que c'est un upgrade depuis v 1.0.0
    2527        // pour gerer l'historique des installations SPIP <=2.1
    26         if (!isset($GLOBALS['meta'][$nom_meta_base_version])){
    27                 $trouver_table = charger_fonction('trouver_table','base');
     28        if (!isset($GLOBALS['meta'][$nom_meta_base_version])) {
     29                $trouver_table = charger_fonction('trouver_table', 'base');
    2830                if ($desc = $trouver_table('spip_urls')
    29                   AND isset($desc['exist']) AND $desc['exist']
    30                   AND !isset($desc['field']['id_parent'])){
    31                         ecrire_meta($nom_meta_base_version,'1.0.0');
     31                        AND isset($desc['exist']) AND $desc['exist']
     32                        AND !isset($desc['field']['id_parent'])
     33                ) {
     34                        ecrire_meta($nom_meta_base_version, '1.0.0');
    3235                }
    3336                // si pas de table en base, on fera une simple creation de base
     
    3639        $maj = array();
    3740        $maj['create'] = array(
    38                 array('maj_tables',array('spip_urls')),
     41                array('maj_tables', array('spip_urls')),
    3942        );
    4043        $maj['1.1.0'] = array(
    41                 array('sql_alter',"table spip_urls ADD id_parent bigint(21) DEFAULT '0' NOT NULL"),
    42                 array('sql_alter',"table spip_urls DROP PRIMARY KEY"),
    43                 array('sql_alter',"table spip_urls ADD PRIMARY KEY (id_parent, url)"),
     44                array('sql_alter', "table spip_urls ADD id_parent bigint(21) DEFAULT '0' NOT NULL"),
     45                array('sql_alter', "table spip_urls DROP PRIMARY KEY"),
     46                array('sql_alter', "table spip_urls ADD PRIMARY KEY (id_parent, url)"),
    4447        );
    4548        $maj['1.1.1'] = array(
     
    4851
    4952        $maj['1.1.2'] = array(
    50                 array('sql_alter',"table spip_urls ADD segments SMALLINT(3) DEFAULT '1' NOT NULL"),
     53                array('sql_alter', "table spip_urls ADD segments SMALLINT(3) DEFAULT '1' NOT NULL"),
    5154                array('urls_migre_urls_segments'),
    5255        );
    5356        $maj['1.1.3'] = array(
    54                 array('sql_alter',"table spip_urls ADD perma TINYINT(1) DEFAULT '0' NOT NULL"),
     57                array('sql_alter', "table spip_urls ADD perma TINYINT(1) DEFAULT '0' NOT NULL"),
    5558        );
    5659        $maj['1.1.4'] = array(
    57                 array('sql_alter',"table spip_urls CHANGE `type` `type` varchar(25) DEFAULT 'article' NOT NULL"),
     60                array('sql_alter', "table spip_urls CHANGE `type` `type` varchar(25) DEFAULT 'article' NOT NULL"),
    5861        );
    5962
     
    6265}
    6366
    64 function urls_migre_arbo_prefixes(){
    65         $res = sql_select('*','spip_urls',"url REGEXP '\d+:\/\/'");
    66         while($row = sql_fetch($res)){
    67                 $url = explode("://",$row['url']);
    68                 $set = array('id_parent'=>intval(reset($url)),'url'=>end($url));
    69                 if (!sql_updateq('spip_urls',$set,"id_parent=".intval($row['id_parent'])." AND url=".sql_quote($row['url']))){
    70                         if ($set['id_parent']==0
    71                           AND sql_countsel('spip_urls',"id_parent=".intval($set['id_parent'])." AND url=".sql_quote($set['url'])." AND type=".sql_quote($row['type'])." AND id_objet=".sql_quote($row['id_objet']))){
    72                                 spip_log('suppression url doublon '.var_export($row,1),'urls.'._LOG_INFO_IMPORTANTE);
    73                                 sql_delete('spip_urls',"id_parent=".intval($row['id_parent'])." AND url=".sql_quote($row['url']));
    74                         }
    75                         else {
    76                                 spip_log('Impossible de convertir url doublon '.var_export($row,1),'urls.'._LOG_ERREUR);
    77                                 echo "Impossible de convertir l'url ".$row['url'].". Verifiez manuellement dans spip_urls";
     67function urls_migre_arbo_prefixes() {
     68        $res = sql_select('*', 'spip_urls', "url REGEXP '\d+:\/\/'");
     69        while ($row = sql_fetch($res)) {
     70                $url = explode("://", $row['url']);
     71                $set = array('id_parent' => intval(reset($url)), 'url' => end($url));
     72                if (!sql_updateq('spip_urls', $set,
     73                        "id_parent=" . intval($row['id_parent']) . " AND url=" . sql_quote($row['url']))
     74                ) {
     75                        if ($set['id_parent'] == 0
     76                                AND sql_countsel('spip_urls',
     77                                        "id_parent=" . intval($set['id_parent']) . " AND url=" . sql_quote($set['url']) . " AND type=" . sql_quote($row['type']) . " AND id_objet=" . sql_quote($row['id_objet']))
     78                        ) {
     79                                spip_log('suppression url doublon ' . var_export($row, 1), 'urls.' . _LOG_INFO_IMPORTANTE);
     80                                sql_delete('spip_urls', "id_parent=" . intval($row['id_parent']) . " AND url=" . sql_quote($row['url']));
     81                        } else {
     82                                spip_log('Impossible de convertir url doublon ' . var_export($row, 1), 'urls.' . _LOG_ERREUR);
     83                                echo "Impossible de convertir l'url " . $row['url'] . ". Verifiez manuellement dans spip_urls";
    7884                        }
    7985                }
    80                 if (time() >= _TIME_OUT){
     86                if (time() >= _TIME_OUT) {
    8187                        sql_free($res);
     88
    8289                        return;
    8390                }
     
    8592}
    8693
    87 function urls_migre_urls_segments(){
    88         sql_updateq('spip_urls',array('segments'=>1),"segments<1 OR NOT(url REGEXP '\/')");
    89         $res = sql_select('DISTINCT url','spip_urls',"url REGEXP '\/' AND segments=1");
    90         while($row = sql_fetch($res)){
    91                 $segments = count(explode('/',$row['url']));
    92                 sql_updateq('spip_urls',array('segments'=>$segments),"url=".sql_quote($row['url']));
    93                 if (time() >= _TIME_OUT){
     94function urls_migre_urls_segments() {
     95        sql_updateq('spip_urls', array('segments' => 1), "segments<1 OR NOT(url REGEXP '\/')");
     96        $res = sql_select('DISTINCT url', 'spip_urls', "url REGEXP '\/' AND segments=1");
     97        while ($row = sql_fetch($res)) {
     98                $segments = count(explode('/', $row['url']));
     99                sql_updateq('spip_urls', array('segments' => $segments), "url=" . sql_quote($row['url']));
     100                if (time() >= _TIME_OUT) {
    94101                        sql_free($res);
     102
    95103                        return;
    96104                }
     
    105113function urls_vider_tables($nom_meta_base_version) {
    106114        // repasser dans les urls par defaut
    107         ecrire_meta('type_urls','page');
     115        ecrire_meta('type_urls', 'page');
    108116        sql_drop_table("spip_urls");
    109117        effacer_meta($nom_meta_base_version);
  • _core_/plugins/urls_etendues/urls_ieconfig.php

    r57808 r93629  
    11<?php
    22
    3 if (!defined("_ECRIRE_INC_VERSION")) return;
     3if (!defined("_ECRIRE_INC_VERSION")) {
     4        return;
     5}
    46
    5 function urls_ieconfig_metas($table){
     7function urls_ieconfig_metas($table) {
    68        $table['urls']['titre'] = _T('urls:titre_type_urls');
    79        $table['urls']['icone'] = 'url-16.png';
    810        $table['urls']['metas_brutes'] = 'type_urls,urls_activer_controle';
    911        $table['urls']['metas_serialize'] = 'urls_propres,urls_arbo';
    10        
     12
    1113        return $table;
    1214}
  • _core_/plugins/urls_etendues/urls_pipeline.php

    r93431 r93629  
    1010\***************************************************************************/
    1111
    12 if (!defined('_ECRIRE_INC_VERSION')) return;
     12if (!defined('_ECRIRE_INC_VERSION')) {
     13        return;
     14}
    1315
    14 function urls_autoriser($f){return $f;}
     16function urls_autoriser($f) { return $f; }
    1517
    16 function autoriser_url_administrer($faire, $type = '', $id = 0, $qui = NULL, $opt = NULL){
     18function autoriser_url_administrer($faire, $type = '', $id = 0, $qui = null, $opt = null) {
    1719        return (
    1820                isset($GLOBALS['meta']['urls_activer_controle'])
    19                 AND $GLOBALS['meta']['urls_activer_controle']=='oui'
    20           AND $qui['statut']=='0minirezo'
    21           AND !$qui['restreint']);
     21                AND $GLOBALS['meta']['urls_activer_controle'] == 'oui'
     22                AND $qui['statut'] == '0minirezo'
     23                AND !$qui['restreint']);
    2224}
    2325
    24 function autoriser_controlerurls_menu_dist($faire, $type = '', $id = 0, $qui = NULL, $opt = NULL){
    25         return autoriser('administrer','url');
     26function autoriser_controlerurls_menu_dist($faire, $type = '', $id = 0, $qui = null, $opt = null) {
     27        return autoriser('administrer', 'url');
    2628}
    2729
    28 function autoriser_modifierurl($faire, $type='', $id=0, $qui = NULL, $opt = NULL){
    29         if (autoriser('modifier',$type,$id,$qui,$opt)){
     30function autoriser_modifierurl($faire, $type = '', $id = 0, $qui = null, $opt = null) {
     31        if (autoriser('modifier', $type, $id, $qui, $opt)) {
    3032                return true;
    3133        }
     
    3840        $table_sql = table_objet_sql($type);
    3941        $primary = id_table_objet($type);
    40         if (!sql_countsel($table_sql,"$primary=".intval($id))){
    41                 return autoriser('administrer','url');
     42        if (!sql_countsel($table_sql, "$primary=" . intval($id))) {
     43                return autoriser('administrer', 'url');
    4244        }
     45
    4346        return false;
    4447}
    4548
    46 function urls_afficher_fiche_objet($flux){
     49function urls_afficher_fiche_objet($flux) {
    4750        if (isset($GLOBALS['meta']['urls_activer_controle'])
    48                 AND $GLOBALS['meta']['urls_activer_controle']=='oui'
     51                AND $GLOBALS['meta']['urls_activer_controle'] == 'oui'
    4952                AND $objet = $flux['args']['type']
    5053                AND $id_objet = $flux['args']['id']
    51           AND objet_info($objet,'page')){
    52                 $p = strpos($flux['data'],'fiche_objet');
    53                 $p = strpos($flux['data'],'<!--/hd-->',$p);
     54                AND objet_info($objet, 'page')
     55        ) {
     56                $p = strpos($flux['data'], 'fiche_objet');
     57                $p = strpos($flux['data'], '<!--/hd-->', $p);
    5458                //$p = strrpos(substr($flux['data'],0,$p),'<div');
    5559
    56                 $res = recuperer_fond('prive/objets/editer/url',array('id_objet'=>$id_objet,'objet'=>$objet),array('ajax'=>true));
    57                 $flux['data'] = substr_replace($flux['data'],$res, $p, 0);
     60                $res = recuperer_fond('prive/objets/editer/url', array('id_objet' => $id_objet, 'objet' => $objet),
     61                        array('ajax' => true));
     62                $flux['data'] = substr_replace($flux['data'], $res, $p, 0);
    5863        }
     64
    5965        return $flux;
    6066}
     67
    6168?>
Note: See TracChangeset for help on using the changeset viewer.