Example #1
0
function tw_trig_purger($quoi)
{
    if ($quoi == 'cache') {
        purger_repertoire(_DIR_CACHE . "wheels");
    }
    return $quoi;
}
Example #2
0
File: purger.php Project: JLuc/SPIP
/**
 * Action de purge du cache
 *
 * L'argument peut être :
 *
 * - inhibe_cache : inhibe le cache pendant 24h
 * - reactive_cache : enlève l'inhibition du cache
 * - cache : nettoie tous les caches (sauf celui des vignettes)
 * - squelettes : nettoie le cache de compilation des squelettes
 * - vignettes : nettoie le cache des vignettes (et compressions css/js)
 *
 * @pipeline_appel trig_purger
 * @uses supprime_invalideurs()
 * @uses purger_repertoire()
 * 
 * @param string|null $arg
 *     Argument attendu. En absence utilise l'argument
 *     de l'action sécurisée.
 */
function action_purger_dist($arg = null)
{
    if (is_null($arg)) {
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $arg = $securiser_action();
    }
    include_spip('inc/invalideur');
    spip_log("purger {$arg}");
    switch ($arg) {
        case 'inhibe_cache':
            // inhiber le cache pendant 24h
            ecrire_meta('cache_inhib', $_SERVER['REQUEST_TIME'] + 24 * 3600);
            break;
        case 'reactive_cache':
            effacer_meta('cache_inhib');
            break;
        case 'cache':
            supprime_invalideurs();
            @spip_unlink(_CACHE_RUBRIQUES);
            @spip_unlink(_CACHE_CHEMIN);
            @spip_unlink(_DIR_TMP . "plugin_xml_cache.gz");
            // on ne supprime que _CACHE_PLUGINS_OPT qui declenche la reconstruction des 3
            // _CACHE_PIPELINES _CACHE_PLUGINS_PATH et _CACHE_PLUGINS_FCT
            // pour eviter des problemes de concurence
            // cf http://core.spip.org/issues/2989
            //@spip_unlink(_CACHE_PIPELINES);
            //@spip_unlink(_CACHE_PLUGINS_PATH);
            //@spip_unlink(_CACHE_PLUGINS_FCT);
            @spip_unlink(_CACHE_PLUGINS_OPT);
            purger_repertoire(_DIR_CACHE, array('subdir' => true));
            purger_repertoire(_DIR_AIDE);
            purger_repertoire(_DIR_VAR . 'cache-css');
            purger_repertoire(_DIR_VAR . 'cache-js');
            break;
        case 'squelettes':
            purger_repertoire(_DIR_SKELS);
            break;
        case 'vignettes':
            purger_repertoire(_DIR_VAR, array('subdir' => true));
            supprime_invalideurs();
            purger_repertoire(_DIR_CACHE, array('subdir' => true));
            break;
    }
    // le faire savoir aux plugins
    pipeline('trig_purger', $arg);
}
Example #3
0
function action_description_outil_post($index) {
	global $metas_vars;
	if(defined('_SPIP19300')) $connect_id_auteur = $GLOBALS['auteur_session']['id_auteur'];
		else global $connect_id_auteur;
cs_log("Debut : action_description_outil_post($index) - On modifie la(les) variable(s) dans la base");

	// on recupere dans le POST le nom des variables a modifier et le nom de l'outil correspondant
	$variables = unserialize(urldecode(corriger_caracteres(_request('variables'))));
	$outil = corriger_caracteres(_request('outil'));
//cs_log($variables, '$variables = ');
cs_log($metas_vars, 'metas_vars :');
	// besoin des outils pour l'autorisation de modifier les variables
	include_spip('cout_utils');
	include_spip('config_outils');
	global $outils, $cs_variables;
	// on traite chaque variable
	foreach($variables as $var) if(autoriser('configurer', 'variable', 0, NULL, array('nom'=>$var, 'outil'=>$outils[$outil]))) {
		// on recupere dans le POST la nouvelle valeur de la variable
		$final = corriger_caracteres(_request($var));
		if (in_array($var, $metas_vars['_nombres'])) $final = intval($final);
		spip_log("Outil du Couteau Suisse ($outil). Demande de modification sur une variable par l'auteur id=$connect_id_auteur : %$var% = $final");
		// et on modifie les metas !
		if(!isset($cs_variables[$var]['externe'])) $metas_vars[$var] = $final;
		if(isset($cs_variables[$var]['action'])) {
			$action = str_replace('%s', $final, $cs_variables[$var]['action']);
			spip_log("Outil du Couteau Suisse ($outil). Demande d'action sur cette variable : ".$action);
			eval($action);
		}
			
	} else 
		spip_log("Outil du Couteau Suisse n°$index. Modification interdite de la variable %$var% par l'auteur id=$connect_id_auteur !!");
//cs_log($metas_vars, " -- metas_vars = ");
	ecrire_meta('tweaks_variables', serialize($metas_vars));
	ecrire_metas();

cs_log(" -- donc, reinitialisation forcee !");
	// on reinitialise tout, au cas ou ...
	include_spip('inc/invalideur');
	suivre_invalideur("1"); # tout effacer
	purger_repertoire(_DIR_SKELS);
	purger_repertoire(_DIR_CACHE);
	include_spip('cout_utils');
	cs_initialisation(true);
cs_log(" FIN : action_description_outil_post(Array($index)) - Reinitialisation forcee terminee.");
}
function formulaires_configurer_articles_traiter_dist()
{
    $res = array('editable' => true);
    $purger_skel = false;
    // Purger les squelettes si un changement de meta les affecte
    if ($i = _request('post_dates') and $i != $GLOBALS['meta']["post_dates"]) {
        $purger_skel = true;
    }
    foreach (array("articles_surtitre", "articles_soustitre", "articles_descriptif", "articles_chapeau", "articles_texte", "articles_ps", "articles_redac", "articles_urlref", "post_dates", "articles_redirection") as $m) {
        if (!is_null($v = _request($m))) {
            ecrire_meta($m, $v == 'oui' ? 'oui' : 'non');
        }
    }
    if ($purger_skel) {
        include_spip('inc/invalideur');
        purger_repertoire(_DIR_SKELS);
    }
    $res['message_ok'] = _T('config_info_enregistree');
    return $res;
}
Example #5
0
function action_purger_dist()
{
	$securiser_action = charger_fonction('securiser_action', 'inc');
	$arg = $securiser_action();

	include_spip('inc/invalideur');

	spip_log("purger $arg");

	switch ($arg) {

	case 'cache': 
		supprime_invalideurs();
		@spip_unlink(_CACHE_RUBRIQUES);
		@spip_unlink(_CACHE_PIPELINES);
		@spip_unlink(_CACHE_PLUGINS_PATH);
		@spip_unlink(_CACHE_PLUGINS_OPT);
		@spip_unlink(_CACHE_PLUGINS_FCT);
		@spip_unlink(_CACHE_PLUGINS_VERIF);
		@spip_unlink(_CACHE_CHEMIN);
		purger_repertoire(_DIR_CACHE,array('subdir'=>true));
		purger_repertoire(_DIR_AIDE);
		purger_repertoire(_DIR_VAR.'cache-css');
		purger_repertoire(_DIR_VAR.'cache-js');
		break;

	case 'squelettes':
		purger_repertoire(_DIR_SKELS);
		break;

	case 'vignettes':
		purger_repertoire(_DIR_VAR,array('subdir'=>true));
		supprime_invalideurs();
		purger_repertoire(_DIR_CACHE);
		break;
	}

}
Example #6
0
/**
 * fermer la connection depuis le site distant
 * quand on a fini
 *
 * @param array $status
 * @param array $data
 * @return bool
 */
function migration_reception_end_dist($status, $data){


	spip_log('fin de migration. Resultat:'.var_export($data,1),'migration');
	$status['status'] = 'end';
	if ($data['status']=='abort'){
		$status = abandonner_migration_depuis($status);
	}
	else {
		// s'assurer que l'auteur qui migre est bien webmestre a l'arrivee
		$id_webmestre = $data['id_webmestre'];
		include_spip('base/abstract_sql');
		$row = sql_fetsel('*','spip_auteurs','id_auteur='.intval($id_webmestre));
		if ($row AND $row['statut']=='0minirezo'){
			// y a-t-il un champ webmestre dans la base ?
			if (!isset($row['webmestre'])){
				sql_alter("TABLE spip_auteurs ADD webmestre varchar(3) DEFAULT 'non' NOT NULL");
				$row['webmestre']='non';
			}
			if ($row['webmestre']!='oui'){
				sql_updateq("spip_auteurs",array('webmestre'=>'oui'),'id_auteur='.intval($id_webmestre));
			}
		}
	}

	if ((count($status['ignore']) OR count($data['errors']))
	  AND defined('_MIGRATION_EMAIL_NOTIFY_IGNORE')
	  AND $email = _MIGRATION_EMAIL_NOTIFY_IGNORE){
		$sujet = "[Migration-ERR] ".$GLOBALS['meta']['adresse_site'];
		$texte = "";
		if (count($status['ignore']))
			$texte .= var_export($status['ignore'],true);
		if (count($data['errors']))
			$texte .= implode("\n",$data['errors']);
		job_queue_add('envoyer_mail','Erreur migration',array($email, $sujet, $texte),'inc/');
	}

	update_migration_depuis($status);
	finir_migration_status_depuis();

	// si on a pas d'upgrade a suivre, vidons les cache
	$version_installee = sql_getfetsel('valeur','spip_meta',"nom='version_installee'");
	if ($GLOBALS['spip_version']==$version_installee) {
		// supprimer les cache pour forcer la mise a jour du site
		include_spip('inc/invalideur');
		spip_log("purger le site","migration");
		supprime_invalideurs();
		@spip_unlink(_CACHE_RUBRIQUES);
		@spip_unlink(_CACHE_PIPELINES);
		@spip_unlink(_CACHE_PLUGINS_PATH);
		@spip_unlink(_CACHE_PLUGINS_OPT);
		@spip_unlink(_CACHE_PLUGINS_FCT);
		@spip_unlink(_CACHE_PLUGINS_VERIF);
		@spip_unlink(_CACHE_CHEMIN);
		#purger_repertoire(_DIR_CACHE,array('subdir'=>true));
		#purger_repertoire(_DIR_AIDE);
		purger_repertoire(_DIR_VAR.'cache-css');
		purger_repertoire(_DIR_VAR.'cache-js');
	}
	@spip_unlink(_FILE_META);

	// on renvoit le bilan pour affichage sur le site source
	return $status;
}
Example #7
0
function appliquer_quota_cache()
{
    global $quota_cache;
    $encore = false;
    $tour_quota_cache = intval(1 + $GLOBALS['meta']['tour_quota_cache']) % 16;
    ecrire_meta('tour_quota_cache', $tour_quota_cache);
    $l = dechex($tour_quota_cache);
    $dir = sous_repertoire(_DIR_CACHE, $l);
    list($nombre, $taille) = nombre_de_fichiers_repertoire($dir);
    $total_cache = $taille * $nombre;
    spip_log("Taille du CACHE estimee ({$l}): " . intval(16 * $total_cache / (1024 * 1024 / 10)) / 10 . " Mo", "invalideur");
    // Nombre max de fichiers a supprimer
    if ($quota_cache > 0 and $taille > 0) {
        $trop = $total_cache - $quota_cache / 16 * 1024 * 1024;
        $trop = 3 * intval($trop / $taille);
        if ($trop > 0) {
            $n = purger_repertoire($dir, array('atime' => time() - _AGE_CACHE_ATIME, 'limit' => $trop, 'subdir' => true));
            spip_log("{$dir} : {$n}/{$trop} caches supprimes [taille moyenne {$taille}]", "invalideur");
            $total_cache = intval(max(0, 16 * $total_cache - $n * $taille) / (1024 * 1024) * 10) / 10;
            spip_log("cache restant estime : {$total_cache} Mo, ratio " . $total_cache / $quota_cache, "invalideur");
            // redemander la main pour eviter que le cache ne gonfle trop
            // mais pas si on ne peut pas purger car les fichiers sont trops recents
            if ($total_cache / $quota_cache > 1.5 and $n * 50 > $trop) {
                $encore = true;
                spip_log("Il faut encore purger", "invalideur");
            }
        }
    }
    return $encore;
}
Example #8
0
function appliquer_modifs_config($purger_skel = false)
{
    foreach (liste_metas() as $i => $v) {
        if (($x = _request($i)) !== NULL) {
            ecrire_meta($i, $x);
        } elseif (!isset($GLOBALS['meta'][$i])) {
            ecrire_meta($i, $v);
        }
    }
    if ($purger_skel) {
        include_spip('inc/invalideur');
        purger_repertoire(_DIR_SKELS);
    }
}
Example #9
0
/**
 * Nettoyer les IPs des flooders 24H apres leur dernier passage
 */
function visites_nettoyer_flood()
{
    if (is_dir($dir = _DIR_TMP . 'flood/')) {
        include_spip('inc/invalideur');
        if (!defined('_IP_FLOOD_TTL')) {
            define('_IP_FLOOD_TTL', 24 * 3600);
        }
        // 24H par defaut
        $options = array('mtime' => $_SERVER['REQUEST_TIME'] - _IP_FLOOD_TTL);
        purger_repertoire($dir, $options);
    }
}
Example #10
0
function cout_exec_redirige($arg='', $recompiler=true) {
	if($recompiler) {
		ecrire_metas();
		cs_initialisation(true);
		include_spip('inc/invalideur');
		suivre_invalideur("1"); # tout effacer
		purger_repertoire(_DIR_SKELS);
		purger_repertoire(_DIR_CACHE);
	}
	if($arg!==false) {
		include_spip('inc/headers');
		redirige_par_entete(generer_url_ecrire(_request('exec'), $arg, true));
	}
}
Example #11
0
function appliquer_modifs_config($purger_skel=false) {

	if (($i = _request('adresse_site'))!==NULL){
		if (!strlen($i)) {$GLOBALS['profondeur_url']=_DIR_RESTREINT?0:1;$i = url_de_base();}
		$_POST['adresse_site'] = preg_replace(",/?\s*$,", "", $i);
	}

	// provoquer l'envoi des nouveautes en supprimant le fichier lock
	if (_request('envoi_now')) {
		spip_unlink(_DIR_TMP . 'mail.lock');
	}

	// Purger les squelettes si un changement de meta les affecte
	if ($i = _request('post_dates') AND ($i != $GLOBALS['meta']["post_dates"]))
		$purger_skel = true;

	if ($accepter_forum = _request('forums_publics')
	AND ($accepter_forum != $GLOBALS['meta']["forums_publics"])) {
		$purger_skel = true;
		$accepter_forum = substr($accepter_forum,0,3);
	}

	// Appliquer les changements de moderation forum
	// forums_publics_appliquer : futur, saufnon, tous
	if (in_array($appliquer = _request('forums_publics_appliquer'),
		array('tous', 'saufnon')
	)) {
		$sauf = ($appliquer == 'saufnon')
			? "accepter_forum != 'non'"
			: '';

		sql_updateq('spip_articles', array('accepter_forum'=>$accepter_forum), $sauf);
	}

	if ($accepter_forum == 'abo')
		ecrire_meta('accepter_visiteurs', 'oui');

	if ($i = _request('langues_auth') AND is_array($i)) {
		set_request('langues_multilingue', join($i, ","));
	}

	// Modification du reglage accepter_inscriptions => vider le cache
	// (pour repercuter la modif sur le panneau de login)
	if (($i = _request('accepter_inscriptions')
		AND $i != $GLOBALS['meta']['accepter_inscriptions'])
		OR ($i = _request('accepter_visiteurs')
		AND $i != $GLOBALS['meta']['accepter_visiteurs'])) {
		include_spip('inc/invalideur');
		suivre_invalideur("1"); # tout effacer
	}

	foreach(liste_metas() as $i => $v) {
		if (($x =_request($i))!==NULL)
			ecrire_meta($i, $x);
		elseif  (!isset($GLOBALS['meta'][$i]))
			ecrire_meta($i, $v);
	}

	if ($lang = _request('changer_langue_site')) {
		include_spip('inc/lang');
		// verif que la langue demandee est licite
		if (changer_langue($lang)) {
			ecrire_meta('langue_site', $lang);
		}
		// le test a defait ca:
		utiliser_langue_visiteur();
	}

	if ($purger_skel) {
		include_spip('inc/invalideur');
		purger_repertoire(_DIR_SKELS);
	}
}