function tw_trig_purger($quoi) { if ($quoi == 'cache') { purger_repertoire(_DIR_CACHE . "wheels"); } return $quoi; }
/** * 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); }
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; }
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; } }
/** * 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; }
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; }
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); } }
/** * 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); } }
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)); } }
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); } }