Browse Source

Formatage et indentation du code

pull/1/head
teddy.spip@gmail.com 6 years ago
parent
commit
91aac3bf4a
  1. 197
      inc/filtres_boites.php
  2. 2
      paquet.xml
  3. 269
      public/_styliser_par_z.php
  4. 55
      public/echafauder.php
  5. 73
      zcore_options.php
  6. 184
      zcore_pipelines.php

197
inc/filtres_boites.php

@ -6,113 +6,118 @@
*
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
// si on est dans l'espce prive et dans une version recente de SPIP, utiliser la definition du core dans l'espace prive
if (test_espace_prive()){
include_once _DIR_RESTREINT."inc/filtres_boites.php";
/* si on est dans l'espce prive et dans une version recente de SPIP, utiliser la definition du core dans l'espace prive */
if (test_espace_prive()) {
include_once _DIR_RESTREINT . "inc/filtres_boites.php";
}
if (!function_exists('balise_BOITE_OUVRIR_dist')) {
/**
* #BOITE_OUVRIR{titre[,type]}
* Racourci pour ouvrir une boite (info, simple, pour noisette ...)
*
* @param <type> $p
* @return <type>
*/
function balise_BOITE_OUVRIR_dist($p) {
$_titre = interprete_argument_balise(1,$p);
$_class = interprete_argument_balise(2,$p);
$_head_class = interprete_argument_balise(3,$p);
$_titre = ($_titre?$_titre:"''");
$_class = ($_class?", $_class":", 'simple'");
$_head_class = ($_head_class?", $_head_class":"");
$f = chercher_filtre('boite_ouvrir');
$p->code = "$f($_titre$_class$_head_class)";
$p->interdire_scripts = false;
return $p;
}
/**
* #BOITE_OUVRIR{titre[,type]}
* Racourci pour ouvrir une boite (info, simple, pour noisette ...)
*
* @param <type> $p
*
* @return <type>
*/
function balise_BOITE_OUVRIR_dist($p) {
$_titre = interprete_argument_balise(1, $p);
$_class = interprete_argument_balise(2, $p);
$_head_class = interprete_argument_balise(3, $p);
$_titre = ($_titre ? $_titre : "''");
$_class = ($_class ? ", $_class" : ", 'simple'");
$_head_class = ($_head_class ? ", $_head_class" : "");
/**
* #BOITE_PIED{class}
* Racourci pour passer au pied de la boite, avant sa fermeture
*
* @param <type> $p
* @return <type>
*/
function balise_BOITE_PIED_dist($p) {
$_class = interprete_argument_balise(1,$p);
$_class = ($_class?"$_class":"");
$f = chercher_filtre('boite_pied');
$p->code = "$f($_class)";
$p->interdire_scripts = false;
return $p;
}
$f = chercher_filtre('boite_ouvrir');
$p->code = "$f($_titre$_class$_head_class)";
$p->interdire_scripts = false;
/**
* #BOITE_FERMER
* Racourci pour fermer une boite ouverte
*
* @param <type> $p
* @return <type>
*/
function balise_BOITE_FERMER_dist($p) {
$f = chercher_filtre('boite_fermer');
$p->code = "$f()";
$p->interdire_scripts = false;
return $p;
}
return $p;
}
/**
* Ouvrir une boite
* peut etre surcharge par filtre_boite_ouvrir_dist, filtre_boite_ouvrir
*
* @param string $titre
* @param string $class
* @return <type>
*/
function boite_ouvrir($titre, $class='', $head_class='', $id=""){
$class = "box $class";
$head_class = "hd $head_class";
// dans l'espace prive, titrer en h3 si pas de balise <hn>
if (test_espace_prive() AND strlen($titre) AND strpos($titre,'<h')===false)
$titre = "<h3>$titre</h3>";
return '<div class="'.$class.($id?"\" id=\"$id":"").'">'
.'<b class="top"><b class="tl"></b><b class="tr"></b></b>'
.'<div class="inner">'
.($titre?'<div class="'.$head_class.'">'.$titre.'<div class="nettoyeur"></div><!--/hd--></div>':'')
.'<div class="bd">';
}
/**
* #BOITE_PIED{class}
* Racourci pour passer au pied de la boite, avant sa fermeture
*
* @param <type> $p
*
* @return <type>
*/
function balise_BOITE_PIED_dist($p) {
$_class = interprete_argument_balise(1, $p);
$_class = ($_class ? "$_class" : "");
/**
* Passer au pied d'une boite
* peut etre surcharge par filtre_boite_pied_dist, filtre_boite_pied
*
* @param <type> $class
* @return <type>
*/
function boite_pied($class='act'){
$class = "ft $class";
return '<div class="nettoyeur"></div></div>'
.'<div class="'.$class.'">';
}
$f = chercher_filtre('boite_pied');
$p->code = "$f($_class)";
$p->interdire_scripts = false;
/**
* Fermer une boite
* peut etre surcharge par filtre_boite_fermer_dist, filtre_boite_fermer
*
* @return <type>
*/
function boite_fermer(){
return '<div class="nettoyeur"></div></div></div>'
.'<b class="bottom"><b class="bl"></b><b class="br"></b></b>'
.'</div>';
}
return $p;
}
/**
* #BOITE_FERMER
* Racourci pour fermer une boite ouverte
*
* @param <type> $p
*
* @return <type>
*/
function balise_BOITE_FERMER_dist($p) {
$f = chercher_filtre('boite_fermer');
$p->code = "$f()";
$p->interdire_scripts = false;
return $p;
}
/**
* Ouvrir une boite
* peut etre surcharge par filtre_boite_ouvrir_dist, filtre_boite_ouvrir
*
* @param string $titre
* @param string $class
*
* @return <type>
*/
function boite_ouvrir($titre, $class = '', $head_class = '', $id = "") {
$class = "box $class";
$head_class = "hd $head_class";
/* dans l'espace prive, titrer en h3 si pas de balise <hn> */
if (test_espace_prive() AND strlen($titre) AND strpos($titre, '<h') === false) {
$titre = "<h3>$titre</h3>";
}
return '<div class="' . $class . ($id ? "\" id=\"$id" : "") . '">' . '<b class="top"><b class="tl"></b><b class="tr"></b></b>' . '<div class="inner">' . ($titre ? '<div class="' . $head_class . '">' . $titre . '<div class="nettoyeur"></div><!--/hd--></div>' : '') . '<div class="bd">';
}
/**
* Passer au pied d'une boite
* peut etre surcharge par filtre_boite_pied_dist, filtre_boite_pied
*
* @param <type> $class
*
* @return <type>
*/
function boite_pied($class = 'act') {
$class = "ft $class";
return '<div class="nettoyeur"></div></div>' . '<div class="' . $class . '">';
}
/**
* Fermer une boite
* peut etre surcharge par filtre_boite_fermer_dist, filtre_boite_fermer
*
* @return <type>
*/
function boite_fermer() {
return '<div class="nettoyeur"></div></div></div>' . '<b class="bottom"><b class="bl"></b><b class="br"></b></b>' . '</div>';
}
}

2
paquet.xml

@ -6,7 +6,7 @@
compatibilite="[3.0.0;3.1.*]"
logo="img/z-core-32.png"
documentation="http://www.yterium.net/108"
>
>
<nom>Z-core</nom>
<!-- Z Framework pour SPIP (Zpip) -->

269
public/_styliser_par_z.php

@ -8,19 +8,21 @@
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
* \***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined("_ECRIRE_INC_VERSION")) {
return;
}
/**
* Fonction Page automatique a partir de contenu/xx
*
* @param array $flux
*
* @return array
*/
function public_styliser_par_z_dist($flux){
static $prefix_path=null;
function public_styliser_par_z_dist($flux) {
static $prefix_path = null;
static $prefix_length;
static $z_blocs;
static $apl_constant;
@ -31,142 +33,116 @@ function public_styliser_par_z_dist($flux){
if (!isset($prefix_path)) {
$z_blocs = zcore_blocs(test_espace_prive());
if (test_espace_prive ()){
if (test_espace_prive()) {
$prefix_path = "prive/squelettes/";
$prefix_length = strlen($prefix_path);
$apl_constant = '_ECRIRE_AJAX_PARALLEL_LOAD';
$page = 'exec';
$echafauder = ""; // pas d'echafaudage dans ecrire/ pour le moment
define('_ZCORE_EXCLURE_PATH','');
}
else {
$echafauder = ""; /* pas d'echafaudage dans ecrire/ pour le moment */
define('_ZCORE_EXCLURE_PATH', '');
} else {
$prefix_path = "";
$prefix_length = 0;
$apl_constant = '_Z_AJAX_PARALLEL_LOAD';
$page = _SPIP_PAGE;
$echafauder = charger_fonction('echafauder','public',true);
define('_ZCORE_EXCLURE_PATH','squelettes-dist|prive');
$echafauder = charger_fonction('echafauder', 'public', true);
define('_ZCORE_EXCLURE_PATH', 'squelettes-dist|prive');
}
$prepend = (defined('_Z_PREPEND_PATH')?_Z_PREPEND_PATH:"");
$prepend = (defined('_Z_PREPEND_PATH') ? _Z_PREPEND_PATH : "");
}
$z_contenu = reset($z_blocs); // contenu par defaut
$z_contenu = reset($z_blocs); /* contenu par defaut */
$fond = $flux['args']['fond'];
if ($prepend OR strncmp($fond,$prefix_path,$prefix_length)==0) {
if ($prepend OR strncmp($fond, $prefix_path, $prefix_length) == 0) {
$fond = substr($fond, $prefix_length);
$squelette = $flux['data'];
$ext = $flux['args']['ext'];
// Ajax Parallel loading : ne pas calculer le bloc, mais renvoyer un js qui le loadera en ajax
if (defined('_Z_AJAX_PARALLEL_LOAD_OK')
AND $dir = explode('/',$fond)
AND count($dir)==2 // pas un sous repertoire
AND $dir = reset($dir)
AND in_array($dir,$z_blocs) // verifier deja qu'on est dans un bloc Z
AND in_array($dir,explode(',',constant($apl_constant))) // et dans un demande en APL
AND $pipe = zcore_trouver_bloc($prefix_path.$prepend,$dir,'z_apl',$ext) // et qui contient le squelette APL
){
/* Ajax Parallel loading : ne pas calculer le bloc, mais renvoyer un js qui le loadera en ajax */
if (defined('_Z_AJAX_PARALLEL_LOAD_OK') AND $dir = explode('/', $fond) AND count($dir) == 2 /* pas un sous repertoire */ AND $dir = reset($dir) AND in_array($dir, $z_blocs) /* verifier deja qu'on est dans un bloc Z*/ AND in_array($dir, explode(',', constant($apl_constant))) /* et dans un demande en APL */ AND $pipe = zcore_trouver_bloc($prefix_path . $prepend, $dir, 'z_apl', $ext) /* et qui contient le squelette APL */) {
$flux['data'] = $pipe;
return $flux;
}
// surcharger aussi les squelettes venant de squelettes-dist/
if ($squelette AND !zcore_fond_valide($squelette)){
/* surcharger aussi les squelettes venant de squelettes-dist/ */
if ($squelette AND !zcore_fond_valide($squelette)) {
$squelette = "";
$echafauder = "";
$echafauder = "";
}
if ($prepend) {
$squelette = substr(find_in_path($prefix_path . $prepend . "$fond.$ext"), 0, -strlen(".$ext"));
if ($squelette) {
$flux['data'] = $squelette;
}
}
if ($prepend){
$squelette = substr(find_in_path($prefix_path.$prepend."$fond.$ext"), 0, - strlen(".$ext"));
if ($squelette)
$flux['data'] = $squelette;
}
// gerer les squelettes non trouves
// -> router vers les /dist.html
// ou scaffolding ou page automatique les contenus
if (!$squelette){
/* gerer les squelettes non trouves
* -> router vers les /dist.html
* ou scaffolding ou page automatique les contenus
*/
if (!$squelette) {
// si on est sur un ?page=XX non trouve
if ($flux['args']['contexte'][$page] == $fond
OR $flux['args']['contexte']['type'] == $fond
OR ($fond=='sommaire' AND !$flux['args']['contexte'][$page])) {
// si on est sur un ?page=XX non trouve
// se brancher sur contenu/xx si il existe
// ou si c'est un objet spip, associe a une table, utiliser le fond homonyme
if (!isset($disponible[$fond]))
$disponible[$fond] = zcore_contenu_disponible($prefix_path.$prepend,$z_contenu,$fond,$ext,$echafauder);
if ($disponible[$fond])
$flux['data'] = substr(find_in_path($prefix_path."page.$ext"), 0, - strlen(".$ext"));
}
if ($flux['args']['contexte'][$page] == $fond OR $flux['args']['contexte']['type'] == $fond OR ($fond == 'sommaire' AND !$flux['args']['contexte'][$page])) {
/* si on est sur un ?page=XX non trouve
* se brancher sur contenu/xx si il existe
* ou si c'est un objet spip, associe a une table, utiliser le fond homonyme
*/
if (!isset($disponible[$fond])) {
$disponible[$fond] = zcore_contenu_disponible($prefix_path . $prepend, $z_contenu, $fond, $ext, $echafauder);
}
// echafaudage :
// si c'est un fond de contenu d'un objet en base
// generer un fond automatique a la volee pour les webmestres
elseif (strncmp($fond, "$z_contenu/", strlen($z_contenu)+1)==0
AND include_spip('inc/autoriser')
AND isset($GLOBALS['visiteur_session']['statut']) // performance
AND autoriser('webmestre')){
$type = substr($fond,strlen($z_contenu)+1);
if (!isset($disponible[$type]))
$disponible[$type] = zcore_contenu_disponible($prefix_path.$prepend,$z_contenu,$type,$ext,$echafauder);
if (is_string($disponible[$type]))
if ($disponible[$fond]) {
$flux['data'] = substr(find_in_path($prefix_path . "page.$ext"), 0, -strlen(".$ext"));
}
} /* echafaudage :
* si c'est un fond de contenu d'un objet en base
* generer un fond automatique a la volee pour les webmestres
*/ elseif (strncmp($fond, "$z_contenu/", strlen($z_contenu) + 1) == 0 AND include_spip('inc/autoriser') AND isset($GLOBALS['visiteur_session']['statut']) /* performance */ AND autoriser('webmestre')) {
$type = substr($fond, strlen($z_contenu) + 1);
if (!isset($disponible[$type])) {
$disponible[$type] = zcore_contenu_disponible($prefix_path . $prepend, $z_contenu, $type, $ext, $echafauder);
}
if (is_string($disponible[$type])) {
$flux['data'] = $disponible[$type];
elseif ($echafauder
AND $is = $disponible[$type]
AND is_array($is))
$flux['data'] = $echafauder($type,$is[0],$is[1],$is[2],$ext);
}
// sinon, si on demande un fond non trouve dans un des autres blocs
// et si il y a bien un contenu correspondant ou echafaudable
// se rabbatre sur le dist.html du bloc concerne
else{
if ( $dir = explode('/',$fond)
AND $dir = reset($dir)
AND $dir !== $z_contenu
AND in_array($dir,$z_blocs)){
$type = substr($fond,strlen("$dir/"));
if ($type!=='page' AND !isset($disponible[$type]))
$disponible[$type] = zcore_contenu_disponible($prefix_path.$prepend,$z_contenu,$type,$ext,$echafauder);
if ($type=='page' OR $disponible[$type])
$flux['data'] = zcore_trouver_bloc($prefix_path.$prepend,$dir,'dist',$ext);
} elseif ($echafauder AND $is = $disponible[$type] AND is_array($is)) {
$flux['data'] = $echafauder($type, $is[0], $is[1], $is[2], $ext);
}
} /* sinon, si on demande un fond non trouve dans un des autres blocs
* et si il y a bien un contenu correspondant ou echafaudable
* se rabbatre sur le dist.html du bloc concerne
*/ else {
if ($dir = explode('/', $fond) AND $dir = reset($dir) AND $dir !== $z_contenu AND in_array($dir, $z_blocs)) {
$type = substr($fond, strlen("$dir/"));
if ($type !== 'page' AND !isset($disponible[$type])) {
$disponible[$type] = zcore_contenu_disponible($prefix_path . $prepend, $z_contenu, $type, $ext, $echafauder);
}
if ($type == 'page' OR $disponible[$type]) {
$flux['data'] = zcore_trouver_bloc($prefix_path . $prepend, $dir, 'dist', $ext);
}
}
}
$squelette = $flux['data'];
}
// layout specifiques par type et compositions :
// body-article.html
// body-sommaire.html
// pour des raisons de perfo, les declinaisons doivent etre dans le
// meme dossier que body.html
if ($fond=='body' AND substr($squelette,-strlen($fond))==$fond){
if (isset($flux['args']['contexte']['type'])
AND (
(isset($flux['args']['contexte']['composition'])
AND file_exists(($f=$squelette."-".$flux['args']['contexte']['type']."-".$flux['args']['contexte']['composition']).".$ext"))
OR
file_exists(($f=$squelette."-".$flux['args']['contexte']['type']).".$ext")
))
/* layout specifiques par type et compositions :
* body-article.html
* body-sommaire.html
* pour des raisons de perfo, les declinaisons doivent etre dans le
* meme dossier que body.html
*/
if ($fond == 'body' AND substr($squelette, -strlen($fond)) == $fond) {
if (isset($flux['args']['contexte']['type']) AND ((isset($flux['args']['contexte']['composition']) AND file_exists(($f = $squelette . "-" . $flux['args']['contexte']['type'] . "-" . $flux['args']['contexte']['composition']) . ".$ext")) OR file_exists(($f = $squelette . "-" . $flux['args']['contexte']['type']) . ".$ext"))) {
$flux['data'] = $f;
}
elseif ($fond=='structure'
AND _request('var_zajax')
AND $f = find_in_path($prefix_path.$prepend.'ajax'.".$ext")) {
$flux['data'] = substr($f,0,-strlen(".$ext"));
}
// chercher le fond correspondant a la composition
elseif (isset($flux['args']['contexte']['composition'])
AND (basename($fond)=='page' OR ($squelette AND substr($squelette,-strlen($fond))==$fond))
AND $dir = substr($fond,$prefix_length)
AND $dir = explode('/',$dir)
AND $dir = reset($dir)
AND in_array($dir,$z_blocs)
AND $f=find_in_path($prefix_path.$prepend.$fond."-".$flux['args']['contexte']['composition'].".$ext")){
$flux['data'] = substr($f,0,-strlen(".$ext"));
}
} elseif ($fond == 'structure' AND _request('var_zajax') AND $f = find_in_path($prefix_path . $prepend . 'ajax' . ".$ext")) {
$flux['data'] = substr($f, 0, -strlen(".$ext"));
} /* chercher le fond correspondant a la composition */ elseif (isset($flux['args']['contexte']['composition']) AND (basename($fond) == 'page' OR ($squelette AND substr($squelette, -strlen($fond)) == $fond)) AND $dir = substr($fond, $prefix_length) AND $dir = explode('/', $dir) AND $dir = reset($dir) AND in_array($dir, $z_blocs) AND $f = find_in_path($prefix_path . $prepend . $fond . "-" . $flux['args']['contexte']['composition'] . ".$ext")) {
$flux['data'] = substr($f, 0, -strlen(".$ext"));
}
}
return $flux;
}
@ -174,12 +150,22 @@ function public_styliser_par_z_dist($flux){
* Lister les blocs de la page selon le contexte prive/public
*
* @param bool $espace_prive
*
* @return array
*/
function zcore_blocs($espace_prive=false) {
if ($espace_prive)
return (isset($GLOBALS['z_blocs_ecrire'])?$GLOBALS['z_blocs_ecrire']:array('contenu','navigation','extra','head','hierarchie','top'));
return (isset($GLOBALS['z_blocs'])?$GLOBALS['z_blocs']:array('content'));
function zcore_blocs($espace_prive = false) {
if ($espace_prive) {
return (isset($GLOBALS['z_blocs_ecrire']) ? $GLOBALS['z_blocs_ecrire'] : array(
'contenu',
'navigation',
'extra',
'head',
'hierarchie',
'top',
));
}
return (isset($GLOBALS['z_blocs']) ? $GLOBALS['z_blocs'] : array('content'));
}
/**
@ -190,19 +176,23 @@ function zcore_blocs($espace_prive=false) {
* @param string $z_contenu
* @param string $type
* @param string $ext
*
* @return mixed
*/
function zcore_contenu_disponible($prefix_path,$z_contenu,$type,$ext,$echafauder=true){
if ($d = zcore_trouver_bloc($prefix_path,$z_contenu,$type,$ext))
function zcore_contenu_disponible($prefix_path, $z_contenu, $type, $ext, $echafauder = true) {
if ($d = zcore_trouver_bloc($prefix_path, $z_contenu, $type, $ext)) {
return $d;
return $echafauder?zcore_echafaudable($type):false;
}
return $echafauder ? zcore_echafaudable($type) : false;
}
function zcore_fond_valide($squelette){
if (!_ZCORE_EXCLURE_PATH
OR !preg_match(',('._ZCORE_EXCLURE_PATH.')/,',$squelette))
function zcore_fond_valide($squelette) {
if (!_ZCORE_EXCLURE_PATH OR !preg_match(',(' . _ZCORE_EXCLURE_PATH . ')/,', $squelette)) {
return true;
return false;
}
return false;
}
/**
@ -212,48 +202,47 @@ function zcore_fond_valide($squelette){
* contenu/contenu.article.html
*
* @param string $prefix_path
* chemin de base qui prefixe la recherche
* chemin de base qui prefixe la recherche
* @param string $bloc
* nom du bloc cherche
* nom du bloc cherche
* @param string $fond
* nom de la page (ou 'dist' pour le bloc par defaut)
* nom de la page (ou 'dist' pour le bloc par defaut)
* @param <type> $ext
* extension du squelette
* extension du squelette
*
* @return string
*/
function zcore_trouver_bloc($prefix_path,$bloc,$fond,$ext){
if (
($f = find_in_path("$prefix_path$bloc/$bloc.$fond.$ext") AND zcore_fond_valide($f))
OR ($f = find_in_path("$prefix_path$bloc/$fond.$ext") AND zcore_fond_valide($f))
){
return substr($f, 0, - strlen(".$ext"));
function zcore_trouver_bloc($prefix_path, $bloc, $fond, $ext) {
if (($f = find_in_path("$prefix_path$bloc/$bloc.$fond.$ext") AND zcore_fond_valide($f)) OR ($f = find_in_path("$prefix_path$bloc/$fond.$ext") AND zcore_fond_valide($f))) {
return substr($f, 0, -strlen(".$ext"));
}
return "";
}
/**
* Tester si un type est echafaudable
* cad si il correspond bien a un objet en base
*
* @staticvar array $echafaudable
*
* @param string $type
*
* @return bool
*/
function zcore_echafaudable($type){
function zcore_echafaudable($type) {
static $echafaudable = array();
if (isset($echafaudable[$type]))
if (isset($echafaudable[$type])) {
return $echafaudable[$type];
if (preg_match(',[^\w],',$type))
}
if (preg_match(',[^\w],', $type)) {
return $echafaudable[$type] = false;
if ($table = table_objet($type)
AND $type == objet_type($table)
AND $trouver_table = charger_fonction('trouver_table','base')
AND
($desc = $trouver_table($table)
OR $desc = $trouver_table($table_sql = "spip_$table"))
)
return $echafaudable[$type] = array($table,$desc['table'],$desc);
else
}
if ($table = table_objet($type) AND $type == objet_type($table) AND $trouver_table = charger_fonction('trouver_table', 'base') AND ($desc = $trouver_table($table) OR $desc = $trouver_table($table_sql = "spip_$table"))) {
return $echafaudable[$type] = array($table, $desc['table'], $desc);
} else {
return $echafaudable[$type] = false;
}
}
?>

55
public/echafauder.php

@ -6,58 +6,61 @@
*
*/
/**
* Generer a la volee un fond a partir d'une table de contenu
*
* @param string $type
* @param string $table
* @param string $table_sql
* @param array $desc
* @param array $desc
* @param string $ext
*
* @return string
*/
function public_echafauder_dist($type,$table,$table_sql,$desc,$ext){
function public_echafauder_dist($type, $table, $table_sql, $desc, $ext) {
include_spip('public/interfaces');
$primary = id_table_objet($type);
if (!$primary AND isset($desc['key']["PRIMARY KEY"])){
if (!$primary AND isset($desc['key']["PRIMARY KEY"])) {
$primary = $desc['key']["PRIMARY KEY"];
}
// reperer un titre
/* reperer un titre */
$titre = 'titre';
if (isset($GLOBALS['table_titre'][$table])){
$titre = explode(' ',$GLOBALS['table_titre'][$table]);
$titre = explode(',',reset($titre));
if (isset($GLOBALS['table_titre'][$table])) {
$titre = explode(' ', $GLOBALS['table_titre'][$table]);
$titre = explode(',', reset($titre));
$titre = reset($titre);
}
if (isset($desc['field'][$titre])){
if (isset($desc['field'][$titre])) {
unset($desc['field'][$titre]);
$titre="<h1 class='h1 #EDIT{titre}'>#".strtoupper($titre)."</h1>";
$titre = "<h1 class='h1 #EDIT{titre}'>#" . strtoupper($titre) . "</h1>";
} else {
$titre = "";
}
else $titre="";
// reperer une date
/* reperer une date */
$date = "date";
if (isset($GLOBALS['table_date'][$table]))
if (isset($GLOBALS['table_date'][$table])) {
$date = $GLOBALS['table_date'][$table];
if (isset($desc['field'][$date])){
}
if (isset($desc['field'][$date])) {
unset($desc['field'][$date]);
$date = strtoupper($date);
$date="<p class='info-publi'>[(#$date|nom_jour) ][(#$date|affdate)][, <span class='auteurs'><:par_auteur:> (#LESAUTEURS)</span>]</p>";
$date = "<p class='info-publi'>[(#$date|nom_jour) ][(#$date|affdate)][, <span class='auteurs'><:par_auteur:> (#LESAUTEURS)</span>]</p>";
} else {
$date = "";
}
else $date = "";
$content = array();
foreach($desc['field'] as $champ=>$z){
if (!in_array($champ,array('maj','statut','idx',$primary))){
$content[] = "[<div><strong>$champ</strong><div class='#EDIT{".$champ."} $champ'>(#".strtoupper($champ)."|image_reduire{500,0})</div></div>]";
foreach ($desc['field'] as $champ => $z) {
if (!in_array($champ, array('maj', 'statut', 'idx', $primary))) {
$content[] = "[<div><strong>$champ</strong><div class='#EDIT{" . $champ . "} $champ'>(#" . strtoupper($champ) . "|image_reduire{500,0})</div></div>]";
}
}
$content = implode("\n\t",$content);
$content = implode("\n\t", $content);
$scaffold = "#CACHE{0}
<BOUCLE_contenu($table_sql){".$primary."}>
<BOUCLE_contenu($table_sql){" . $primary . "}>
[(#REM) Fil d'Ariane ]
<p id='hierarchie'><a href='#URL_SITE_SPIP/'><:accueil_site:></a>[ &gt; <strong class='on'>(#TITRE|couper{80})</strong>]</p>
@ -74,12 +77,12 @@ function public_echafauder_dist($type,$table,$table_sql,$desc,$ext){
[<div class='notes surlignable'><h2 class='h2 pas_surlignable'><:info_notes:></h2>(#NOTES)</div>]
</BOUCLE_contenu>";
$dir = sous_repertoire(_DIR_CACHE,"scaffold",false);
$dir = sous_repertoire($dir,"contenu",false);
$f = $dir."$type";
ecrire_fichier("$f.$ext",$scaffold);
$dir = sous_repertoire(_DIR_CACHE, "scaffold", false);
$dir = sous_repertoire($dir, "contenu", false);
$f = $dir . "$type";
ecrire_fichier("$f.$ext", $scaffold);
return $f;
}
?>

73
zcore_options.php

@ -7,24 +7,22 @@
*/
// demander a SPIP de definir 'type-page' dans le contexte du premier squelette
define('_DEFINIR_CONTEXTE_TYPE_PAGE',true);
define('_ZPIP',true);
define('_DEFINIR_CONTEXTE_TYPE_PAGE', true);
define('_ZPIP', true);
// differencier le cache,
// la verification de credibilite de var_zajax sera faite dans public_styliser_dist
// mais ici on s'assure que la variable ne permet pas de faire une inclusion arbitraire
// avec un . ou un /
if ($z = _request('var_zajax')
AND !preg_match(",[^\w-],",$z)) {
if ($z = _request('var_zajax') AND !preg_match(",[^\w-],", $z)) {
if (!isset($GLOBALS['marqueur'])) {
$GLOBALS['marqueur'] = "$z:";
} else {
$GLOBALS['marqueur'] .= "$z:";
}
$GLOBALS['flag_preserver'] = true;
}
else {
} else {
// supprimer cette variable dangereuse
set_request('var_zajax','');
set_request('var_zajax', '');
}
/**
@ -33,13 +31,17 @@ else {
*
* @param string $path
* @param string $base
*
* @return string
*/
function url_absolue_si($path, $base='') {
if (!$path) return "";
if (!function_exists('url_absolue')){
function url_absolue_si($path, $base = '') {
if (!$path) {
return "";
}
if (!function_exists('url_absolue')) {
include_spip('inc/filtres_mini');
}
return url_absolue($path, $base);
}
@ -65,34 +67,39 @@ function url_absolue_si($path, $base='') {
* .spip_logos {max-width:25%;float:right}
*
* @param $logo
*
* @return string
*/
function responsive_logo($logo){
if (!function_exists('extraire_balise'))
function responsive_logo($logo) {
if (!function_exists('extraire_balise')) {
include_spip('inc/filtres');
if (!$logo
OR !$img = extraire_balise($logo,"img"))
}
if (!$logo OR !$img = extraire_balise($logo, "img")) {
return $logo;
list($h,$w) = taille_image($img);
$src = extraire_attribut($img,"src");
$class = extraire_attribut($img,"class");
}
list($h, $w) = taille_image($img);
$src = extraire_attribut($img, "src");
$class = extraire_attribut($img, "class");
// timestamper l'url si pas deja fait
if (strpos($src,"?")==false)
if (strpos($src, "?") == false) {
$src = timestamp($src);
}
if (defined('_STATIC_IMAGES_DOMAIN'))
$src = url_absolue($src,_STATIC_IMAGES_DOMAIN);
if (defined('_STATIC_IMAGES_DOMAIN')) {
$src = url_absolue($src, _STATIC_IMAGES_DOMAIN);
}
$hover = "";
if ($hover_on = extraire_attribut($img,"onmouseover")){
$hover_off = extraire_attribut($img,"onmouseout");
$hover_on = str_replace("this.src=","jQuery(this).css('background-image','url('+",$hover_on)."+')')";
$hover_off = str_replace("this.src=","jQuery(this).css('background-image','url('+",$hover_off)."+')')";
if ($hover_on = extraire_attribut($img, "onmouseover")) {
$hover_off = extraire_attribut($img, "onmouseout");
$hover_on = str_replace("this.src=", "jQuery(this).css('background-image','url('+", $hover_on) . "+')')";
$hover_off = str_replace("this.src=", "jQuery(this).css('background-image','url('+", $hover_off) . "+')')";
$hover = " onmouseover=\"$hover_on\" onmouseout=\"$hover_off\"";
}
$ratio = round($h*100/$w,2);
$ratio = round($h * 100 / $w, 2);
return "<span class='$class' style=\"width:{$w}px;\"><span class=\"img\" style=\"display:block;position:relative;height:0;width:100%;padding-bottom:{$ratio}%;overflow:hidden;background:url($src) no-repeat center;background-size:100%;\"$hover> </span></span>";
}
@ -101,15 +108,19 @@ function responsive_logo($logo){
* par un simple [(#TEXTE|adaptive_images)]
* Avec le plugin adaptive_images cela produire des images adaptives
*/
if (!defined('_DIR_PLUGIN_ADAPTIVE_IMAGES')){
if (!defined('_DIR_PLUGIN_ADAPTIVE_IMAGES')) {
// les images 1x sont au maximum en _ADAPTIVE_IMAGES_MAX_WIDTH_1x px de large dans la page
if (!defined('_ADAPTIVE_IMAGES_MAX_WIDTH_1x')) define('_ADAPTIVE_IMAGES_MAX_WIDTH_1x',640);
if (!defined('_ADAPTIVE_IMAGES_MAX_WIDTH_1x')) {
define('_ADAPTIVE_IMAGES_MAX_WIDTH_1x', 640);
}
function adaptive_images($texte,$max_width_1x=_ADAPTIVE_IMAGES_MAX_WIDTH_1x){
if (!function_exists('filtrer'))
function adaptive_images($texte, $max_width_1x = _ADAPTIVE_IMAGES_MAX_WIDTH_1x) {
if (!function_exists('filtrer')) {
include_spip('inc/filtres');
$texte = filtrer('image_reduire',$texte,$max_width_1x,10000);
return filtrer('image_graver',$texte);
}
$texte = filtrer('image_reduire', $texte, $max_width_1x, 10000);
return filtrer('image_graver', $texte);
}
}

184
zcore_pipelines.php

@ -6,7 +6,9 @@
*
*/
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined("_ECRIRE_INC_VERSION")) {
return;
}
// definition des balises et filtres boites
include_spip('inc/filtres_boites');
@ -17,17 +19,12 @@ if (defined('_Z_AJAX_PARALLEL_LOAD')) {
// avec une meta refresh sur self()+var_zapl=non
// ainsi, les clients sans javascript rechargent la page,
// se voient poser un cookie, et voient ensuite le site sans APL
if (_request('var_zapl')=='non') {
if (_request('var_zapl') == 'non') {
include_spip('inc/cookie');
spip_setcookie('no_zapl',$_COOKIE['no_zapl']='no_zapl');
spip_setcookie('no_zapl', $_COOKIE['no_zapl'] = 'no_zapl');
}
if (!isset($_COOKIE['no_zapl'])
AND !_IS_BOT
AND !_request('var_zajax')
AND _request('var_mode')!=="debug"
AND $_SERVER['REQUEST_METHOD'] == 'GET'
) {
define('_Z_AJAX_PARALLEL_LOAD_OK',true);
if (!isset($_COOKIE['no_zapl']) AND !_IS_BOT AND !_request('var_zajax') AND _request('var_mode') !== "debug" AND $_SERVER['REQUEST_METHOD'] == 'GET') {
define('_Z_AJAX_PARALLEL_LOAD_OK', true);
$GLOBALS['marqueur'] .= ":Zapl";
}
}
@ -35,10 +32,12 @@ if (defined('_Z_AJAX_PARALLEL_LOAD')) {
/**
* Inutilise mais permet le chargement de ce fichier avant le decodage des urls
* et l'utilisation de _DEFINIR_CONTEXTE_TYPE
* @param <type> $flux
*
* @param <type> $flux
*
* @return <type>
*/
function zcore_declarer_url_objets($flux){
function zcore_declarer_url_objets($flux) {
return $flux;
}
@ -46,15 +45,16 @@ function zcore_declarer_url_objets($flux){
* Fonction Page automatique a partir de contenu/page-xx
*
* @param array $flux
*
* @return array
*/
function zcore_styliser($flux){
function zcore_styliser($flux) {
// dans les futures versions de SPIP on pourra faire simplement un define('_ZPIP',true);
if (!test_espace_prive() AND !defined('_ZCORE_EXCLURE_PATH')) {
$styliser_par_z = charger_fonction('styliser_par_z','public');
$styliser_par_z = charger_fonction('styliser_par_z', 'public');
$flux = $styliser_par_z($flux);
}
return $flux;
}
@ -67,20 +67,21 @@ function zcore_styliser($flux){
* (attention a ce que la page 404 ait bien un de ces blocs non vide pour eviter une boucle infinie)
*
* @param array $flux
*
* @return array
*/
function zcore_recuperer_fond($flux){
static $empty_count=0,$is_404 = false;
static $z_blocs_404,$z_blocs_404_nlength,$z_blocs_404_ncount;
function zcore_recuperer_fond($flux) {
static $empty_count = 0, $is_404 = false;
static $z_blocs_404, $z_blocs_404_nlength, $z_blocs_404_ncount;
if ($is_404){
if ($flux['args']['fond']==="structure"){
if ($is_404) {
if ($flux['args']['fond'] === "structure") {
$is_404 = false; // pas de risque de reentrance
$code = "404 Not Found";
$contexte_inclus = array(
'erreur' => "",
'code' => $code,
'lang' => $GLOBALS['spip_lang']
'lang' => $GLOBALS['spip_lang'],
);
$flux['data'] = evaluer_fond('404', $contexte_inclus);
@ -89,26 +90,24 @@ function zcore_recuperer_fond($flux){
include_spip("inc/headers");
http_status(intval($code));
}
}
elseif (!test_espace_prive()){
} elseif (!test_espace_prive()) {
if (!isset($z_blocs_404)) {
if (isset($GLOBALS['z_blocs_404'])){
if (isset($GLOBALS['z_blocs_404'])) {
$z_blocs_404 = $GLOBALS['z_blocs_404'];
if (is_array($z_blocs_404) AND count($z_blocs_404)==1) {
if (is_array($z_blocs_404) AND count($z_blocs_404) == 1) {
$z_blocs_404 = reset($z_blocs_404);
}
}
else {
if (!function_exists("z_blocs"))
$styliser_par_z = charger_fonction('styliser_par_z','public');
} else {
if (!function_exists("z_blocs")) {
$styliser_par_z = charger_fonction('styliser_par_z', 'public');
}
$z_blocs = z_blocs(test_espace_prive());
$z_blocs_404 = reset($z_blocs); // contenu par defaut
}
if (is_array($z_blocs_404)) {
$z_blocs_404_ncount = count($z_blocs_404);
$z_blocs_404_nlength = array_map('strlen',$z_blocs_404);
}
else {
$z_blocs_404_nlength = array_map('strlen', $z_blocs_404);
} else {
$z_blocs_404_ncount = 1;
$z_blocs_404_nlength = strlen($z_blocs_404);
}
@ -118,54 +117,50 @@ function zcore_recuperer_fond($flux){
// le fond commende par nomdudossier/
// le fond n'a pas de / suppelementaires (on est au bon niveau)
$quick_match = false;
if (strpos($fond,"/")!==false AND $z_blocs_404_ncount){
if ($z_blocs_404_ncount==1)
$quick_match = (
strncmp($fond,"$z_blocs_404/",$z_blocs_404_nlength+1)===0
AND strpos($fond,"/",$z_blocs_404_nlength+1)===false);
else {
foreach($z_blocs_404 as $k=>$zb)
if (strncmp($fond,"$zb/",$z_blocs_404_nlength[$k]+1)===0
AND strpos($fond,"/",$z_blocs_404_nlength[$k]+1)===false){
if (strpos($fond, "/") !== false AND $z_blocs_404_ncount) {
if ($z_blocs_404_ncount == 1) {
$quick_match = (strncmp($fond, "$z_blocs_404/", $z_blocs_404_nlength + 1) === 0 AND strpos($fond, "/", $z_blocs_404_nlength + 1) === false);
} else {
foreach ($z_blocs_404 as $k => $zb) {
if (strncmp($fond, "$zb/", $z_blocs_404_nlength[$k] + 1) === 0 AND strpos($fond, "/", $z_blocs_404_nlength[$k] + 1) === false) {
$quick_match = true;
break;
}
}
}
}
if ($quick_match
AND !strlen(trim($flux['data']['texte']))
){
if ($quick_match AND !strlen(trim($flux['data']['texte']))) {
$empty_count++;
if ($empty_count>=$z_blocs_404_ncount)
if ($empty_count >= $z_blocs_404_ncount) {
$is_404 = true;
}
}
}
return $flux;
}
/**
* Surcharger les intertires avant que le core ne les utilise
* pour y mettre la class h3
* une seule fois suffit !
*
* @param string $flux
*
* @return string
*/
function zcore_pre_propre($flux){
/* static $init = false;
if (!$init){
$intertitre = $GLOBALS['debut_intertitre'];
$class = extraire_attribut($GLOBALS['debut_intertitre'],'class');
$class = ($class ? " $class":"");
$GLOBALS['debut_intertitre'] = inserer_attribut($GLOBALS['debut_intertitre'], 'class', "h3$class");
foreach($GLOBALS['spip_raccourcis_typo'] as $k=>$v){
$GLOBALS['spip_raccourcis_typo'][$k] = str_replace($intertitre,$GLOBALS['debut_intertitre'],$GLOBALS['spip_raccourcis_typo'][$k]);
}
$init = true;
}*/
function zcore_pre_propre($flux) {
/* static $init = false;
if (!$init){
$intertitre = $GLOBALS['debut_intertitre'];
$class = extraire_attribut($GLOBALS['debut_intertitre'],'class');
$class = ($class ? " $class":"");
$GLOBALS['debut_intertitre'] = inserer_attribut($GLOBALS['debut_intertitre'], 'class', "h3$class");
foreach($GLOBALS['spip_raccourcis_typo'] as $k=>$v){
$GLOBALS['spip_raccourcis_typo'][$k] = str_replace($intertitre,$GLOBALS['debut_intertitre'],$GLOBALS['spip_raccourcis_typo'][$k]);
}
$init = true;
}*/
return $flux;
}
@ -173,28 +168,32 @@ function zcore_pre_propre($flux){
* Ajouter le inc-insert-head du theme si il existe
*
* @param string $flux
*
* @return string
*/
function zcore_insert_head($flux){
if (find_in_path('inc-insert-head.html')){
$flux .= recuperer_fond('inc-insert-head',array());
function zcore_insert_head($flux) {
if (find_in_path('inc-insert-head.html')) {
$flux .= recuperer_fond('inc-insert-head', array());
}
return $flux;
}
/**
* Ajouter la definition du bloc contenu pour var_zajax
*
* @param string $flux
*
* @return string
*/
function zcore_insert_head_css($flux){
function zcore_insert_head_css($flux) {
include_spip('public/styliser_par_z');
$contenu = z_blocs(false);
$contenu = reset($contenu);
$flux = "<script type='text/javascript'>var var_zajax_content='$contenu';</script>" . $flux;
if (find_in_path('inc-insert-head-css.html')){
$flux .= recuperer_fond('inc-insert-head-css',array());
if (find_in_path('inc-insert-head-css.html')) {
$flux .= recuperer_fond('inc-insert-head-css', array());
}
return $flux;
@ -205,50 +204,51 @@ function zcore_insert_head_css($flux){
// mais retourne toujours dans un <p> comme propre
//
// http://doc.spip.org/@filtre_introduction_dist
if (!function_exists('filtre_introduction')){
function filtre_introduction($descriptif, $texte, $longueur, $connect) {
include_spip('public/composer');
$texte = filtre_introduction_dist($descriptif, $texte, $longueur, $connect);
if ($GLOBALS['toujours_paragrapher'] AND strpos($texte,"</p>")===FALSE)
// Fermer les paragraphes ; mais ne pas en creer si un seul
$texte = paragrapher($texte, $GLOBALS['toujours_paragrapher']);
if (!function_exists('filtre_introduction')) {
function filtre_introduction($descriptif, $texte, $longueur, $connect) {
include_spip('public/composer');
$texte = filtre_introduction_dist($descriptif, $texte, $longueur, $connect);
if ($GLOBALS['toujours_paragrapher'] AND strpos($texte, "</p>") === false) // Fermer les paragraphes ; mais ne pas en creer si un seul
{
$texte = paragrapher($texte, $GLOBALS['toujours_paragrapher']);
}
return $texte;
}
return $texte;
}
}
/**
* Tester la presence sur une page
* @param <type> $p
*
* @param <type> $p
*
* @return <type>
*/
if (!function_exists('balise_SI_PAGE_dist')){
function balise_SI_PAGE_dist($p) {
$_page = interprete_argument_balise(1,$p);
$p->code =
"((\n\t"
. "((\$zp=$_page) AND isset(\$Pile[0][_SPIP_PAGE]) AND (\$Pile[0][_SPIP_PAGE]==\$zp))\n\t"
. "OR (isset(\$Pile[0]['type-page']) AND \$Pile[0]['type-page']==\$zp)\n\t"
. "OR (isset(\$Pile[0]['composition']) AND \$Pile[0]['composition']==\$zp AND \$Pile[0]['type-page']=='page'))?' ':'')\n";
$p->interdire_scripts = false;
return $p;
}
if (!function_exists('balise_SI_PAGE_dist')) {
function balise_SI_PAGE_dist($p) {
$_page = interprete_argument_balise(1, $p);
$p->code = "((\n\t" . "((\$zp=$_page) AND isset(\$Pile[0][_SPIP_PAGE]) AND (\$Pile[0][_SPIP_PAGE]==\$zp))\n\t" . "OR (isset(\$Pile[0]['type-page']) AND \$Pile[0]['type-page']==\$zp)\n\t" . "OR (isset(\$Pile[0]['composition']) AND \$Pile[0]['composition']==\$zp AND \$Pile[0]['type-page']=='page'))?' ':'')\n";
$p->interdire_scripts = false;
return $p;
}
}
/**
/**
* balise #CSS
*
*
*/
function balise_CSS_dist($p) {
$_css = interprete_argument_balise(1,$p);
$_css = interprete_argument_balise(1, $p);
if (!$_css) {
$msg = array('zbug_balise_sans_argument', array('balise' => ' CSS'));
$msg = array('zbug_balise_sans_argument', array('balise' => ' CSS'));
erreur_squelette($msg, $p);
} else {
$p->code = "timestamp(direction_css(trouver_fond($_css)?produire_fond_statique($_css,array('format'=>'css')):find_in_path($_css)))";
}
$p->interdire_scripts = false;
return $p;
}

Loading…
Cancel
Save