Example #1
0
function trace_query_chrono($m1, $m2, $query, $result, $serveur='')
{
	static $tt = 0, $nb=0;
	global $tableau_des_temps;

	$x = _request('var_mode_objet');
	if (isset($GLOBALS['debug']['aucasou'])) {
		list(, $boucle, $serveur, $contexte) = $GLOBALS['debug']['aucasou'];
		if ($x AND !preg_match("/$boucle\$/", $x))
			return;
		if ($serveur) $boucle .= " ($serveur)";
		$boucle = "<b>$boucle</b>";
	} else {
		if ($x) return;
		$boucle = $contexte = '';
	}

	list($usec, $sec) = explode(" ", $m1);
	list($usec2, $sec2) = explode(" ", $m2);
 	$dt = $sec2 + $usec2 - $sec - $usec;
	$tt += $dt;
	$nb++;

	$q = preg_replace('/([a-z)`])\s+([A-Z])/', "$1\n<br />$2",htmlentities($query));
	$e =  sql_explain($query, $serveur);
	$r = str_replace('Resource id ','',(is_object($result)?get_class($result):$result));
	$tableau_des_temps[] = array($dt, $nb, $boucle, $q, $e, $r, $contexte);
}
Example #2
0
function formulaires_configurer_bank_paiement_verifier_dist()
{
    $erreurs = array();
    if ($e = _request('email_ticket_admin') and !email_valide($e)) {
        $erreurs['email_ticket_admin'] = _T('form_prop_indiquer_email');
    }
    if (!count($erreurs)) {
        if ($dels = _request('action_del') and count($dels)) {
            set_request('action_del');
            foreach ($dels as $del => $v) {
                set_request($del, null);
            }
        }
        if ($ups = _request('action_up') and count($ups)) {
            set_request('action_up');
            foreach ($ups as $up => $v) {
                bank_deplacer_config($up, "up");
            }
        }
        if ($downs = _request('action_down') and count($downs)) {
            set_request('action_down');
            foreach ($downs as $down => $v) {
                bank_deplacer_config($down, "down");
            }
        }
        if (_request('action_append') and $presta = _request('action_append_presta') and in_array($presta, bank_lister_prestas())) {
            set_request('action_append');
            set_request('action_append_presta');
            bank_ajouter_config($presta);
        }
    }
    return $erreurs;
}
/**
 * Plugin SkelEditor
 * Editeur de squelette en ligne
 * (c) 2007-2010 erational
 * Licence GPL-v3
 *
 */

function action_skeleditor_new_from_dist(){
	$securiser_action = charger_fonction('securiser_action','inc');
	$arg = $securiser_action();

	// $arg est le fichier que l'on veut personaliser
	if (strncmp($arg,_DIR_RACINE,strlen(_DIR_RACINE)!==0))
		$arg = _DIR_RACINE.$arg;

	include_spip('inc/skeleditor');
	$file = skeleditor_nom_copie($arg);
	if ($file){
		include_spip('inc/skeleditor');
		$path_base = skeleditor_path_editable();
		list($chemin,) = skeleditor_cree_chemin($path_base, $file);
		if ($chemin){
			$file = basename($file);

			if (!file_exists($chemin . $file)) {
				lire_fichier($arg, $contenu);
				ecrire_fichier($chemin . $file, skeleditor_commente_copie($arg,$contenu));
			}

			if (file_exists($f=$chemin.$file))
				$GLOBALS['redirect'] = parametre_url(_request('redirect'),'f',$f);
		}
	}

}
function player_affiche_config_form ($exec_page){

		global $spip_lang_right, $spip_lang_left;
		
	  if ($player = _request('player')) {
			ecrire_meta('player', $player);
			if(version_compare($GLOBALS['spip_version_code'],'1.9300','<')) { 
				include_spip("inc/meta");
				ecrire_metas();
			}
		}
		
		$player_ = $GLOBALS['meta']['player'];
		
		$out = ""
			. debut_cadre_trait_couleur(_DIR_PLUGIN_PLAYER_IMAGES."player-son-24.png", true, "", "Player Audio")
			. "<form action='".generer_url_ecrire($exec_page)."' method='post' class='verdana2'><div>"
			. bouton_radio("player", "neoplayer", "Neolao player", $player_ == "neoplayer")
			. "<br />"
			. bouton_radio("player", "dewplayer", "Dew player", $player_ == "dewplayer")
			. "<br />"
			. bouton_radio("player", "pixplayer", "One pixel out player", $player_ == "pixplayer")
			. "<br />"
			. bouton_radio("player", "eraplayer", "Erational player", $player_ == "eraplayer")
			. "<div style='text-align:$spip_lang_right'><input type='submit' name='Valider' value='"._T('bouton_valider')."' class='fondo' /></div>"
			. "</div></form>"
			. fin_cadre_trait_couleur(true)
			;

		return ($out);
}
Example #5
0
function formulaires_configurer_transcodeur_traiter_dist()
{
    $res = array('editable' => true);
    ecrire_meta('charset', _request('charset'));
    $res['message_ok'] = _T('config_info_enregistree');
    return $res;
}
function action_instituer_langue_rubrique_dist() {

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

	list($id_rubrique, $id_parent) = preg_split('/\W/', $arg);

	if ($changer_lang
	AND $id_rubrique>0
	AND $GLOBALS['meta']['multi_rubriques'] == 'oui'
	AND ($GLOBALS['meta']['multi_secteurs'] == 'non' OR $id_parent == 0)) {
		if ($changer_lang != "herit")
			sql_updateq('spip_rubriques', array('lang'=>$changer_lang, 'langue_choisie'=>'oui'), "id_rubrique=$id_rubrique");
		else {
			if ($id_parent == 0)
				$langue_parent = $GLOBALS['meta']['langue_site'];
			else {
				$langue_parent = sql_getfetsel("lang", "spip_rubriques", "id_rubrique=$id_parent");
			}
			sql_updateq('spip_rubriques', array('lang'=>$langue_parent, 'langue_choisie'=>'non'), "id_rubrique=$id_rubrique");
		}
		include_spip('inc/rubriques');
		calculer_langues_rubriques();

		// invalider les caches marques de cette rubrique
		include_spip('inc/invalideur');
		suivre_invalideur("id='id_rubrique/$id_rubrique'");
	}
}
 /**
  * Admins
  *
  * Affiche la liste des administrateurs
  *
  * @package	Comptes
  * @author	Frédéric Mossmann <*****@*****.**>
  */
 public function processDefault()
 {
     if (!Kernel::isAdmin()) {
         return new CopixActionReturn(COPIX_AR_REDIRECT, CopixUrl::get('||'));
     }
     $roles = _request('role');
     $new_admin = _request('new_admins');
     if ($roles) {
         $sql = "\n                SELECT dbuser.*, kernel_link_bu2user.*\n                FROM dbuser\n                JOIN kernel_link_bu2user ON dbuser.id_dbuser=kernel_link_bu2user.user_id\n                WHERE dbuser.id_dbuser IN (" . implode(',', array_keys($roles)) . ")\n            ";
         $admins_mod = _doQuery($sql);
         foreach ($admins_mod as $admins_mod_item) {
             $sql = "\n                    DELETE FROM kernel_link_user2node\n                    WHERE node_type='ROOT' AND node_id=0\n                    AND   user_type=:bu_type AND user_id=:bu_id\n                ";
             _doQuery($sql, array(':bu_type' => $admins_mod_item->bu_type, ':bu_id' => $admins_mod_item->bu_id));
             $sql = "\n                    DELETE FROM dbgroup_users\n                    WHERE id_dbgroup=:id_dbgroup AND userhandler_dbgroup=:userhandler_dbgroup AND user_dbgroup=:user_dbgroup";
             $params = array(':id_dbgroup' => 1, ':userhandler_dbgroup' => 'auth|dbuserhandler', ':user_dbgroup' => $admins_mod_item->id_dbuser);
             _doQuery($sql, $params);
             if ($roles[$admins_mod_item->id_dbuser]) {
                 $sql = "\n                        INSERT INTO kernel_link_user2node\n                            ( user_type,  user_id,  node_type,  node_id,  droit)\n                        VALUES\n                            (:user_type, :user_id, :node_type, :node_id, :droit)\n                        ";
                 $params = array(':user_type' => $admins_mod_item->bu_type, ':user_id' => $admins_mod_item->bu_id, ':node_type' => 'ROOT', ':node_id' => 0, ':droit' => $roles[$admins_mod_item->id_dbuser]);
                 _doQuery($sql, $params);
                 $sql = "\n                        INSERT INTO dbgroup_users\n                            ( id_dbgroup,  userhandler_dbgroup,  user_dbgroup)\n                        VALUES\n                            (:id_dbgroup, :userhandler_dbgroup, :user_dbgroup)\n                        ";
                 $params = array(':id_dbgroup' => 1, ':userhandler_dbgroup' => 'auth|dbuserhandler', ':user_dbgroup' => $admins_mod_item->id_dbuser);
                 _doQuery($sql, $params);
             }
         }
     }
     if ($new_admin) {
         $new_admin_array = split(',', $new_admin);
         $new_admin_array_clean = array_map('trim', $new_admin_array);
         $sql_newadmins = "OR dbuser.login_dbuser IN (";
         $first = true;
         foreach ($new_admin_array_clean as $new_admin_array_item) {
             $sql_newadmins .= (!$first ? ", " : "") . "'" . addslashes($new_admin_array_item) . "'";
             $first = false;
         }
         $sql_newadmins .= ")";
     } else {
         $sql_newadmins = '';
     }
     $sql = "\n            SELECT dbuser.*, kernel_link_bu2user.*, kernel_link_user2node.*\n            FROM dbuser\n            JOIN kernel_link_bu2user ON dbuser.id_dbuser=kernel_link_bu2user.user_id\n            LEFT JOIN kernel_link_user2node ON kernel_link_bu2user.bu_type=kernel_link_user2node.user_type AND kernel_link_bu2user.bu_id=kernel_link_user2node.user_id AND kernel_link_user2node.node_type='ROOT' AND kernel_link_user2node.node_id=0\n            WHERE (node_type='ROOT' AND node_id=0)\n            " . $sql_newadmins . "\n            ORDER BY kernel_link_user2node.droit DESC,dbuser.login_dbuser\n        ";
     $admins = _doQuery($sql);
     foreach ($admins as &$admin) {
         $admin->user_infos = Kernel::getUserInfo($admin->bu_type, $admin->bu_id);
     }
     /*
     dbuser : id_dbuser 	login_dbuser 	password_dbuser 	email_dbuser 	enabled_dbuser
     kernel_link_bu2user : user_id 	bu_type 	bu_id
     kernel_link_user2node : user_type 	user_id 	node_type 	node_id 	droit 	debut 	fin
     */
     $tpl = new CopixTpl();
     $tplListe = new CopixTpl();
     $tplListe->assign("admins", $admins);
     $tplListe->assign("user_id", _currentUser()->getExtra('user_id'));
     $tplListe->assign("admin_fonctionnel", Kernel::isAdminFonctionnel());
     $main = $tplListe->fetch("admins-list.tpl");
     $tpl->assign('TITLE_PAGE', CopixI18N::get('comptes.moduleDescription') . " &raquo; " . CopixI18N::get('comptes.title.admins'));
     $tpl->assign('MAIN', $main);
     $tpl->assign('MENU', $this->menu);
     return new CopixActionReturn(COPIX_AR_DISPLAY, $tpl);
 }
/**
 * Action d'affichage en ajax du navigateur de rubrique du bandeau
 *
 * @uses gen_liste_rubriques()
 * @uses menu_rubriques()
 *
 * @return string
 *     Code HTML présentant la liste des rubriques
 **/
function action_menu_rubriques_dist()
{
    // si pas acces a ecrire, pas acces au menu
    // on renvoi un 401 qui fait echouer la requete ajax silencieusement
    if (!autoriser('ecrire')) {
        $retour = "<ul class='cols_1'><li class='toutsite'><a href='" . generer_url_ecrire('accueil') . "'>" . _T('public:lien_connecter') . "</a></li></ul>";
        include_spip('inc/actions');
        ajax_retour($retour);
        exit;
    }
    if ($date = intval(_request('date'))) {
        header("Last-Modified: " . gmdate("D, d M Y H:i:s", $date) . " GMT");
    }
    $r = gen_liste_rubriques();
    if (!$r and isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) and !strstr($_SERVER['SERVER_SOFTWARE'], 'IIS/')) {
        include_spip('inc/headers');
        header('Content-Type: text/html; charset=' . $GLOBALS['meta']['charset']);
        http_status(304);
        exit;
    } else {
        include_spip('inc/actions');
        $ret = menu_rubriques();
        ajax_retour($ret);
    }
}
/**
 * Verification supplementaire antispam sur le formulaire_ecrire_auteur
 *
 * @param array $flux
 * @return array
 */
function nospam_verifier_formulaire_ecrire_auteur_dist($flux)
{
    $form = $flux['args']['form'];
    if (!isset($flux['data']['texte_message_auteur'])) {
        include_spip("inc/nospam");
        include_spip("inc/texte");
        // regarder si il y a du contenu en dehors des liens !
        $texte_message_auteur = _request('texte_message_auteur');
        $caracteres = compter_caracteres_utiles($texte_message_auteur);
        if ($caracteres < 10) {
            $flux['data']['texte_message_auteur'] = _T('forum_attention_dix_caracteres');
            unset($flux['data']['previsu']);
        }
        // on analyse le sujet
        $infos_sujet = analyser_spams(_request('sujet_message_auteur'));
        // si un lien dans le sujet = spam !
        if ($infos_sujet['nombre_liens'] > 0) {
            $flux['data']['sujet_message_auteur'] = _T('nospam:erreur_spam');
            unset($flux['data']['previsu']);
        }
        // on analyse le texte
        $infos_texte = analyser_spams($texte_message_auteur);
        if ($infos_texte['nombre_liens'] > 0) {
            // si un lien a un titre de moins de 3 caracteres = spam !
            if ($infos_texte['caracteres_texte_lien_min'] < 3) {
                $flux['data']['texte_message_auteur'] = _T('nospam:erreur_spam');
            }
            // si le texte contient plus de trois liens = spam !
            if ($infos_texte['nombre_liens'] >= 3) {
                $flux['data']['texte_message_auteur'] = _T('nospam:erreur_spam');
            }
        }
    }
    return $flux;
}
Example #10
0
function exec_articles_args($id_article)
{
	pipeline('exec_init',array('args'=>array('exec'=>'articles','id_article'=>$id_article),'data'=>''));

	$row = sql_fetsel("*", "spip_articles", "id_article=$id_article");

	if (!$row
	OR !autoriser('voir', 'article', $id_article)) {
		include_spip('inc/minipres');
		echo minipres(_T('public:aucun_article'));
	} else {
		$row['titre'] = sinon($row["titre"],_T('info_sans_titre'));

		$res = debut_gauche('accueil',true)
		  .  articles_affiche($id_article, $row, _request('cherche_auteur'), _request('ids'), _request('cherche_mot'), _request('select_groupe'), _request('trad_err'), _request('debut'))
		  . "<br /><br /><div class='centered'>"
		. "</div>"
		. fin_gauche();

		$commencer_page = charger_fonction('commencer_page', 'inc');
		echo $commencer_page("&laquo; ". $row['titre'] ." &raquo;", "naviguer", "articles", $row['id_rubrique']);

		echo debut_grand_cadre(true),
			afficher_hierarchie($row['id_rubrique'],_T('titre_cadre_interieur_rubrique'),$id_article,'article',$row['id_secteur'],($row['statut'] == 'publie')),
			fin_grand_cadre(true),
			$res,
			fin_page();
	}
}
function informer_auteur($bof)
{
	include_spip('inc/json');
	include_spip('formulaires/login');
	include_spip('inc/auth');
	$login = strval(_request('var_login'));
	$row = auth_informer_login($login);
	if ($row AND is_array($row))
		unset($row['id_auteur']);
	else {
		// generer de fausses infos, mais credibles, pour eviter une attaque
		// http://core.spip.org/issues/1758

		include_spip('inc/securiser_action');
		$fauxalea1 = md5('fauxalea'.secret_du_site().$login.floor(date('U')/86400));
		$fauxalea2 = md5('fauxalea'.secret_du_site().$login.ceil(date('U')/86400));

		$row = array('login' => $login,
		 'cnx' => 0,
		 'logo' => "",
		 'alea_actuel' => substr_replace($fauxalea1,'.',24,0),
		 'alea_futur' => substr_replace($fauxalea2,'.',24,0)
		);
	}

	return json_export($row);
}
Example #12
0
function plugins_afficher_plugin_dist($url_page, $plug_file, $checked, $actif, $expose = false, $class_li = "item", $dir_plugins = _DIR_PLUGINS)
{
    static $id_input = 0;
    static $versions = array();
    $force_reload = _request('var_mode') == 'recalcul';
    $get_infos = charger_fonction('get_infos', 'plugins');
    $info = $get_infos($plug_file, $force_reload, $dir_plugins);
    $prefix = $info['prefix'];
    $cfg = "";
    $checkable = $dir_plugins !== _DIR_PLUGINS_DIST;
    $nom = plugin_nom($info, $dir_plugins, $plug_file);
    if (!plugin_version_compatible($info['compatibilite'], $GLOBALS['spip_version_branche'], 'spip')) {
        $info['slogan'] = _T('plugin_info_non_compatible_spip');
        $erreur = http_img_pack("plugin-dis-32.png", _T('plugin_info_non_compatible_spip'), " class='picto_err'", _T('plugin_info_non_compatible_spip'));
        $class_li .= " disabled";
        $checkable = false;
    } elseif (isset($info['erreur'])) {
        $class_li .= " error";
        $erreur = http_img_pack("plugin-err-32.png", _T('plugin_info_erreur_xml'), " class='picto_err'", _T('plugin_info_erreur_xml')) . "<div class='erreur'>" . join('<br >', $info['erreur']) . "</div>";
        $checkable = false;
    } elseif (isset($GLOBALS['erreurs_activation_raw'][$dir_plugins . $plug_file])) {
        $class_li .= " error";
        $erreur = http_img_pack("plugin-err-32.png", _T('plugin_impossible_activer', array('plugin' => $nom)), " class='picto_err'", _T('plugin_impossible_activer', array('plugin' => $nom))) . "<div class='erreur'>" . implode("<br />", $GLOBALS['erreurs_activation_raw'][$dir_plugins . $plug_file]) . "</div>";
    } else {
        $cfg = $actif ? plugin_bouton_config($plug_file, $info, $dir_plugins) : "";
    }
    // numerotons les occurrences d'un meme prefix
    $versions[$prefix] = $id = isset($versions[$prefix]) ? $versions[$prefix] + 1 : '';
    $class_li .= ($actif ? " actif" : "") . ($expose ? " on" : "");
    return "<li id='{$prefix}{$id}' class='{$class_li}'>" . ((!$checkable and !$checked) ? '' : plugin_checkbox(++$id_input, $plug_file, $checked)) . plugin_resume($info, $dir_plugins, $plug_file, $url_page) . $cfg . $erreur . (($dir_plugins !== _DIR_PLUGINS_DIST and plugin_est_installe($plug_file)) ? plugin_desintalle($plug_file, $nom) : '') . "<div class='details'>" . (!$expose ? '' : affiche_bloc_plugin($plug_file, $info)) . "</div>" . "</li>";
}
Example #13
0
/**
 * Quand on poste definitivement un formulaire autosave,
 * on peut vider la session autosave
 * et on vide aussi toutes les autosave de plus de 72H (delai par defaut) ou sans __timestamp (vieilles sessions)
 * @param $flux
 * @return
 */
function cvtautosave_formulaire_traiter($flux)
{
    // si on poste 'autosave' c'est qu'on n'a plus besoin de sauvegarder :
    // on elimine les donnees de la session
    if ($cle_autosave = _request('autosave')) {
        include_spip('inc/session');
        session_set('session_autosave_' . $cle_autosave, null);
        // delai par defaut avant purge d'un backup de form : 72H
        if (!defined('_AUTOSAVE_GB_DELAY')) {
            define('_AUTOSAVE_GB_DELAY', 72 * 3600);
        }
        $time_too_old = time() - _AUTOSAVE_GB_DELAY;
        // purger aussi toutes les vieilles autosave
        $session = $GLOBALS['visiteur_session'];
        foreach ($session as $k => $v) {
            if (strncmp($k, 'session_autosave_', 17) == 0) {
                $timestamp = 0;
                if (preg_match(",&__timestamp=(\\d+)\$,", $v, $m)) {
                    $timestamp = intval($m[1]);
                }
                if ($timestamp < $time_too_old) {
                    session_set($k, null);
                }
            }
        }
    }
    return $flux;
}
Example #14
0
function action_bank_response_dist($cancel = null, $auto = null)
{
    if (isset($GLOBALS['meta']['bank_paiement']) and $prestas = unserialize($GLOBALS['meta']['bank_paiement']) and count($prestas = $prestas['presta'])) {
        $auto = $auto ? "auto" : "";
        $result = false;
        // intercepter les retours depuis un presta actif
        if ($p = _request('bankp') and (isset($prestas[$p]) and $prestas[$p] or $p == 'gratuit')) {
            $call_response = charger_fonction('response', "presta/{$p}/call");
            spip_log('call_' . $auto . 'response : ' . $_SERVER['REQUEST_URI'], "{$p}{$auto}");
            list($id_transaction, $result) = $call_response();
            spip_log('call_' . $auto . 'response : ' . "{$id_transaction}/{$result}", "{$p}{$auto}");
        } else {
            spip_log("Prestataire {$p} inconnu ou inactif", 'bank_response');
        }
        // fall back si le presta n'a rien renvoye de lisible
        // et qu'on a bien id=id_transaction;hash dans l'url
        if (!$result and !$id_transaction and $id = _request('id') and $id = explode(';', $id) and count($id) == 2 and $id_transaction = reset($id) and $hash = end($id)) {
            $id_transaction = sql_getfetsel("id_transaction", "spip_transactions", "id_transaction=" . intval($id_transaction) . " AND transaction_hash=" . sql_quote($hash));
            if ($id_transaction) {
                sql_updateq("spip_transactions", array('message' => 'Transaction annul&eacute;e', 'statut' => 'echec', 'mode' => $p), 'id_transaction=' . intval($id_transaction) . " AND statut='commande'");
            }
        }
        if (!$auto) {
            redirige_apres_retour_transaction($p, 'acte', $cancel ? false : $result, $id_transaction);
        }
        die;
        // mourir silencieusement
    } else {
        spip_log('Aucun prestataire de paiement configure', 'bank_response');
    }
    die;
}
function balise_ECATALOGUE_SORTING_dyn($type = '')
{
    if ($type) {
        $type = '_' . $type;
    }
    return array("balise/ecatalogue_sorting" . $type, 0, array('sort_by' => _request('sort_by'), 'sort_order' => _request('sort_order')));
}
Example #16
0
function exec_description_outil_dist() {
cs_log("INIT : exec_description_outil_dist() - Preparation du retour par Ajax (donnees transmises par GET)");
	$script = _request('script');
	$outil = _request('outil');
cs_log(" -- outil = $outil - script = $script");
	cs_minipres(!preg_match('/^\w+$/', $script));
	// ici on commence l'initialisation de tous les outils
	global $outils, $metas_vars, $metas_outils;
	include_spip('cout_utils');
	// remplir $outils (et aussi $cs_variables qu'on n'utilise pas ici);
	include_spip('config_outils');
cs_log(" -- exec_description_outil_dist() - Appel de config_outils.php : nb_outils = ".count($outils));
	// installer les outils
	cs_installe_outils();

cs_log(" -- appel de charger_fonction('description_outil', 'inc') et de description_outil($outil, $script) :");
	include_spip('inc/cs_outils');
	$description_outil = charger_fonction('description_outil', 'inc');
	$descrip = cs_initialisation_d_un_outil($outil, $description_outil, true);
	cs_init_plugins();

cs_log(" FIN : exec_description_outil_dist() - Appel maintenant de ajax_retour() pour afficher la ligne de configuration de l'outil");	
	include_spip('inc/texte');
	include_spip('cout_fonctions'); // fonctions pour les pipelines
	ajax_retour(propre($descrip));
}
Example #17
0
/**
 * Un exec d'acces interdit
 *
 * @param string $message
 */
function exec_403_dist($message = '')
{
    $exec = _request('exec');
    $titre = "exec_{$exec}";
    $navigation = "";
    $extra = "";
    if (!$message) {
        $message = _L("Vous n'avez pas le droit d'acc&eacute;der à la page <b>@exec@</b>.", array('exec' => _request('exec')));
    }
    $contenu = "<h1 class='grostitre'>" . _T('info_acces_interdit') . "</h1>" . $message;
    if (_request('var_zajax')) {
        include_spip('inc/actions');
        ajax_retour($contenu);
    } else {
        include_spip('inc/presentation');
        // alleger les inclusions avec un inc/presentation_mini
        $commencer_page = charger_fonction('commencer_page', 'inc');
        echo $commencer_page($titre);
        echo debut_gauche("403_{$exec}", true);
        echo recuperer_fond('prive/squelettes/navigation/dist', array());
        echo pipeline('affiche_gauche', array('args' => array('exec' => '403', 'exec_erreur' => $exec), 'data' => ''));
        echo creer_colonne_droite("403", true);
        echo pipeline('affiche_droite', array('args' => array('exec' => '403', 'exec_erreur' => $exec), 'data' => ''));
        echo debut_droite("403", true);
        echo pipeline('affiche_milieu', array('args' => array('exec' => '403', 'exec_erreur' => $exec), 'data' => $contenu));
        echo fin_gauche(), fin_page();
    }
}
Example #18
0
function inc_meta_dist($table = 'meta')
{
    // Lire les meta, en cache si present, valide et lisible
    // en cas d'install ne pas faire confiance au meta_cache eventuel
    $cache = cache_meta($table);
    if ((_request('exec') !== 'install' or !test_espace_prive()) and $new = jeune_fichier($cache, _META_CACHE_TIME) and lire_fichier_securise($cache, $meta) and $meta = @unserialize($meta)) {
        $GLOBALS[$table] = $meta;
    }
    if (isset($GLOBALS[$table]['touch']) and $GLOBALS[$table]['touch'] < time() - _META_CACHE_TIME) {
        $GLOBALS[$table] = array();
    }
    // sinon lire en base
    if (!$GLOBALS[$table]) {
        $new = !lire_metas($table);
    }
    // renouveller l'alea general si trop vieux ou sur demande explicite
    if (test_espace_prive() || isset($_GET['renouvelle_alea']) and $GLOBALS[$table] and time() > _RENOUVELLE_ALEA + $GLOBALS['meta']['alea_ephemere_date']) {
        // si on n'a pas l'acces en ecriture sur le cache,
        // ne pas renouveller l'alea sinon le cache devient faux
        if (supprimer_fichier($cache)) {
            include_spip('inc/acces');
            renouvelle_alea();
            $new = false;
        } else {
            spip_log("impossible d'ecrire dans " . $cache);
        }
    }
    // et refaire le cache si on a du lire en base
    if (!$new) {
        touch_meta(false, $table);
    }
}
Example #19
0
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)));
}
Example #20
0
/**
 * il faut avoir un id_transaction et un transaction_hash coherents
 * pour se premunir d'une tentative d'appel exterieur
 *
 *
 * @return array
 */
function presta_virement_call_response()
{
    // recuperer la reponse en post et la decoder
    $id_transaction = _request('id_transaction');
    $transaction_hash = _request('hash');
    $mode = 'virement';
    if (!($row = sql_fetsel('*', 'spip_commandes_transactions', 'id_transaction=' . intval($id_transaction)))) {
        spip_log("id_transaction {$id_transaction} non trouve", 'gratuit.' . _LOG_ERREUR);
        return array($id_transaction, false);
    }
    if ($transaction_hash != $row['transaction_hash']) {
        spip_log("id_transaction {$id_transaction}, hash {$transaction_hash} non conforme", 'gratuit.' . _LOG_ERREUR);
        return array($id_transaction, false);
    }
    if ($row['statut'] == 'ok') {
        spip_log("Check:Transaction {$id_transaction} deja validee", "virement");
        return array($id_transaction, true);
    }
    // si pages publiques, c'est le client qui demande à payer par virement
    if (!test_espace_prive()) {
        $bank_recoit_notification = charger_fonction('recoit_notification', 'bank');
        return bank_recoit_notification($id_transaction, $transaction_hash, $mode);
        //retourne $id_transaction,true
    }
    return array($id_transaction, false);
}
Example #21
0
/**
 * Pré-traitement du fichier $nom
 *
 * @param  string $nom
 * @param  Object $cfg
 * @return Object
 */
function cfg_pre_traiter_cfg_fichier($nom, &$cfg){
	include_spip('inc/flock');
	
	// enlever <OLD>
	$cfg->val[$nom] = str_replace('<OLD>','', $cfg->val[$nom]);
	
	// effacement
	if (_request('_cfg_delete')){
		$supprimer_fichier = _COMPAT_CFG_192 ? 'cfg_supprimer_fichier' : 'supprimer_fichier';
		if (!$supprimer_fichier(get_spip_doc($cfg->val[$nom]))) {
			$cfg->messages['erreurs'][$nom] = _T('cfg:erreur_suppression_fichier', array('fichier'=>get_spip_doc($cfg->val[$nom])));		
		}
	// ajout ou modification
	} else {
		$f = cfg_get_info_fichier_upload($nom);
		if ($f['tmp_name']) {
			// suppression de l'ancien fichier
			$supprimer_fichier = _COMPAT_CFG_192 ? 'cfg_supprimer_fichier' : 'supprimer_fichier';
			if ($cfg->val[$nom] && !$supprimer_fichier(get_spip_doc($cfg->val[$nom]))) {
				$cfg->messages['erreurs'][$nom] = _T('cfg:erreur_suppression_fichier', array('fichier'=>get_spip_doc($cfg->val[$nom])));	
			} else {
				if (!$fichier = cfg_ajoute_un_document($f['tmp_name'],$f['name'],$nom, 'config/'.$cfg->vue)){
					$cfg->messages['erreurs'][$nom] = _T('cfg:erreur_copie_fichier', array('fichier'=>'config/'.$cfg->vue . '/' . $f['name']));	
				} else {
					$cfg->val[$nom] = set_spip_doc($fichier);
				}
			}
		}
	}

	return $cfg;
}
Example #22
0
function formulaires_editer_balade_traiter_dist($id_collection = 'new', $retour = '')
{
    $message = array();
    // récupérer le rang des articles de la balade et le mettre à jour
    $rangs = _request('rang');
    foreach ($rangs as $rang => $id_article) {
        $rang = $rang + 1;
        $ok = sql_updateq('spip_collections_liens', array('rang' => intval($rang)), "objet='article' AND id_objet = {$id_article}");
    }
    // éditer le gis associé
    if ($action_editer = charger_fonction("editer_gis", 'action', true)) {
        list($id, $err) = $action_editer(_request('id_gis'));
    }
    // ne pas polluer l'url de retour avec des paramètres inutiles
    set_request('id_gis');
    set_request('id_objet');
    // invalider le cache
    include_spip('inc/invalideur');
    suivre_invalideur("id='gis/{$id}");
    // rediriger sur l'url de retour passée en paramètre
    if ($retour) {
        include_spip('inc/headers');
        $message['redirect'] = redirige_formulaire($retour);
    }
    return $message;
}
Example #23
0
function install_etape_ldap4_dist()
{
    $adresse_ldap = _request('adresse_ldap');
    $login_ldap = _request('login_ldap');
    $pass_ldap = _request('pass_ldap');
    $port_ldap = _request('port_ldap');
    $base_ldap = _request('base_ldap');
    $base_ldap_text = _request('base_ldap_text');
    if (!$base_ldap) {
        $base_ldap = $base_ldap_text;
    }
    echo install_debut_html();
    $ldap_link = ldap_connect($adresse_ldap, $port_ldap);
    @ldap_bind($ldap_link, $login_ldap, $pass_ldap);
    // Essayer de verifier le chemin fourni
    $r = @ldap_compare($ldap_link, $base_ldap, "objectClass", "");
    $fail = ldap_errno($ldap_link) == 32;
    if ($fail) {
        echo info_etape(_T('info_chemin_acces_annuaire')), info_progression_etape(3, 'etape_ldap', 'install/', true), "<div class='error'><p><b>" . _T('avis_operation_echec') . "</b></p><p>" . _T('avis_chemin_invalide_1'), " (<tt>" . htmlspecialchars($base_ldap) . "</tt>) " . _T('avis_chemin_invalide_2') . "</p></div>";
    } else {
        info_etape(_T('info_reglage_ldap'));
        echo info_progression_etape(4, 'etape_ldap', 'install/');
        $statuts = liste_statuts_ldap();
        $statut_ldap = defined('_INSTALL_STATUT_LDAP') ? _INSTALL_STATUT_LDAP : $GLOBALS['liste_des_statuts']['info_redacteurs'];
        $res = install_propager(array('adresse_ldap', 'port_ldap', 'login_ldap', 'pass_ldap', 'protocole_ldap', 'tls_ldap')) . "<input type='hidden' name='etape' value='ldap5' />" . "<input type='hidden' name='base_ldap' value='" . htmlentities($base_ldap) . "' />" . fieldset(_T('info_statut_utilisateurs_1'), array('statut_ldap' => array('label' => _T('info_statut_utilisateurs_2') . '<br />', 'valeur' => $statut_ldap, 'alternatives' => $statuts))) . install_ldap_correspondances() . bouton_suivant();
        echo generer_form_ecrire('install', $res);
    }
    echo install_fin_html();
}
Example #24
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);
    }
}
/**
 * Plugin TiSpiP-Lcs pour Spip 2.0
 * Licence GPL (c) 2006-2008 (d0M0.b) 
 *
 */
function action_accorder_auteurs_comptes_lcs_dist(){
#	$securiser_action = charger_fonction('securiser_action','inc');
#	$arg = $securiser_action();
	$mess_ok='';
	$err='';
    $redirect = _request('redirect');
	  if ($redirect==NULL) $redirect="?exec=accorder_comptes_lcs";

	if (_request('arg')) {
						sql_updateq('spip_auteurs', array('statut' => '5poubelle'),
						'id_auteur='.intval($args));

		if(is_array(_request('tous'))){
			foreach(_request('tous') as $k=>$val){
							sql_updateq('spip_auteurs', array('statut' => '5poubelle'),
							'id_auteur='.intval($val));
			}
		}
/*
		if(_request('newstatut') && _request('newstatut')=="supprime"){
			sql_delete ('spip_auteurs', 'id_auteur='.sql_quote(intval($args)));
		}
*/
	}
}
 /**
  * Actiongroup qui permet de gérer la suppression
  *
  */
 public function processDelete()
 {
     $form = CopixFormFactory::get(_request('form_id'));
     $form->delete(CopixRequest::asArray());
     $url = _request('url');
     return _arRedirect(_url($url));
 }
Example #27
0
function formulaires_editer_zone_traiter_dist($id_zone = 'new', $retour = '', $associer_objet = '', $config_fonc = 'zones_edit_config', $row = array(), $hidden = '')
{
    if (_request('publique') !== 'oui') {
        set_request('publique', 'non');
    }
    if (_request('privee') !== 'oui') {
        set_request('privee', 'non');
    }
    $res = formulaires_editer_objet_traiter('zone', $id_zone, 0, 0, $retour, $config_fonc, $row, $hidden);
    if ($retour and $res['id_zone']) {
        $res['redirect'] = parametre_url($retour, 'id_zone', $res['id_zone']);
    }
    // Un lien auteur a prendre en compte ?
    if ($associer_objet and $id_zone = $res['id_zone']) {
        $objet = '';
        if (preg_match(',^\\w+\\|[0-9]+$,', $associer_objet)) {
            list($objet, $id_objet) = explode('|', $associer_objet);
        }
        if ($objet and $id_objet and autoriser('modifier', $objet, $id_objet)) {
            zone_lier($id_zone, $objet, $id_objet);
            if (isset($res['redirect'])) {
                $res['redirect'] = parametre_url($res['redirect'], "id_lien_ajoute", $id_zone, '&');
            }
        }
    }
    return $res;
}
Example #28
0
	private function create() {
		$v = _request(array('event' => 0));

		if (_empty($v)) {
			return;
		}

		$sql = 'SELECT id, event_alias
			FROM _events
			WHERE id = ?';
		if (!$event = sql_fieldrow(sql_filter($sql, $v->event))) {
			return;
		}

		$sql = 'SELECT ub
			FROM _artists_events
			WHERE a_artist = ?
				AND a_event = ?';
		if (sql_field(sql_filter($sql, $this->object['ub'], $v->event))) {
			return;
		}

		$sql_insert = array(
			'a_artist' => $this->object['ub'],
			'a_event' => $event['id']
		);
		sql_insert('artists_events', $sql_insert);

		return redirect(s_link('events', $event['event_alias']));
	}
/**
 * Un parametre permet de forcer le statut (exemple: plugin antispam)
 *
 * http://code.spip.net/@inc_forum_insert_dist
 *
 * @param $objet
 * @param $id_objet
 * @param $id_forum
 *   en reponse a
 * @param null $force_statut
 * @return bool
 */
function inc_forum_insert_dist($objet, $id_objet, $id_forum, $force_statut = null)
{
    if (!in_array($force_statut, array('privrac', 'privadm'))) {
        if (!strlen($objet) or !intval($id_objet)) {
            spip_log("Erreur insertion forum sur objet='{$objet}', id_objet={$id_objet}", 'forum.' . _LOG_ERREUR);
            return 0;
        }
    }
    spip_log("insertion de forum {$force_statut} sur {$objet} {$id_objet} (+{$id_forum})", 'forum');
    include_spip('inc/filtres');
    include_spip('inc/modifier');
    include_spip('inc/session');
    $champs = objet_info('forum', 'champs_editables');
    $c = collecter_requests($champs, array());
    $c['statut'] = 'off';
    $c['objet'] = $objet;
    $c['id_objet'] = $id_objet;
    $c['auteur'] = sinon(session_get('nom'), session_get('session_nom'));
    $c['email_auteur'] = sinon(session_get('email'), session_get('session_email'));
    $c = pipeline('pre_edition', array('args' => array('table' => 'spip_forum', 'id_objet' => $id_forum, 'action' => 'instituer'), 'data' => forum_insert_statut($c, $force_statut)));
    $id_reponse = forum_insert_base($c, $id_forum, $objet, $id_objet, $c['statut'], _request('ajouter_mot'));
    if (!$id_reponse) {
        spip_log("Echec insertion forum sur {$objet} {$id_objet} (+{$id_forum})", 'forum.' . _LOG_ERREUR);
    } else {
        spip_log("forum insere' {$id_reponse} sur {$objet} {$id_objet} (+{$id_forum})", 'forum');
    }
    return $id_reponse;
}
Example #30
0
/**
 * Recuperer les champs date_xx et heure_xx, verifier leur coherence et les reformater
 *
 * @param string $suffixe
 * @param bool $horaire
 * @param array $erreurs
 * @return int
 */
function verifier_corriger_date_saisie($suffixe, $horaire, &$erreurs)
{
    include_spip('inc/filtres');
    $date = _request("date_{$suffixe}") . ($horaire ? ' ' . trim(_request("heure_{$suffixe}")) . ':00' : '');
    $date = recup_date($date);
    if (!$date) {
        return '';
    }
    $ret = null;
    if (!($ret = mktime(0, 0, 0, $date[1], $date[2], $date[0]))) {
        $erreurs["date_{$suffixe}"] = _T('agenda:erreur_date');
    } elseif (!($ret = mktime($date[3], $date[4], $date[5], $date[1], $date[2], $date[0]))) {
        $erreurs["date_{$suffixe}"] = _T('agenda:erreur_heure');
    }
    if ($ret) {
        if (trim(_request("date_{$suffixe}") !== ($d = date('d/m/Y', $ret)))) {
            $erreurs["date_{$suffixe}"] = _T('agenda:erreur_date_corrigee');
            set_request("date_{$suffixe}", $d);
        }
        if ($horaire and trim(_request("heure_{$suffixe}") !== ($h = date('H:i', $ret)))) {
            $erreurs["heure_{$suffixe}"] = _T('agenda:erreur_heure_corrigee');
            set_request("heure_{$suffixe}", $h);
        }
    }
    return $ret;
}