[PLUGINS] ~maj des plugins
[lhc/web/www.git] / www / plugins / compositions_v3 / compositions_fonctions.php
index 88dcd56..415e17a 100644 (file)
@@ -3,13 +3,14 @@
  * Plugin Compositions\r
  * (c) 2007-2013 Cedric Morin\r
  * Distribue sous licence GPL\r
- * \r
+ *\r
  * @package SPIP\Compositions\Fonctions\r
  */\r
 \r
 if (!defined("_ECRIRE_INC_VERSION")) return;\r
 \r
 define('_COMPOSITIONS_MATCH','-([^0-9][^.]*)');\r
+$GLOBALS['marqueur_skel'] = (isset($GLOBALS['marqueur_skel'])?$GLOBALS['marqueur_skel']:'').':composition';\r
 \r
 /**\r
  * Lister les objets actives par configuration\r
@@ -30,7 +31,7 @@ function compositions_objets_actives(){
 /**\r
  * Retrouver le nom du dossier ou sont stockees les compositions\r
  * reglage par defaut, ou valeur personalisee via cfg\r
- * \r
+ *\r
  * @return string\r
  */\r
 function compositions_chemin(){\r
@@ -44,7 +45,7 @@ function compositions_chemin(){
                        $config_chemin = rtrim($config['chemin_compositions'],'/').'/';\r
                }\r
        }\r
-       \r
+\r
        return $config_chemin;\r
 }\r
 \r
@@ -85,7 +86,7 @@ function compositions_lister_disponibles($type, $informer=true){
 \r
        // rechercher les skel du type article-truc.html\r
        // truc ne doit pas commencer par un chiffre pour eviter de confondre avec article-12.html\r
-       $match = "/($type_match)("._COMPOSITIONS_MATCH.")?[.]html$";\r
+       $match = "($type_match)("._COMPOSITIONS_MATCH.")?[.]html$";\r
 \r
        // lister les compositions disponibles\r
        $liste = find_all_in_path(compositions_chemin(),$match);\r
@@ -93,7 +94,7 @@ function compositions_lister_disponibles($type, $informer=true){
        if (count($liste)){\r
                foreach($liste as $s) {\r
                        $base = preg_replace(',[.]html$,i','',$s);\r
-                       if (preg_match(",$match,ims",$s,$regs)\r
+                       if (preg_match(",$match,ims",basename($s),$regs)\r
                          AND ($composition = !$informer\r
                                OR $composition = compositions_charger_infos($base)))\r
                                $res[$regs[1]][$regs[3]] = $composition;\r
@@ -102,7 +103,7 @@ function compositions_lister_disponibles($type, $informer=true){
        }\r
        // Pipeline compositions_lister_disponibles\r
        $res = pipeline('compositions_lister_disponibles',array(\r
-               'args'=>array('type' => $type,'informer' => $informer), \r
+               'args'=>array('type' => $type,'informer' => $informer),\r
                'data'=> $res\r
                )\r
        );\r
@@ -189,7 +190,7 @@ function compositions_decrire($type, $composition){
  * pour poser des classes generiques sur le <body>\r
  * si une balise <class>toto</class> est definie dans la composition c'est elle qui est appliquee\r
  * sinon on pose simplement le nom de la composition\r
- * \r
+ *\r
  * @param string $composition\r
  * @param string $type\r
  * @return string\r
@@ -226,7 +227,7 @@ function compositions_types(){
  * Renvoie les parametres necessaires pour utiliser l'heritage de composition de façon generique\r
  * recupere les donnes du pipeline compositions_declarer_heritage.\r
  * Si $type n'est pas precise, on renvoie simplement le tableau des objets pouvant heriter.\r
- * \r
+ *\r
  * @param string $type\r
  * @staticvar array $heritages\r
  * @return array\r
@@ -235,7 +236,7 @@ function compositions_recuperer_heritage($type=NULL){
        static $heritages = NULL;\r
        if (is_null($heritages)) // recuperer les heritages declares via le pipeline compositions_declarer_heritage\r
                $heritages = pipeline('compositions_declarer_heritage', array());\r
-       \r
+\r
        if (is_null($type))\r
                return $heritages;\r
 \r
@@ -244,7 +245,7 @@ function compositions_recuperer_heritage($type=NULL){
                $table_parent =  table_objet_sql($type_parent);\r
                $nom_id_parent = ($type==$type_parent) ? 'id_parent' : id_table_objet($type_parent); // Recursivite pour les rubriques, nom de l'identifiant du parent dans la table enfant\r
                $nom_id_table_parent = id_table_objet($type_parent); // Nom de l'identifiant du parent dans la table parent\r
-               \r
+\r
                // verifier que table et champs existent...\r
                $trouver_table = charger_fonction('trouver_table', 'base');\r
                if (!$type_parent\r
@@ -277,7 +278,7 @@ function compositions_recuperer_heritage($type=NULL){
 function compositions_determiner($type, $id, $serveur='', $etoile = false){\r
        static $composition = array();\r
        $id = intval($id);\r
-       \r
+\r
        if (isset($composition[$etoile][$serveur][$type][$id]))\r
                return $composition[$etoile][$serveur][$type][$id];\r
 \r
@@ -323,18 +324,24 @@ function compositions_heriter($type, $id, $id_parent=NULL, $serveur=''){
        if (intval($id) < 1) return '';\r
        static $infos = null;\r
        $compo_parent = '';\r
-       \r
+\r
        $heritage = compositions_recuperer_heritage($type);\r
+\r
+       /* Si aucun héritage n'a été défini pour le type d'objet, ce\r
+       * n'est pas la peine d'aller plus loin. */\r
+       if(count($heritage) == 0)\r
+               return '';\r
+\r
        $type_parent = $heritage['type_parent'];\r
        $table_parent = $heritage['table_parent'];\r
        $nom_id_parent = $heritage['nom_id_parent'];\r
        $nom_id_table_parent = $heritage['nom_id_table_parent'];\r
-       \r
+\r
        if (is_null($id_parent))\r
                $id_parent = sql_getfetsel($nom_id_parent, table_objet_sql($type), id_table_objet($type).'='.intval($id));\r
-       \r
+\r
        $heritages = compositions_recuperer_heritage();\r
-       \r
+\r
        do {\r
                $select = 'composition';\r
                if ($heritages[$type_parent]==$type_parent) // S'il y a recursivite sur le parent\r
@@ -344,10 +351,10 @@ function compositions_heriter($type, $id, $id_parent=NULL, $serveur=''){
                        $compo_parent = $row['composition'];\r
                elseif (strlen($row['composition'])==0 AND isset($heritages[$type_parent])) // Si le parent peut heriter, il faut verifier s'il y a heritage\r
                        $compo_parent = compositions_determiner($type_parent, $id_parent, $serveur='');\r
-               \r
+\r
                if (strlen($compo_parent) AND is_null($infos))\r
                        $infos = compositions_lister_disponibles('');\r
-                       \r
+\r
        }\r
        while ($id_parent = $row['id_parent']\r
                AND\r
@@ -409,7 +416,7 @@ function compositions_verrouiller($type, $id, $serveur=''){
        $config = unserialize($GLOBALS['meta']['compositions']);\r
        if (isset($config['tout_verrouiller']) AND $config['tout_verrouiller'] == 'oui')\r
                return true;\r
-       \r
+\r
        include_spip('base/abstract_sql');\r
        $table = table_objet($type);\r
        $table_sql = table_objet_sql($type);\r
@@ -438,7 +445,7 @@ function compositions_verrouiller($type, $id, $serveur=''){
  * @return string\r
  */\r
 function compositions_verrou_branche($id_rubrique, $serveur=''){\r
-       \r
+\r
        if (intval($id_rubrique) < 1) return false;\r
        if($infos_rubrique = sql_fetsel(array('id_parent','composition_branche_lock'),'spip_rubriques','id_rubrique='.intval($id_rubrique),'','','','',$serveur)) {\r
                if ($infos_rubrique['composition_branche_lock'])\r