X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fecrire%2Fpublic%2Fstyliser.php;fp=www%2Fecrire%2Fpublic%2Fstyliser.php;h=02846e6fc1bdde726d01c107153779fdb13410a2;hb=a33c2ba9d919664b3bb0f565f8e9a8b9d8530cdb;hp=0000000000000000000000000000000000000000;hpb=8945248b3d948385798d9aa355c70e7089aca2b3;p=lhc%2Fweb%2Fclavette_www.git diff --git a/www/ecrire/public/styliser.php b/www/ecrire/public/styliser.php new file mode 100644 index 0000000..02846e6 --- /dev/null +++ b/www/ecrire/public/styliser.php @@ -0,0 +1,159 @@ + array( + 'id_rubrique' => $id_rubrique, + 'ext' => $ext, + 'fond' => $fond, + 'lang' => $lang, + 'contexte' => $contexte, // le style d'un objet peut dependre de lui meme + 'connect' => $connect + ), + 'data' => $squelette['fond'], + ); + + if (test_espace_prive() OR defined('_ZPIP')) { + if (!$styliser_par_z) + $styliser_par_z = charger_fonction('styliser_par_z','public'); + $flux = $styliser_par_z($flux); + } + + $flux = styliser_par_objets($flux); + + // pipeline styliser + $squelette = pipeline('styliser', $flux); + + return array($squelette, $ext, $ext, "$squelette.$ext"); +} + +function styliser_par_objets($flux){ + if (test_espace_prive() + AND !$squelette = $flux['data'] + AND strncmp($flux['args']['fond'],'prive/objets/',13)==0 + AND $echafauder = charger_fonction('echafauder','prive',true)) { + if (strncmp($flux['args']['fond'],'prive/objets/liste/',19)==0){ + $table = table_objet(substr($flux['args']['fond'],19)); + $table_sql = table_objet_sql($table); + $objets = lister_tables_objets_sql(); + if (isset($objets[$table_sql])) + $flux['data'] = $echafauder($table,$table,$table_sql,"prive/objets/liste/objets",$flux['args']['ext']); + } + if (strncmp($flux['args']['fond'],'prive/objets/contenu/',21)==0){ + $type = substr($flux['args']['fond'],21); + $table = table_objet($type); + $table_sql = table_objet_sql($table); + $objets = lister_tables_objets_sql(); + if (isset($objets[$table_sql])) + $flux['data'] = $echafauder($type,$table,$table_sql,"prive/objets/contenu/objet",$flux['args']['ext']); + } + } + return $flux; +} + +/** + * Calcul de la rubrique associee a la requete + * (selection de squelette specifique par id_rubrique & lang) + * + * attention, on repete cela a chaque inclusion, + * on optimise donc pour ne faire la recherche qu'une fois + * par contexte semblable du point de vue des id_xx + * + * http://doc.spip.org/@quete_rubrique_fond + * + * @staticvar array $liste_objets + * @param array $contexte + * @return array + */ +function quete_rubrique_fond($contexte) { + static $liste_objets = null; + static $quete = array(); + if (is_null($liste_objets)) { + $liste_objets = array(); + include_spip('inc/urls'); + include_spip('public/quete'); + $l = urls_liste_objets(false); + // placer la rubrique en tete des objets + $l = array_diff($l,array('rubrique')); + array_unshift($l, 'rubrique'); + foreach($l as $objet){ + $id = id_table_objet($objet); + if (!isset($liste_objets[$id])) + $liste_objets[$id] = objet_type($objet,false); + } + } + $c = array_intersect_key($contexte,$liste_objets); + if (!count($c)) return false; + + $c = array_map('intval',$c); + $s = serialize($c); + if (isset($quete[$s])) + return $quete[$s]; + + if (isset($c['id_rubrique']) AND $r = $c['id_rubrique']){ + unset($c['id_rubrique']); + $c = array('id_rubrique'=>$r) + $c; + } + + foreach($c as $_id=>$id) { + if ($id + AND $row = quete_parent_lang(table_objet_sql($liste_objets[$_id]),$id)) { + $lang = isset($row['lang']) ? $row['lang'] : ''; + if ($_id=='id_rubrique' OR (isset($row['id_rubrique']) AND $id=$row['id_rubrique'])) + return $quete[$s] = array ($id, $lang); + } + } + return $quete[$s] = false; +} +?>