Example #1
0
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);
}
Example #2
0
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]++;
		}
	}
}
Example #3
0
/**
 * 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();
    }
}
Example #4
0
/**
 * 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];
}
Example #6
0
 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);
		}
	}

}
Example #8
0
/**
 * 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;
}
Example #10
0
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));
    }
}
Example #11
0
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;
}
Example #13
0
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('&amp;', '&', htmlentities($r3[$i]['title'][0], ENT_NOQUOTES, "UTF-8"));
		 $t = preg_replace(',\s*&#8364;(&brvbar;)?,', '&nbsp;(&hellip;)', $t);
		 $t = preg_replace(',^(.*?):,', "&bull; <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);
}
Example #14
0
File: xml.php Project: rhertzog/lcs
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;
}
Example #15
0
/**
 * 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];
    }
}
Example #16
0
/**
 * 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)) . '&nbsp;<strong>svn</strong>]';
    }
    return $version;
}
Example #18
0
/**
 * 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;
}
Example #19
0
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;
}
Example #22
0
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;
}
Example #24
0
/**
 * 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";
}
Example #25
0
File: bank.php Project: nursit/bank
/**
 * 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);
    }
}
Example #26
0
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;
}
Example #28
0
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);
}
Example #29
0
/**
 * 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;
}
Example #30
0
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);
}