function action_delimport_dist() { // CHANGE xxxx to your delicious User Name $base = "http://delicious.com/xxxx"; $c = recuperer_page_cache($base); $count = 0; if (preg_match(",<div class=\"left linkCount\">(\\d+),ims", $c, $m)) { $count = intval($m[1]); } echo "<h1>{$count} links</h1>"; $maxiter = 200; $bookmarks = array(); $url = $base; $page = 1; do { #var_dump($url); $c = recuperer_page_cache($url); $links = importer_links($c); $bookmarks = array_merge($bookmarks, $links); $page++; $url = parametre_url($base, 'page', $page); } while (count($links) and count($bookmarks) < $count and $maxiter--); var_dump(count($bookmarks)); $out = exporter_links($bookmarks); ecrire_fichier(_DIR_TMP . "bookmarks.html", $out); echo "End"; }
/** * 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); } } }
/** * Sauvegarder par morceaux * * @param string $arg */ function action_sauvegarder_dist($arg = null) { if (!$arg) { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); } $status_file = $arg; $redirect = parametre_url(generer_action_auteur('sauvegarder', $status_file), "step", intval(_request('step') + 1), '&'); // lancer export qui va se relancer jusqu'a sa fin $sauvegarder = charger_fonction('sauvegarder', 'inc'); utiliser_langue_visiteur(); // quand on sort de $export avec true c'est qu'on a fini if ($sauvegarder($status_file, $redirect)) { dump_end($status_file, 'sauvegarder'); include_spip('inc/headers'); echo redirige_formulaire(generer_url_ecrire("sauvegarder", 'status=' . $status_file, '', true, true)); } // forcer l'envoi du buffer par tous les moyens ! echo str_repeat("<br />\r\n", 256); while (@ob_get_level()) { @ob_flush(); @flush(); @ob_end_flush(); } }
function html_f3666965c018303599bb64189cbac96c($Cache, $Pile, $doublons = array(), $Numrows = array(), $SP = 0) { if (isset($Pile[0]["doublons"]) and is_array($Pile[0]["doublons"])) { $doublons = nettoyer_env_doublons($Pile[0]["doublons"]); } $connect = ''; $page = ' <div' . (($t1 = strval(interdire_scripts(entites_html(sinon(table_valeur(@$Pile[0], (string) 'divclass', null), 'spip-admin-bloc'), true)))) !== '' ? ' class="' . $t1 . '"' : '') . ' id=\'spip-admin\' dir="' . lang_dir(@$Pile[0]['lang'], 'ltr', 'rtl') . '">' . (($t1 = strval(interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'analyser', null), true)))) !== '' ? ' <a href="' . $t1 . ('" class="spip-admin-boutons" id="analyser">' . _T('public|spip|ecrire:analyse_xml') . (($t2 = strval(interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'xhtml_error', null), true)))) !== '' ? ' (' . $t2 . ')' : '') . '</a>') : '') . ' ' . (($t1 = strval(interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'objet', null), true) ? ' ' : ''))) !== '' ? $t1 . (' ' . (($t2 = strval(interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'id_objet', null), true)))) !== '' ? '<a href="' . interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) ('voir_' . interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'objet', null), true))), null), true)) . '" class="spip-admin-boutons" id="voir_' . interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'objet', null), true)) . '">' . interdire_scripts(_T(objet_info(entites_html(table_valeur(@$Pile[0], (string) 'objet', null), true), 'texte_objet'))) . ' (' . $t2 . ')</a>' : '') . ' ') : '') . '<!--extra-->' . (($t1 = strval(interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'ecrire', null), true)))) !== '' ? ' <a href="' . $t1 . ('" class="spip-admin-boutons" id="ecrire">' . _T('public|spip|ecrire:espace_prive') . '</a>') : '') . ' <a href="' . parametre_url(self(), 'var_mode', interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'calcul', null), true))) . '" class="spip-admin-boutons" id="var_mode">' . _T('public|spip|ecrire:admin_recalculer') . interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'use_cache', null), true)) . '</a>' . (($t1 = strval(interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'preview', null), true)))) !== '' ? ' <a href="' . $t1 . ('" class="spip-admin-boutons" id="preview">' . _T('public|spip|ecrire:previsualisation') . '</a>') : '') . (($t1 = strval(interdire_scripts(entites_html(table_valeur(@$Pile[0], (string) 'debug', null), true)))) !== '' ? ' <a href="' . $t1 . ('" class="spip-admin-boutons" id="debug">' . _T('public|spip|ecrire:admin_debug') . '</a>') : '') . ' </div> '; return analyse_resultat_skel('html_f3666965c018303599bb64189cbac96c', $Cache, $page, 'squelettes-dist/formulaires/administration.html'); }
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')); }
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); }
function inc_instituer_site_dist($id_syndic, $statut=-1) { if ($statut == -1) return ""; $liste_statuts = array( // statut => array(titre,image) 'prop' => array(_T('info_statut_site_3'),''), 'publie' => array(_T('info_statut_site_2'),''), 'refuse' => array(_T('info_statut_site_4'),'') ); if (!in_array($statut, array_keys($liste_statuts))) $liste_statuts[$statut] = array($statut,''); $res = "<ul id='instituer_site-$id_syndic' class='instituer_site instituer'>" . "<li>" . _T('info_statut_site_1') ."<ul>"; $href = redirige_action_auteur('editer_site',$id_syndic,'sites', "id_syndic=$id_syndic" /*"&id_parent=$id_rubrique"*/); foreach($liste_statuts as $s=>$affiche){ $href = parametre_url($href,'statut',$s); if ($s==$statut) $res .= "<li class='$s selected'>" . puce_statut($s) . $affiche[0] . '</li>'; else $res .= "<li class='$s'><a href='$href' onclick='return confirm(confirm_changer_statut);'>" . puce_statut($s) . $affiche[0] . '</a></li>'; } $res .= "</ul></li></ul>"; return $res; }
function plugins_afficher_nom_plugin_dist($url_page, $plug_file, $checked, $actif, $expose = false, $class_li = "item", $dir_plugins = _DIR_PLUGINS) { static $id_input = 0; static $versions = array(); $erreur = false; $s = ""; $get_infos = charger_fonction('get_infos', 'plugins'); $info = $get_infos($plug_file, false, $dir_plugins); // numerotons les occurences d'un meme prefix $versions[$info['prefix']] = isset($versions[$info['prefix']]) ? $versions[$info['prefix']] + 1 : ''; $id = $info['prefix'] . $versions[$info['prefix']]; $class = $class_li; $class .= $actif ? " actif" : ""; $class .= $expose ? " on" : ""; $erreur = isset($info['erreur']); if ($erreur) { $class .= " error"; } $s .= "<li id='{$id}' class='{$class}'>"; // Cartouche Resume $s .= "<div class='resume'>"; $prefix = $info['prefix']; $dir = "{$dir_plugins}{$plug_file}/lang/{$prefix}"; $desc = plugin_propre($info['description'], $dir); $url_stat = parametre_url($url_page, "plugin", $dir_plugins . $plug_file); $s .= "<strong class='nom'>" . typo($info['nom']) . "</strong>"; $s .= " <span class='version'>" . $info['version'] . "</span>"; $s .= " <span class='etat'> - " . plugin_etat_en_clair($info['etat']) . "</span>"; $s .= "</div>"; if ($erreur) { $s .= "<div class='erreur'>" . join('<br >', $info['erreur']) . "</div>"; } $s .= "</li>"; return $s; }
/** * @deprecated * @param null|string $arg */ function action_bank_enregistrer_modereglement_dist($arg = null) { if (is_null($arg)) { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); } $arg = explode("-", $arg); $id_transaction = intval(array_pop($arg)); $presta = implode("-", $arg); if (isset($GLOBALS['meta']['bank_paiement']) and $config = unserialize($GLOBALS['meta']['bank_paiement'])) { $prestas = is_array($config['presta']) ? $config['presta'] : array(); $prestas = array_filter($prestas); if (is_array($config['presta_abo'])) { $prestas = array_merge($prestas, array_filter($config['presta_abo'])); } } if ((isset($prestas[$presta]) and $prestas[$presta] or $presta == 'gratuit') and $id_transaction and $transaction = sql_fetsel('*', 'spip_transactions', 'id_transaction=' . intval($id_transaction))) { if ($transaction['statut'] == 'commande') { sql_updateq("spip_transactions", array('mode' => $presta, 'autorisation_id' => date('d/m/Y-H:i:s') . "/" . $GLOBALS['ip']), 'id_transaction=' . intval($id_transaction)); // trigger le regelement en attente // cela permet de factoriser le code $row = sql_fetsel('*', 'spip_transactions', 'id_transaction=' . intval($id_transaction)); pipeline('trig_bank_reglement_en_attente', array('args' => array('statut' => 'attente', 'mode' => $row['mode'], 'type' => $row['abo_uid'] ? 'abo' : 'acte', 'id_transaction' => $id_transaction, 'row' => $row), 'data' => '')); $GLOBALS['redirect'] = _request('redirect'); $GLOBALS['redirect'] = parametre_url($GLOBALS['redirect'], "attente_mode", $presta, "&"); } } }
/** * Mise a jour automatisee de l'ecran de securite * On se base sur le filemtime de l'ecran source avec un en-tete if_modified_since * Mais on fournit aussi le md5 de notre ecran actuel et la version branche de SPIP * Cela peut permettre de diffuser un ecran different selon la version de SPIP si besoin * ou de ne repondre une 304 que si le md5 est bon */ function mise_a_jour_ecran_securite() { // TODO : url https avec verification du certificat return; // si l'ecran n'est pas deja present ou pas updatable, sortir if (!_URL_ECRAN_SECURITE or !file_exists($filename = _DIR_ETC . "ecran_securite.php") or !is_writable($filename) or !($last_modified = filemtime($filename)) or !($md5 = md5_file($filename))) { return false; } include_spip('inc/distant'); $tmp_file = _DIR_TMP . "ecran_securite.php"; $url = parametre_url(_URL_ECRAN_SECURITE, "md5", $md5); $url = parametre_url($url, "vspip", $GLOBALS['spip_version_branche']); $res = recuperer_url($url, array('if_modified_since' => $last_modified, 'file' => $tmp_file)); // si il y a une version plus recente que l'on a recu correctement if ($res['status'] == 200 and $res['length'] and $tmp_file = $res['file']) { if ($md5 !== md5_file($tmp_file)) { // on essaye de l'inclure pour verifier que ca ne fait pas erreur fatale include_once $tmp_file; // ok, on le copie a la place de l'ecran existant // en backupant l'ecran avant, au cas ou @copy($filename, $filename . "-bck-" . date('Y-m-d-His', $last_modified)); @rename($tmp_file, $filename); } else { @unlink($tmp_file); } } }
function enregistre_modif_plugin(){ include_spip('inc/plugin'); // recuperer les plugins dans l'ordre des $_POST $test = array(); foreach(liste_plugin_files() as $file){ $test['s'.substr(md5($file),0,16)] = $file; } $plugin=array(); foreach($_POST as $choix=>$val){ if (isset($test[$choix])&&$val=='O') $plugin[]=$test[$choix]; } spip_log("Changement des plugins actifs par l'auteur " . $GLOBALS['visiteur_session']['id_auteur'] . ": " . join(',', $plugin)); ecrire_plugin_actifs($plugin); // Chaque fois que l'on valide des plugins, on memorise la liste de ces plugins comme etant "interessants", avec un score initial, qui sera decremente a chaque tour : ainsi un plugin active pourra reter visible a l'ecran, jusqu'a ce qu'il tombe dans l'oubli. $plugins_interessants = @unserialize($GLOBALS['meta']['plugins_interessants']); if (!is_array($plugins_interessants)) $plugins_interessants = array(); $plugins_interessants2 = array(); foreach($plugins_interessants as $plug => $score) if ($score > 1) $plugins_interessants2[$plug] = $score-1; foreach ($plugin as $plug) $plugins_interessants2[$plug] = 10; // score initial ecrire_meta('plugins_interessants', serialize($plugins_interessants2)); if (isset($GLOBALS['meta']['plugin_erreur_activation'])){ $GLOBALS['redirect'] = parametre_url(_request('redirect'),'voir','recents'); } }
function menu_lang_pour_tous($nom, $default) { include_spip('inc/lang'); if ($GLOBALS['spip_lang'] <> $default) { $opt = lang_select($default); # et remplace if ($GLOBALS['spip_lang'] <> $default) { $default = ''; # annule tout choix par defaut if ($opt) lang_select(); } } $opt = liste_options_langues($nom, $default); if (!$opt) return ''; # lien a partir de / $cible = parametre_url(self(), 'lang' , '', '&'); $post = generer_url_action('converser', 'redirect='. rawurlencode($cible), '&'); return array('formulaires/menu_lang', 3600, array('nom' => $nom, 'url' => $post, 'langues' => $opt ) ); }
/** * @param array $config * @param int $id_transaction * @param string $transaction_hash * @param array $options * @return array|string */ function presta_paypalexpress_payer_acte_dist($config, $id_transaction, $transaction_hash, $options = array()) { include_spip('presta/paypalexpress/inc/paypalexpress'); $contexte = array('id_transaction' => $id_transaction, 'transaction_hash' => $transaction_hash, 'url_confirm' => parametre_url(self(), 'confirm', 'oui'), 'sandbox' => paypalexpress_is_sandbox($config) ? ' ' : '', 'logo' => bank_trouver_logo('paypal', 'PAYPAL.gif'), 'config' => $config); $contexte = array_merge($options, $contexte); return recuperer_fond('presta/paypalexpress/payer/acte', $contexte); }
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; }
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); }
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('&','&',$redirect); redirige_par_entete($redirect); } }
function inc_instituer_breve_dist($id_breve, $statut=-1) { if ($statut == -1) return ""; $liste_statuts = array( // statut => array(titre,image) 'prop' => array(_T('item_breve_proposee'),''), 'publie' => array(_T('item_breve_validee'),''), 'refuse' => array(_T('item_breve_refusee'),'') ); if (!in_array($statut, array_keys($liste_statuts))) $liste_statuts[$statut] = array($statut,''); $res = "<ul id='instituer_breve-$id_breve' class='instituer_breve instituer'>" . "<li>" . _T('entree_breve_publiee') ."<ul>"; $href = redirige_action_auteur('editer_breve',$id_breve,'breves_voir', "id_breve=$id_breve"); foreach($liste_statuts as $s=>$affiche){ $href = parametre_url($href,'statut',$s); if ($s==$statut) $res .= "<li class='$s selected'>" . puce_statut($s) . $affiche[0] . '</li>'; else $res .= "<li class='$s'><a href='$href' onclick='return confirm(confirm_changer_statut);'>" . puce_statut($s) . $affiche[0] . '</a></li>'; } $res .= "</ul></li></ul>"; return $res; }
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,''); }
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); } }
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,''); }
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("&","&",urldecode($redirect)),'id_article',$id_article,'&')); }
function balise_LOGIN_PUBLIC_dyn($url, $login) { include_spip('balise/formulaire_'); if (!$url # pas d'url passee en filtre ou dans le contexte AND !$url = _request('url') # ni d'url passee par l'utilisateur ) $url = parametre_url(self(), '', '', '&'); return balise_FORMULAIRE__dyn('login',$url,$login,false); }
function balise_LOGIN_PUBLIC_dyn($url, $login) { include_spip('balise/formulaire_'); if (!$url and !($url = _request('url'))) { $url = parametre_url(self(), '', '', '&'); } return balise_FORMULAIRE__dyn('login', $url, $login, false); }
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; } }
function redirige_par_entete($url, $equiv='', $status = 302) { if (!in_array($status,array(301,302))) $status = 302; $url = trim(strtr($url, "\n\r", " ")); # en theorie on devrait faire ca tout le temps, mais quand la chaine # commence par ? c'est imperatif, sinon l'url finale n'est pas la bonne if ($url[0]=='?') $url = url_de_base().(_DIR_RESTREINT?'':_DIR_RESTREINT_ABS).$url; if ($url[0]=='#') $url = self('&').$url; if ($x = _request('transformer_xml')) $url = parametre_url($url, 'transformer_xml', $x, '&'); if (defined('_AJAX') AND _AJAX) $url = parametre_url($url, 'var_ajax_redir', 1, '&'); // ne pas laisser passer n'importe quoi dans l'url $url = str_replace(array('<','"'),array('<','"'),$url); // interdire les url inline avec des pseudo-protocoles : if ( (preg_match(",data:,i",$url) AND preg_match("/base64\s*,/i",$url)) OR preg_match(",(javascript|mailto):,i",$url) ) $url ="./"; // Il n'y a que sous Apache que setcookie puis redirection fonctionne if (!$equiv OR (strncmp("Apache", $_SERVER['SERVER_SOFTWARE'],6)==0) OR defined('_SERVER_APACHE')) { @header("Location: " . $url); $equiv=""; } else { @header("Refresh: 0; url=" . $url); $equiv = "<meta http-equiv='Refresh' content='0; url=$url'>"; } include_spip('inc/lang'); if ($status!=302) http_status($status); echo '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">',"\n", html_lang_attributes(),' <head>', $equiv,' <title>HTTP '.$status.'</title> </head> <body> <h1>HTTP '.$status.'</h1> <a href="', quote_amp($url), '">', _T('navigateur_pas_redirige'), '</a></body></html>'; spip_log("redirige $status: $url"); exit; }
/** * 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,'&')); } }
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('&', '&', $url); // les redirections se font en &, pas en en & redirige_par_entete($url); } if (!headers_sent() and !ob_get_length()) { http_status(204); } // No Content return true; } return false; }
function base_restaurer_dist($titre = '', $reprise = false) { $status_file = _DUMP_STATUS_FILE; $status_file = _DIR_TMP . basename($status_file) . ".txt"; if (!lire_fichier($status_file, $status) or !($status = unserialize($status))) { } else { $redirect = parametre_url(generer_action_auteur('restaurer', _DUMP_STATUS_FILE), "step", intval(_request('step') + 1), '&'); $timeout = ini_get('max_execution_time'); // valeur conservatrice si on a pas reussi a lire le max_execution_time if (!$timeout) { $timeout = 30; } // parions sur une valeur tellement courante ... $max_time = time() + $timeout / 2; include_spip('inc/minipres'); @ini_set("zlib.output_compression", "0"); // pour permettre l'affichage au fur et a mesure $titre = _T('dump:restauration_en_cours') . " (" . count($status['tables']) . ") "; $balise_img = chercher_filtre('balise_img'); $titre .= $balise_img(chemin_image('searching.gif')); echo install_debut_html($titre); // script de rechargement auto sur timeout echo http_script("window.setTimeout('location.href=\"" . $redirect . "\";'," . $timeout * 1000 . ")"); echo "<div style='text-align: left'>\n"; dump_serveur($status['connect']); spip_connect('dump'); // au premier coup on ne fait rien sauf afficher l'ecran de sauvegarde if (_request('step')) { $options = array('callback_progression' => 'dump_afficher_progres', 'max_time' => $max_time, 'no_erase_dest' => lister_tables_noerase(), 'where' => $status['where'] ? $status['where'] : array(), 'desc_tables_dest' => array()); if ($desc = sql_getfetsel('valeur', 'spip_meta', "nom='dump_structure_temp'", '', '', '', '', 'dump') and $desc = unserialize($desc)) { $options['desc_tables_dest'] = $desc; } #var_dump(sql_allfetsel('nom,valeur','spip_meta',"",'','','','','dump')); #die(); $res = base_copier_tables($status_file, $status['tables'], 'dump', '', $options); } else { // mais on en profite pour reparer les version base pour etre sur de ne pas les perdre sql_updateq("spip_meta", array('impt' => 'oui'), "nom='version_installee'", '', 'dump'); sql_updateq("spip_meta", array('impt' => 'oui'), "nom LIKE '%_base_version'", '', 'dump'); } echo "</div>\n"; if (!$res) { echo dump_relance($redirect); } echo install_fin_html(); ob_end_flush(); flush(); if (!$res) { exit; } // quand on sort de $export avec true c'est qu'on a fini dump_end(_DUMP_STATUS_FILE, 'restaurer'); include_spip('inc/headers'); echo redirige_formulaire(generer_url_ecrire("restaurer", 'status=' . _DUMP_STATUS_FILE, '', true, true)); } }
/** * 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')); } }
function formulaires_creer_squelette_traiter_dist($path_base){ $res = array(); $filename = _request('filename'); if (ecrire_fichier($path_base.$filename, "")) $res = array('message_ok'=>_T('ok'),'redirect'=>parametre_url(self(),'f',$path_base.$filename)); else $res['message_erreur'] = _T('skeleditor:erreur_ecriture_fichier'); return $res; }