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); }
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); }
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') . " » " . 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; }
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("« ". $row['titre'] ." »", "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); }
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>"; }
/** * 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; }
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é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'))); }
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)); }
/** * 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é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(); } }
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); } }
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("&","&",urldecode($redirect))); }
/** * 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); }
/** * 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; }
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; }
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(); }
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('&', '&', $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)); }
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; }
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; }
/** * 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; }