$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)) {
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
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
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"))
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"))) {
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')) {
. "((\$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";