1 | <?php |
---|
2 | include_spip('lib/phpQuery/phpQuery/phpQuery'); |
---|
3 | |
---|
4 | function balise_RECUPERER_FOND ($p) { |
---|
5 | $p->code = "calculer_balise_RECUPERER_FOND(@\$Pile[0])"; |
---|
6 | return $p; |
---|
7 | } |
---|
8 | |
---|
9 | function calculer_balise_RECUPERER_FOND ($env) { |
---|
10 | /* spip_log('DEBUG'); */ |
---|
11 | // On cherche le type d'objet correspondant a la page. Si #ENV contient une cle 'page', |
---|
12 | // c'est la bonne valeur. |
---|
13 | if (isset($env['page'])) { |
---|
14 | /* spip_log('page renseignee dans env'); */ |
---|
15 | $fond = $env['page']; |
---|
16 | // Sinon, il faut ruser avec les id_objets pour trouver sur quelle page on est. |
---|
17 | } else if (isset($env['id_article'])) { |
---|
18 | /* spip_log('id_article trouve'); */ |
---|
19 | $fond = 'article'; |
---|
20 | // Si env contient un cle de type id_objet, on teste si objet est dans la liste des pages a |
---|
21 | // ajaxifier. Si oui, c'est que c'est un type d'objet valide. Sinon, ca l'est peut-etre, mais |
---|
22 | // pas moyen de savoir, alors on oublie, c'est de toute facon pas important pour nous, |
---|
23 | // puisqu'on en aura besoin que pour les pages ajax. |
---|
24 | } else if (isset($GLOBALS['meta']['ajax_nav_config'])) { |
---|
25 | $pages_ajax = unserialize($GLOBALS['meta']['ajax_nav_config']); |
---|
26 | $pages_ajax = preg_split('/ /', $pages_ajax['pagesToAjaxify']); |
---|
27 | foreach ($pages_ajax as $i => $page_ajax) { |
---|
28 | // le cas des articles est deja traite |
---|
29 | if ($page_ajax !== 'article') { |
---|
30 | foreach ($env as $parametre => $valeur) { |
---|
31 | if (preg_replace('/^id_/', '', $parametre) === $page_ajax) { |
---|
32 | /* spip_log('trouve dans la liste des pages ajax'); */ |
---|
33 | $fond = $page_ajax; |
---|
34 | } |
---|
35 | } |
---|
36 | } |
---|
37 | } |
---|
38 | } |
---|
39 | // si rien de tout ca n'a fonctionne, on est probablement sur le sommaire, qui a ma connaissance |
---|
40 | // est le seul a ne rien renseigner. |
---|
41 | if ( ! isset($fond) ) { |
---|
42 | // on verifie que vraiment rien n'est renseigne. |
---|
43 | foreach ($env as $parametre => $valeur) { |
---|
44 | if (preg_match('/^id_/', $parametre)) { |
---|
45 | /* spip_log('trouve malgre tout'); */ |
---|
46 | $fond = preg_replace('/^id_/', '', $parametre); |
---|
47 | } |
---|
48 | } |
---|
49 | if ( ! isset($fond) ) { |
---|
50 | /* spip_log('rien a faire, c\'est le sommaire'); */ |
---|
51 | $fond = 'sommaire'; |
---|
52 | } |
---|
53 | } |
---|
54 | |
---|
55 | return $fond; |
---|
56 | } |
---|
57 | |
---|
58 | function balise_EXTRAIRE_INFOS_PAGE ($p) { |
---|
59 | $objet = interprete_argument_balise(1, $p); |
---|
60 | $id_objet = interprete_argument_balise(2, $p); |
---|
61 | $p->code = 'calculer_balise_EXTRAIRE_INFOS_PAGE(' . $objet .', ' . $id_objet . ')'; |
---|
62 | return $p; |
---|
63 | } |
---|
64 | |
---|
65 | function calculer_balise_EXTRAIRE_INFOS_PAGE($objet, $id_objet) { |
---|
66 | if ($id_objet) { |
---|
67 | $params = array('id_'.$objet => $id_objet); |
---|
68 | } else { |
---|
69 | $params = array(); |
---|
70 | } |
---|
71 | $page = recuperer_fond($objet, $params); |
---|
72 | |
---|
73 | // Ceci devrait marcher, mais en fait non, probablement parce que dans la spec HTML, body |
---|
74 | // ne peut pas avoir d'attribut class... |
---|
75 | |
---|
76 | // phpQuery::newDocumentHTML($page); |
---|
77 | // $bodyClass = pq('body')->attr('class'); |
---|
78 | |
---|
79 | // ...mais comme SPIP utilise les class sur le body par defaut (le vilain!), on fait un |
---|
80 | // truc moche comme ca : |
---|
81 | $bodyClass = preg_replace('/(\r\n|\n|\r)/m', '', $page); |
---|
82 | if (preg_match('/.*<body[^>]class=[\'\"]([^\'\"]*).*/', $bodyClass)) { |
---|
83 | $bodyClass = preg_replace('/.*<body[^>]class=[\'\"]([^\'\"]*).*/', '$1', $bodyClass); |
---|
84 | } else { |
---|
85 | $bodyClass = ''; |
---|
86 | } |
---|
87 | |
---|
88 | phpQuery::newDocumentHTML($page); |
---|
89 | $title = pq('title'); |
---|
90 | $title = $title->html(); |
---|
91 | |
---|
92 | $lang = pq('html'); |
---|
93 | $lang = $lang->attr('lang'); |
---|
94 | |
---|
95 | $tableau_resultat = serialize(array('body_classes' => $bodyClass, |
---|
96 | 'title' => $title, |
---|
97 | 'lang' => $lang, |
---|
98 | )); |
---|
99 | |
---|
100 | return "$tableau_resultat"; |
---|
101 | } |
---|
102 | |
---|
103 | function balise_GET_BY_ID ($p) { |
---|
104 | $get_by_id = interprete_argument_balise(1, $p); |
---|
105 | $objet = interprete_argument_balise(2, $p); |
---|
106 | $id_objet = interprete_argument_balise(3, $p); |
---|
107 | $p->code = 'calculer_balise_GET_BY_ID(' . $get_by_id . ', ' . $objet .', ' . $id_objet . ')'; |
---|
108 | return $p; |
---|
109 | } |
---|
110 | |
---|
111 | function calculer_balise_GET_BY_ID($get_by_id, $objet, $id_objet) { |
---|
112 | if ($id_objet) { |
---|
113 | $params = array('id_'.$objet => $id_objet); |
---|
114 | } else { |
---|
115 | $params = array(); |
---|
116 | } |
---|
117 | $page = recuperer_fond($objet, $params); |
---|
118 | phpQuery::newDocumentHTML($page); |
---|
119 | $bloc = pq('#' . $get_by_id); |
---|
120 | $bloc = $bloc->html(); |
---|
121 | |
---|
122 | return "$bloc"; |
---|
123 | } |
---|
124 | |
---|
125 | ?> |
---|