function couteau_suisse_vider_tables($nom_meta_base_version) { effacer_meta($nom_meta_base_version); // effacement de toutes les metas du Couteau Suisse foreach(array_keys($GLOBALS['meta']) as $meta) { if(strpos($meta, 'tweaks_') === 0) effacer_meta($meta); if(strpos($meta, 'cs_') === 0) effacer_meta($meta); } ecrire_metas(); # Pour SPIP 1.92 // effacement des repertoires temporaires include_spip('inc/getdocument'); foreach(array(_DIR_CS_TMP, _DIR_VAR.'couteau-suisse') as $dir) if(@file_exists($dir)) effacer_repertoire_temporaire($dir); // fichier RSS temporaire include_spip('cout_define'); @unlink(_CS_TMP_RSS); // retrait de l'inclusion eventuelle dans config/mes_options.php include_spip('cout_utils'); cs_verif_FILE_OPTIONS(false, true); }
function cs_initialisation($forcer=false, $init_includes=true) { global $cs_metas_pipelines, $metas_outils; static $deja_passe_ici = 0; if($log=defined('_LOG_CS')) { $rand = sprintf('[#%04x] ', rand()); if(!$deja_passe_ici) { $mysql = function_exists('mysql_get_client_info')?' - MYSQL v'.mysql_get_client_info():''; cs_log("#### 1er PASSAGE $rand################################# - \$forcer = ".intval($forcer) . "\n{$rand}PHP v".phpversion()."$mysql - base SPIP v$GLOBALS[spip_version_base] - code SPIP v$GLOBALS[spip_version_code]"); } } $deja_passe_ici++; if($log) cs_log("{$rand}cs_initialisation($forcer) : Passage #$deja_passe_ici"); // si les metas ne sont pas lus, on les lit if (isset($GLOBALS['meta']['tweaks_pipelines'])) { $cs_metas_pipelines = unserialize($GLOBALS['meta']['tweaks_pipelines']); if($log) cs_log("$rand -- cs_metas_pipelines = ".(is_array($cs_metas_pipelines)?join(', ',array_keys($cs_metas_pipelines)):'')); // liste des actifs & definition des constantes attestant qu'un outil est bien actif : define('_CS_monoutil', 'oui'); $liste = array(); foreach($metas_outils as $nom=>$o) if(isset($o['actif']) && $o['actif']) { $liste[]=$nom; @define('_CS_'.$nom, 'oui'); } $liste2 = join(', ', $liste); if($log) cs_log("$rand -- ".count($liste).' outil(s) actif(s)'.(strlen($liste2)?" = ".$liste2:'')); // Vanter notre art de la compilation... // La globale $spip_header_silencieux permet de rendre le header absent pour raisons de securite if (!headers_sent() && (!isset($GLOBALS['spip_header_silencieux']) OR !$GLOBALS['spip_header_silencieux'])) @header('X-Outils-CS: '.$liste2); if($log) cs_log($rand.($forcer?"\$forcer = true":"cs_initialisation($forcer) : Sortie car les metas sont presents")); // Les pipelines sont en meta, tout va bien on peut partir d'ici. if (!$forcer) return; } // ici on commence l'initialisation de tous les outils $GLOBALS['cs_init'] = 1; global $outils, $metas_vars, $metas_outils; include_spip('inc/meta'); include_spip('cout_utils'); // remplir $outils (et aussi $cs_variables qu'on n'utilise pas ici); include_spip('config_outils'); // verifier que tous les outils actives sont bien presents foreach($metas_outils as $nom=>$o) if(isset($o['actif']) && $o['actif'] && !isset($outils[$nom])) unset($metas_outils[$nom]); ecrire_meta('tweaks_actifs', serialize($metas_outils)); ecrire_metas(); // stocker les types de variables declarees global $cs_variables; $metas_vars['_chaines'] = $cs_variables['_chaines']; $metas_vars['_nombres'] = $cs_variables['_nombres']; // au cas ou un outil manipule des variables $description_outil = charger_fonction('description_outil', 'inc'); // completer les variables manquantes et incorporer l'activite lue dans les metas if($log) cs_log("$rand -- foreach(\$outils) : cs_initialisation_d_un_outil()"); // initialiser chaque outil et construire la liste des contribs $contribs = array(); include_spip('inc/cs_outils'); foreach($outils as $outil) { cs_initialisation_d_un_outil($id = $outil['id'], $description_outil, false); if(isset($outil['contrib']) && isset($metas_outils[$id]['actif']) && $metas_outils[$id]['actif']) $contribs[] = '<br/> • [@@couteauprive:'.$outil['id'].':nom@@->http://www.spip-contrib.net/?article'.$outil['contrib'].']'; } // installer $cs_metas_pipelines $cs_metas_pipelines = array(); if($log) cs_log("$rand -- cs_initialise_includes()... cout_fonctions.php sera peut-etre inclus."); // creer les includes (config/mes_options, mes_options et mes_fonctions) et le fichier de controle pipelines.php if($init_includes) cs_initialise_includes(count($metas_outils)); // verifier le fichier d'options _FILE_OPTIONS (ecrire/mes_options.php ou config/mes_options.php) // De'sactive' par de'faut. Activer l'outil "Comportements du Couteau Suisse" pour ge'rer cette option. cs_verif_FILE_OPTIONS($metas_outils['cs_comportement']['actif'] && $metas_vars['spip_options_on'], true); // sauver la configuration cs_sauve_configuration(); // en metas : outils actifs if($log) cs_log("$rand -- ecriture metas"); ecrire_meta('tweaks_actifs', serialize($metas_outils)); // en metas : variables d'outils ecrire_meta('tweaks_variables', serialize($metas_vars)); // en metas : code inline pour les pipelines, mes_options et mes_fonctions; ecrire_meta('tweaks_pipelines', serialize($cs_metas_pipelines)); // en metas : les liens sur spip-contrib ecrire_meta('tweaks_contribs', serialize($contribs)); ecrire_metas(); $GLOBALS['cs_init'] = 0; if($log) cs_log("{$rand}cs_initialisation($forcer) : Sortie"); }