uawdijnntqw1x1x1
IP : 216.73.217.60
Hostname : webm005.cluster127.gra.hosting.ovh.net
Kernel : Linux webm005.cluster127.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
OS : Linux
PATH:
/
home
/
histoio
/
www
/
f41a3
/
..
/
plugins-dist
/
..
/
prive
/
..
/
35802
/
action.tar
/
/
editer_breve.php000060400000020477152525340210007721 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2020 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ /** * Gestion de l'action editer_breve * * @package SPIP\Breves\Actions */ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * Action d'édition d'une brève dans la base de données dont * l'identifiant est donné en paramètre de cette fonction ou * en argument de l'action sécurisée * * Si aucun identifiant n'est donné, on crée alors une nouvelle brève. * * @param null|int $arg * Identifiant de la brève. En absence utilise l'argument * de l'action sécurisée. * @return array * Liste : identifiant de la brève, texte d'erreur éventuel **/ function action_editer_breve_dist($arg = null) { if (is_null($arg)) { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); } // Envoi depuis le formulaire d'edition d'une breve if (!$id_breve = intval($arg)) { $id_breve = breve_inserer(_request('id_parent')); } if (!$id_breve) { return array(0, ''); } // erreur $err = breve_modifier($id_breve); return array($id_breve, $err); } /** * Insertion d'une brève dans une rubrique * * @pipeline_appel pre_insertion * @pipeline_appel post_insertion * * @param int $id_rubrique * Identifiant de la rubrique * @param array|null $set * @return int * Identifiant de la nouvelle brève. */ function breve_inserer($id_rubrique, $set = null) { include_spip('inc/rubriques'); // Si id_rubrique vaut 0 ou n'est pas definie, creer la breve // dans la premiere rubrique racine if (!$id_rubrique = intval($id_rubrique)) { $id_rubrique = sql_getfetsel('id_rubrique', 'spip_rubriques', 'id_parent=0', '', '0+titre,titre', '1'); } // La langue a la creation : c'est la langue de la rubrique $row = sql_fetsel('lang, id_secteur', 'spip_rubriques', 'id_rubrique='.intval($id_rubrique)); $lang = $row['lang']; $id_rubrique = $row['id_secteur']; // garantir la racine $champs = array( 'id_rubrique' => $id_rubrique, 'statut' => 'prop', 'date_heure' => date('Y-m-d H:i:s'), 'lang' => $lang, 'langue_choisie' => 'non' ); if ($set) { $champs = array_merge($champs, $set); } // Envoyer aux plugins $champs = pipeline( 'pre_insertion', array( 'args' => array( 'table' => 'spip_breves', ), 'data' => $champs ) ); $id_breve = sql_insertq('spip_breves', $champs); pipeline( 'post_insertion', array( 'args' => array( 'table' => 'spip_breves', 'id_objet' => $id_breve ), 'data' => $champs ) ); return $id_breve; } /** * Modifier une brève en base * * @param int $id_breve * Identifiant de la brève à modifier * @param array|null $set * Couples (colonne => valeur) de données à modifier. * En leur absence, on cherche les données dans les champs éditables * qui ont été postés (via _request()) * @return string|null * Chaîne vide si aucune erreur, * Null si aucun champ à modifier, * Chaîne contenant un texte d'erreur sinon. */ function breve_modifier($id_breve, $set = null) { include_spip('inc/modifier'); $c = collecter_requests( // white list array('titre', 'texte', 'lien_titre', 'lien_url'), // black list array('id_parent', 'statut'), // donnees eventuellement fournies $set ); $invalideur = ''; $indexation = false; // Si la breve est publiee, invalider les caches et demander sa reindexation $t = sql_getfetsel('statut', 'spip_breves', 'id_breve='.intval($id_breve)); if ($t == 'publie') { $invalideur = "id='breve/$id_breve'"; $indexation = true; } if ($err = objet_modifier_champs( 'breve', $id_breve, array( 'data' => $set, 'nonvide' => array('titre' => _T('breves:titre_nouvelle_breve') . ' ' . _T('info_numero_abbreviation') . $id_breve), 'invalideur' => $invalideur, 'indexation' => $indexation ), $c )) { return $err; } $c = collecter_requests(array('id_parent', 'statut'), array(), $set); $err = breve_instituer($id_breve, $c); return $err; } /** * Instituer une brève : modifier son statut ou son parent * * @pipeline_appel pre_insertion * @pipeline_appel post_insertion * * @param int $id_breve * Identifiant de la brève * @param array $c * Couples (colonne => valeur) des données à instituer * @return string|null * Null si aucun champ à modifier, chaîne vide sinon. */ function breve_instituer($id_breve, $c) { $champs = array(); // Changer le statut de la breve ? $row = sql_fetsel('statut, id_rubrique,lang, langue_choisie', 'spip_breves', 'id_breve=' . intval($id_breve)); $id_rubrique = $row['id_rubrique']; $statut_ancien = $statut = $row['statut']; $langue_old = $row['lang']; $langue_choisie_old = $row['langue_choisie']; if (isset($c['statut']) and $c['statut'] and $c['statut'] != $statut and autoriser('publierdans', 'rubrique', $id_rubrique) ) { $statut = $champs['statut'] = $c['statut']; } // Changer de rubrique ? // Verifier que la rubrique demandee est a la racine et differente // de la rubrique actuelle if ( isset($c['id_parent']) and $id_parent = intval($c['id_parent']) and $id_parent != $id_rubrique and (null !== ($lang = sql_getfetsel( 'lang', 'spip_rubriques', 'id_parent=0 AND id_rubrique=' . intval($id_parent) ))) ) { $champs['id_rubrique'] = $id_parent; // - changer sa langue (si heritee) if ($langue_choisie_old != 'oui') { if ($lang != $langue_old) { $champs['lang'] = $lang; } } // si la breve est publiee // et que le demandeur n'est pas admin de la rubrique // repasser la breve en statut 'prop'. if ($statut == 'publie') { if (!autoriser('publierdans', 'rubrique', $id_parent)) { $champs['statut'] = $statut = 'prop'; } } } // Envoyer aux plugins $champs = pipeline( 'pre_edition', array( 'args' => array( 'table' => 'spip_breves', 'id_objet' => $id_breve, 'action' => 'instituer', 'statut_ancien' => $statut_ancien, ), 'data' => $champs ) ); if (!$champs) { return; } sql_updateq('spip_breves', $champs, 'id_breve=' . intval($id_breve)); // // Post-modifications // // Invalider les caches include_spip('inc/invalideur'); suivre_invalideur("id='breve/$id_breve'"); // Au besoin, changer le statut des rubriques concernees include_spip('inc/rubriques'); calculer_rubriques_if($id_rubrique, $champs, $statut_ancien); // Pipeline pipeline( 'post_edition', array( 'args' => array( 'table' => 'spip_breves', 'id_objet' => $id_breve, 'action' => 'instituer', 'statut_ancien' => $statut_ancien, ), 'data' => $champs ) ); // Notifications if ($notifications = charger_fonction('notifications', 'inc')) { $notifications('instituerbreve', $id_breve, array('statut' => $statut, 'statut_ancien' => $statut_ancien) ); } return ''; // pas d'erreur } // Fonctions Dépréciées // -------------------- /** * Insertion d'une brève dans une rubrique * * @deprecated Utiliser breve_inserer() * @see breve_inserer() * * @param int $id_rubrique * Identifiant de la rubrique * @return int * Identifiant de la nouvelle brève. */ function insert_breve($id_rubrique) { return breve_inserer($id_rubrique); } /** * Créer une révision de brève * * @deprecated Utiliser breve_modifier() * @see breve_modifier() * * @param int $id_breve * Identifiant de la brève à modifier * @param array|null $set * Couples (colonne => valeur) de données à modifier. * En leur absence, on cherche les données dans les champs éditables * qui ont été postés (via _request()) * @return string|null * Chaîne vide si aucune erreur, * Null si aucun champ à modifier, * Chaîne contenant un texte d'erreur sinon. */ function revisions_breves($id_breve, $set = false) { return breve_modifier($id_breve, $set); } statistiques_archiver.php000060400000026531152525711760011720 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2020 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ /** * Action d'archivage des statistiques * * @plugin Statistiques pour SPIP * @license GNU/GPL * @package SPIP\Stats\Actions **/ if (!defined("_ECRIRE_INC_VERSION")) { return; } if (!defined('STATISTIQUES_ARCHIVER_PAR_MOIS')) { /** * Nombre d'années après quoi on permet de concaténer les statistiques de visites par mois * * Après ce nombre d'années, on peut concaténer les données de visites d'articles par mois * pour prendre moins de place dans la base de données * * @var int Nombre d'années **/ define('STATISTIQUES_ARCHIVER_PAR_MOIS', 2); } if (!defined('STATISTIQUES_ARCHIVER_PAR_AN')) { /** * Nombre d'années après quoi on permet de concaténer les statistiques de visites par an * * Après ce nombre d'années, on peut concaténer les données de visites d'articles par années * pour prendre moins de place dans la base de données * * @var int Nombre d'années **/ define('STATISTIQUES_ARCHIVER_PAR_AN', 5); } /** * Archiver ou nettoyer des statistiques * * @param string $arg */ function action_statistiques_archiver_dist($arg = null) { if (!$arg) { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); } if (!autoriser('webmestre')) { include_spip('inc/minipres'); minipres(); } if (!in_array($arg, array( 'archiver_visites_articles', 'nettoyer_visites_articles', 'nettoyer_referers_articles' )) ) { include_spip('inc/minipres'); minipres("Argument non compris"); } $func = 'statistiques_' . $arg; $func(); } /** * Logguer ces informations importantes. * * @uses spip_log() * @param string $texte **/ function statistiques_archiver_log($texte) { spip_log($texte, 'statistiques_archiver.' . _LOG_INFO_IMPORTANTE); } /** * Nettoyer des lignes de visites d'articles incorrectes * * Supprime toutes les lignes qui ne font pas partie * d'un article présent en base **/ function statistiques_nettoyer_visites_articles() { statistiques_archiver_log("Supprimer les visites d'articles qui n'existent pas dans spip_articles."); $i = sql_delete('spip_visites_articles', 'id_article NOT IN (SELECT id_article FROM spip_articles)'); statistiques_archiver_log("Fin de la suppression : $i lignes supprimées"); } /** * Nettoyer des lignes de referers d'articles incorrectes * * Supprime toutes les lignes qui ne font pas partie * d'un article présent en base **/ function statistiques_nettoyer_referers_articles() { statistiques_archiver_log("Supprimer les referers d'articles qui n'existent pas dans spip_articles."); $i = sql_delete('spip_referers_articles', 'id_article NOT IN (SELECT id_article FROM spip_articles)'); statistiques_archiver_log("Fin de la suppression : $i lignes supprimées"); } /** * Archiver les visites d'articles * * @note * Cela peut prendre beaucoup de temps. * * La base de test avait (en 2014) 12.500.000 d'entrées depuis 2005. * Cet archivage réduit à 1.200.000 entrées en réduisant * par mois jusqu'à 2012 inclu et par an jusqu'à 2009 inclu. * * Cela prenait 8 minutes sur ma machine locale * (Intel Core i5-4258U CPU @ 2.40GHz × 4 avec disque SSD) * * @note * On peut suivre l'avancement dans le fichier de log * tail -f tmp/log/statistiques_archiver.log * * @note * On ne peut pas vraiment avec le code actuel de la fonction * appliquer les calculs sur l'ensemble d'un mois car cela * peut facilement surcharger la mémoire de php. * * Du coup, on applique par petit bouts d'abord. * * @uses statistiques_concatener_visites_entre_jours() * @uses statistiques_concatener_visites_par_mois() * @uses statistiques_concatener_visites_par_an() **/ function statistiques_archiver_visites_articles() { // Tenter de donner du temps au temps @set_time_limit(15 * 60); // 15mn $annee_par_mois = date('Y') - STATISTIQUES_ARCHIVER_PAR_MOIS; $annee_par_an = date('Y') - STATISTIQUES_ARCHIVER_PAR_AN; $annee_minimum = statistiques_concatener_annee_minimum(); if (!$annee_minimum) { return false; } if ($annee_minimum > $annee_par_mois) { statistiques_archiver_log("Il n'y a pas de statistiques assez anciennes pour concaténer par mois !"); } else { // en plusieurs temps pour éviter trop de mémoire ! statistiques_concatener_visites_entre_jours($annee_par_mois, 1, 10); statistiques_concatener_visites_entre_jours($annee_par_mois, 11, 20); statistiques_concatener_visites_entre_jours($annee_par_mois, 21, 31); // et on regroupe tout en 1 seul morceau. statistiques_concatener_visites_par_mois($annee_par_mois); } if ($annee_minimum > $annee_par_an) { statistiques_archiver_log("Il n'y a pas de statistiques assez anciennes pour concaténer par an !"); } else { // et les vieilles années, on regroupe par an directement. statistiques_concatener_visites_par_an($annee_par_an); } statistiques_archiver_log("* Optimiser la table spip_visites_articles après les travaux."); sql_optimize('spip_visites_articles'); } /** * Concatène les statistiques de visites d'articles par mois * * @see statistiques_concatener_visites_entre_jours() * * @param int $annee * On concatène ce qui est avant cette année là. **/ function statistiques_concatener_visites_par_mois($annee) { return statistiques_concatener_visites_entre_jours($annee, 1, 31); } /** * Concatène les statistiques de visites d'articles par portion de mois (entre groupe de jours) * * @param int $annee * On concatène ce qui est avant cette année là. * @param int $debut * Numéro de jour du début de la concaténation, exemple 1. * Le total des visites concaténé sera mis dans ce jour là. * @param int $fin * Numéro de jour de fin de la concaténation, exemple 31. * Toutes les entrées entre le jour $debut+1 et $fin seront supprimées * et concaténées au jour $debut. * **/ function statistiques_concatener_visites_entre_jours($annee, $debut, $fin) { $annee_minimum = statistiques_concatener_annee_minimum(); if (!$annee_minimum) { return false; } if ($annee_minimum > $annee) { statistiques_archiver_log("Il n'y a pas de statistiques assez anciennes !"); return false; } // on a besoin pour le champ date d'une écriture sur 2 chiffres. $debut = str_pad($debut, 2, '0', STR_PAD_LEFT); $fin = str_pad($fin, 2, '0', STR_PAD_LEFT); statistiques_archiver_log("\nConcaténer les visites d'articles (jours entre $debut et $fin)"); statistiques_archiver_log("==========================================================="); $annees = range($annee_minimum, $annee); $mois = range(1, 12); foreach ($annees as $a) { statistiques_archiver_log("\n- Concaténer les visites de l'année : $a"); foreach ($mois as $m) { $m = str_pad($m, 2, '0', STR_PAD_LEFT); statistiques_concatener_visites_entre_periode("$a-$m-$debut", "$a-$m-$fin"); } } } /** * Retourne la plus petite année des visites d'articles * * @return int|bool * - int : l'année * - false : année non trouvée. **/ function statistiques_concatener_annee_minimum() { static $annee_minimum = null; // calcul de la plus petite année de statistiques if (is_null($annee_minimum)) { $annee_minimum = sql_getfetsel('YEAR(MIN(date))', 'spip_visites_articles', '', '', '', '0,1'); } if (!$annee_minimum) { statistiques_archiver_log("Erreur de calcul de la plus petite année de statistiques !"); return false; } return $annee_minimum; } /** * Concatène les statistiques de visites d'articles par an * * @param int $annee * On concatène ce qui est avant cette année là. * **/ function statistiques_concatener_visites_par_an($annee) { $annee_minimum = statistiques_concatener_annee_minimum(); if (!$annee_minimum) { return false; } if ($annee_minimum > $annee) { statistiques_archiver_log("Il n'y a pas de statistiques assez anciennes !"); return false; } statistiques_archiver_log("\nConcaténer les visites d'articles (par an)"); statistiques_archiver_log("==========================================================="); $annees = range($annee_minimum, $annee); foreach ($annees as $a) { statistiques_archiver_log("\n- Concaténer les visites de l'année : $a"); statistiques_concatener_visites_entre_periode("$a-01-01", "$a-12-31"); } } /** * Concatène les statistiques de visites d'articles entre 2 périodes. * * @param string $date_debut * Date de début tel que '2010-01-01' * @param string $date_fin * Date de fin tel que '2010-12-31' * @return bool * - false : aucune visite sur cette période * - true : il y avait des visites, elles ont été concaténées (ou l'étaient déjà) * **/ function statistiques_concatener_visites_entre_periode($date_debut, $date_fin) { // récupérer toutes les visites de cette période (année, mois, entre jour début et fin) $visites = sql_allfetsel('id_article, date, visites', 'spip_visites_articles', array( "date >= " . sql_quote($date_debut), "date <= " . sql_quote($date_fin), )); if (!$visites) { return false; } $liste = $updates = array(); $total = 0; // - Crée un tableau plus simple (id_article => total des visites de la période) (permettant un array_diff_key facile). // - Calcule au passage le total des visites de la période (pour le log) // - Rempli un autre tableau ($updates) qui indique si cet article doit avoir ses visites concaténées sur cette période, // c'est à dire, si il y a une date qui n'est pas le début de période. // (évite de nombreuses requêtes si l'on exécute plusieurs fois le script) foreach ($visites as $v) { $id_article = $v['id_article']; if (!isset($liste[$id_article])) { $liste[$id_article] = 0; } $liste[$id_article] += $v['visites']; $total += $v['visites']; if ($v['date'] != $date_debut) { $updates[$id_article] = true; } } unset($visites); $nb_articles = count($liste); // juste ceux qui nécessitent une mise à jour (date <> de $debut de période) $liste = array_intersect_key($liste, $updates); statistiques_archiver_log("-- du $date_debut au $date_fin : $total visites dans $nb_articles articles"); if ($liste) { // formater pour l'insertion dans la base. $inserts = array(); foreach ($liste as $id_article => $visites) { $inserts[] = array( 'id_article' => $id_article, 'date' => $date_debut, 'visites' => $visites, ); } statistiques_archiver_log("--- concaténer les statistiques de " . count($liste) . " articles"); // /!\ Attention, // Entre ces 2 requêtes, on peut perdre des données (si timeout ou autre) // Transaction à faire ? sql_delete('spip_visites_articles', array( "date >= " . sql_quote($date_debut), "date <= " . sql_quote($date_fin), sql_in('id_article', array_keys($liste)), )); sql_insertq_multi('spip_visites_articles', $inserts); } unset($liste, $inserts); return true; } plan.php000060400000002001152525750260006205 0ustar00<?php /** * Action retournant un morceau du plan du site (en ajax) * * @plugin Plan du site dans l’espace privé * @copyright 2015 * @author Matthieu Marcillaud * @licence GNU/GPL * @package SPIP\Plan\Action */ if (!defined('_ECRIRE_INC_VERSION')) { return; } function action_plan_dist() { include_spip('inc/autoriser'); if (!autoriser('ecrire')) { return false; } include_spip('base/objets'); include_spip('inc/utils'); $objet = table_objet(_request('objet')); $env = array( 'id_rubrique' => intval(_request('id_rubrique')), // pour le dépliement d'une rubrique, ne pas lister le contenu récursivement 'lister' => ($objet == 'rubriques') ? 'rubrique' : 'tout', 'conteneur' => 'non' ); if ($statut = _request('statut')) { $env['statut'] = $statut; } $fond = "prive/squelettes/inclure/plan-$objet"; header('Content-Type: text/html; charset=' . $GLOBALS['meta']['charset']); if (trouver_fond($fond)) { echo recuperer_fond($fond, $env); } else { echo ''; } } deplacer_objets.php000060400000005666152525750260010424 0ustar00<?php /** * Action retournant un morceau du plan du site (en ajax) * * @plugin Plan du site dans l’espace privé * @copyright 2015 * @author Matthieu Marcillaud * @licence GNU/GPL * @package SPIP\Plan\Action */ if (!defined('_ECRIRE_INC_VERSION')) { return; } function action_deplacer_objets_dist() { include_spip('inc/autoriser'); if (!autoriser('ecrire')) { return plan_json_erreur(_T('plan:erreur_autorisation_insuffisante') . ' ' . _T('plan:erreur_deplacement_impossible')); } include_spip('base/objets'); $objet = objet_type(_request('objet')); $table = table_objet_sql($objet); $_id_table = id_table_objet($table); $ids = _request('id_objet'); $id_rubrique_old = _request('id_rubrique_source'); $id_rubrique_new = _request('id_rubrique_destination'); if (!is_array($ids) or !$objet) { return plan_json_erreur(_T('plan:erreur_aucun_identifiant') . ' ' . _T('plan:erreur_deplacement_impossible')); } if ($id_rubrique_old == $id_rubrique_new) { return plan_json_erreur(_T('plan:erreur_rubriques_parentes_incorrectes') . ' ' . _T('plan:erreur_deplacement_impossible')); } if ($objet != 'rubrique' and !$id_rubrique_new) { return plan_json_erreur(_T('plan:erreur_rubriques_parentes_incorrectes') . ' ' . _T('plan:erreur_deplacement_impossible')); } $ids = array_filter($ids); if ($objet == 'rubrique') { $champ = 'id_parent'; } else { $champ = 'id_rubrique'; } // ne modifier que si les emplacements n'ont pas déjà changé ! $ids = sql_allfetsel($_id_table, $table, array(sql_in($_id_table, $ids), $champ . '=' . sql_quote($id_rubrique_old))); $ids = array_map('array_shift', $ids); include_spip('action/editer_objet'); $errors = $success = array(); $modifs = array('id_parent' => $id_rubrique_new); foreach ($ids as $id) { if (autoriser('modifier', $objet, $id)) { if ($err = objet_modifier($objet, $id, $modifs)) { $errors["$objet-$id"] = $err; } else { $success["$objet-$id"] = true; } } else { $errors["$objet-$id"] = _T('plan:erreur_autorisation_insuffisante') . ' ' . _T('plan:erreur_deplacement_impossible'); } } // dans certains cas… on ne reçoit pas d'erreur… et pourtant ! if (!$errors) { // on verifie qu'il n'y a plus d'objets à l'ancien emplacement $ids = sql_allfetsel( $_id_table, $table, array(sql_in($_id_table, $ids), $champ . '=' . sql_quote($id_rubrique_old)) ); $ids = array_map('array_shift', $ids); if ($ids) { foreach ($ids as $id) { $errors["$objet-$id"] = _T('plan:erreur_deplacement'); unset($success["$objet-$id"]); } } } return plan_json_envoi(array( 'done' => true, 'success' => $success, 'errors' => $errors, )); } function plan_json_envoi($data) { header('Content-Type: application/json; charset=' . $GLOBALS['meta']['charset']); echo json_encode($data); } function plan_json_erreur($msg) { return plan_json_envoi(array( 'done' => false, 'success' => array(), 'errors' => array($msg) )); } exporter_bookmarks.php000060400000003241152525764650011212 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2020 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined("_ECRIRE_INC_VERSION")) { return; } function action_exporter_bookmarks_dist($arg = null) { if (is_null($arg)) { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); } if (autoriser('exporter', '_sites')) { list($id_parent, $exporter_publie_seulement, $exporter_avec_mots_cles) = explode("-", $arg); $statut = ($exporter_publie_seulement ? array('publie') : array('prop', 'publie')); $f = "bookmarks-" . date('Y-m-d') . ".html"; header('Content-Type: text/html'); header("Content-Disposition: attachment; filename=\"$f\";"); header("Content-Transfer-Encoding: 8bit"); // fix for IE catching or PHP bug issue header("Pragma: public"); header("Expires: 0"); // set expiration time header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); echo recuperer_fond("prive/transmettre/bookmarks", array('statut' => $statut, 'id_parent' => intval($id_parent), 'tags' => $exporter_avec_mots_cles)); } } purger_site.php000060400000002174152525764650007626 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2020 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined("_ECRIRE_INC_VERSION")) { return; } function action_purger_site_dist($id_syndic = null) { if (is_null($id_syndic)) { $securiser_action = charger_fonction('securiser_action', 'inc'); $id_syndic = $securiser_action(); } if ($id_syndic = intval($id_syndic) and autoriser('purger', 'site', $id_syndic) ) { include_spip('base/abstract_sql'); sql_delete('spip_syndic_articles', 'id_syndic=' . intval($id_syndic)); } } syndiquer_site.php000060400000002463152525764650010346 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2020 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined("_ECRIRE_INC_VERSION")) { return; } // https://code.spip.net/@action_editer_site_dist function action_syndiquer_site_dist($id_syndic = null) { if (is_null($id_syndic)) { $securiser_action = charger_fonction('securiser_action', 'inc'); $id_syndic = $securiser_action(); } $id_job = job_queue_add('syndic_a_jour', 'syndic_a_jour', array($id_syndic), 'genie/syndic', true); // l'executer immediatement si possible if ($id_job) { include_spip('inc/queue'); queue_schedule(array($id_job)); } else { spip_log("Erreur insertion syndic_a_jour($id_syndic) dans la file des travaux", _LOG_ERREUR); } } editer_site.php000060400000015435152525764650007602 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2020 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ /** * Gestion de l'action editer__site et de l'API d'édition d'un site * * @package SPIP\Sites\Edition */ if (!defined("_ECRIRE_INC_VERSION")) { return; } /** * Action d'édition d'un site dans la base de données dont * l'identifiant est donné en paramètre de cette fonction ou * en argument de l'action sécurisée * * Si aucun identifiant n'est donné, on crée alors un nouvel article, * à condition que la rubrique parente (id_rubrique) puisse être obtenue * (avec _request(id_parent)) * * @uses site_inserer() * @uses site_modifier() * * @param null|int $arg * Identifiant du site. En absence utilise l'argument * de l'action sécurisée. * @return array * Liste (identifiant du site, Texte d'erreur éventuel) */ function action_editer_site_dist($arg = null) { if (is_null($arg)) { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); } if (!$id_syndic = intval($arg)) { $id_syndic = site_inserer(_request('id_parent')); if ($logo = _request('logo') and $format_logo = _request('format_logo') ) { include_spip('inc/distant'); $logo = _DIR_RACINE . copie_locale($logo); @rename($logo, _DIR_IMG . 'siteon' . $id_syndic . '.' . $format_logo); } } if (!$id_syndic) { return array(0, ''); } $err = site_modifier($id_syndic); return array($id_syndic, $err); } /** * Insérer un nouveau site en base * * @pipeline_appel pre_insertion * @pipeline_appel post_insertion * * @param int $id_rubrique * Identifiant de rubrique parente * @param array|null $set * @return int * Identifiant du site créé */ function site_inserer($id_rubrique, $set = null) { include_spip('inc/rubriques'); // Si id_rubrique vaut 0 ou n'est pas definie, creer le site // dans la premiere rubrique racine if (!$id_rubrique = intval($id_rubrique)) { $id_rubrique = sql_getfetsel("id_rubrique", "spip_rubriques", "id_parent=0", '', '0+titre,titre', "1"); } // Le secteur a la creation : c'est le secteur de la rubrique $id_secteur = sql_getfetsel("id_secteur", "spip_rubriques", "id_rubrique=" . intval($id_rubrique)); // eviter un null si la rubrique n'existe pas (rubrique -1 par exemple) if (!$id_secteur) { $id_secteur = 0; } $champs = array( 'id_rubrique' => $id_rubrique, 'id_secteur' => $id_secteur, 'statut' => 'prop', 'date' => date('Y-m-d H:i:s') ); if ($set) { $champs = array_merge($champs, $set); } // Envoyer aux plugins $champs = pipeline('pre_insertion', array( 'args' => array( 'table' => 'spip_syndic', ), 'data' => $champs ) ); $id_syndic = sql_insertq("spip_syndic", $champs); pipeline('post_insertion', array( 'args' => array( 'table' => 'spip_syndic', 'id_objet' => $id_syndic ), 'data' => $champs ) ); return $id_syndic; } /** * Modifier un site * * Appelle toutes les fonctions de modification d'un site * * @uses objet_modifier_champs() * @uses objet_instituer() * * @param int $id_syndic * Identifiant du site à modifier * @param array|null $set * Couples (colonne => valeur) de données à modifier. * En leur absence, on cherche les données dans les champs éditables * qui ont été postés (via collecter_requests()) * @return string * - Chaîne vide si aucune erreur, * - Chaîne contenant un texte d'erreur sinon. */ function site_modifier($id_syndic, $set = null) { $resyndiquer = false; include_spip('inc/rubriques'); include_spip('inc/modifier'); $c = collecter_requests( // white list array( 'nom_site', 'url_site', 'descriptif', 'url_syndic', 'syndication', 'moderation', 'miroir', 'oubli', 'resume' ), // black list array('statut', 'id_parent', 'date'), // donnees eventuellement fournies $set ); // resyndiquer si un element de syndication modifie if ($t = sql_fetsel('url_syndic,syndication,resume', 'spip_syndic', "id_syndic=" . intval($id_syndic))) { foreach ($t as $k => $v) { if (isset($c[$k]) and $v != $c[$k]) { $resyndiquer = true; } } } // Si le site est publie, invalider les caches et demander sa reindexation $t = sql_getfetsel("statut", "spip_syndic", "id_syndic=" . intval($id_syndic)); $invalideur = $indexation = false; if ($t == 'publie') { $invalideur = "id='site/$id_syndic'"; $indexation = true; } if ($err = objet_modifier_champs('site', $id_syndic, array( 'data' => $set, 'nonvide' => array('nom_site' => _T('info_sans_titre')), 'invalideur' => $invalideur, 'indexation' => $indexation ), $c) ) { return $err; } if ($resyndiquer and sql_getfetsel('syndication', 'spip_syndic', "id_syndic=" . intval($id_syndic)) !== 'non') { $syndiquer_site = charger_fonction('syndiquer_site', 'action'); $syndiquer_site($id_syndic); } // Modification de statut, changement de rubrique ? $c = collecter_requests(array('date', 'statut', 'id_parent'), array(), $set); include_spip('action/editer_objet'); $err = objet_instituer('site', $id_syndic, $c); return $err; } // Fonctions Dépréciées // -------------------- /** * Insérer un site * * @deprecated Utiliser site_inserer() * @uses site_inserer() * * @param int $id_rubrique * @return int **/ function insert_syndic($id_rubrique) { return site_inserer($id_rubrique); } /** * Modifier un site * * @deprecated Utiliser site_modifier() * @uses site_modifier() * * @param int $id_syndic * @param array|bool $set * @return string **/ function syndic_set($id_syndic, $set = false) { return site_modifier($id_syndic, $set); } /** * Créer une révision d'un site * * @deprecated Utiliser site_modifier() * @uses site_modifier() * * @param int $id_syndic * @param array|bool $set * @return string **/ function revisions_sites($id_syndic, $set = false) { return site_modifier($id_syndic, $set); } /** * Instituer un site * * @deprecated Utiliser objet_instituer() * @uses objet_instituer() * * @param int $id_syndic * @param array $c * @param bool $calcul_rub * @return string **/ function instituer_syndic($id_syndic, $c, $calcul_rub = true) { include_spip('action/editer_objet'); return objet_instituer('site', $id_syndic, $c, $calcul_rub); } instituer_syndic_article.php000060400000002545152525764650012402 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2020 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined("_ECRIRE_INC_VERSION")) { return; } // https://code.spip.net/@action_instituer_syndic_article_dist function action_instituer_syndic_article_dist() { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); list($id_syndic_article, $statut) = preg_split('/\W/', $arg); if ($id_syndic_article = intval($id_syndic_article) and $id_syndic = sql_getfetsel('id_syndic', 'spip_syndic_articles', "id_syndic_article=" . intval($id_syndic_article)) and autoriser('moderer', 'site', $id_syndic) ) { sql_updateq("spip_syndic_articles", array("statut" => $statut), "id_syndic_article=" . intval($id_syndic_article)); } } importer_bookmarks_opml.php000060400000007437152525764650012245 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2020 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined('_ECRIRE_INC_VERSION')) { return; } function action_importer_bookmarks_opml_dist($fichier_ok, $id_parent, $importer_statut_publie, $importer_tags) { $nb = 0; if (autoriser('importer', '_sites')) { $out = bookmarks_opml_parse($fichier_ok['contenu']); $nb = bookmarks_opml_insert($out, $id_parent, $importer_statut_publie, $importer_tags); } return $nb; } // http://www.stargeek.com/php_scripts.php?script=20&cat=blog function bookmarks_opml_parse(&$contenu) { global $blogs, $folder, $inOpmlfolder, $inOpmlItem; $inOpmlfolder = $inOpmlItem = false; $xp = xml_parser_create(); xml_set_element_handler($xp, 'opml_startElement', 'opml_endElement'); xml_parse($xp, $contenu, true); xml_parser_free($xp); return $blogs; } function opml_startElement($xp, $element, $attr) { global $blogs, $folder, $inOpmlfolder, $inOpmlItem; if (strcasecmp('outline', $element)) { return; } if (!array_key_exists('XMLURL', $attr) && (array_key_exists('TEXT', $attr) || array_key_exists('TITLE', $attr))) { //some opml use title instead of text to define a folder (ex: newzcrawler) $folder = $attr['TEXT'] ? $attr['TEXT'] : $attr['TITLE']; $inOpmlfolder = true; $inOpmlItem = false; } else { $inOpmlItem = true; if ($folder != '') { $blogs[$folder][] = $attr; } else { $blogs[] = $attr; } } } function opml_endElement($xp, $element) { global $blogs, $folder, $inOpmlfolder, $inOpmlItem; if (strcasecmp($element, "outline") === 0) { if (!$inOpmlItem && $inOpmlfolder) { // end of folder element! $inOpmlfolder = false; } else { // end of item element $inOpmlItem = false; } } return; } function bookmarks_opml_insert($tree, $id_parent, $importer_statut_publie, $importer_tags) { include_spip('action/editer_rubrique'); include_spip('action/editer_site'); $nb = 0; if (count($tree)) { foreach ($tree as $key => $item) { // cas d'un flux if (array_key_exists('XMLURL', $item)) { $statut = 'prop'; if ($importer_statut_publie and autoriser('publierdans', 'rubrique', $id_parent)) { $statut = 'publie'; } $now = time(); if (!$id_syndic = sql_getfetsel('id_syndic', 'spip_syndic', 'id_rubrique=' . intval($id_parent) . " AND url_site=" . sql_quote($item['HTMLURL'])) ) { $id_syndic = site_inserer($id_parent); $set = array( 'url_site' => $item['HTMLURL'], 'nom_site' => $item['TITLE'], 'url_syndic' => $item['XMLURL'], 'syndication' => 'oui', 'resume' => 'non', 'date' => date('Y-m-d H:i:s', $now), 'statut' => $statut ); site_modifier($id_syndic, $set); $nb++; } else { $nb++; } } else { // cas d'un dossier $titre = $key; $id_rubrique = sql_getfetsel('id_rubrique', 'spip_rubriques', 'id_parent=' . intval($id_parent) . " AND titre=" . sql_quote($titre)); if (!$id_rubrique and $id_rubrique = rubrique_inserer($id_parent)) { rubrique_modifier($id_rubrique, array('titre' => $titre)); } if ($id_rubrique) { $nb += bookmarks_opml_insert($item, $id_rubrique, $importer_statut_publie, $importer_tags); } } } } return $nb; } importer_bookmarks_netscape.php000060400000010440152525764650013064 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2020 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined("_ECRIRE_INC_VERSION")) { return; } function action_importer_bookmarks_netscape_dist($fichier_ok, $id_parent, $importer_statut_publie, $importer_tags) { $nb = 0; if (autoriser('importer', '_sites')) { $out = bookmarks_netscape_fast_parse($fichier_ok['contenu']); // le premier content ne nous interesse pas $out = reset($out['sub']); $nb = bookmarks_insert($out, $id_parent, $importer_statut_publie, $importer_tags); } return $nb; } function bookmarks_netscape_fast_parse(&$contenu) { $out = array(); #var_dump(">>".substr($contenu,0,200)); $po = stripos($contenu, "<h3", 4); $pf = stripos($contenu, "</dl>"); while ($po or $pf) { #var_dump("$po:$pf"); if ($po > 0 and $po < $pf) { $out['content'] .= substr($contenu, 0, $po); $contenu = substr($contenu, $po); $out['sub'][] = bookmarks_netscape_fast_parse($contenu); } else { $out['content'] .= substr($contenu, 0, $pf); $contenu = substr($contenu, $pf + 5); #var_dump("<<".substr($contenu,0,200)); $out['content'] = bookmarks_extract_links($out['content']); return $out; } $po = stripos($contenu, "<h3"); $pf = stripos($contenu, "</dl>"); } $out['content'] = bookmarks_extract_links($out['content']); return $out; } function bookmarks_extract_links($contenu) { $out = array(); $contenu = str_ireplace("<DT>", "<dt>", $contenu); $contenu = explode("<dt>", $contenu); $h3 = array_shift($contenu); $h3 = extraire_balise($h3, "h3"); $out['titre'] = strip_tags($h3); foreach ($contenu as $item) { $link = array(); if ($a = extraire_balise($item, 'a')) { $link['url'] = extraire_attribut($a, 'href'); $link['titre'] = strip_tags($a); $link['date'] = extraire_attribut($a, "add_date"); $link['descriptif'] = ""; if ($p = stripos($item, "<dd>")) { $link['descriptif'] = textebrut(substr($item, $p)); } $out['links'][] = $link; } } return $out; } function bookmarks_insert($tree, $id_parent, $importer_statut_publie, $importer_tags, $level = 0) { include_spip('action/editer_rubrique'); include_spip('action/editer_site'); $nb = 0; if (count($tree['content']['links']) or isset($tree['sub']) ) { $titre = ($tree['content']['titre'] ? $tree['content']['titre'] : _T('info_sans_titre')); $id_rubrique = sql_getfetsel('id_rubrique', 'spip_rubriques', 'id_parent=' . intval($id_parent) . " AND titre=" . sql_quote($titre)); if (!$id_rubrique and $id_rubrique = rubrique_inserer($id_parent) ) { rubrique_modifier($id_rubrique, array('titre' => $titre)); } if ($id_rubrique) { $statut = 'prop'; if ($importer_statut_publie and autoriser('publierdans', 'rubrique', $id_rubrique)) { $statut = 'publie'; } $now = time(); foreach ($tree['content']['links'] as $link) { if (!$id_syndic = sql_getfetsel('id_syndic', 'spip_syndic', 'id_rubrique=' . intval($id_rubrique) . " AND url_site=" . sql_quote($link['url'])) ) { $id_syndic = site_inserer($id_rubrique); $set = array( 'url_site' => $link['url'], 'nom_site' => $link['titre'], 'date' => date('Y-m-d H:i:s', $link['date'] ? $link['date'] : $now), 'statut' => $statut, 'descriptif' => $link['descriptif'] ); #echo "creation site $id_syndic ".$set['url_site']." <br />"; site_modifier($id_syndic, $set); $nb++; } else { #echo "existant site $id_syndic ".$link['url']." <br />"; $nb++; } } if ($level < 30) { if (isset($tree['sub'])) { foreach ($tree['sub'] as $sub) { $nb += bookmarks_insert($sub, $id_rubrique, $importer_statut_publie, $importer_tags, $level + 1); } } } } } return $nb; } telecharger_dump.php000060400000004020152526762140010571 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2020 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined('_ECRIRE_INC_VERSION')) { return; } include_spip('inc/dump'); include_spip('inc/autoriser'); /** * Telecharger un dump quand on est webmestre * * @param string $arg */ function action_telecharger_dump_dist($arg = null) { if (!$arg) { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); } $file = dump_repertoire() . basename($arg, '.sqlite') . '.sqlite'; if ( file_exists($file) and autoriser('webmestre') ) { // Vider tous les tampons pour ne pas provoquer de Fatal memory exhausted $level = @ob_get_level(); while ($level--) { @ob_end_clean(); } $f = basename($file); // ce content-type est necessaire pour eviter des corruptions de zip dans ie6 header('Content-Type: application/octet-stream'); header("Content-Disposition: attachment; filename=\"$f\";"); header('Content-Transfer-Encoding: binary'); // fix for IE catching or PHP bug issue header('Pragma: public'); header('Expires: 0'); // set expiration time header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); if ($cl = filesize($file)) { header('Content-Length: ' . $cl); } readfile($file); } else { http_status(404); include_spip('inc/minipres'); echo minipres(_T('erreur') . ' 404', _T('info_acces_interdit')); } // et on finit comme ca d'un coup exit; } sauvegarder.php000060400000004131152526762140007572 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2020 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * * On arrive ici depuis le #FORMULAIRE_SAUVEGARDER * - l'initialisation a ete faite avant redirection * - on enchaine sur inc/sauvegarder, qui remplit le dump et renvoie ici a chaque timeout * - a chaque coup on relance inc/sauvegarder * - lorsque inc/sauvegarder a fini, il retourne true * - on renvoie vers exec=sauvegarder pour afficher le resume * */ include_spip('base/dump'); include_spip('inc/dump'); /** * 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(); } } supprimer_dump.php000060400000002527152526762140010344 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2020 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined('_ECRIRE_INC_VERSION')) { return; } include_spip('inc/dump'); include_spip('inc/autoriser'); /** * Telecharger un dump quand on est webmestre * * @param string $arg */ function action_supprimer_dump_dist($arg = null) { if (!$arg) { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); } $fichier = $arg; if (autoriser('webmestre')) { // verifier que c'est bien une sauvegarde include_spip('inc/dump'); $dir = dump_repertoire(); $dumps = dump_lister_sauvegardes($dir); foreach ($dumps as $dump) { if ($dump['fichier'] == $fichier) { spip_unlink($dir . $fichier); } } } } restaurer.php000060400000004212152526762140007276 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2020 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined('_ECRIRE_INC_VERSION')) { return; } /** * * On arrive ici depuis le #FORMULAIRE_RESTAURER * - l'initialisation a ete faite avant redirection * - on enchaine sur inc/restaurer, qui remplit le dump et renvoie ici a chaque timeout * - a chaque coup on relance inc/restaurer * - lorsque inc/restaurer a fini, il retourne true * - on renvoie vers exec=restaurer pour afficher le resume * */ include_spip('base/dump'); include_spip('inc/dump'); /** * Sauvegarder par morceaux * * @param string $arg */ function action_restaurer_dist($arg = null) { if (!$arg) { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); } $status_file = $arg; define('_DUMP_STATUS_FILE', $status_file); $status_file = _DIR_TMP . basename($status_file) . '.txt'; if (!lire_fichier($status_file, $status) or !$status = unserialize($status) ) { include_spip('inc/headers'); echo redirige_formulaire(generer_url_ecrire('restaurer', 'status=' . _DUMP_STATUS_FILE, '', true, true)); } else { utiliser_langue_visiteur(); $archive = '<br />' . joli_repertoire($status['archive']); $action = _T('dump:info_restauration_sauvegarde', array('archive' => $archive)); $admin = charger_fonction('admin', 'inc'); echo $admin('restaurer', $action, '', 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(); } }
/home/histoio/www/f41a3/../plugins-dist/../prive/../35802/action.tar