コード例 #1
0
ファイル: demande_mise_a_jour.php プロジェクト: JLuc/SPIP
/**
 * 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();
}
コード例 #2
0
ファイル: editer_mot.php プロジェクト: rhertzog/lcs
function action_editer_mot_dist($arg=null)
{
	if (is_null($arg)){
		$securiser_action = charger_fonction('securiser_action', 'inc');
		$arg = $securiser_action();
	}
	$id_mot = intval($arg);

	$id_groupe = intval(_request('id_groupe'));
	if (!$id_mot AND $id_groupe) {
		$id_mot = sql_insertq("spip_mots", array('id_groupe' => $id_groupe));
	}

	// modifier le contenu via l'API
	include_spip('inc/modifier');

	$c = array();
	foreach (array(
		'titre', 'descriptif', 'texte', 'id_groupe'
	) as $champ)
		$c[$champ] = _request($champ);

	revision_mot($id_mot, $c);
	if ($redirect = _request('redirect')) {
		include_spip('inc/headers');
		redirige_par_entete(parametre_url(urldecode($redirect),
			'id_mot', $id_mot, '&'));
	} else
		return array($id_mot,'');
}
コード例 #3
0
ファイル: configurer.php プロジェクト: rhertzog/lcs
function action_configurer_dist() {
	
	$securiser_action = charger_fonction('securiser_action', 'inc');
	$arg = $securiser_action();

	# ceinture & bretelles, a priori le test dans exec_configurer
	# suffit a empecher d'obtenir un hash qui passe le test ci-dessus
	if(!autoriser('configurer', _request('configuration'))) {
		include_spip('inc/minipres');
		echo minipres(_T('info_acces_interdit'));
		exit;
	}


	$r = rawurldecode(_request('redirect'));
	$r = parametre_url($r, 'configuration', $arg,"&");
	appliquer_modifs_config();

	// Cette globale est fixee par appliquer_modifs_config();
	// c'est un message a afficher dans l'exec de retour (relayeur si comme ici on est en ajax)
	if ($arg == 'relayeur')
		$r = parametre_url($r, 'retour_proxy', $GLOBALS['retour_proxy'],"&");
	else if ($arg == 'langue') {
	  	include_spip('inc/rubriques');
		calculer_langues_rubriques();
	}
	if (_request('envoi_now')) cron(0, array('mail' => -1));
	redirige_par_entete($r);
}
コード例 #4
0
ファイル: logout.php プロジェクト: rhertzog/lcs
/**
 * Se deloger
 * Pour eviter les CSRF on passe par une etape de confirmation si pas de jeton,
 * avec un autosubmit js pour ne pas compliquer l'experience utilisateur
 *
 * http://doc.spip.org/@action_logout_dist
 *
 */
function action_logout_dist()
{
	$logout =_request('logout');
	$url = _request('url');
	// 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'])
	// des sessions anonymes avec id_auteur=0 existent,
	// mais elles n'ont pas de statut : verifier ca aussi
	AND isset($GLOBALS['visiteur_session']['statut'])) {
		// relancer si pas de jeton
		if (!action_logout_secu($logout, $url, _request('jeton'))) {
			return; // page submit retournee
		} elseif (isset($_COOKIE['spip_session'])) {
		// le logout explicite vaut destruction de toutes les sessions
			
			$session = charger_fonction('session', 'inc');
			$session($GLOBALS['visiteur_session']['id_auteur']);
			spip_setcookie('spip_session', $_COOKIE['spip_session'], time()-3600);
		}
		include_spip('inc/auth');
		auth_trace($GLOBALS['visiteur_session'],'0000-00-00 00:00:00');
	}
	// Action terminee (ou non faite si pas les droits) on redirige.
	// Cas particulier, logout dans l'espace public
	$url = securiser_redirect_action($url);
	if ($logout == 'public' AND !$url)
		$url = url_de_base();
	include_spip('inc/headers');
	redirige_par_entete($url
		// contrer le cache navigateur (Safari3)
		? parametre_url($url, 'var_hasard', uniqid(rand()), '&')
		: generer_url_public('login'));
}
コード例 #5
0
ファイル: autoriser.php プロジェクト: loorenzooo/aslfc
function action_autoriser_dist()
{
    $arg = intval(_request('arg'));
    if (!autoriser('voir', 'document', $arg) or !($row = sql_fetsel("fichier", "spip_documents", "id_document=" . intval($arg))) or !($file = $row['fichier']) or !file_exists($file)) {
        spip_log("Acces refuse (restreint) au document " . $arg . ': ' . $file);
        redirige_par_entete('./?page=404');
    } else {
        if (!function_exists('mime_content_type')) {
            // http://doc.spip.org/@mime_content_type
            function mime_content_type($f)
            {
                preg_match("/\\.(\\w+)/", $f, $r);
                return $r[1];
            }
        }
        $ct = mime_content_type($file);
        $cl = filesize($file);
        $filename = basename($file);
        header("Content-Type: " . $ct);
        header("Content-Disposition: attachment; filename=\"" . $filename . "\";");
        if ($dcc) {
            header("Content-Description: " . $dcc);
        }
        if ($cl) {
            header("Content-Length: " . $cl);
        }
        header("Content-Transfer-Encoding: binary");
        readfile($file);
    }
}
コード例 #6
0
ファイル: export_all.php プロジェクト: rhertzog/lcs
function exec_export_all_init($rub, $gz, $tables, $serveur='', $save=''){
	$meta = base_dump_meta_name($rub);
	utiliser_langue_visiteur();
	if (!isset($GLOBALS['meta'][$meta])){
		// c'est un demarrage en arrivee directe depuis exec=admin_tech
		// on initialise  (mais si c'est le validateur, ne rien faire)
		if ($GLOBALS['exec'] == 'valider_xml') return;
		$archive = exec_export_all_args($rub, $gz);
		$tables = export_all_start($meta, $archive, $rub, $tables);
		$v = array($gz, $archive, $rub, $tables, 1, 0, $serveur, $save);
		ecrire_meta($meta, serialize($v), 'non');
		// rub=$rub sert AUSSI a distinguer cette redirection
		// d'avec l'appel initial sinon FireFox croit malin
		// d'optimiser la redirection
		$url = generer_url_ecrire('export_all',"rub=$rub", true);
	} else {
		// appels suivants
		$export = charger_fonction('export', 'inc');
		$arg = $export($meta);
		// Si retour de $export c'est fini; dernier appel pour ramasser
		// et produire l'en tete du fichier a partir de l'espace public
		$url = generer_action_auteur("export_all",$arg,'',true, true, true);
	}
	include_spip('inc/headers');
	redirige_par_entete($url);
}
コード例 #7
0
ファイル: converser.php プロジェクト: rhertzog/lcs
function action_converser_dist()
{
	if ($lang = _request('var_lang'))
		action_converser_post($lang);
	elseif ($lang = _request('var_lang_ecrire')) {
		if ( _request('arg') AND spip_connect()) {
			$securiser_action = charger_fonction('securiser_action', 'inc');
			$securiser_action();

			sql_updateq("spip_auteurs", array("lang" => $lang), "id_auteur = " . $GLOBALS['visiteur_session']['id_auteur']);
			$GLOBALS['visiteur_session']['lang'] = $lang;
			$session = charger_fonction('session', 'inc');
			if ($spip_session = $session($GLOBALS['visiteur_session'])) {
				spip_setcookie(
					'spip_session',
					$spip_session,
					time() + 3600 * 24 * 14
				);
			}
		}
		action_converser_post($lang, 'spip_lang_ecrire');
	} 

	$redirect = rawurldecode(_request('redirect'));

	if (!$redirect) $redirect = _DIR_RESTREINT_ABS;
	$redirect = parametre_url($redirect,'lang',$lang,'&');
	redirige_par_entete($redirect, true);
}
コード例 #8
0
function action_referencer_traduction_dist() {
	
	$securiser_action = charger_fonction('securiser_action', 'inc');
	$arg = $securiser_action();

	if (preg_match(",^(\d+)$,", $arg, $r)
	AND $trad = intval(_request('lier_trad'))) {
		include_spip('action/editer_article');
		if ($err = article_referent($r[1], array('lier_trad' => $trad)))
			redirige_par_entete(urldecode(_request('redirect')) . $err);
	} elseif (preg_match(",^(\d+)\D-(\d+)$,", $arg, $r))  {
	  // supprimer le lien de traduction
		sql_updateq("spip_articles", array("id_trad" => 0), "id_article=" . $r[1]);
		// Verifier si l'ancien groupe ne comporte plus qu'un seul article. Alors mettre a zero.
		$cpt = sql_countsel("spip_articles", "id_trad=" . $r[2]);

		if ($cpt == 1)
			sql_updateq("spip_articles", array("id_trad" => 0), "id_trad=" . $r[2]);
	} elseif (preg_match(",^(\d+)\D(\d+)\D(\d+)$,", $arg, $r)) {
	  // modifier le groupe de traduction de $r[1] (SQL le trouvera)
		sql_update('spip_articles', array("id_trad" => $r[3]), "id_trad=" . $r[2]);
	} elseif (preg_match(",^(\d+)\D(\d+)$,", $arg, $r)) {
		instituer_langue_article($r[1],$r[2]);
	} else {
		spip_log("action_referencer_traduction_dist $arg pas compris");
	}
}
コード例 #9
0
function action_desinstaller_plugin_dist()
{
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $arg = $securiser_action();
    list($dir_plugins, $plugin) = explode("::", $arg);
    $dir_type = "_DIR_PLUGINS";
    if (defined('_DIR_PLUGINS_SUPPL') and $dir_plugins == _DIR_PLUGINS_SUPPL) {
        $dir_type = "_DIR_PLUGINS_SUPPL";
    }
    $installer_plugins = charger_fonction('installer', 'plugins');
    $infos = $installer_plugins($plugin, 'uninstall', $dir_type);
    if ($infos and !$infos['install_test'][0]) {
        include_spip('inc/plugin');
        ecrire_plugin_actifs(array($plugin), false, 'enleve');
        $erreur = '';
    } else {
        $erreur = 'erreur_plugin_desinstalation_echouee';
    }
    if ($redirect = _request('redirect')) {
        include_spip('inc/headers');
        if ($erreur) {
            $redirect = parametre_url($redirect, 'erreur', $erreur);
        }
        $redirect = str_replace('&amp;', '&', $redirect);
        redirige_par_entete($redirect);
    }
}
コード例 #10
0
ファイル: desinstaller_plugin.php プロジェクト: rhertzog/lcs
function action_desinstaller_plugin_dist() {

	$securiser_action = charger_fonction('securiser_action', 'inc');
	$plug_file = $securiser_action();
	$get_infos = charger_fonction('get_infos','plugins');
	$infos = $get_infos($plug_file);
	$erreur = "";
	if (isset($infos['install'])){
		// desinstaller
		$etat = desinstalle_un_plugin($plug_file,$infos);
		// desactiver si il a bien ete desinstalle
		if (!$etat)
			ecrire_plugin_actifs(array($plug_file),false,'enleve');
		else
			$erreur = 'erreur_plugin_desinstalation_echouee';
	}
	else {
		// en principe on ne passe pas la car pas de bouton sur les plugins non
		// desinstallables
		echo ('Ce plugin ne peut pas etre desinstalle et vous ne devriez pas arriver la !');
	}
	if ($redirect = _request('redirect')){
		include_spip('inc/headers');
		if ($erreur)
			$redirect = parametre_url($redirect, 'erreur',$erreur);
		$redirect = str_replace('&amp;','&',$redirect);
		redirige_par_entete($redirect);
	}
}
コード例 #11
0
ファイル: snippet_exporte.php プロジェクト: rhertzog/lcs
function action_snippet_exporte(){
	global $auteur_session;
	$arg = _request('arg');
	$args = explode(":",$arg);
	$hash = _request('hash');
	$id_auteur = $auteur_session['id_auteur'];
	$redirect = _request('redirect');
	if ($redirect==NULL) $redirect="";
	include_spip("inc/securiser_action");
	if (verifier_action_auteur("snippet_exporte-$arg",$hash,$id_auteur)==TRUE) {
		$table = $args[0];
		$id = $args[1];
		
		$f = snippets_fond_exporter($table, false);
			
		if ($f) {
			include_spip('public/assembler');
			$out = recuperer_fond($f,array('id'=>intval($id)));
			//$out = preg_replace(",\n\n[\s]*(?=\n),","",$out);
			
			$filename=str_replace(":","_",$arg);
			if (preg_match(",<titre>(.*)</titre>,Uims",$out,$regs))
				$filename = preg_replace(',[^-_\w]+,', '_', trim(translitteration(textebrut(typo($regs[1])))));
			$extension = "xml";
			
			Header("Content-Type: text/xml; charset=".$GLOBALS['meta']['charset']);
			Header("Content-Disposition: attachment; filename=$filename.$extension");
			Header("Content-Length: ".strlen($out));
			echo $out;
			exit();
		}
	}	
	redirige_par_entete(str_replace("&amp;","&",urldecode($redirect)));
}
コード例 #12
0
ファイル: logout.php プロジェクト: nursit/SPIP
function action_logout_dist()
{
    global $visiteur_session, $ignore_auth_http;
    $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 (is_numeric($visiteur_session['id_auteur'])) {
        include_spip('inc/auth');
        auth_trace($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($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 !$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'));
}
コード例 #13
0
ファイル: editer_rubrique.php プロジェクト: rhertzog/lcs
function action_editer_rubrique_dist($arg=null) {

	if (is_null($arg)){
		$securiser_action = charger_fonction('securiser_action', 'inc');
		$arg = $securiser_action();
	}

	if (!$id_rubrique = intval($arg)) {
		if ($arg != 'oui') {
			include_spip('inc/headers');
			redirige_url_ecrire();
		}
		$id_rubrique = insert_rubrique(_request('id_parent'));
	}

	revisions_rubriques($id_rubrique);

	if (_request('redirect')) {
		$redirect = parametre_url(
			urldecode(_request('redirect')),
			'id_rubrique', $id_rubrique, '&');
	
		include_spip('inc/headers');
		redirige_par_entete($redirect);
	}
	else 
		return array($id_rubrique,'');
}
コード例 #14
0
ファイル: pdf2swf_convert.php プロジェクト: rhertzog/lcs
function action_pdf2swf_convert() {
    global $visiteur_session;
    
    $id_auteur = $visiteur_session['id_auteur'];
    $arg = _request('arg');
    $args = explode(":",$arg);
	
    // le 1er element de _request('arg') est id_article=XXX
    $Targs = explode("=", $args[0]);
    $id_article = $Targs[1];
    $hash = _request('hash');
    
    $redirect = _request('redirect');
	  if ($redirect==NULL) $redirect="";
    
    include_spip("inc/securiser_action");
    
//    if (!autoriser('creerarticledans', 'rubrique', $id_rubrique)) die(_T('avis_non_acces_page'));

	// ss-rep temporaire specifique de l'auteur en cours: tmp/pdf2swf/id_auteur/ => le creer si il n'existe pas
    $base_dezip = _DIR_TMP."pdf2swf/";   // avec / final
    if (!is_dir($base_dezip)) if (!sous_repertoire(_DIR_TMP,'pdf2swf')) die (_T('pdfswf:err_repertoire_tmp'));  
    $rep_dezip = $base_dezip.$id_auteur.'/';
    if (!is_dir($rep_dezip)) if (!sous_repertoire($base_dezip,$id_auteur)) die (_T('pdfswf:err_repertoire_tmp'));
    
	// traitement d'un fichier pdf envoye par $_POST 
    $fichier_zip = addslashes($_FILES['fichier_pdf']['name']);
    if ($_FILES['fichier_pdf']['name'] == '' 
        OR $_FILES['fichier_pdf']['error'] != 0
        OR !move_uploaded_file($_FILES['fichier_pdf']['tmp_name'], $rep_dezip.$fichier_zip)
       )  die(_T('pdfswf:err_telechargement_fichier'));

   // conversion du fichier pdf en swf
//    $command='pdf2swf -t '.$rep_dezip.$fichier_zip.' '.$rep_dezip.$fichier_zip.'.swf'; 
    $command='pdf2swf -t -B '. _DIR_PLUGIN_PDF2SWF.'fdplayer.swf  '.$rep_dezip.$fichier_zip.' '.$rep_dezip.$fichier_zip.'.swf'; 
	exec($command);
	
	//attacher le fichier pdf original a l'article
        if (!isset($ajouter_documents)) 
        	$ajouter_documents = charger_fonction('ajouter_documents','inc');
        
        // la y'a un bogue super-bizarre avec la fonction spip_abstract_insert() qui est donnee comme absente lors de l'appel de ajouter_document()
        if (!function_exists('spip_abstract_insert')) include_spip('base/abstract_sql');
        $id_doc_swf = $ajouter_documents($rep_dezip.$fichier_zip.'.swf', $fichier_zip.'.swf', "article", $id_article, 'document', 0, $toto='');

 
	// si necessaire attacher le fichier odt original a l'article et lui mettre un titre signifiant
    if (_request('attacher_pdf') == '1') {
        $id_doc_odt = $ajouter_documents($rep_dezip.$fichier_zip, $fichier_zip, "article", $id_article, 'document', 0, $toto='');

    }
    
    if (!function_exists('effacer_repertoire_temporaire')) include_spip('inc/getdocument');
	// vider le contenu du rep de dezippage
    effacer_repertoire_temporaire($rep_dezip);
    
	// aller sur la page de l'article qui vient d'etre cree
    redirige_par_entete(parametre_url(str_replace("&amp;","&",urldecode($redirect)),'id_article',$id_article,'&'));
}
コード例 #15
0
ファイル: poster_forum_prive.php プロジェクト: rhertzog/lcs
function action_poster_forum_prive_post($r)
{
	list(,$id, $id_parent, $statut, $script, $objet) = $r;

	if (_request('valider_forum') AND ($statut!='')) {
		include_spip('inc/texte');
		include_spip('inc/forum');

		$titre_message = corriger_caracteres(_request('titre_message'));
		$texte = corriger_caracteres(_request('texte'));

		$id_forum = sql_insertq('spip_forum', array(
			$objet => $id,
			'titre' => $titre_message,
			'texte' => $texte,
			'date_heure' => date('Y-m-d H:i:s'),
			'nom_site' => _request('nom_site'),
			'url_site' => _request('url_site'),
			'statut' => $statut,
			'id_auteur' =>$GLOBALS['visiteur_session']['id_auteur'],
			'auteur' => $GLOBALS['visiteur_session']['nom'],
			'email_auteur' => $GLOBALS['visiteur_session']['email'],
			'id_parent' => $id_parent));

		calculer_threads();

		if ($objet == 'id_message') {
			sql_updateq("spip_auteurs_messages", array("vu" => 'non'), "id_message=$id");

		}

		// Notification
		if ($notifications = charger_fonction('notifications', 'inc')) {
			$notifications('forumprive', $id_forum);
		}

		$retour = urldecode(_request('redirect'));
		$retour = parametre_url($retour, 'modif_forum', 'fin', '&');
		$retour = parametre_url($retour, 'texte', $objet, '&');
#		$retour = parametre_url($retour, 'script', $script, '&');
		redirige_par_entete($retour ."#id".$id_forum);
	} else {
	   // previsualisation : on ne fait que passer .... 
	   // et si les clients HTTP respectaient le RFC HTTP selon lequel
	   // une redirection d'un POST doit etre en POST et pas en GET
	   // on n'aurait pas a faire l'horreur ci-dessous.
		  
	   set_request('action', '');
	   set_request('exec', 'poster_forum_prive');
	   set_request('id', $id);
	   set_request('id_parent', $id_parent);
	   set_request('statut', $statut);
	   set_request('script', $script);

	   include(_DIR_RESTREINT.'index.php');
	   exit;
	}
}
コード例 #16
0
function traiter_appels_actions()
{
    // cas de l'appel qui renvoie une redirection (302) ou rien (204)
    if ($action = _request('action')) {
        include_spip('base/abstract_sql');
        // chargement systematique pour les actions
        include_spip('inc/autoriser');
        include_spip('inc/headers');
        include_spip('inc/actions');
        // des actions peuvent appeler _T
        if (!isset($GLOBALS['spip_lang'])) {
            include_spip('inc/lang');
            utiliser_langue_visiteur();
        }
        // si l'action est provoque par un hit {ajax}
        // il faut transmettre l'env ajax au redirect
        // on le met avant dans la query string au cas ou l'action fait elle meme sa redirection
        if ($v = _request('var_ajax') and $v !== 'form' and $args = _request('var_ajax_env') and $url = _request('redirect')) {
            $url = parametre_url($url, 'var_ajax', $v, '&');
            $url = parametre_url($url, 'var_ajax_env', $args, '&');
            set_request('redirect', $url);
        } else {
            if (_request('redirect')) {
                set_request('redirect', securiser_redirect_action(_request('redirect')));
            }
        }
        $var_f = charger_fonction($action, 'action');
        $var_f();
        if (!isset($GLOBALS['redirect'])) {
            $GLOBALS['redirect'] = _request('redirect');
            if ($_SERVER['REQUEST_METHOD'] == 'POST') {
                $GLOBALS['redirect'] = urldecode($GLOBALS['redirect']);
            }
            $GLOBALS['redirect'] = securiser_redirect_action($GLOBALS['redirect']);
        }
        if ($url = $GLOBALS['redirect']) {
            // si l'action est provoque par un hit {ajax}
            // il faut transmettre l'env ajax au redirect
            // qui a pu etre defini par l'action
            if ($v = _request('var_ajax') and $v !== 'form' and $args = _request('var_ajax_env')) {
                $url = parametre_url($url, 'var_ajax', $v, '&');
                $url = parametre_url($url, 'var_ajax_env', $args, '&');
                // passer l'ancre en variable pour pouvoir la gerer cote serveur
                $url = preg_replace(',#([^#&?]+)$,', "&var_ajax_ancre=\\1", $url);
            }
            $url = str_replace('&amp;', '&', $url);
            // les redirections se font en &, pas en en &amp;
            redirige_par_entete($url);
        }
        if (!headers_sent() and !ob_get_length()) {
            http_status(204);
        }
        // No Content
        return true;
    }
    return false;
}
コード例 #17
0
ファイル: rediriger.php プロジェクト: rhertzog/lcs
/**
 * Traite une demande de redirection
 * 
 * Si le fond du formulaire demande expressement une redirection
 * par <!-- rediriger=1 -->, on stocke le message dans une meta
 * et on redirige le client, de maniere a charger la page
 * avec la nouvelle config (ce qui permet par exemple a Autorite
 * de controler d'eventuels conflits generes par les nouvelles autorisations)
 * 
 * @param mixed $valeur # inutilisé
 * @param Object $cfg
 */
function cfg_post_traiter_param_rediriger($valeur, &$cfg){
	if ($cfg->messages) {
		include_spip('inc/meta');
		ecrire_meta('cfg_message_'.$GLOBALS['auteur_session']['id_auteur'], serialize($cfg->messages), 'non');
		if (defined('_COMPAT_CFG_192')) ecrire_metas();
		include_spip('inc/headers');
		redirige_par_entete(parametre_url(self(),null,null,'&'));
	}
}
コード例 #18
0
ファイル: response.php プロジェクト: nursit/bank
/**
 * Retour de la demande de paiement chez PaypalExpress
 *
 * @param array $config
 * @param null|array $response
 * @return array
 */
function presta_paypalexpress_call_response($config, $response = null)
{
    include_spip('inc/bank');
    $mode = $config['presta'];
    $ack = false;
    include_spip('presta/paypalexpress/inc/paypalexpress');
    /* At this point, the buyer has completed in authorizing payment
    	at PayPal.  The script will now call PayPal with the details
    	of the authorization, incuding any shipping information of the
    	buyer.  Remember, the authorization is not a completed transaction
    	at this state - the buyer still needs an additional step to finalize
    	the transaction
    	*/
    $token = urlencode(_request('token'));
    $id_transaction = intval($_SESSION['id_transaction']);
    if (!($row = sql_fetsel("*", "spip_transactions", "id_transaction=" . intval($id_transaction)))) {
        return bank_transaction_invalide($id_transaction, array('mode' => $mode, 'log' => var_export($_REQUEST, true) . var_export($_SESSION, true), 'erreur' => 'donnees Paypal non conformes'));
    }
    /* Build a second API request to PayPal, using the token as the
    	ID to get the details on the payment authorization
    	*/
    $nvpstr = "&TOKEN=" . $token;
    #var_dump($nvpstr);
    // pas la peine de faire un call Paypal si Cancel
    if ($token and _request('action') !== 'bank_cancel' and !defined('_BANK_CANCEL_TRANSACTION')) {
        /* Make the API call and store the results in an array.  If the
        		call was a success, show the authorization details, and provide
        		an action to complete the payment.  If failed, show the error
        		*/
        $resArray = bank_paypalexpress_hash_call($config, "GetExpressCheckoutDetails", $nvpstr);
        #var_dump($resArray);
        $_SESSION['reshash'] = $resArray;
        $ack = strtoupper($resArray["ACK"]);
    }
    if ($ack == "SUCCESS" and isset($resArray["PAYERID"]) and isset($resArray["EMAIL"]) and $resArray["PAYERID"] == _request('PayerID')) {
        $url = $_SESSION['paypalexpress_url_confirm'];
        $url_checkout = generer_action_auteur('paypalexpress_checkoutpayment', $resArray["PAYERID"] . "-" . $mode . "-" . bank_config_id($config));
        $url = parametre_url($url, 'checkout', $url_checkout, '&');
        $resume = "Paiement par compte Paypal : <br/>" . $resArray['FIRSTNAME'] . ' ' . $resArray['LASTNAME'] . "," . $resArray['EMAIL'];
        $_SESSION['order_resume'] = $resume;
        $_SESSION['token'] = $token;
        $_SESSION['payer_id'] = $resArray["PAYERID"];
        // on redirige (un peu sauvagement) sur l'URL de confirmation
        // qui est l'url d'origine du paiement avec un &confirm=oui
        // et va rafficher la commande avec un bouton de validation de paiement
        include_spip("inc/headers");
        redirige_par_entete($url);
    } else {
        // regarder si l'annulation n'arrive pas apres un reglement (internaute qui a ouvert 2 fenetres de paiement)
        if ($row['reglee'] == 'oui') {
            return array($id_transaction, true);
        }
        return bank_transaction_echec($id_transaction, array('mode' => $mode, 'config_id' => bank_config_id($config), 'log' => var_export($_REQUEST, true) . var_export($_SESSION['reshash'], true), 'erreur' => $ack, 'where' => 'GetExpressCheckoutDetails'));
    }
}
コード例 #19
0
function action_galettonuts_cron_manuel_dist()
{
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $arg = $securiser_action('galettonuts-0.1');
    $voir_statut = _request('statut');
    if ($voir_statut) {
        $voir_statut = '&statut=' . $voir_statut;
    }
    include_spip('inc/galettonuts_fonctions');
    $code = (int) galettonuts_synchroniser();
    redirige_par_entete(generer_url_ecrire(_request('redirect'), 'galettonuts_synchro_ok=oui&code_retour=' . $code . $voir_statut, true));
}
コード例 #20
0
function action_spiplistes_supprimer_abonne_dist () {

	include_spip('inc/autoriser');
	include_spip('inc/spiplistes_api');

	// les globales ne passent pas en action
	//global $connect_id_auteur;
	$connect_id_auteur = $GLOBALS['auteur_session']['id_auteur'];
		
	$securiser_action = charger_fonction('securiser_action', 'inc');
	$id_auteur = intval($securiser_action());
	$redirect = urldecode(_request('redirect'));

	if (autoriser('supprimer', 'auteur', $id_auteur)) {
	
		$result = sql_select("id_auteur,statut", "spip_auteurs", "id_auteur=".sql_quote($id_auteur), '','', 1);
		
		if ($row = sql_fetch($result)) {
		
			$id_auteur = intval($row['id_auteur']);
			$statut = $row['statut'];

			if(
				($id_auteur > 0)
				&& ($statut=='6forum') 
			) {
				$sql_whereq = "id_auteur=".sql_quote($id_auteur);
				
				if(
						// vide la queue du courrier en attente pour cet abonne'
					spiplistes_courriers_en_queue_supprimer($sql_whereq)
						// supprime l'abonne' des abonnements
					&& spiplistes_abonnements_auteur_desabonner($id_auteur, 'toutes')
						// supprime l'abonne' des formats elargis
					&& spiplistes_format_abo_supprimer($id_auteur)
				) {
					spiplistes_log("ID_AUTEUR #$id_auteur UNSUBSCRIBE BY ID_AUTEUR #$connect_id_auteur");
					  // ne peut supprimer que les invites
					if($statut=='6forum') {
						if(spiplistes_auteurs_auteur_delete($sql_whereq)) {
								// garde une petite trace...
							spiplistes_log("ID_AUTEUR #$id_auteur DELETED BY ID_AUTEUR #$connect_id_auteur");
						}
					}
				}
			}
		}
	}	
	
	if($redirect) {
		redirige_par_entete(str_replace("&amp;", "&", $redirect));
	}
}
コード例 #21
0
/**
 * Action effectuant 1 action dans la liste des actions à réaliser
 * sur les plugins.
 *
 * Cette action sera relancée tant qu'il reste des actions à faire
 */
function action_actionner_dist()
{
    // droits
    include_spip('inc/autoriser');
    if (!autoriser('configurer', '_plugins')) {
        include_spip('inc/minipres');
        echo minipres();
        exit;
    }
    include_spip('inc/svp_actionner');
    include_spip('inc/headers');
    $actionneur = new Actionneur();
    $actionneur->get_actions();
    if ($actionneur->one_action()) {
        // si SVP a été enlevé des actifs, on redirige sur la fin...
        // sinon cette page d'action/actionner devient introuvable.
        // dans ce cas précis, les autres actions prévues venant après la desactivation de SVP
        // ne pourront être traitees... SVP n'étant plus là !
        if ($actionneur->tester_si_svp_desactive()) {
            $url = _request('redirect');
        } else {
            $url = generer_action_auteur('actionner', '', _request('redirect'));
        }
        // en mode pas à pas, on affiche un bilan entre chaque action
        // et on demande a l'utilistateur de cliquer pour realiser
        // l'action suivante.
        include_spip('inc/config');
        if (lire_config('svp/mode_pas_a_pas') == 'oui') {
            include_spip('inc/minipres');
            $pres = $actionneur->presenter_actions();
            $btn = "<a href='{$url}'>[ Action Suivante ]</a>";
            $styles = "\n\t\t\t\t<style type='text/css'>\n\t\t\t\t#minipres #actionner .fail {color:#c30000;}\n\t\t\t\t#minipres #actionner ul {margin-left: 0.5em;}\n\t\t\t\t#minipres #actionner li {list-style-type:square; margin-left: 0.5em;}\n\t\t\t\t</style>";
            echo minipres(_T('svp:installation_en_cours'), $pres . '<br /><br />' . $btn . $styles);
            die;
        }
        redirige_par_entete(str_replace('&amp;', '&', $url));
    }
    foreach ($actionneur->done as $done) {
        if ($done['todo'] == 'on') {
            if ($voir = session_get('svp_admin_plugin_voir') and $voir == 'inactif') {
                session_set('svp_admin_plugin_voir', 'actif');
            }
            break;
        }
    }
    include_spip('inc/svp_depoter_local');
    svp_actualiser_paquets_locaux();
    if (!_request('redirect')) {
        $GLOBALS['redirect'] = generer_url_ecrire('admin_plugin');
    } else {
        $GLOBALS['redirect'] = str_replace('&amp;', '&', _request('redirect'));
    }
}
コード例 #22
0
ファイル: reorganiser.php プロジェクト: nursit/SPIP
function action_reorganiser_dist()
{
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $securiser_action();
    if (_request('deplacements') !== NULL) {
        gerer_deplacements(_request('deplacements'));
    }
    $redirect = _request('redirect');
    if ($redirect == NULL) {
        $redirect = "";
    }
    redirige_par_entete(str_replace("&amp;", "&", urldecode($redirect)));
}
コード例 #23
0
ファイル: editer_auteur.php プロジェクト: rhertzog/lcs
function action_editer_auteur_dist($arg=null) {

	if (is_null($arg)){
		$securiser_action = charger_fonction('securiser_action', 'inc');
		$arg = $securiser_action();
	}


	// si id_auteur n'est pas un nombre, c'est une creation
	if (!$id_auteur = intval($arg)) {

		if (($id_auteur = insert_auteur()) > 0){

			# cf. GROS HACK
			# recuperer l'eventuel logo charge avant la creation
			# ils ont un id = 0-id_auteur de la session
			$id_hack = 0 - $GLOBALS['visiteur_session']['id_auteur'];
			$chercher_logo = charger_fonction('chercher_logo', 'inc');
			if (list($logo) = $chercher_logo($id_hack, 'id_auteur', 'on'))
				rename($logo, str_replace($id_hack, $id_auteur, $logo));
			if (list($logo) = $chercher_logo($id_hack, 'id_auteur', 'off'))
				rename($logo, str_replace($id_hack, $id_auteur, $logo));
		}
	}

	// Enregistre l'envoi dans la BD
	if ($id_auteur > 0)
		$err = auteurs_set($id_auteur);

	if ($redirect = _request('redirect')) {
		if ($err){
			$ret = ('&redirect=' . $redirect);
			spip_log("echec editeur auteur: " . join(' ',$echec));
			$echec = '&echec=' . join('@@@', $echec);
			$redirect = generer_url_ecrire('auteur_infos',"id_auteur=$id_auteur$echec$ret",'&');
		}
		else
			$redirect = urldecode($redirect);

		$redirect = parametre_url($redirect,'id_auteur', $id_auteur, '&');

		include_spip('inc/headers');
		redirige_par_entete($redirect);
	}
	else
		return array($id_auteur,$err);

	$redirect = _request('redirect');

}
コード例 #24
0
function action_instituer_groupe_mots_get($table)
{
	$titre = _T('info_mot_sans_groupe');
	$id_groupe = sql_insertq("spip_groupes_mots", array(
		'titre' => $titre,
		'unseul' => 'non',
		'obligatoire' => 'non',
		'tables_liees'=>$table,
		'minirezo' =>  'oui',
		'comite' =>  'non',
		'forum' => 'non')) ;

  redirige_par_entete(parametre_url(urldecode(_request('redirect')),
		  'id_groupe', $id_groupe, '&'));
}
コード例 #25
0
ファイル: converser.php プロジェクト: genma/spip_ynh
function action_converser_dist()
{
    $update_session = false;
    if (_request('arg') and spip_connect()) {
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $securiser_action();
        $update_session = true;
    }
    $lang = action_converser_changer_langue($update_session);
    $redirect = rawurldecode(_request('redirect'));
    if (!$redirect) {
        $redirect = _DIR_RESTREINT_ABS;
    }
    $redirect = parametre_url($redirect, 'lang', $lang, '&');
    redirige_par_entete($redirect, true);
}
コード例 #26
0
ファイル: cookie.php プロジェクト: rhertzog/lcs
function exec_test_ajax_dist() {
	switch (_request('js')) {
		// on est appele par <noscript>
		case -1:
			spip_setcookie('spip_accepte_ajax', -1);
			include_spip('inc/headers');
			redirige_par_entete(chemin_image('puce-orange-anim.gif'));
			break;

		// ou par ajax
		case 1:
		default:
			spip_setcookie('spip_accepte_ajax', 1);
			break;
	}
}
コード例 #27
0
function action_clevermail_post_create_dist()
{
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $arg = $securiser_action();
    $lst_id = intval($arg);
    include_spip('inc/autoriser');
    if (autoriser('creer', 'cm_post', $lst_id)) {
        include_spip('inc/clevermail_post_create');
        $pst_id = clevermail_post_create($lst_id);
        include_spip('inc/headers');
        if ($pst_id) {
            redirige_par_entete(generer_url_ecrire('clevermail_posts') . '&lst_id=' . $lst_id);
        } else {
            redirige_par_entete(generer_url_ecrire('clevermail_lists') . '&err_lst=' . $lst_id . '&err_msg=erreur_contenu_vide#lst' . $lst_id);
        }
    }
}
コード例 #28
0
ファイル: configurer_relayeur.php プロジェクト: rhertzog/lcs
function action_configurer_relayeur_dist() {

	$securiser_action = charger_fonction('securiser_action', 'inc');
	$arg = $securiser_action();

	$http_proxy = _request('http_proxy');
	$http_noproxy = _request('http_noproxy');
	$test_proxy = _request('test_proxy');
	$tester_proxy = _request('tester_proxy');

	$test = configuration_relayeur_post($http_proxy, $http_noproxy, $test_proxy, $tester_proxy); 

	// message a afficher dans l'exec de retour

	$r = rawurldecode(_request('redirect'));
	$r = parametre_url($r, 'retour_proxy', $test, "&");
	redirige_par_entete($r);
}
コード例 #29
0
ファイル: upgrade.php プロジェクト: rhertzog/lcs
function exec_upgrade_dist() {

	global $spip_version_base;
	if (!_FILE_CONNECT)
		redirige_url_ecrire("install");

	// Si reinstallation necessaire, message ad hoc
	if (_request('reinstall') == 'oui') {
		include_spip('inc/minipres');
		$r = minipres(_T('titre_page_upgrade'),
				"<p><b>"
				. _T('texte_nouvelle_version_spip_1')
				. "</b><p> "
				. _T('texte_nouvelle_version_spip_2',
				   array('connect' => '<tt>' . _FILE_CONNECT . '</tt>'))
				. generer_form_ecrire('upgrade', "<input type='hidden' name='reinstall' value='non' />",'',	_T('bouton_relancer_installation')));
		echo $r;
	} else {

	if (!isset($GLOBALS['meta']['version_installee']))
		$GLOBALS['meta']['version_installee'] = 0.0;
	else $GLOBALS['meta']['version_installee'] =
	  (double) str_replace(',','.',$GLOBALS['meta']['version_installee']);
# NB: str_replace car, sur club-internet, il semble que version_installe soit
# enregistree au format '1,812' et non '1.812'

	// Erreur downgrade
	// (cas de double installation de fichiers SPIP sur une meme base)
	if ($spip_version_base < $GLOBALS['meta']['version_installee'])
		$commentaire = _T('info_mise_a_niveau_base_2');
	// Commentaire standard upgrade
	else $commentaire = _T('texte_mise_a_niveau_base_1');

	$_POST['reinstall'] = 'non'; // pour copy_request dans admin
	include_spip('inc/headers');
	$admin = charger_fonction('admin', 'inc');
	$res = $admin('upgrade', _T('info_mise_a_niveau_base'), $commentaire);
	if ($res) echo $res;
	else {
		$res = redirige_action_auteur('purger', 'cache', 'accueil', '', true);
		redirige_par_entete($res);
	}
	}
}
コード例 #30
0
ファイル: logout.php プロジェクト: 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'));
}