X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fplugins%2Fauto%2Fcompositions_v2%2Fcompositions_pipeline.php;fp=www%2Fplugins%2Fauto%2Fcompositions_v2%2Fcompositions_pipeline.php;h=7ed136ba7131f051ffab16b9600ee9508e5efacc;hp=0000000000000000000000000000000000000000;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c diff --git a/www/plugins/auto/compositions_v2/compositions_pipeline.php b/www/plugins/auto/compositions_v2/compositions_pipeline.php new file mode 100644 index 0000000..7ed136b --- /dev/null +++ b/www/plugins/auto/compositions_v2/compositions_pipeline.php @@ -0,0 +1,126 @@ + $faire + * @param $type + * @param $id + * @param $qui + * @param $opt + * @return + */ +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){ + include_spip('compositions_fonctions'); + if (compositions_styliser_auto()){ + if (!defined('_DIR_PLUGIN_Z')){ + $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")); + } + } + } + } + else { + $contexte = isset($flux['args']['contexte'])?$flux['args']['contexte']:$GLOBALS['contexte']; + if (!test_espace_prive() + AND preg_match(',(^|/)contenu/([^/]*)$,i',$flux['args']['fond'],$regs) + AND $type = $regs[2] + AND in_array($type,compositions_types())){ + $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){ + $exec = $flux['args']['exec']; + if (isset($GLOBALS['compositions_exec'][$exec])){ + $type = $GLOBALS['compositions_exec'][$exec]; + $_id = id_table_objet($type); + if ($id = $flux['args'][$_id]) { + $config = unserialize($GLOBALS['meta']['compositions']); + $aut = autoriser('styliser',$type,$id); + include_spip('compositions_fonctions'); + if (($config['masquer_formulaire'] != 'oui' OR $aut) + AND (is_array(reset(compositions_lister_disponibles($type))) OR ($type == 'rubrique' AND $config['tout_verrouiller'] != 'oui')) + ) { + $deplie = $aut ? false : -1; + $ids = 'formulaire_editer_composition_objet-' . "$type-$id"; + $bouton = bouton_block_depliable(strtoupper(_T('compositions:composition')), $deplie, $ids); + $flux['data'] .= debut_cadre('e', chemin('compositions-24.png','images/'),'',$bouton, '', '', true); + $flux['data'] .= recuperer_fond('prive/editer/compositions', array_merge($_GET, array('type'=>$type,'id'=>$id))); + $flux['data'] .= fin_cadre(); + } + } + } + + return $flux; +} + +function compositions_compositions_lister_disponibles($flux){return $flux;} + +?> \ No newline at end of file