%k25u25%fgd5n!?%k25u25%fgd5n!%k25u25%fgd5n!?%k25u25%fgd5n!PK dR\baq q formulaire_ecrire_auteur.phpnu W+A 'FORMULAIRE_ECRIRE_AUTEUR',
'motif' => 'AUTEURS/ARTICLES'));
erreur_squelette($msg, $context_compil);
return '';
}
// Si on est dans un contexte article,
// sortir tous les mails des auteurs de l'article
if (!$args[0] AND $id) {
$r = '';
$s = sql_allfetsel('email',
'spip_auteurs AS A LEFT JOIN spip_auteurs_articles AS L ON A.id_auteur=L.id_auteur',
"A.email != '' AND L.id_article=$id");
foreach($s as $row) {
if (email_valide($row['email']))
$r .= ', '.$row['email'];
}
$args[2] = substr($r, 2);
}
// On ne peut pas ecrire a un auteur dont le mail n'est pas valide
if (!$args[2] OR !email_valide($args[2]))
return '';
// OK
return $args;
}
?>
PK dR\ST T formulaire_admin.phpnu W+A $v) {
if (strpos($v,'administration.') !== false)
return $debug['resultat'][$k . 'tout'];
}
return '';
}
}
include_spip('inc/autoriser');
include_spip('base/abstract_sql');
$dejafait = true;
// Preparer le #ENV des boutons
$env = admin_objet();
// Pas de "modifier ce..." ? -> donner "acces a l'espace prive"
if (!$env)
$env['ecrire'] = _DIR_RESTREINT_ABS;
$env['divclass'] = $float;
$env['lang'] = admin_lang();
$env['calcul'] = (_request('var_mode') ? 'recalcul' : 'calcul');
$env['debug'] = $var_preview ? "" : admin_debug();
$env['analyser'] = (!$env['debug'] AND !$GLOBALS['xhtml']) ? '' : admin_valider();
$env['inclure'] = ($GLOBALS['var_inclure']?'inclure':'');
if (!$use_cache)
$env['use_cache'] = ' *';
if (isset($debug['validation'])) {
$env['xhtml_error'] = $debug['validation'];
}
$env['_pipeline'] = 'formulaire_admin';
return array('formulaires/administration', 0, $env);
}
// Afficher le bouton 'Modifier ce...'
// s'il y a un $id_XXX defini globalement par spip_register_globals
// Attention a l'ordre dans la boucle:
// on ne veut pas la rubrique si un autre bouton est possible
// http://doc.spip.org/@admin_objet
function admin_objet()
{
include_spip('inc/urls');
$env = array();
foreach (array('mot','auteur','rubrique','breve','article','syndic'=>'site')
as $id => $obj) {
if (is_int($id)) $id = $obj;
$_id_type = id_table_objet($id);
if (isset($GLOBALS['contexte'][$_id_type]) AND $id_type = $GLOBALS['contexte'][$_id_type]) {
$id_type = sql_getfetsel($_id_type, table_objet_sql($id), "$_id_type=".intval($id_type));
if ($id_type) {
$env[$_id_type] = $id_type;
$env['objet'] = $id;
$env['id_objet'] = $id_type;
$g = 'generer_url_ecrire_'.$obj;
$env['voir_'.$obj] =
str_replace('&', '&', $g($id_type, '','', 'prop'));
if ($id == 'article' OR $id == 'breve') {
unset($env['id_rubrique']);
unset($env['voir_rubrique']);
if ($l = admin_stats($id, $id_type, $var_preview)) {
$env['visites'] = $l[0];
$env['popularite'] = $l[1];
$env['statistiques'] = $l[2];
}
if (admin_preview($id, $id_type))
$env['preview']=parametre_url(self(),'var_mode','preview','&');
}
}
}
}
return $env;
}
// http://doc.spip.org/@admin_preview
function admin_preview($id, $id_type)
{
if ($GLOBALS['var_preview']) return '';
if (!($id == 'article'
OR $id == 'breve'
OR $id == 'rubrique'
OR $id == 'syndic'))
return '';
include_spip('inc/autoriser');
if (!autoriser('previsualiser')) return '';
$notpub = sql_in("statut", array('prop', 'prive'));
if ($id == 'article' AND $GLOBALS['meta']['post_dates'] != 'oui')
$notpub .= " OR (statut='publie' AND date>".sql_quote(date('Y-m-d H:i:s')).")";
return sql_fetsel('1', table_objet_sql($id), id_table_objet($id)."=".$id_type." AND ($notpub)");
}
//
// Regler les boutons dans la langue de l'admin (sinon tant pis)
//
// http://doc.spip.org/@admin_lang
function admin_lang()
{
$alang = sql_getfetsel('lang', 'spip_auteurs', "login=" . sql_quote(preg_replace(',^@,','',@$_COOKIE['spip_admin'])));
if (!$alang) return '';
$l = lang_select($alang);
$alang = $GLOBALS['spip_lang'];
if ($l) lang_select();
return $alang;
}
// http://doc.spip.org/@admin_valider
function admin_valider()
{
global $xhtml;
return ((@$xhtml !== 'true') ?
(parametre_url(self(), 'var_mode', 'debug', '&')
.'&var_mode_affiche=validation') :
('http://validator.w3.org/check?uri='
. rawurlencode("http://" . $_SERVER['HTTP_HOST'] . nettoyer_uri())));
}
// http://doc.spip.org/@admin_debug
function admin_debug()
{
return ((
(isset($GLOBALS['forcer_debug']) AND $GLOBALS['forcer_debug'])
OR (isset($GLOBALS['bouton_admin_debug']) AND $GLOBALS['bouton_admin_debug'])
OR (
isset($GLOBALS['var_mode'])
AND $GLOBALS['var_mode'] == 'debug'
AND $_COOKIE['spip_debug']
)
) AND autoriser('debug')
)
? parametre_url(self(),'var_mode', 'debug', '&'): '';
}
// Tant que les stats ne sont pas passees dans une extension, il faut les traiter ici
// http://doc.spip.org/@admin_stats
function admin_stats($id, $id_type, $var_preview)
{
if ($GLOBALS['meta']["activer_statistiques"] != "non"
AND $id = 'article'
AND !$var_preview
AND autoriser('voirstats')
) {
$row = sql_fetsel("visites, popularite", "spip_articles", "id_article=$id_type AND statut='publie'");
if ($row) {
return array(intval($row['visites']),
ceil($row['popularite']),
str_replace('&', '&', generer_url_ecrire_statistiques($id_type)));
}
}
return false;
}
?>
PK dR\o+ login_public.phpnu W+A [(#LOGIN_PUBLIC{#SELF, #LOGIN})]
// http://doc.spip.org/@balise_LOGIN_PUBLIC_stat
function balise_LOGIN_PUBLIC_stat ($args, $context_compil) {
return array(isset($args[1]) ? $args[1] : $args[0], (isset($args[2]) ? $args[2] : ''));
}
// http://doc.spip.org/@balise_LOGIN_PUBLIC_dyn
function balise_LOGIN_PUBLIC_dyn($url, $login) {
include_spip('balise/formulaire_');
if (!$url # pas d'url passee en filtre ou dans le contexte
AND !$url = _request('url') # ni d'url passee par l'utilisateur
)
$url = parametre_url(self(), '', '', '&');
return balise_FORMULAIRE__dyn('login',$url,$login,false);
}
?>
PK dR\: : url_logout.phpnu W+A
PK dR\k logo_.phpnu W+A nom_champ, $regs);
$type = strtolower($regs[1]);
$suite_logo = $regs[2];
// cas de #LOGO_SITE_SPIP
if ($type == 'site_spip') {
$type = 'site';
$_id_objet = "\"'0'\"";
$id_objet = 'id_syndic'; # parait faux mais donne bien "siteNN"
} else {
$id_objet = "id_".$type;
if ($id_objet == 'id_site') $id_objet = "id_syndic"; # correction
$_id_objet = champ_sql($id_objet, $p);
}
$fichier = ($p->etoile === '**') ? -1 : 0;
$coord = array();
$align = $lien = '';
$mode_logo = '';
if ($p->param AND !$p->param[0][0]) {
$params = $p->param[0];
array_shift($params);
foreach($params as $a) {
if ($a[0]->type === 'texte') {
$n = $a[0]->texte;
if (is_numeric($n))
$coord[]= $n;
elseif (in_array($n,array('top','left','right','center','bottom')))
$align = $n;
elseif (in_array($n,array('auto','icone','apercu','vignette')))
$mode_logo = $n;
}
else $lien = calculer_liste($a, $p->descr, $p->boucles, $p->id_boucle);
}
}
$coord_x = !$coord ? 0 : intval(array_shift($coord));
$coord_y = !$coord ? 0 : intval(array_shift($coord));
if ($p->etoile === '*') {
include_spip('balise/url_');
$lien = generer_generer_url_arg($type, $p, $_id_objet);
}
$connect = $p->id_boucle ?$p->boucles[$p->id_boucle]->sql_serveur :'';
if ($type == 'document') {
$qconnect = _q($connect);
$doc = "quete_document($_id_objet, $qconnect)";
if ($fichier)
$code = "quete_logo_file($doc, $qconnect)";
else $code = "quete_logo_document($doc, " . ($lien ? $lien : "''") . ", '$align', '$mode_logo', $coord_x, $coord_y, $qconnect)";
// (x=non-faux ? y : '') pour affecter x en retournant y
if ($p->descr['documents'])
$code = '(($doublons["documents"] .= ",". '
. $_id_objet
. ") ? $code : '')";
}
elseif ($connect) {
$code = "''";
spip_log("Les logos distants ne sont pas prevus");
} else {
$code = logo_survol($id_objet, $_id_objet, $type, $align, $fichier, $lien, $p, $suite_logo);
}
// demande de reduction sur logo avec ecriture spip 2.1 : #LOGO_xxx{200, 0}
if ($coord_x OR $coord_y) {
$code = "filtrer('image_graver',filtrer('image_reduire',".$code.", '$coord_x', '$coord_y'))";
}
$p->code = $code;
$p->interdire_scripts = false;
return $p;
}
function logo_survol($id_objet, $_id_objet, $type, $align, $fichier, $lien, $p, $suite)
{
$code = "quete_logo('$id_objet', '" .
(($suite == '_SURVOL') ? 'off' :
(($suite == '_NORMAL') ? 'on' : 'ON')) .
"', $_id_objet," .
(($suite == '_RUBRIQUE') ?
champ_sql("id_rubrique", $p) :
(($type == 'rubrique') ? "quete_parent($_id_objet)" : "''")) .
", " . intval($fichier) . ")";
if ($fichier) return $code;
$code = "\n((!is_array(\$l = $code)) ? '':\n (" .
'"\'))';
if (!$lien) return $code;
return ('(strlen($logo='.$code.')?\'\' . $logo . \'\':\'\')');
}
?>
PK dR\=,9 9 formulaire_.phpnu W+A nom_champ)===FALSE) {
$p->code = "''";
$p->interdire_scripts = false;
return $p;
}
// sinon renvoyer un code php dnamique
return calculer_balise_dynamique($p, $p->nom_champ, array());
}
/* prendre en charge par defaut les balises dynamiques formulaires simples */
// http://doc.spip.org/@balise_FORMULAIRE__dyn
function balise_FORMULAIRE__dyn($form)
{
$form = existe_formulaire($form);
if (!$form) return '';
// deux moyen d'arriver ici :
// soit #FORMULAIRE_XX reroute avec 'FORMULAIRE_XX' ajoute en premier arg
// soit #FORMULAIRE_{xx}
// recuperer les arguments passes a la balise
// on enleve le premier qui est le nom de la balise
// deja recupere ci-dessus
$args = func_get_args();
array_shift($args);
$contexte = balise_FORMULAIRE__contexte($form, $args);
if (!is_array($contexte)) return $contexte;
return array("formulaires/$form", 3600, $contexte);
}
function balise_FORMULAIRE__contexte($form, $args)
{
// tester si ce formulaire vient d'etre poste (memes arguments)
// pour ne pas confondre 2 #FORMULAIRES_XX identiques sur une meme page
// si poste, on recupere les erreurs
$je_suis_poste = false;
if ($post_form = _request('formulaire_action')
AND $post_form == $form
AND $p = _request('formulaire_action_args')
AND is_array($p = decoder_contexte_ajax($p, $post_form))) {
// enlever le faux attribut de langue masque
array_shift($p);
if (formulaire__identifier($form, $args, $p))
$je_suis_poste = true;
}
$editable = true;
$erreurs = $post = array();
if ($je_suis_poste) {
$post = traiter_formulaires_dynamiques(true);
$e = "erreurs_$form";
$erreurs = isset($post[$e]) ? $post[$e] : array();
$editable = "editable_$form";
$editable = (!isset($post[$e]))
|| count($erreurs)
|| (isset($post[$editable]) && $post[$editable]);
}
$valeurs = formulaire__charger($form, $args, $je_suis_poste);
// si $valeurs n'est pas un tableau, le formulaire n'est pas applicable
// C'est plus fort qu'editable qui est gere par le squelette
// Idealement $valeur doit etre alors un message explicatif.
if (!is_array($valeurs)) return is_string($valeurs) ? $valeurs : '';
// charger peut passer une action si le formulaire ne tourne pas sur self()
// ou une action vide si elle ne sert pas
$action = (isset($valeurs['action'])) ? $valeurs['action'] : self('&', true);
// bug IEx : si action finit par /
// IE croit que le