* 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
/**\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
$config_chemin = rtrim($config['chemin_compositions'],'/').'/';\r
}\r
}\r
- \r
+\r
return $config_chemin;\r
}\r
\r
\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
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
}\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
* 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
* 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
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
$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
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
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
$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
$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
* @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