/** * Demander à mettre à jour la base de données */ function exec_demande_mise_a_jour_dist() { // on fait la verif du path avant tout, // et l'installation des qu'on est dans la colonne principale // si jamais la liste des plugins actifs change, il faut faire un refresh du hit // pour etre sur que les bons fichiers seront charges lors de l'install include_spip('inc/plugin'); if (actualise_plugins_actifs()) { include_spip('inc/headers'); redirige_par_entete(self()); } include_spip('inc/presentation'); include_spip('inc/filtres_boites'); $commencer_page = charger_fonction('commencer_page', 'inc'); echo $commencer_page('', '', '', '', true, false, false); echo debut_grand_cadre(true); echo boite_ouvrir(_T('info_message_technique'), 'notice'); echo "<p>" . _T('info_procedure_maj_version') . "</p>", "<p>" . _T('info_administrateur_site_01') . "</p>"; echo bouton_action(_T('bouton_mettre_a_jour_base'), generer_url_ecrire("upgrade", "reinstall=non")); echo boite_fermer(); // masquer les erreurs sql sur cette page car proviennent de la base pas a jour ! echo '<style type="text/css">#debug-nav {display: none;}</style>'; echo fin_grand_cadre(true); echo fin_page(); }
/** * Inserer les infos d'agenda sur les articles et rubriques * * @param array $flux * @return array */ function agenda_affiche_milieu($flux) { $e = trouver_objet_exec($flux['args']['exec']); $out = ""; if ($e['type'] == 'rubrique' and autoriser('configurer') and $e['edition'] == false and $id_rubrique = intval($flux['args']['id_rubrique']) and autoriser('modifier', 'rubrique', $id_rubrique)) { $activer = true; $res = ""; $actif = sql_getfetsel('agenda', 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique)); $statut = "-32"; $alt = ""; $voir = ""; if (!sql_countsel('spip_rubriques', 'agenda=1')) { $res .= "<span class='small'>" . _T('agenda:aucune_rubrique_mode_agenda') . "</span><br />"; } else { include_spip('inc/rubriques'); if (sql_countsel('spip_rubriques', sql_in('id_rubrique', calcul_hierarchie_in($id_rubrique)) . " AND agenda=1 AND id_rubrique<>" . intval($id_rubrique))) { $alt = _T('agenda:rubrique_dans_une_rubrique_mode_agenda'); $activer = false; $statut = "-ok-32"; $voir = _T('agenda:voir_evenements_rubrique'); } elseif (!$actif) { $alt = _T('agenda:rubrique_sans_gestion_evenement') . '<br />'; $statut = "-non-32"; } if ($actif) { $alt = _T('agenda:rubrique_mode_agenda') . '<br />'; $statut = "-ok-32"; $voir = _T('agenda:voir_evenements_rubrique'); } } if (!$actif) { if ($activer) { $res .= bouton_action(_T('agenda:rubrique_activer_agenda'), generer_action_auteur('activer_agenda_rubrique', $id_rubrique, self()), 'ajax'); } } else { $res .= bouton_action(_T('agenda:rubrique_desactiver_agenda'), generer_action_auteur('activer_agenda_rubrique', "-{$id_rubrique}", self()), 'ajax'); } if ($voir) { $res .= " | <a href='" . generer_url_ecrire('evenements', "id_rubrique={$id_rubrique}") . "'>{$voir}</a>"; } if ($res) { $out .= boite_ouvrir(_T('agenda:agenda') . http_img_pack("agenda{$statut}.png", $alt, "class='statut'", $alt), 'simple agenda-statut') . $res . boite_fermer(); } } elseif ($e['type'] == 'article' and $e['edition'] == false) { $id_article = $flux['args']['id_article']; $out .= recuperer_fond('prive/objets/contenu/article-evenements', $flux['args']); } if ($out) { if ($p = strpos($flux['data'], '<!--affiche_milieu-->')) { $flux['data'] = substr_replace($flux['data'], $out, $p, 0); } else { $flux['data'] .= $out; } } return $flux; }
function profils_boite_infos($flux) { if ($flux['args']['type'] == 'auteur' and $id_auteur = $flux['args']['id'] and include_spip('inc/autoriser') and autoriser('webmestre')) { // on peut s'autologer a la place d'un visiteur if ($statut = sql_getfetsel("statut", "spip_auteurs", "id_auteur=" . intval($id_auteur) . " AND statut=" . sql_quote("6forum"))) { include_spip('inc/actions'); $bouton = bouton_action("Se connecter avec son compte", generer_action_auteur("usurper_profil", "{$id_auteur}", generer_url_public("profil", "", "", false))); $flux['data'] .= $bouton; } } return $flux; }
/** * Verifier un jeton si present, ou envoyer une page le produisant * @param string $logout * @param string $url * @param string $jeton * @return boolean */ function action_logout_secu($logout, $url, $jeton) { if ($jeton AND verifier_jeton_logout($jeton,$GLOBALS['visiteur_session'])) return true; $jeton = generer_jeton_logout($GLOBALS['visiteur_session']); $action = generer_url_action("logout","jeton=$jeton"); $action = parametre_url($action,'logout',$logout); $action = parametre_url($action,'url',$url); include_spip("inc/minipres"); include_spip("inc/filtres"); $texte = bouton_action(_T('spip:icone_deconnecter'),$action); $texte = "<div class='boutons'>$texte</div>"; $texte .= '<script type="text/javascript">document.write("<style>body{visibility:hidden;}</style>");window.document.forms[0].submit();</script>'; echo minipres(_T('spip:icone_deconnecter'),$texte,'',true); return false; }
/** * Se deloger * Pour eviter les CSRF on passe par une etape de confirmation si pas de jeton fourni * avec un autosubmit js pour ne pas compliquer l'experience utilisateur * * Déconnecte l'utilisateur en cours et le redirige sur l'URL indiquée par * l'argument de l'action sécurisée, et sinon sur la page d'accueil * de l'espace public. * */ function action_logout_dist() { $logout = _request('logout'); $url = securiser_redirect_action(_request('url')); // cas particulier, logout dans l'espace public if ($logout == 'public' and !$url) { $url = url_de_base(); } // seul le loge peut se deloger (mais id_auteur peut valoir 0 apres une restauration avortee) if (isset($GLOBALS['visiteur_session']['id_auteur']) and is_numeric($GLOBALS['visiteur_session']['id_auteur']) and isset($GLOBALS['visiteur_session']['statut'])) { // il faut un jeton pour fermer la session (eviter les CSRF) if (!($jeton = _request('jeton')) or !verifier_jeton_logout($jeton, $GLOBALS['visiteur_session'])) { $jeton = generer_jeton_logout($GLOBALS['visiteur_session']); $action = generer_url_action("logout", "jeton={$jeton}"); $action = parametre_url($action, 'logout', _request('logout')); $action = parametre_url($action, 'url', _request('url')); include_spip("inc/minipres"); include_spip("inc/filtres"); $texte = bouton_action(_T('spip:icone_deconnecter'), $action); $texte = "<div class='boutons'>{$texte}</div>"; $texte .= '<script type="text/javascript">document.write("<style>body{visibility:hidden;}</style>");window.document.forms[0].submit();</script>'; $res = minipres(_T('spip:icone_deconnecter'), $texte, '', true); echo $res; return; } include_spip('inc/auth'); auth_trace($GLOBALS['visiteur_session'], '0000-00-00 00:00:00'); // le logout explicite vaut destruction de toutes les sessions if (isset($_COOKIE['spip_session'])) { $session = charger_fonction('session', 'inc'); $session($GLOBALS['visiteur_session']['id_auteur']); spip_setcookie('spip_session', $_COOKIE['spip_session'], time() - 3600); } // si authentification http, et que la personne est loge, // pour se deconnecter, il faut proposer un nouveau formulaire de connexion http if (isset($_SERVER['PHP_AUTH_USER']) and !$GLOBALS['ignore_auth_http'] and $GLOBALS['auth_can_disconnect']) { ask_php_auth(_T('login_deconnexion_ok'), _T('login_verifiez_navigateur'), _T('login_retour_public'), "redirect=" . _DIR_RESTREINT_ABS, _T('login_test_navigateur'), true); } } // Rediriger en contrant le cache navigateur (Safari3) include_spip('inc/headers'); redirige_par_entete($url ? parametre_url($url, 'var_hasard', uniqid(rand()), '&') : generer_url_public('login')); }
function html_65c161fa3974dab7ff9b5b08fa07491e($Cache, $Pile, $doublons = array(), $Numrows = array(), $SP = 0) { if (isset($Pile[0]["doublons"]) and is_array($Pile[0]["doublons"])) { $doublons = nettoyer_env_doublons($Pile[0]["doublons"]); } $connect = ''; $page = ($t1 = strval(invalideur_session($Cache, (function_exists("autoriser") || include_spip("inc/autoriser")) && autoriser('configurer', '_admin_vider') ? " " : "" ? ' ' : ''))) !== '' ? $t1 . (' ' . boite_ouvrir(interdire_scripts(wrap(concat(filtre_balise_img_dist(chemin_image('image-24.png'), '', 'cadre-icone'), _T('info_images_auto')), '<h3>')), 'simple', 'titrem') . '<div id="placehoder_taille_cache_images"><p> <br /> <br /> <br /></p></div> <script type="text/javascript"> jQuery(function(){jQuery(\'#placehoder_taille_cache_images\').animateLoading().load(\'' . invalideur_session($Cache, replace(generer_action_auteur('calculer_taille_cache', 'images'), '&', '&')) . '\');}); </script> <noscript> <iframe src="' . invalideur_session($Cache, generer_action_auteur('calculer_taille_cache', 'images')) . '" style="width: 100%;height: 3em;overflow: hidden;"></iframe> </noscript> ' . boite_pied() . ' ' . bouton_action(_T('public|spip|ecrire:bouton_vider_cache'), invalideur_session($Cache, generer_action_auteur('purger', 'vignettes', invalideur_session($Cache, self()))), 'ajax') . ' ' . boite_fermer() . ' ') : ''; return analyse_resultat_skel('html_65c161fa3974dab7ff9b5b08fa07491e', $Cache, $page, '../prive/squelettes/inclure/admin_vider_images.html'); }
/** * Fonction de base pour une icone dans un squelette * structure html : <span><a><img><b>texte</b></span> * * @param string $type * 'lien' ou 'bouton' * @param string $lien * url * @param string $texte * texte du lien / alt de l'image * @param string $fond * objet avec ou sans son extension et sa taille (article, article-24, article-24.png) * @param string $fonction * new/del/edit * @param string $class * classe supplementaire (horizontale, verticale, ajax ...) * @param string $javascript * "onclick='...'" par exemple * @return string */ function prepare_icone_base($type, $lien, $texte, $fond, $fonction = "", $class = "", $javascript = "") { if (in_array($fonction, array("del", "supprimer.gif"))) { $class .= ' danger'; } elseif ($fonction == "rien.gif") { $fonction = ""; } elseif ($fonction == "delsafe") { $fonction = "del"; } // remappage des icone : article-24.png+new => article-new-24.png if ($icone_renommer = charger_fonction('icone_renommer', 'inc', true)) { list($fond, $fonction) = $icone_renommer($fond, $fonction); } // ajouter le type d'objet dans la class de l'icone $class .= " " . substr(basename($fond), 0, -4); $alt = attribut_html($texte); $title = " title=\"{$alt}\""; // est-ce pertinent de doubler le alt par un title ? $ajax = ""; if (strpos($class, "ajax") !== false) { $ajax = "ajax"; if (strpos($class, "preload") !== false) { $ajax .= " preload"; } if (strpos($class, "nocache") !== false) { $ajax .= " nocache"; } $ajax = " class='{$ajax}'"; } $size = 24; if (preg_match("/-([0-9]{1,3})[.](gif|png)\$/i", $fond, $match)) { $size = $match[1]; } if ($fonction) { // 2 images pour composer l'icone : le fond (article) en background, // la fonction (new) en image $icone = http_img_pack($fonction, $alt, "width='{$size}' height='{$size}'\n" . http_style_background($fond)); } else { $icone = http_img_pack($fond, $alt, "width='{$size}' height='{$size}'"); } if ($type == 'lien') { return "<span class='icone s{$size} {$class}'>" . "<a href='{$lien}'{$title}{$ajax}{$javascript}>" . $icone . "<b>{$texte}</b>" . "</a></span>\n"; } else { return bouton_action("{$icone}<b>{$texte}</b>", $lien, "icone s{$size} {$class}", $javascript, $alt); } }
function bouton_proposer_article($id_article,$statut_article){ $ret = ""; if ($statut_article=='prepa' AND $id_auteur = $GLOBALS["visiteur_session"]["id_auteur"] AND $GLOBALS["visiteur_session"]["statut"] == "1comite" AND autoriser('modifier', 'article', $id_article) AND sql_fetsel("id_article", "spip_auteurs_articles", "id_article=".intval($id_article)." AND id_auteur=".intval($id_auteur))) { $ret .= debut_cadre_relief("", true); $ret .= "<div class='verdana3' style='text-align: center;'>"; $ret .= "<div>"._T("texte_proposer_publication")."</div>"; $ret .= bouton_action(_T("bouton_demande_publication"), generer_action_auteur('instituer_article', "$id_article-prop", self()), '', _T('confirm_changer_statut')); $ret .= "</div>"; $ret .= fin_cadre_relief(true); } return $ret; }
function export_all_report_size($dest, $rub, $size, $retour) { global $spip_lang_left,$spip_lang_right; // ne pas effrayer inutilement: il peut y avoir moins de fichiers // qu'annonce' si certains etaient vides $n = _T('taille_octets', array('taille' => number_format($size, 0, ' ', ' '))); // cette chaine est a refaire car il y a double ambiguite: // - si plusieurs SPIP dans une base SQL (cf table_prefix) // - si on exporte seulement une rubrique # _T('info_sauvegarde_reussi_02', if ($rub) { $titre = sql_getfetsel('titre', 'spip_rubriques', "id_rubrique=$rub"); $titre = _T('info_sauvegarde_rubrique_reussi', array('archive' => ':<br /><b>'.joli_repertoire($dest)."</b> ($n)", 'titre' => "<b>$titre</b>")); } else $titre = _T('info_sauvegarde_reussi_02', array('archive' => ':<br /><b>'.joli_repertoire($dest)."</b> ($n)")); include_spip('inc/filtres'); return "<p style='text-align: $spip_lang_left'>". $titre . " <a href='" . $retour . "'>". _T('info_sauvegarde_reussi_03') . "</a> " ._T('info_sauvegarde_reussi_04') . "</p>\n" . "<div style='text-align: $spip_lang_right'>" . bouton_action(_T("retour"), $retour) . "</div>" ; }