Example #1
0
/**
 * 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();
}
Example #2
0
/**
 * 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;
}
Example #3
0
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;
}
Example #4
0
/**
 * 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;
}
Example #5
0
File: logout.php Project: JLuc/SPIP
/**
 * 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>&nbsp;<br />&nbsp;<br />&nbsp;<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'), '&amp;', '&')) . '\');});
	</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');
}
Example #7
0
/**
 * 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);
    }
}
Example #8
0
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;
}
Example #9
0
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>" ;
}