[SPIP] +2.1.12
[velocampus/web/www.git] / www / plugins / auto / compositions_v2 / compositions_pipeline.php
diff --git a/www/plugins/auto/compositions_v2/compositions_pipeline.php b/www/plugins/auto/compositions_v2/compositions_pipeline.php
new file mode 100644 (file)
index 0000000..7ed136b
--- /dev/null
@@ -0,0 +1,126 @@
+<?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
+// lister les exec ou apparait l'interface de composition et le type correspondant\r
+// peut etre etendu par des plugins\r
+$GLOBALS['compositions_exec']['naviguer'] = 'rubrique';\r
+$GLOBALS['compositions_exec']['articles'] = 'article';\r
+$GLOBALS['compositions_exec']['mots_edit'] = 'mot';\r
+$GLOBALS['compositions_exec']['sites'] = 'site';\r
+$GLOBALS['compositions_exec']['breves_voir'] = 'breve';\r
+$GLOBALS['compositions_exec']['auteur_infos'] = 'auteur';\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 <type> $faire\r
+ * @param <type> $type\r
+ * @param <type> $id\r
+ * @param <type> $qui\r
+ * @param <type> $opt\r
+ * @return <type>\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
+       include_spip('compositions_fonctions');\r
+       if (compositions_styliser_auto()){\r
+               if (!defined('_DIR_PLUGIN_Z')){\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
+               else {\r
+                       $contexte = isset($flux['args']['contexte'])?$flux['args']['contexte']:$GLOBALS['contexte'];\r
+                       if (!test_espace_prive()\r
+                         AND preg_match(',(^|/)contenu/([^/]*)$,i',$flux['args']['fond'],$regs)\r
+                         AND $type = $regs[2]\r
+                         AND in_array($type,compositions_types())){\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
+       $exec = $flux['args']['exec'];\r
+       if (isset($GLOBALS['compositions_exec'][$exec])){\r
+               $type = $GLOBALS['compositions_exec'][$exec];\r
+               $_id = id_table_objet($type);\r
+               if ($id = $flux['args'][$_id]) {\r
+                       $config = unserialize($GLOBALS['meta']['compositions']);\r
+                       $aut = autoriser('styliser',$type,$id);\r
+                       include_spip('compositions_fonctions');\r
+                       if (($config['masquer_formulaire'] != 'oui' OR $aut) \r
+                               AND (is_array(reset(compositions_lister_disponibles($type))) OR ($type == 'rubrique' AND $config['tout_verrouiller'] != 'oui'))\r
+                               ) {\r
+                               $deplie = $aut ? false : -1;\r
+                               $ids = 'formulaire_editer_composition_objet-' . "$type-$id";\r
+                               $bouton = bouton_block_depliable(strtoupper(_T('compositions:composition')), $deplie, $ids);\r
+                               $flux['data'] .= debut_cadre('e', chemin('compositions-24.png','images/'),'',$bouton, '', '', true);\r
+                               $flux['data'] .= recuperer_fond('prive/editer/compositions', array_merge($_GET, array('type'=>$type,'id'=>$id)));\r
+                               $flux['data'] .= fin_cadre();\r
+                       }\r
+               }\r
+       }\r
+\r
+       return $flux;\r
+}\r
+\r
+function compositions_compositions_lister_disponibles($flux){return $flux;}\r
+\r
+?>
\ No newline at end of file