'traiter_raccourcis(%s)', 'CHAPO' => 'traiter_raccourcis(nettoyer_chapo(%s))', 'DATE' => 'vider_date(%s)', 'DATE_MODIF' => 'vider_date(%s)', 'DATE_NOUVEAUTES' => 'vider_date(%s)', 'DATE_REDAC' => 'vider_date(%s)', 'DESCRIPTIF' => 'traiter_raccourcis(%s)', 'LIEN_TITRE' => 'typo(%s)', 'LIEN_URL' => 'htmlspecialchars(vider_url(%s))', 'MESSAGE' => 'traiter_raccourcis(%s)', 'NOM_SITE_SPIP' => 'typo(%s)', 'NOM_SITE' => 'typo(%s)', 'NOM' => 'typo(%s)', 'PARAMETRES_FORUM' => 'htmlspecialchars(lang_parametres_forum(%s))', 'PS' => 'traiter_raccourcis(%s)', 'SOUSTITRE' => 'typo(%s)', 'SURTITRE' => 'typo(%s)', 'TEXTE' => 'traiter_raccourcis(%s)', 'TITRE' => 'typo(%s)', 'TYPE' => 'typo(%s)', 'URL_ARTICLE' => 'htmlspecialchars(vider_url(%s))', 'URL_BREVE' => 'htmlspecialchars(vider_url(%s))', 'URL_DOCUMENT' => 'htmlspecialchars(vider_url(%s))', 'URL_FORUM' => 'htmlspecialchars(vider_url(%s))', 'URL_MOT' => 'htmlspecialchars(vider_url(%s))', 'URL_RUBRIQUE' => 'htmlspecialchars(vider_url(%s))', 'URL_SITE_SPIP' => 'htmlspecialchars(vider_url(%s))', 'URL_SITE' => 'htmlspecialchars(vider_url(%s))', 'URL_SYNDIC' => 'htmlspecialchars(vider_url(%s))', 'ENV' => 'entites_html(%s)' ); $ps = $traitements[$p->nom_champ]; if (!$ps) return $p->code; if ($p->descr['documents']) { $ps = str_replace('traiter_raccourcis(', 'traiter_raccourcis_doublon($doublons,', str_replace('typo(', 'typo_doublon($doublons,', $ps)); } // on supprime les < IMGnnn > tant qu'on ne rapatrie pas // les documents distants joints.. // il faudrait aussi corriger les raccourcis d'URL locales return str_replace('%s', (!$p->boucles[$p->id_boucle]->sql_serveur ? $p->code : ('supprime_img(' . $p->code . ')')), $ps); } // il faudrait savoir traiter les formulaires en local // tout en appelant le serveur SQL distant. // En attendant, cette fonction permet de refuser une authentification // sur qqch qui n'a rien a voir. function balise_distante_interdite($p) { $nom = $p->id_boucle; if ($p->boucles[$nom]->sql_serveur) { erreur_squelette($p->nom_champ .' '._T('zbug_distant_interdit'), $nom); } } // // Definition des balises // function balise_NOM_SITE_SPIP_dist($p) { $p->code = "lire_meta('nom_site')"; $p->statut = 'php'; return $p; } function balise_EMAIL_WEBMASTER_dist($p) { $p->code = "lire_meta('email_webmaster')"; $p->statut = 'php'; return $p; } function balise_CHARSET_dist($p) { $p->code = "lire_meta('charset')"; $p->statut = 'php'; return $p; } function balise_LANG_LEFT_dist($p) { $_lang = champ_sql('lang', $p); $p->code = "lang_dir(($_lang ? $_lang : \$GLOBALS['spip_lang']),'left','right')"; $p->statut = 'php'; return $p; } function balise_LANG_RIGHT_dist($p) { $_lang = champ_sql('lang', $p); $p->code = "lang_dir(($_lang ? $_lang : \$GLOBALS['spip_lang']),'right','left')"; $p->statut = 'php'; return $p; } function balise_LANG_DIR_dist($p) { $_lang = champ_sql('lang', $p); $p->code = "lang_dir(($_lang ? $_lang : \$GLOBALS['spip_lang']),'ltr','rtl')"; $p->statut = 'php'; return $p; } function balise_PUCE_dist($p) { $_lang = champ_sql('lang', $p); $p->code = "((lang_dir(($_lang ? $_lang : \$GLOBALS['spip_lang']),false,true) && \$GLOBALS['puce_rtl']) ? \$GLOBALS['puce_rtl'] : \$GLOBALS['puce'])"; $p->statut = 'php'; return $p; } // #DATE // Cette fonction sait aller chercher dans le contexte general // quand #DATE est en dehors des boucles // http://www.spip.net/fr_article1971.html function balise_DATE_dist ($p) { $_date = champ_sql('date', $p); $p->code = "$_date"; $p->statut = 'php'; return $p; } // #DATE_REDAC // http://www.spip.net/fr_article1971.html function balise_DATE_REDAC_dist ($p) { $_date = champ_sql('date_redac', $p); $p->code = "$_date"; $p->statut = 'php'; return $p; } // #DATE_MODIF // http://www.spip.net/fr_article1971.html function balise_DATE_MODIF_dist ($p) { $_date = champ_sql('date_modif', $p); $p->code = "$_date"; $p->statut = 'php'; return $p; } // #DATE_NOUVEAUTES // http://www.spip.net/fr_article1971.html function balise_DATE_NOUVEAUTES_dist($p) { $p->code = "((lire_meta('quoi_de_neuf') == 'oui' AND @file_exists(_DIR_SESSIONS . 'mail.lock')) ? normaliser_date(@filemtime(_DIR_SESSIONS . 'mail.lock')) : \"'0000-00-00'\")"; $p->statut = 'php'; return $p; } function balise_DOSSIER_SQUELETTE_dist($p) { $p->code = "'" . addslashes(dirname($p->descr['sourcefile'])) . "'" ; $p->statut = 'php'; return $p; } function balise_URL_SITE_SPIP_dist($p) { $p->code = "lire_meta('adresse_site')"; $p->statut = 'php'; return $p; } function balise_URL_ARTICLE_dist($p) { $_type = $p->type_requete; // Cas particulier des boucles (SYNDIC_ARTICLES) if ($_type == 'syndic_articles') { $p->code = champ_sql('url', $p); } // Cas general : chercher un id_article dans la pile else { $_id_article = champ_sql('id_article', $p); $p->code = "generer_url_article($_id_article)"; if ($p->boucles[$p->nom_boucle ? $p->nom_boucle : $p->id_boucle]->hash) $p->code = "url_var_recherche(" . $p->code . ")"; } $p->statut = 'html'; return $p; } function balise_URL_RUBRIQUE_dist($p) { $p->code = "generer_url_rubrique(" . champ_sql('id_rubrique',$p) . ")" ; if ($p->boucles[$p->nom_boucle ? $p->nom_boucle : $p->id_boucle]->hash) $p->code = "url_var_recherche(" . $p->code . ")"; $p->statut = 'html'; return $p; } function balise_URL_BREVE_dist($p) { $p->code = "generer_url_breve(" . champ_sql('id_breve',$p) . ")"; if ($p->boucles[$p->nom_boucle ? $p->nom_boucle : $p->id_boucle]->hash) $p->code = "url_var_recherche(" . $p->code . ")"; $p->statut = 'html'; return $p; } function balise_URL_MOT_dist($p) { $p->code = "generer_url_mot(" . champ_sql('id_mot',$p) . ")"; if ($p->boucles[$p->nom_boucle ? $p->nom_boucle : $p->id_boucle]->hash) $p->code = "url_var_recherche(" . $p->code . ")"; $p->statut = 'html'; return $p; } # remarque : URL_SITE ne figure pas ici car c'est une donnee 'brute' # correspondant a l'URL du site reference ; URL_SYNDIC correspond # pour sa part a l'adresse de son backend. # Il n'existe pas de balise pour afficher generer_url_site($id_syndic), # a part [(#ID_SYNDIC|generer_url_site)] function balise_URL_FORUM_dist($p) { $p->code = "generer_url_forum(" . champ_sql('id_forum',$p) .")"; if ($p->boucles[$p->nom_boucle ? $p->nom_boucle : $p->id_boucle]->hash) $p->code = "url_var_recherche(" . $p->code . ")"; $p->statut = 'html'; return $p; } function balise_URL_DOCUMENT_dist($p) { $p->code = "generer_url_document(" . champ_sql('id_document',$p) . ")"; $p->statut = 'html'; return $p; } function balise_URL_AUTEUR_dist($p) { $p->code = "generer_url_auteur(" . champ_sql('id_auteur',$p) .")"; if ($p->boucles[$p->nom_boucle ? $p->nom_boucle : $p->id_boucle]->hash) $p->code = "url_var_recherche(" . $p->code . ")"; $p->statut = 'html'; return $p; } function balise_NOTES_dist($p) { // Recuperer les notes $p->code = 'calculer_notes()'; $p->statut = 'html'; return $p; } // Qu'afficher en cas d'erreur 404 ? function balise_ERREUR_AUCUN_dist($p) { $p->code = '$Pile[0]["erreur_aucun"]'; $p->statut = 'php'; return $p; } function balise_RECHERCHE_dist($p) { $p->code = 'htmlspecialchars($GLOBALS["recherche"])'; $p->statut = 'php'; return $p; } function balise_COMPTEUR_BOUCLE_dist($p) { $b = $p->nom_boucle ? $p->nom_boucle : $p->descr['id_mere']; if ($b === '') { erreur_squelette( _T('zbug_champ_hors_boucle', array('champ' => '#COMPTEUR_BOUCLE') ), $p->id_boucle); $p->code = "''"; } else { $p->code = "\$Numrows['$b']['compteur_boucle']"; $p->statut = 'php'; return $p; } } function balise_TOTAL_BOUCLE_dist($p) { $b = $p->nom_boucle ? $p->nom_boucle : $p->descr['id_mere']; if ($b === '') { erreur_squelette( _T('zbug_champ_hors_boucle', array('champ' => '#TOTAL_BOUCLE') ), $p->id_boucle); $p->code = "''"; } else { $p->code = "\$Numrows['$b']['total']"; $p->boucles[$b]->numrows = true; $p->statut = 'php'; } return $p; } function balise_POINTS_dist($p) { return rindex_pile($p, 'points', 'recherche'); } function balise_POPULARITE_ABSOLUE_dist($p) { $p->code = 'ceil(' . champ_sql('popularite', $p) . ')'; $p->statut = 'php'; return $p; } function balise_POPULARITE_SITE_dist($p) { $p->code = 'ceil(lire_meta(\'popularite_total\'))'; $p->statut = 'php'; return $p; } function balise_POPULARITE_MAX_dist($p) { $p->code = 'ceil(lire_meta(\'popularite_max\'))'; $p->statut = 'php'; return $p; } function balise_EXPOSE_dist($p) { $on = "'on'"; $off= "''"; if ($p->param && !$p->param[0][0]) { $on = calculer_liste($p->param[0][1], $p->descr, $p->boucles, $p->id_boucle); $off = calculer_liste($p->param[0][2], $p->descr, $p->boucles, $p->id_boucle); // autres filtres array_shift($p->param); } return calculer_balise_expose($p, $on, $off); } // obsolete. utiliser la precedente function balise_EXPOSER_dist($p) { $on = "'on'"; $off= "''"; if ($a = ($p->fonctions)) { // Gerer la notation [(#EXPOSER|on,off)] $onoff = array_shift($a); ereg("([^,]*)(,(.*))?", $onoff[0], $regs); $on = "'" . addslashes($regs[1]) . "'"; $off = "'" . addslashes($regs[3]) . "'" ; // autres filtres array_shift($p->param); } return calculer_balise_expose($p, $on, $off); } function calculer_balise_expose($p, $on, $off) { global $table_primary; $type_boucle = $p->type_requete; $primary_key = $table_primary[$type_boucle]; if (!$primary_key) { erreur_squelette(_T('zbug_champ_hors_boucle', array('champ' => '#EXPOSER') ), $p->id_boucle); } $p->code = '(calcul_exposer(' .champ_sql($primary_key, $p) .", '$primary_key', \$Pile[0]) ? $on : $off)"; $p->statut = 'php'; return $p; } // // Inserer directement un document dans le squelette // function balise_EMBED_DOCUMENT_dist($p) { balise_distante_interdite($p); $_id_document = champ_sql('id_document',$p); $p->code = "calcule_embed_document(intval($_id_document), " . argumenter_balise($p->fonctions, "|") . ", \$doublons, '" . $p->descr['documents'] . "')"; $p->param = array(); $p->statut = 'html'; return $p; } // Debut et fin de surlignage auto des mots de la recherche // on insere une balise Span avec une classe sans spec: // c'est transparent s'il n'y a pas de recherche, // sinon elles seront remplacees par les fontions de inc_surligne function balise_DEBUT_SURLIGNE_dist($p) { include_ecrire('inc_surligne.php3'); $p->code = "'<" . MARQUEUR_SURLIGNE . "'"; return $p; } function balise_FIN_SURLIGNE_dist($p) { include_ecrire('inc_surligne.php3'); $p->code = "'<" . MARQUEUR_FSURLIGNE . "'"; return $p; } // #SPIP_CRON // a documenter // insere un