source: spip-zone/_plugins_/compositions/trunk/inc/compositions.php @ 97916

Last change on this file since 97916 was 97916, checked in by bystrano@…, 3 years ago

Revert "PSR SPIP"

This reverts commit 9143a323a2c85ce1bfec783f4a85fc911a29008d.

Ce commit provoque des erreurs dans l'espace privé, sur les pages de
rubrique, pour les rubriques de la racine.
J'ai cherché une solution pendant un bon moment sans trouver d'autre
solution que de revert.

PS: C'est bien joli les règles de codage, mais commit sur un plugin
aussi utilisé que « Compositions » sans tester au moins les pages de
l'espace privé qui sont modifiées par le plugin, c'est un peu cavalier,
non ?

  • Property svn:eol-style set to LF
File size: 3.3 KB
Line 
1<?php
2/*
3 * Plugin Compositions
4 * (c) 2007-2009 Cedric Morin
5 * Distribue sous licence GPL
6 *
7 */
8
9if (!defined("_ECRIRE_INC_VERSION")) return;
10
11include_spip('compositions_fonctions');
12
13/**
14 * Separer le type et le nom de la composition dans un nom de fichier
15 *
16 * @param string $nom
17 * @return array
18 */
19function compositions_decomposer_nom($nom){
20        $reg = ",^([a-z][^-.]*)("._COMPOSITIONS_MATCH.")?$,i";
21        if (
22                // recuperer le type et la composition
23          preg_match($reg,$nom,$matches)
24          // il y a bien un type
25          AND $type=$matches[1]
26        ){
27                $composition = isset($matches[3])?$matches[3]:'';
28                return array($type,$composition);
29        }
30        return array($nom,"");
31}
32
33/**
34 * Charger les informations contenues dans le xml d'une composition
35 *
36 * @param string $nom
37 * @param string $info
38 * @return array|string
39 */
40function compositions_charger_infos($nom,$info=""){
41                // on peut appeller avec le nom du squelette
42                $nom = preg_replace(',[.]html$,i','',$nom).".xml";
43                include_spip('inc/xml');
44                $composition = array();
45                if ($xml = spip_xml_load($nom,false)){
46                        if (count($xml['composition'])){
47                                $xml = reset($xml['composition']);
48                                $composition['nom'] = _T_ou_typo(spip_xml_aplatit($xml['nom']));
49                                $composition['description'] = isset($xml['description'])?_T_ou_typo(spip_xml_aplatit($xml['description'])):'';
50                                if (isset($xml['icon'])) {
51                                        $icon = chemin_image(reset($xml['icon']));
52                                        if (!$icon) {
53                                                $icon = find_in_path(reset($xml['icon']));
54                                        }
55                                } else {
56                                        $icon = '';
57                                }
58                                $composition['image_exemple'] = isset($xml['image_exemple']) ? find_in_path(reset($xml['image_exemple'])) : '';
59                                $composition['icon'] = $icon;
60                                $composition['class'] = isset($xml['class']) ? trim(reset($xml['class'])) : '';
61                                $composition['configuration'] = isset($xml['configuration']) ? spip_xml_aplatit($xml['configuration']) : '';
62                                $composition['branche'] = array();
63                                if (spip_xml_match_nodes(',^branche,', $xml, $branches)){
64                                        foreach (array_keys($branches) as $branche){
65                                                list($balise, $attributs) = spip_xml_decompose_tag($branche);
66                                                $composition['branche'][$attributs['type']] = $attributs['composition'];
67                                        }
68                                }
69                        }
70                }
71                if (!$info)
72                        return $composition;
73                else 
74                        return isset($composition[$info])?$composition[$info]:"";
75}
76
77
78/**
79 * Ecrire dans une meta la liste des objets qui sont sous le regime des
80 * compositions
81 * La fonction est appelee
82 * - lors de la stylisation si la meta n'est pas encore definie
83 * - a chaque fois qu'on selectionne un composition dans l'espace prive
84 * - si var_mode=recalcul
85 * On est sur ainsi que toute nouvelle composition selectionnee est dedans
86 * Si une composition est retiree du file system sans etre deselectionnee
87 * l'erreur sera evitee par la verification d'existence au moment de styliser
88 *
89 * @param array $liste
90 */
91function compositions_cacher($liste=null){
92        // lister les compositions vraiment utilisees
93        if (!is_array($liste)){
94                include_spip('compositions_fonctions');
95                $liste = compositions_lister_disponibles('',false);
96        }
97        // lister les objets dont on a active la composition dans la configuration
98        $config = compositions_objets_actives();
99
100        $liste = array_intersect($config,array_keys($liste));
101        ecrire_meta('compositions_types',implode(',',$liste));
102        spip_log('compositions: maj des compositions_types ['.$GLOBALS['meta']['compositions_types'].']');
103}
104
105?>
Note: See TracBrowser for help on using the repository browser.