[PLUGINS] ~maj globale
[lhc/web/www.git] / www / plugins / compositions_v3 / compositions_pipeline.php
index dd38a96..c569374 100644 (file)
-<?php\r
-/*\r
- * Plugin Compositions\r
- * (c) 2007-2009 Cedric Morin\r
- * Distribue sous licence GPL\r
- *\r
- */\r
-\r
-if (!defined("_ECRIRE_INC_VERSION")) return;\r
-\r
-/**\r
- * Declaration des champs sur les objets\r
- *\r
- * @param array $tables\r
- * @return array\r
- */\r
-function compositions_declarer_tables_objets_sql($tables){\r
-\r
-       // champs composition et composition_lock sur tous les objets\r
-       // c'est easy\r
-       $tables[]['field']['composition'] = "varchar(255) DEFAULT '' NOT NULL";\r
-       $tables[]['field']['composition_lock'] = "tinyint(1) DEFAULT 0 NOT NULL";\r
-       $tables['spip_rubriques']['field']['composition_branche_lock'] = "tinyint(1) DEFAULT 0 NOT NULL";\r
-\r
-       return $tables;\r
-}\r
-\r
-\r
-/**\r
- * Fonction vide pour le pipeline homonyme\r
- */\r
-function compositions_autoriser(){}\r
-\r
-/**\r
- * Autorisation de modifier la composition\r
- *\r
- * @param string $faire\r
- * @param string $type\r
- * @param int $id\r
- * @param array $qui\r
- * @param array $opt\r
- * @return bool\r
- */\r
-function autoriser_styliser_dist($faire, $type='', $id=0, $qui = NULL, $opt = NULL){\r
-       include_spip('compositions_fonctions');\r
-       if (!autoriser('modifier',$type,$id,$qui,$opt))\r
-               return false;\r
-       if (compositions_verrouiller($type, $id) AND !autoriser('webmestre'))\r
-               return false;\r
-       return true;\r
-}\r
-\r
-\r
-/**\r
- * Pipeline styliser pour definir le fond d'un objet en fonction de sa composition\r
- *\r
- * @param array $flux\r
- * @return array\r
- */\r
-function compositions_styliser($flux){\r
-       // en contexte Z, c'est Z ou Z-core qui stylise (on ne n'en occupe donc pas ici)\r
-       if(!defined('_DIR_PLUGIN_Z') AND !defined('_DIR_PLUGIN_ZCORE')){\r
-               include_spip('compositions_fonctions');\r
-               if (compositions_styliser_auto()){\r
-                       $type = $flux['args']['fond']; // on fait l'approximation fond=type\r
-                       // si le type n'est pas l'objet d'une composition, ne rien faire\r
-                       if (in_array($type,compositions_types())){\r
-                               $contexte = isset($flux['args']['contexte'])?$flux['args']['contexte']:$GLOBALS['contexte'];\r
-                               $serveur = $flux['args']['connect'];\r
-\r
-                               $ext = $flux['args']['ext'];\r
-                               $_id_table = id_table_objet($type);\r
-\r
-                               if ($id = $contexte[$_id_table] AND $composition = compositions_determiner($type,$id,$serveur)){\r
-                                       if ($fond = compositions_selectionner($composition, $type, '', $ext, true, "")){\r
-                                               $flux['data'] = substr($fond, 0, - strlen(".$ext"));\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-       return $flux;\r
-}\r
-\r
-/**\r
- * Affichage du formulaire de selection de la composition\r
- *\r
- * @param array $flux\r
- * @return array\r
- */\r
-function compositions_affiche_milieu($flux){\r
-       $e = trouver_objet_exec($flux['args']['exec']);\r
-       $objets = compositions_objets_actives();\r
-       if (in_array($e['type'],$objets)\r
-         AND $e['edition']===false){\r
-               $type = $e['type'];\r
-               if ($id = $flux['args'][$e['id_table_objet']]) {\r
-                       $config = unserialize($GLOBALS['meta']['compositions']);\r
-                       $aut = autoriser('styliser',$type,$id);\r
-                       if ((!isset($config['masquer_formulaire']) OR $config['masquer_formulaire'] != 'oui' OR $aut)\r
-                               AND (\r
-                                       ($c=compositions_lister_disponibles($type) AND is_array(reset($c)))\r
-                                       OR ($type == 'rubrique' AND (!isset($config['tout_verrouiller']) OR $config['tout_verrouiller'] != 'oui'))\r
-                                 )\r
-                               ) {\r
-                               $ids = 'formulaire_editer_composition_objet-' . "$type-$id";\r
-                               $texte = recuperer_fond(\r
-                                       'prive/editer/compositions',\r
-                                       array(\r
-                                               'type'=>$type,\r
-                                               'id'=>$id,\r
-                                       )\r
-                               );\r
-\r
-                               if (($p = strpos($flux['data'],'<!--affiche_milieu-->'))!==false)\r
-                                       $flux['data'] = substr_replace($flux['data'],$texte,$p,0);\r
-                               else\r
-                                       $flux['data'] .= $texte;\r
-                       }\r
-               }\r
-       }\r
-\r
-       return $flux;\r
-}\r
-\r
-/**\r
- * Le pipeline compositions_declarer_heritage permet de declarer les heritages\r
- * sous la forme :\r
- *             $heritages['objet'] = 'parent';\r
- * ce qui permet ensuite de faire dans le fichier parent-ma_compo.xml\r
- * <branche type="objet" composition="une_compo" />\r
- * \r
- * A partir de compositions 3.3.0 cette declaration est obligatoire.\r
- * Les objets "standards" de SPIP sont declares ici. (a deplacer dans leurs plugins respectifs ?)\r
- */\r
-function compositions_compositions_declarer_heritage($heritages){\r
-       $heritages['mot'] = 'groupe_mots';\r
-       $heritages['rubrique'] = 'rubrique';\r
-       $heritages['article'] = 'rubrique';\r
-       $heritages['breve'] = 'rubrique';\r
-       $heritages['site'] = 'rubrique';\r
-       return $heritages;\r
-}\r
-\r
-\r
-?>\r
+<?php
+/*
+ * Plugin Compositions
+ * (c) 2007-2009 Cedric Morin
+ * Distribue sous licence GPL
+ *
+ */
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+/**
+ * Declaration des champs sur les objets
+ *
+ * @param array $tables
+ * @return array
+ */
+function compositions_declarer_tables_objets_sql($tables){
+
+       // champs composition et composition_lock sur tous les objets
+       // c'est easy
+       $tables[]['field']['composition'] = "varchar(255) DEFAULT '' NOT NULL";
+       $tables[]['field']['composition_lock'] = "tinyint(1) DEFAULT 0 NOT NULL";
+       $tables['spip_rubriques']['field']['composition_branche_lock'] = "tinyint(1) DEFAULT 0 NOT NULL";
+
+       return $tables;
+}
+
+
+/**
+ * Fonction vide pour le pipeline homonyme
+ */
+function compositions_autoriser(){}
+
+/**
+ * Autorisation de modifier la composition
+ *
+ * @param string $faire
+ * @param string $type
+ * @param int $id
+ * @param array $qui
+ * @param array $opt
+ * @return bool
+ */
+function autoriser_styliser_dist($faire, $type='', $id=0, $qui = NULL, $opt = NULL){
+       include_spip('compositions_fonctions');
+       if (!autoriser('modifier',$type,$id,$qui,$opt))
+               return false;
+       if (compositions_verrouiller($type, $id) AND !autoriser('webmestre'))
+               return false;
+       return true;
+}
+
+
+/**
+ * Pipeline styliser pour definir le fond d'un objet en fonction de sa composition
+ *
+ * @param array $flux
+ * @return array
+ */
+function compositions_styliser($flux){
+       // en contexte Z, c'est Z ou Z-core qui stylise (on ne n'en occupe donc pas ici)
+       if(!defined('_DIR_PLUGIN_Z') AND !defined('_DIR_PLUGIN_ZCORE')){
+               include_spip('compositions_fonctions');
+               if (compositions_styliser_auto()){
+                       $type = $flux['args']['fond']; // on fait l'approximation fond=type
+                       // si le type n'est pas l'objet d'une composition, ne rien faire
+                       if (in_array($type,compositions_types())){
+                               $contexte = isset($flux['args']['contexte'])?$flux['args']['contexte']:$GLOBALS['contexte'];
+                               $serveur = $flux['args']['connect'];
+
+                               $ext = $flux['args']['ext'];
+                               $_id_table = id_table_objet($type);
+
+                               if ($id = $contexte[$_id_table] AND $composition = compositions_determiner($type,$id,$serveur)){
+                                       if ($fond = compositions_selectionner($composition, $type, '', $ext, true, "")){
+                                               $flux['data'] = substr($fond, 0, - strlen(".$ext"));
+                                       }
+                               }
+                       }
+               }
+       }
+       return $flux;
+}
+
+/**
+ * Affichage du formulaire de selection de la composition
+ *
+ * @param array $flux
+ * @return array
+ */
+function compositions_affiche_milieu($flux){
+       $e = trouver_objet_exec($flux['args']['exec']);
+       $objets = compositions_objets_actives();
+       if (in_array($e['type'],$objets)
+         AND $e['edition']===false){
+               $type = $e['type'];
+               if ($id = $flux['args'][$e['id_table_objet']]) {
+                       $config = (isset($GLOBALS['meta']['compositions']) ? unserialize($GLOBALS['meta']['compositions']) : array());
+                       $aut = autoriser('styliser',$type,$id);
+                       if ((!isset($config['masquer_formulaire']) OR $config['masquer_formulaire'] != 'oui' OR $aut)
+                               AND (
+                                       ($c=compositions_lister_disponibles($type) AND is_array(reset($c)))
+                                       OR ($type == 'rubrique' AND (!isset($config['tout_verrouiller']) OR $config['tout_verrouiller'] != 'oui'))
+                                 )
+                               ) {
+                               $ids = 'formulaire_editer_composition_objet-' . "$type-$id";
+                               $texte = recuperer_fond(
+                                       'prive/editer/compositions',
+                                       array(
+                                               'type'=>$type,
+                                               'id'=>$id,
+                                       )
+                               );
+
+                               if (($p = strpos($flux['data'],'<!--affiche_milieu-->'))!==false)
+                                       $flux['data'] = substr_replace($flux['data'],$texte,$p,0);
+                               else
+                                       $flux['data'] .= $texte;
+                       }
+               }
+       }
+
+       return $flux;
+}
+
+/**
+ * Le pipeline compositions_declarer_heritage permet de declarer les heritages
+ * sous la forme :
+ *             $heritages['objet'] = 'parent';
+ * ce qui permet ensuite de faire dans le fichier parent-ma_compo.xml
+ * <branche type="objet" composition="une_compo" />
+ * 
+ * A partir de compositions 3.3.0 cette declaration est obligatoire.
+ * Les objets "standards" de SPIP sont declares ici. (a deplacer dans leurs plugins respectifs ?)
+ */
+function compositions_compositions_declarer_heritage($heritages){
+       $heritages['mot'] = 'groupe_mots';
+       $heritages['rubrique'] = 'rubrique';
+       $heritages['article'] = 'rubrique';
+       $heritages['breve'] = 'rubrique';
+       $heritages['site'] = 'rubrique';
+       return $heritages;
+}
+
+
+?>