function spiplistes_console_lit_log ($logname) { $files = preg_files(defined('_DIR_TMP') ? _DIR_TMP : _DIR_SESSION, "$logname\.log(\.[0-9])?"); krsort($files); $log = ""; foreach($files as $nom){ if (lire_fichier($nom, $contenu)) $log .= $contenu; } $contenu = explode("\n", $contenu); $result = ""; $maxlines = 40; while ($contenu && $maxlines){ $ii = trim(array_pop($contenu)); if(strlen($ii)) { $result .= $ii."\n"; $maxlines--; } } $result = "<pre style='margin-top:1em'>".$result."</pre>\n"; return($result); }
function compte_fichier_visite($fichier, &$visites, &$visites_a, &$referers, &$referers_a) { // Noter la visite du site (article 0) $visites ++; $content = array(); if (lire_fichier($fichier, $content)) $content = @unserialize($content); if (!is_array($content)) return; foreach ($content as $source => $num) { list($log_type, $log_id_num, $log_referer) = preg_split(",\t,", $source, 3); // Noter le referer if ($log_referer) $referers[$log_referer]++; // S'il s'agit d'un article, noter ses visites if ($log_type == 'article' AND $id_article = intval($log_id_num)) { $visites_a[$id_article] ++; if ($log_referer) $referers_a[$id_article][$log_referer]++; } } }
/** * 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(); } }
/** * Installation des fichiers de configuration/parametrage SIPS */ function presta_sips_install_dist() { include_spip('inc/config'); if (!lire_config("bank_paiement/config_sips", '')) { $merchant_id = ""; $certif = ""; if (isset($GLOBALS['meta']['bank_sips_merchant_id']) and file_exists(_DIR_ETC . $GLOBALS['meta']['bank_sips_merchant_id'])) { include_once _DIR_ETC . $GLOBALS['meta']['bank_sips_merchant_id']; $boutique = ""; if (function_exists($f = "bank_sips" . $boutique . "_merchant_id")) { $merchant_id = $f(); } if (file_exists($f = _DIR_ETC . dirname($GLOBALS['meta']['bank_sips_merchant_id']) . "/certif.fr.{$merchant_id}")) { lire_fichier($f, $certif); } } if (defined('_SIPS_PRESTA') and $merchant_id and $certif) { $presta = _SIPS_PRESTA; } else { $presta = "mercanet"; $merchant_id = '082584341411111'; lire_fichier(_DIR_PLUGIN_BANK . "presta/sips/bin/{$presta}/param/certif.fr.{$merchant_id}", $certif); } ecrire_config("bank_paiement/config_sips", array('merchant_id' => '2', 'service' => $presta, 'certificat' => $certif)); } }
function info_fichiers_import($name) { static $fichier_ok = array(); if (!isset($fichier_ok[$name])) { if (sizeof($_FILES) < 0 or !isset($_FILES[$name]) or !$_FILES[$name]['size'] > 0) { return false; } if ($_FILES[$name]['error'] != 0) { return false; } $fichier_ok[$name] = array(); $fichier_ok[$name]['name'] = $_FILES[$name]['name']; $fichier_ok[$name]['chemin'] = $_FILES[$name]['tmp_name']; // On r�cup�re le contenu du fichier $fichier_ok[$name]['format'] = ''; lire_fichier($fichier_ok[$name]['chemin'], $fichier_ok[$name]['contenu']); if (stripos($fichier_ok[$name]['contenu'], 'NETSCAPE-Bookmark-file') !== false) { $fichier_ok[$name]['format'] = 'netscape'; } if ($_FILES[$name]['type'] == 'text/xml' and stripos($fichier_ok[$name]['contenu'], 'opml') !== false) { $fichier_ok[$name]['format'] = 'opml'; } } return $fichier_ok[$name]; }
function charger() { $ok = true; // si pas de fichier, rien a charger if (!$this->vue) { return false; } // lecture de la vue (fond cfg) // il s'agit de recuperer le contenu du fichier $fichier = find_in_path($nom = 'fonds/cfg_' . $this->vue . '.html'); if (!lire_fichier($fichier, $this->controldata)) { $ok = false; $this->messages['message_erreur'][] = _T('cfg:erreur_lecture', array('nom' => $nom)); } // recherche et stockage des parametres de cfg $this->recuperer_parametres(); // recherche et stockage des noms de champs de formulaire if ($err = $this->recuperer_noms_champs()) { $ok = false; $this->messages['message_erreur'][] = $err; } // charger les champs particuliers si existants $this->actionner_extensions('pre_charger'); // creer le storage et lire les valeurs $this->param->depot = strtolower(trim($this->param->depot)); $cfg_depot = cfg_charger_classe('cfg_depot', 'inc'); $this->depot = new $cfg_depot($this->param->depot, $this->params); $ok &= $this->lire(); // charger les champs particuliers si existants $this->actionner_extensions('charger'); return $ok; }
/** * 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); } } }
/** * lire le cache depuis un casier * * @param string $nom_cache * @return mixed */ function lire_cache($nom_cache) { $d = substr($nom_cache, 0, 2); $u = substr($nom_cache, 2, 2); if (file_exists($f = _DIR_CACHE . "{$d}/{$u}.cache") and lire_fichier($f, $tmp) and $tmp = unserialize($tmp) and $tmp['nom_cache'] == $nom_cache and isset($tmp['valeur'])) { return $tmp['valeur']; } return false; }
/** * Code JS a inserer dans la page pour faire fonctionner le player * @param $player * @return string */ function player_call_js() { include_spip('inc/filtres'); lire_fichier(find_in_path("javascript/mejs-enclosure.min.js"), $enclosure); lire_fichier(find_in_path("javascript/mejs-init.min.js"), $init); $mejspath = timestamp(find_in_path("lib/mejs/mediaelement-and-player.min.js")); $flux = '<script type="text/javascript">/*<![CDATA[*/' . "var mejspath='{$mejspath}';\n{$enclosure}\n{$init}\n" . "/*]]>*/</script>\n"; return $flux; }
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)); } }
function yaml_decode_file($fichier) { $yaml = ''; $retour = false; lire_fichier($fichier, $yaml); // Si on recupere bien quelque chose if ($yaml) { $retour = yaml_decode($yaml); } return $retour; }
function essais_tw_propre_typo() { $tests = preg_files(_DIR_PLUGIN_TW . "tests/data/typo/", '\\.txt$'); $texte = $expected = ""; $essais = array(); foreach ($tests as $t) { lire_fichier($t, $texte); lire_fichier(substr($t, 0, -4) . ".html", $expected); $essais[basename($t, ".txt")] = array($expected, $texte); } return $essais; }
function exec_cs_boite_rss_dist() { cs_minipres(); // Constantes distantes include_spip('cout_define'); if(defined('_CS_PAS_DE_DISTANT')) { ajax_retour(_T('couteauprive:version_distante_off')); return; } $p = ''; // on cherche le flux rss toutes les _CS_RSS_UPDATE minutes $force = _request('force')=='oui'; if(!$force) { $lastmodified = @file_exists(_CS_TMP_RSS)?@filemtime(_CS_TMP_RSS):0; if(time()-$lastmodified < _CS_RSS_UPDATE) lire_fichier(_CS_TMP_RSS, $p); } if(strlen($p)) { ajax_retour($p); return; } include_spip('inc/filtres'); include_spip('action/editer_site'); include_spip('inc/xml'); $r = spip_xml_load(_CS_RSS_SOURCE); if(function_exists('spip_xml_match_nodes')) $c = spip_xml_match_nodes(',^item$,', $r, $r2); else { $r2 = !is_array($r)?array():array_shift(array_shift(array_shift(array_shift($r)))); $c = count($r2); } if($c) { $r3 = &$r2['item']; $c = count($r3); $p=''; for($i=0; $i<min($c, _CS_RSS_COUNT); $i++) { $l = $r3[$i]['link'][0]; $d = affdate_court(date('Y-m-d', strtotime($r3[$i]['pubDate'][0]))); $t = str_replace('&', '&', htmlentities($r3[$i]['title'][0], ENT_NOQUOTES, "UTF-8")); $t = preg_replace(',\s*€(¦)?,', ' (…)', $t); $t = preg_replace(',^(.*?):,', "• <a href='$l' class='spip_out' target='_cout'>$1</a> <i>($d)</i><br/>", $t); $p .= "<li style='padding-top:0.6em;'>$t</li>"; } } else { // pour cs_lien() include_spip('cout_fonctions'); $p = '<span style="color: red;">'._T('couteauprive:erreur:probleme', array('pb'=>cs_lien(_CS_RSS_SOURCE,_T('couteauprive:erreur:distant')))).'</span>'; } $du = affdate_heure(date('Y-m-d H:i:s',time())); $p = '<ul style="list-style-type:none; padding:0; margin:0; ">'.$p .'</ul><p class="spip_xx-small" style="border-top:solid gray thin;"><b>' ._T('couteauprive:rss_edition')."</b><br/>$du</p>" .'<p style="text-align:right"><a href="' .generer_url_ecrire('admin_couteau_suisse','var_mode=calcul', true).'" onclick="' ."javascipt:jQuery('div.cs_boite_rss').children().css('opacity', 0.5).parent().load('".generer_url_ecrire('cs_boite_rss', 'force=oui', true).'\');return false;">' ._T('couteauprive:rss_actualiser').'</a> | <a href="' ._CS_RSS_SOURCE.'">' ._T('couteauprive:rss_source').'</a></p>'; if($c) ecrire_fichier(_CS_TMP_RSS, $p); ajax_retour($p); }
function spip_xml_load($fichier, $strict=true, $clean=true, $taille_max = 1048576, $datas='', $profondeur = -1){ $contenu = ""; if (preg_match(",^(http|ftp)://,",$fichier)){ include_spip('inc/distant'); $contenu = recuperer_page($fichier,false,false,$taille_max, $datas); } else lire_fichier ($fichier, $contenu); $arbre = array(); if ($contenu) $arbre = spip_xml_parse($contenu, $strict, $clean, $profondeur); return count($arbre)?$arbre:false; }
/** * Lecture du fichier de configuration d'un plugin * * @staticvar string $filecache * @staticvar array $cache * * @param string|array|bool $plug * @param bool $reload * @param string $dir * @param bool $clean_old * @return array */ function plugins_get_infos_dist($plug = false, $reload = false, $dir = _DIR_PLUGINS, $clean_old = false) { static $cache = ''; static $filecache = ''; if ($cache === '') { $filecache = _DIR_TMP . "plugin_xml_cache.gz"; if (is_file($filecache)) { lire_fichier($filecache, $contenu); $cache = unserialize($contenu); } if (!is_array($cache)) { $cache = array(); } } if (defined('_VAR_MODE') and _VAR_MODE == 'recalcul') { $reload = true; } if ($plug === false) { ecrire_fichier($filecache, serialize($cache)); return $cache; } elseif (is_string($plug)) { $res = plugins_get_infos_un($plug, $reload, $dir, $cache); } elseif (is_array($plug)) { $res = false; if (!$reload) { $reload = -1; } foreach ($plug as $nom) { $res |= plugins_get_infos_un($nom, $reload, $dir, $cache); } // Nettoyer le cache des vieux plugins qui ne sont plus la if ($clean_old and isset($cache[$dir]) and count($cache[$dir])) { foreach (array_keys($cache[$dir]) as $p) { if (!in_array($p, $plug)) { unset($cache[$dir][$p]); } } } } if ($res) { ecrire_fichier($filecache, serialize($cache)); } if (!isset($cache[$dir])) { return array(); } if (is_string($plug)) { return isset($cache[$dir][$plug]) ? $cache[$dir][$plug] : array(); } else { return $cache[$dir]; } }
/** * Plugin SkelEditor * Editeur de squelette en ligne * (c) 2007-2010 erational * Licence GPL-v3 * */ function action_skeleditor_dl_dist(){ $securiser_action = charger_fonction('securiser_action','inc'); $file_name = $securiser_action(); if (autoriser('download','squelette',$file_name)){ if (lire_fichier($file_name, $contenu)) { $file_name_nopath = basename($file_name); //header("Content-type: text/plain"); // text/plain or binary .... header("Content-Disposition: attachment; filename=\"$file_name_nopath\""); echo $contenu; exit; } } }
function calcul_version_squelette() { $version = null; if (lire_fichier(_DIR_PLUGIN_AHUNTSIC . '/plugin.xml', $contenu) && preg_match('/<version>(.*?)<\\/version>/', $contenu, $match)) { $version .= trim($match[1]); } $revision = version_svn_courante(_DIR_PLUGIN_AHUNTSIC); if ($revision > 0) { $version .= ' [' . strval($revision) . ']'; } elseif ($revision < 0) { $version .= ' [' . strval(abs($revision)) . ' <strong>svn</strong>]'; } return $version; }
/** * Lit un fichier xml donné et renvoie son arbre. * * @example * ``` * include_spip('inc/xml'); * $arbre = spip_xml_load(_DIR_PLUGINS . "$plug/plugin.xml"); * ``` * * @uses spip_xml_parse() * * @param string $fichier * Chemin local ou URL distante du fichier XML * @param bool $strict * true pour râler si une balise n'est pas correctement fermée, false sinon. * @param bool $clean ? * @param int $taille_max * Taille maximale si fichier distant * @param string|array $datas * Données à envoyer pour récupérer le fichier distant * @param int $profondeur ? * @return array|bool * - array : l'arbre XML, * - false si l'arbre xml ne peut être créé ou est vide **/ function spip_xml_load($fichier, $strict = true, $clean = true, $taille_max = 1048576, $datas = '', $profondeur = -1) { $contenu = ""; if (tester_url_absolue($fichier)) { include_spip('inc/distant'); $contenu = recuperer_page($fichier, false, false, $taille_max, $datas); } else { lire_fichier($fichier, $contenu); } $arbre = array(); if ($contenu) { $arbre = spip_xml_parse($contenu, $strict, $clean, $profondeur); } return count($arbre) ? $arbre : false; }
function formulaires_restauration_cfg_traiter_dist() { $message = array(); $fichier = _request('fichier_a_restaurer'); lire_fichier($fichier, $tableau); include_spip('inc/config'); $dirs = explode('/', dirname($fichier)); $fond = end($dirs); $ok = ecrire_config($fond, $tableau); if (!$ok) { $message['message_nok'] = _T('sarkaspip:cfg_msg_fichier_restauration_nok'); } if ($ok) { $message['message_ok'] = _T('sarkaspip:cfg_msg_fichier_restauration_ok', array('nom_fichier' => $fichier)); } return $message; }
/** * on essaye de poser un htaccess rewrite global sur IMG/ * si fonctionne on gardera des ulrs de document permanente * si ne fonctionne pas on se rabat sur creer_htaccess du core * qui pose un deny sur chaque sous repertoire de IMG/ * * http://doc.spip.org/@gerer_htaccess * * @param bool $active * @return bool */ function accesrestreint_gerer_htaccess($active = true) { if (!$active) { spip_unlink(_DIR_IMG . _ACCESS_FILE_NAME); effacer_meta("creer_htaccess"); // effacer les xx/.htaccess crees eventuellement par le core include_spip("inc/acces"); gerer_htaccess(); return false; } else { $rewrite = <<<rewrite RewriteEngine On RewriteCond %{QUERY_STRING} ^(\\d+/[\\da-f]+)\$ RewriteRule ^\\w+/.*\$ ../spip.php?action=api_docrestreint&arg=%1/\$0 [skip=100] RewriteRule ^\\w+/.*\$ ../spip.php?action=api_docrestreint&arg=0/0/\$0 [skip=100] rewrite; // On cherche si le dossier racine a un RewriteBase plus long que "/" if (file_exists(_DIR_RACINE . _ACCESS_FILE_NAME)) { $ht = ''; lire_fichier(_DIR_RACINE . _ACCESS_FILE_NAME, $ht); if ($ht and preg_match('|^RewriteBase\\s+/.+$|m', $ht, $rewritebase)) { $rewritebase = rtrim(trim($rewritebase[0]), '/') . '/' . _NOM_PERMANENTS_ACCESSIBLES; $rewrite = $rewritebase . "\n" . $rewrite; } } ecrire_fichier(_DIR_IMG . _ACCESS_FILE_NAME, $rewrite); // verifier sur l'url de test include_spip('inc/distant'); $url_test = url_absolue(_DIR_IMG . "test/.test?0/1"); $test = recuperer_page($url_test); // si l'url de test renvoie bien "OK" alors rewrite rule fonctionne et on peut baser la protection de document sur ce shema if ($test == "OK") { effacer_meta("creer_htaccess"); // securite, et permet de generer des urls permanentes } else { // sinon on se rabat sur un deny et on generera des urls moches spip_unlink(_DIR_IMG . _ACCESS_FILE_NAME); ecrire_meta("creer_htaccess", "oui"); } // dans tous les cas on passe par gerer_htaccess pour enlever ou mettre les .htaccess dans les sous rep include_spip("inc/acces"); gerer_htaccess(); return true; } }
/** * Recuperer la liste des moteurs de recherche depuis un fichier txt * Adaptees du code des "Visiteurs", * par Jean-Paul Dezelus (http://www.phpinfo.net/applis/visiteurs/) * * http://code.spip.net/@stats_load_engines * * @return array */ function stats_load_engines() { $arr_engines = array(); lire_fichier(find_in_path('engines-list.txt'), $moteurs); foreach (array_filter(preg_split("/([\r\n]|#.*)+/", $moteurs)) as $ligne) { $ligne = trim($ligne); if (preg_match(',^\\[([^][]*)\\]$,S', $ligne, $regs)) { $moteur = $regs[1]; $query = ''; } else { if (preg_match(',=$,', $ligne, $regs)) { $query = $ligne; } else { $arr_engines[] = array($moteur, $query, $ligne); } } } return $arr_engines; }
function compte_fichier_visite($fichier, &$visites, &$visites_a, &$referers, &$referers_a) { $content = array(); if (lire_fichier($fichier, $content)) { $content = @unserialize($content); } if (!is_array($content)) { return; } // Verifier le referer (referer spam) foreach ($content as $source => $num) { $log_referer = explode("\t", $source)[2]; if ($log_referer) { $referer_test = str_replace(array('http://', 'https://'), '', $log_referer); if (strpos($referer_test, '/')) { $referer_test = substr($referer_test, 0, strpos($referer_test, '/')); } if (strlen($referer_test) and sql_countsel('spip_referer_spam', "referer LIKE '%{$referer_test}%'")) { spip_log("Referer spam bloqué ({$referer_test})"); return; } else { spip_log("Referer accepté ({$referer_test})"); } } } foreach ($content as $source => $num) { list($log_type, $log_id_num, $log_referer) = preg_split(",\t,", $source, 3); // Noter le referer if ($log_referer) { $referers[$log_referer]++; } // S'il s'agit d'un article, noter ses visites if ($log_type == 'article' and $id_article = intval($log_id_num)) { $visites_a[$id_article]++; if ($log_referer) { $referers_a[$id_article][$log_referer]++; } } } // Noter la visite du site (article 0) $visites++; }
function sarkaspip_zengarden_activer_theme($flux) { $dir = $flux['args']['dir']; $action = $flux['args']['action']; $dir_cfg = $dir . '/cfg'; $cfg = preg_files($dir_cfg); include_spip('inc/config'); if ($action == 'activer') { // On sauvegarde des valeurs actuelles pour un eventuel rappel $dir_cfg = sous_repertoire(_DIR_TMP, "cfg"); $dir_cfg = sous_repertoire(_DIR_TMP, "themes"); $fonds = array(); foreach ($cfg as $_fichier_cfg) { $fonds[] = basename($_fichier_cfg, '.txt'); } include_spip('inc/sarkaspip_filtres'); $ok = sauvegarder_fonds($fonds, $dir_cfg, 'theme'); // On ecrit la nouvelle configuration n�cessaire au theme choisi $flux['data'] = true; foreach ($cfg as $_fichier_cfg) { lire_fichier($_fichier_cfg, $tableau); $fond = basename($_fichier_cfg, '.txt'); ecrire_config($fond, $tableau); } } else { if ($action == 'effacer') { $fichiers = array(); $flux['data'] = true; foreach ($cfg as $_fichier_cfg) { $fond = basename($_fichier_cfg, '.txt'); effacer_config($fond); $fichiers[] = _DIR_TMP . 'themes/cfg/' . $fond . '.txt'; } include_spip('inc/sarkaspip_filtres'); $ok = restaurer_fonds($fichiers); } else { // action apercevoir : on ne fait rien, on sait pas faire.. } } return $flux; }
/** * http://doc.spip.org/@install_debut_html * * @param string $titre * @param string $onLoad * @param bool $all_inline * inliner les css et js dans la page (limiter le nombre de hits) * @return string */ function install_debut_html($titre = 'AUTO', $onLoad = '', $all_inline = false) { global $spip_lang_right, $spip_lang_left; utiliser_langue_visiteur(); http_no_cache(); if ($titre == 'AUTO') { $titre = _T('info_installation_systeme_publication'); } # le charset est en utf-8, pour recuperer le nom comme il faut # lors de l'installation if (!headers_sent()) { header('Content-Type: text/html; charset=utf-8'); } $css = ""; $files = array('reset.css', 'clear.css', 'minipres.css'); if ($all_inline) { // inliner les CSS (optimisation de la page minipres qui passe en un seul hit a la demande) foreach ($files as $name) { $file = direction_css(find_in_theme($name)); if (function_exists("compacte")) { $file = compacte($file); } else { $file = url_absolue_css($file); } // precaution lire_fichier($file, $c); $css .= $c; } $css = "<style type='text/css'>" . $css . "</style>"; } else { foreach ($files as $name) { $file = direction_css(find_in_theme($name)); $css .= "<link rel='stylesheet' href='{$file}' type='text/css' />\n"; } } // au cas ou minipres() est appele avant spip_initialisation_suite() if (!defined('_DOCTYPE_ECRIRE')) { define('_DOCTYPE_ECRIRE', ''); } return _DOCTYPE_ECRIRE . html_lang_attributes() . "<head>\n" . "<title>" . textebrut($titre) . "</title>\n" . "<meta name='viewport' content='width=device-width' />\n" . $css . "</head>\n<body" . $onLoad . " class='minipres'>\n\t<div id='minipres'>\n\t<h1>" . $titre . "</h1>\n\t<div>\n"; }
/** * Generer les urls de retour bank * @param array $config * @param string $action * response|cancel|autoresponse * @param string $args * query string * @return mixed|string */ function bank_url_api_retour($config, $action, $args = "") { static $is_api = null; if (is_null($is_api)) { $is_api = false; if (file_exists($f = _DIR_RACINE . ".htaccess")) { lire_fichier($f, $contenu); if (strpos($contenu, 'spip.php?action=api_$1') !== false) { $is_api = true; } } } $presta = $config['presta'] . "-" . bank_config_id($config); if ($is_api) { return generer_url_public('', $args, false, false, "bank.api/{$presta}/{$action}/"); } else { $args = (strlen($args) ? "&" : "") . $args; $args = "bankp=" . $presta . $args; return generer_url_action('bank_' . $action, $args, true, true); } }
function inc_sauvegarder_dist($status_file, $redirect = '') { $status_file = _DIR_TMP . basename($status_file) . ".txt"; if (!lire_fichier($status_file, $status) or !($status = unserialize($status))) { } else { $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:sauvegarde_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 $res = false; 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()); $res = base_copier_tables($status_file, $status['tables'], '', 'dump', $options); } echo "</div>\n"; if (!$res and $redirect) { echo dump_relance($redirect); } echo install_fin_html(); ob_end_flush(); flush(); return $res; } }
function formulaires_importer_champs_extras_traiter_dist() { $res = array('editable' => true); $fichier = $_FILES['fichier']['tmp_name']; lire_fichier($fichier, $yaml); if (!$yaml) { $res['message_erreur'] = "Lecture du fichier en erreur."; return $res; } include_spip('inc/yaml'); $description = yaml_decode($yaml, true); if (!$description or !is_array($description)) { $res['message_erreur'] = "Pas de champ trouvé dans le fichier."; return $res; } if (iextras_importer_description($description, $message, _request('fusionner') == 'oui')) { $res['message_ok'] = $message; } else { $res['message_erreur'] = $message; } return $res; }
function etape_ldap5_save() { if (!@file_exists(_FILE_CONNECT_TMP)) { redirige_url_ecrire('install'); } ecrire_meta('ldap_statut_import', _request('statut_ldap')); lire_fichier(_FILE_CONNECT_TMP, $conn); if ($p = strpos($conn, "'');")) { ecrire_fichier(_FILE_CONNECT_TMP, substr($conn, 0, $p + 1) . _FILE_LDAP . substr($conn, $p + 1)); } $adresse_ldap = addcslashes(_request('adresse_ldap'), "'\\"); $login_ldap = addcslashes(_request('login_ldap'), "'\\"); $pass_ldap = addcslashes(_request('pass_ldap'), "'\\"); $port_ldap = addcslashes(_request('port_ldap'), "'\\"); $tls_ldap = addcslashes(_request('tls_ldap'), "'\\"); $protocole_ldap = addcslashes(_request('protocole_ldap'), "'\\"); $base_ldap = addcslashes(_request('base_ldap'), "'\\"); $base_ldap_text = addcslashes(_request('base_ldap_text'), "'\\"); $conn = "\$GLOBALS['ldap_base'] = '{$base_ldap}';\n" . "\$GLOBALS['ldap_link'] = @ldap_connect('{$adresse_ldap}','{$port_ldap}');\n" . "@ldap_set_option(\$GLOBALS['ldap_link'],LDAP_OPT_PROTOCOL_VERSION,'{$protocole_ldap}');\n" . ($tls_ldap != 'oui' ? '' : "@ldap_start_tls(\$GLOBALS['ldap_link']);\n") . "@ldap_bind(\$GLOBALS['ldap_link'],'{$login_ldap}','{$pass_ldap}');\n"; $champs = is_array($GLOBALS['ldap_attributes']) ? $GLOBALS['ldap_attributes'] : array(); $res = ''; foreach ($champs as $champ => $v) { $nom = 'ldap_' . $champ; $val = trim(_request($nom)); if (preg_match('/^\\w*$/', $val)) { if ($val) { $val = _q($val); } } else { $val = "array(" . _q(preg_split('/\\W+/', $val)) . ')'; } if ($val) { $res .= "'{$champ}' => " . $val . ","; } } $conn .= "\$GLOBALS['ldap_champs'] = array({$res});\n"; install_fichier_connexion(_DIR_CONNECT . _FILE_LDAP, $conn); }
/** * Lire le status de migration * @param string $direction * @param bool $finished * @return bool|array */ function lire_migration_status($direction, $finished=false){ if (!in_array($direction,array('depuis','vers'))) return false; $meta = 'migration_'.$direction.'_status'; $file = _DIR_TMP.$meta.($finished?".finished":"").".txt"; lire_fichier($file,$s); if (!$s) return false; // verifier le timestamp if (!$s = unserialize($s) OR !isset($s['status']) OR !isset($s['key']) OR ($direction=='depuis' AND !isset($s['timestamp'])) OR ($direction=='depuis' AND $s['timestamp']<time()-_MIGRATION_KEY_PERSISTENCE)){ if (!$finished){ finir_migration_status($direction); return false; } } return $s; }
function exec_memoriser_dist() { $hash = _request('hash'); $order = _request('order'); $by = _request('by'); $trad = _request('trad'); lire_fichier(_DIR_SESSIONS.'ajax_fonctions.txt', $ajax_fonctions); $ajax_fonctions = @unserialize($ajax_fonctions); if ($res = $ajax_fonctions[$hash]) { include_spip('inc/afficher_objets'); list(,$t,$r,$f) = $res; if (preg_match('/^[a-z0-9+.,]+$/', $by) AND preg_match('/^\w*$/', $order)) { $r['ORDER BY'] = str_replace(',', " $order, ", $by) . " $order"; sauver_requete($t, $r, $f); } $cpt = sql_countsel($r['FROM'], $r['WHERE'], $r['GROUP BY']); include_spip('inc/presentation'); $res = afficher_articles_trad($t, $r, $f, $hash, $cpt, $trad); } else spip_log("memoriser $q vide"); include_spip('inc/actions'); ajax_retour($res); }