-<?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;
+}
+
+
+?>