function formulaires_editer_champs_extras_traiter_dist($objet, $redirect = '') { $retour = array('redirect' => $redirect); $table = table_objet_sql($objet); include_spip('inc/iextras'); $saisies = iextras_champs_extras_definis($table); $nouvelles_saisies = session_get('constructeur_formulaire_champs_extras_' . $table); $diff = saisies_comparer_par_identifiant($saisies, $nouvelles_saisies); $extras = array(); include_spip('inc/cextras'); // supprimer les champs supprimes champs_extras_supprimer($table, $diff['supprimees']); // ajouter les nouveaux champs; champs_extras_creer($table, $diff['ajoutees']); // modifier les champs modifies; if ($diff['modifiees']) { $anciennes = saisies_lister_par_identifiant($saisies); $anciennes = array_intersect_key($anciennes, $diff['modifiees']); champs_extras_modifier($table, $diff['modifiees'], $anciennes); } # champs_extras_modifier($table, # modifiees nouvelles, # modifiees anciennes); ecrire_meta("champs_extras_" . $table, serialize($nouvelles_saisies)); $retour['message_ok'] = 'Super !'; return $retour; }
function facteur_vieil_upgrade(){ // migration depuis tres ancienne version, a la main if (isset($GLOBALS['meta']['spip_notifications_version'])) { ecrire_meta('facteur_smtp', $GLOBALS['meta']['spip_notifications_smtp']); ecrire_meta('facteur_smtp_auth', $GLOBALS['meta']['spip_notifications_smtp_auth']); ecrire_meta('facteur_smtp_secure', $GLOBALS['meta']['spip_notifications_smtp_secure']); ecrire_meta('facteur_smtp_sender', $GLOBALS['meta']['spip_notifications_smtp_sender']); ecrire_meta('facteur_filtre_images', $GLOBALS['meta']['spip_notifications_filtre_images']); ecrire_meta('facteur_filtre_css', $GLOBALS['meta']['spip_notifications_filtre_css']); ecrire_meta('facteur_filtre_iso_8859', $GLOBALS['meta']['spip_notifications_filtre_iso_8859']); ecrire_meta('facteur_adresse_envoi', $GLOBALS['meta']['spip_notifications_adresse_envoi']); ecrire_meta('facteur_adresse_envoi_nom', $GLOBALS['meta']['spip_notifications_adresse_envoi_nom']); ecrire_meta('facteur_adresse_envoi_email', $GLOBALS['meta']['spip_notifications_adresse_envoi_email']); // supprimer l'ancien nommage effacer_meta('spip_notifications_smtp'); effacer_meta('spip_notifications_smtp_auth'); effacer_meta('spip_notifications_smtp_secure'); effacer_meta('spip_notifications_smtp_sender'); effacer_meta('spip_notifications_filtre_images'); effacer_meta('spip_notifications_filtre_css'); effacer_meta('spip_notifications_filtre_iso_8859'); effacer_meta('spip_notifications_adresse_envoi'); effacer_meta('spip_notifications_adresse_envoi_nom'); effacer_meta('spip_notifications_adresse_envoi_email'); effacer_meta('spip_notifications_version'); // KEZAKO ? include_spip('base/abstract_sql'); sql_drop_table('spip_notifications', true); } }
function admin_verifie_session($script, $anonymous=false) { include_spip('base/abstract_sql'); $pref = sprintf("_%d_",$GLOBALS['visiteur_session']['id_auteur']); $signal = fichier_admin($script, "$script$pref"); $valeur = sql_getfetsel('valeur', 'spip_meta', "nom='admin'"); if ($valeur === NULL) { ecrire_meta('admin', $signal, 'non'); } else { if (!$anonymous AND ($valeur != $signal)) { if (intval(substr($valeur, strpos($valeur,'_')+1))<> $GLOBALS['visiteur_session']['id_auteur']) { include_spip('inc/minipres'); spip_log("refus de lancer $script, priorite a $valeur"); return minipres(_T('info_travaux_texte')); } } } $journal = "spip"; if (autoriser('configurer')) // c'est une action webmestre, soit par ftp soit par statut webmestre $journal = 'webmestre'; // on pourrait statuer automatiquement les webmestres a l'init d'une action auth par ftp ... ? spip_log("admin $pref" . ($valeur ? " (reprise)" : ' (init)'),$journal); return ''; }
function galettonuts_upgrade() { $version_installee = isset($GLOBALS['meta']['galettonuts_version']) ? $GLOBALS['meta']['galettonuts_version'] : '0.0'; // La version installée est la dernière en date if ($version_installee == galettonuts_version()) { return; } else { if (version_compare($version_installee, '0.0', 'eq')) { include_spip('base/galettonuts_tables'); include_spip('base/create'); include_spip('base/abstract_sql'); creer_base(); ecrire_meta('galettonuts_version', galettonuts_version()); ecrire_meta('galettonuts_config', serialize(array('adresse_db' => 'localhost', 'prefix_db' => 'galette_', 'db_ok' => false, 'activer_cron' => true, 'heures' => 0, 'minutes' => 30))); ecrire_meta('galettonuts_synchro', serialize(array('frequence' => 600))); ecrire_metas(); echo '<br />', debut_boite_info(true), '<strong>', _T('galettonuts:installation_succes'), '</strong>', '<p>', _T('galettonuts:texte_installation_succes'), '</p>', fin_boite_info(true); return; } } $version_comparaison = version_compare(galettonuts_version(), $version_installee); // Mise à jour if (-1 == $version_comparaison) { // TODO: Gérer un Upgrade ecrire_meta('galettonuts_version', galettonuts_version()); return; } else { if (1 == $version_comparaison) { // TODO: Gérer un Downgrade return; } } }
function formulaires_configurer_revisions_objets_traiter_dist() { include_spip('inc/meta'); $tables = serialize(_request('objets_versions')); ecrire_meta('objets_versions', $tables); return array('message_ok' => _T('config_info_enregistree')); }
function fraap_candidatures_upgrade($nom_meta_base_version, $version_cible) { $current_version = "0.0"; if (isset($GLOBALS['meta'][$nom_meta_base_version])) { $current_version = $GLOBALS['meta'][$nom_meta_base_version]; } if ($current_version == "0.0") { creer_base(); maj_tables('spip_auteurs'); ecrire_meta($nom_meta_base_version, $current_version = $version_cible); } // ajout d'un statut publie par defaut /* if (version_compare($current_version, '0.3', '<')) { include_spip('base/abstract_sql'); sql_alter("TABLE spip_candidatures CHANGE statut statut VARCHAR(10) DEFAULT 'publie' NOT NULL"); ecrire_meta($nom_meta_base_version,$current_version="0.3"); } // ajout du statut publié pour les enregistrements déjà présents if (version_compare($current_version, '0.33', '<')) { include_spip('base/abstract_sql'); $res = sql_select("statut", "spip_candidatures"); while ($row = sql_fetch($res)){ if(isset($row['statut'])) { if (!sql_updateq("spip_candidatures",array('statut'=>'publie'))) spip_log('mise à jour colonne statut rencontre un probleme','journal'); } } ecrire_meta($nom_meta_base_version,$current_version="0.33"); } */ }
/** * Cron de calcul des popularités des articles * * @uses genie_popularite_constantes() * * @param int $t * Timestamp de la dernière exécution de cette tâche * @return int * Positif si la tâche a été terminée, négatif pour réexécuter cette tâche **/ function genie_popularites_dist($t) { // Si c'est le premier appel, ne pas calculer $t = $GLOBALS['meta']['date_popularites']; ecrire_meta('date_popularites', time()); if (!$t) { return 1; } $duree = time() - $t; list($a, $b) = genie_popularite_constantes($duree); // du passe, faisons table (SQL) rase sql_update('spip_articles', array('maj' => 'maj', 'popularite' => "popularite * {$a}"), 'popularite>1'); // enregistrer les metas... $row = sql_fetsel('MAX(popularite) AS max, SUM(popularite) AS tot', "spip_articles"); ecrire_meta("popularite_max", $row['max']); ecrire_meta("popularite_total", $row['tot']); // Une fois par jour purger les referers du jour ; qui deviennent // donc ceux de la veille ; au passage on stocke une date_statistiques // dans spip_meta - cela permet au code d'etre "reentrant", ie ce cron // peut etre appele par deux bases SPIP ne partageant pas le meme // _DIR_TMP, sans tout casser... $aujourdhui = date("Y-m-d"); if (($d = $GLOBALS['meta']['date_statistiques']) != $aujourdhui) { spip_log("Popularite: purger referer depuis {$d}"); ecrire_meta('date_statistiques', $aujourdhui); if (strncmp($GLOBALS['connexions'][0]['type'], 'sqlite', 6) == 0) { spip_query("UPDATE spip_referers SET visites_veille=visites_jour, visites_jour=0"); } else { sql_alter("TABLE spip_referers DROP visites_veille,\n\t\t\tCHANGE visites_jour visites_veille INT(10) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\tADD visites_jour INT(10) UNSIGNED NOT NULL DEFAULT '0'"); } } // et c'est fini pour cette fois-ci return 1; }
/** * Desinstallation/suppression des tables urls * * @param string $nom_meta_base_version */ function urls_vider_tables($nom_meta_base_version) { // repasser dans les urls par defaut ecrire_meta('type_urls', 'page'); sql_drop_table("spip_urls"); effacer_meta($nom_meta_base_version); }
function formulaires_configurer_transcodeur_traiter_dist() { $res = array('editable' => true); ecrire_meta('charset', _request('charset')); $res['message_ok'] = _T('config_info_enregistree'); return $res; }
/** * Installation/maj des tables forum * * @param string $nom_meta_base_version * @param string $version_cible */ function forum_upgrade($nom_meta_base_version, $version_cible) { // cas particulier : // si plugin pas installe mais que la table existe // considerer que c'est un upgrade depuis v 1.0.0 // pour gerer l'historique des installations SPIP <=2.1 if (!isset($GLOBALS['meta'][$nom_meta_base_version])) { $trouver_table = charger_fonction('trouver_table', 'base'); $trouver_table(''); // vider le cache des descriptions ! if ($desc = $trouver_table('spip_forum') and isset($desc['field']['id_article'])) { ecrire_meta($nom_meta_base_version, '1.0.0'); } // si pas de table en base, on fera une simple creation de base } $maj = array(); $maj['create'] = array(array('maj_tables', array('spip_forum'))); $maj['1.1.0'] = array(array('sql_alter', "TABLE spip_forum ADD id_objet bigint(21) DEFAULT 0 NOT NULL AFTER id_forum"), array('sql_alter', "TABLE spip_forum ADD objet VARCHAR (25) DEFAULT '' NOT NULL AFTER id_objet")); $maj['1.1.1'] = array(array('sql_update', "spip_forum", array('objet' => "'breve'", 'id_objet' => 'id_breve'), 'id_breve> 0'), array('sql_update', "spip_forum", array('objet' => "'article'", 'id_objet' => 'id_article'), 'id_article>0'), array('sql_update', "spip_forum", array('objet' => "'site'", 'id_objet' => 'id_syndic'), 'id_syndic>0'), array('sql_update', "spip_forum", array('objet' => "'message'", 'id_objet' => 'id_message'), 'id_message>0'), array('sql_update', "spip_forum", array('objet' => "'rubrique'", 'id_objet' => 'id_rubrique'), 'id_rubrique>0')); # champ ip sur 40 car (compat IPv6) $maj['1.2.0'] = array(array('sql_alter', "TABLE spip_forum CHANGE ip ip VARCHAR(40) DEFAULT '' NOT NULL")); # rejouer la suppression/creation de l'index optimal # et la suppression des vieux champs, car la premiere sequence avait echoue # en raison d'un DROP KEY au lieu de DROP INDEX $maj['1.2.1'] = array(array('sql_alter', "TABLE spip_forum DROP INDEX optimal"), array('sql_alter', "TABLE spip_forum ADD INDEX optimal (statut,id_parent,id_objet,objet,date_heure)"), array('sql_alter', "TABLE spip_forum DROP id_breve"), array('sql_alter', "TABLE spip_forum DROP id_article"), array('sql_alter', "TABLE spip_forum DROP id_syndic"), array('sql_alter', "TABLE spip_forum DROP id_message"), array('sql_alter', "TABLE spip_forum DROP id_rubrique")); $maj['1.2.2'] = array(array('ecrire_meta', 'forum_prive_objets', $GLOBALS['meta']['forum_prive_objets'] == 'non' ? '' : 'spip_articles,spip_breves,spip_syndic')); include_spip('base/upgrade'); maj_plugin($nom_meta_base_version, $version_cible, $maj); }
/** * Vérifier si une table a crashé * * Pour cela, on vérifie si on peut se connecter à la base de données. * * @see message_crash_tables() * * @return bool|array * Si pas de table de crashée, on retourne `false`. * Sinon, retourne un tableau contenant tous les noms * des tables qui ont crashé. */ function verifier_crash_tables() { if (spip_connect()) { include_spip('base/serial'); include_spip('base/auxiliaires'); $crash = array(); foreach (array('tables_principales', 'tables_auxiliaires') as $com) { foreach ($GLOBALS[$com] as $table => $desc) { if (!sql_select('*', $table, '', '', '', 1) and !defined('spip_interdire_cache')) { # cas "LOST CONNECTION" $crash[] = $table; } } } #$crash[] = 'test'; if ($crash) { ecrire_meta('message_crash_tables', serialize($crash)); spip_log('crash des tables', 'err'); spip_log($crash, 'err'); } else { effacer_meta('message_crash_tables'); } return $crash; } return false; }
/** * Envoi du Mail des nouveautes * base sur le squelette nouveautes.html * * La meta dernier_envoi_neuf permet de marquer la date du dernier envoi * et de determiner les nouveautes publiees depuis cette date * * http://doc.spip.org/@genie_mail_dist * * @param int $t * @return int */ function genie_mail_dist($t) { $adresse_neuf = $GLOBALS['meta']['adresse_neuf']; $jours_neuf = $GLOBALS['meta']['jours_neuf']; $now = time(); if (!isset($GLOBALS['meta']['dernier_envoi_neuf'])) { ecrire_meta('dernier_envoi_neuf', date('Y-m-d H:i:s', $now - 3600 * 24 * $jours_neuf)); } $page = recuperer_fond('nouveautes', array('date' => $GLOBALS['meta']['dernier_envoi_neuf'], 'jours_neuf' => $jours_neuf)); # en une seule passe avec un squelette textuel: # 1ere ligne = sujet # lignes suivantes jusqu'a la premiere blanche: headers SMTP $page = stripslashes(trim($page)); $page = preg_replace(",\r\n?,", "\n", $page); $p = strpos($page, "\n\n"); $s = strpos($page, "\n"); if ($p and $s) { if ($p > $s) { $headers = substr($page, $s + 1, $p - $s); } $sujet_nouveautes = substr($page, 0, $s); $mail_nouveautes = trim(substr($page, $p + 2)); } if (strlen($mail_nouveautes) > 10) { $envoyer_mail = charger_fonction('envoyer_mail', 'inc'); $envoyer_mail($adresse_neuf, $sujet_nouveautes, $mail_nouveautes, '', $headers); ecrire_meta('dernier_envoi_neuf', date('Y-m-d H:i:s', $now)); } else { spip_log("mail nouveautes : rien de neuf depuis {$jours_neuf} jours"); } return 1; }
function exec_export_all_init($rub, $gz, $tables, $serveur='', $save=''){ $meta = base_dump_meta_name($rub); utiliser_langue_visiteur(); if (!isset($GLOBALS['meta'][$meta])){ // c'est un demarrage en arrivee directe depuis exec=admin_tech // on initialise (mais si c'est le validateur, ne rien faire) if ($GLOBALS['exec'] == 'valider_xml') return; $archive = exec_export_all_args($rub, $gz); $tables = export_all_start($meta, $archive, $rub, $tables); $v = array($gz, $archive, $rub, $tables, 1, 0, $serveur, $save); ecrire_meta($meta, serialize($v), 'non'); // rub=$rub sert AUSSI a distinguer cette redirection // d'avec l'appel initial sinon FireFox croit malin // d'optimiser la redirection $url = generer_url_ecrire('export_all',"rub=$rub", true); } else { // appels suivants $export = charger_fonction('export', 'inc'); $arg = $export($meta); // Si retour de $export c'est fini; dernier appel pour ramasser // et produire l'en tete du fichier a partir de l'espace public $url = generer_action_auteur("export_all",$arg,'',true, true, true); } include_spip('inc/headers'); redirige_par_entete($url); }
function lire_metas($table = 'meta') { if ($result = spip_query("SELECT nom,valeur FROM spip_{$table}")) { include_spip('base/abstract_sql'); $GLOBALS[$table] = array(); while ($row = sql_fetch($result)) { $GLOBALS[$table][$row['nom']] = $row['valeur']; } sql_free($result); if (!$GLOBALS[$table]['charset'] or $GLOBALS[$table]['charset'] == '_DEFAULT_CHARSET') { ecrire_meta('charset', _DEFAULT_CHARSET, NULL, $table); } // noter cette table de configuration dans les meta de SPIP if ($table !== 'meta') { $liste = unserialize($GLOBALS['meta']['tables_config']); if (!$liste) { $liste = array(); } if (!in_array($table, $liste)) { $liste[] = $table; ecrire_meta('tables_config', serialize($liste)); } } } return $GLOBALS[$table]; }
function player_affiche_config_form ($exec_page){ global $spip_lang_right, $spip_lang_left; if ($player = _request('player')) { ecrire_meta('player', $player); if(version_compare($GLOBALS['spip_version_code'],'1.9300','<')) { include_spip("inc/meta"); ecrire_metas(); } } $player_ = $GLOBALS['meta']['player']; $out = "" . debut_cadre_trait_couleur(_DIR_PLUGIN_PLAYER_IMAGES."player-son-24.png", true, "", "Player Audio") . "<form action='".generer_url_ecrire($exec_page)."' method='post' class='verdana2'><div>" . bouton_radio("player", "neoplayer", "Neolao player", $player_ == "neoplayer") . "<br />" . bouton_radio("player", "dewplayer", "Dew player", $player_ == "dewplayer") . "<br />" . bouton_radio("player", "pixplayer", "One pixel out player", $player_ == "pixplayer") . "<br />" . bouton_radio("player", "eraplayer", "Erational player", $player_ == "eraplayer") . "<div style='text-align:$spip_lang_right'><input type='submit' name='Valider' value='"._T('bouton_valider')."' class='fondo' /></div>" . "</div></form>" . fin_cadre_trait_couleur(true) ; return ($out); }
/** * Installation/maj des tables petitions et signatures * * @param string $nom_meta_base_version * @param string $version_cible */ function petitions_upgrade($nom_meta_base_version, $version_cible) { // cas particulier : // si plugin pas installe mais que la table existe // considerer que c'est un upgrade depuis v 1.0.0 // pour gerer l'historique des installations SPIP <=2.1 if (!isset($GLOBALS['meta'][$nom_meta_base_version])) { $trouver_table = charger_fonction('trouver_table', 'base'); if ($desc = $trouver_table('spip_signatures') and isset($desc['field']['id_article'])) { ecrire_meta($nom_meta_base_version, '1.0.0'); } // si pas de table en base, on fera une simple creation de base } $maj = array(); $maj['create'] = array(array('maj_tables', array('spip_petitions', 'spip_signatures'))); $maj['1.1.0'] = array(array('sql_alter', "TABLE spip_petitions DROP PRIMARY KEY")); $maj['1.1.1'] = array(array('sql_alter', "TABLE spip_petitions ADD UNIQUE id_article (id_article)")); $maj['1.1.2'] = array(array('sql_alter', "TABLE spip_petitions ADD id_petition BIGINT(21) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST"), array('sql_alter', "TABLE spip_petitions ADD PRIMARY KEY (id_petition)")); $maj['1.1.3'] = array(array('sql_alter', "TABLE spip_petitions ADD statut VARCHAR (10) DEFAULT 'publie' NOT NULL")); $maj['1.1.4'] = array(array('sql_alter', "TABLE spip_signatures ADD id_petition bigint(21) DEFAULT '0' NOT NULL"), array('sql_alter', "TABLE spip_signatures ADD INDEX id_petition (id_petition)"), array('sql_updateq', 'spip_signatures', array('id_petition' => -1))); $maj['1.1.5'] = array(array('upgrade_index_signatures')); $maj['1.1.6'] = array(array('sql_alter', "TABLE spip_signatures DROP INDEX id_article"), array('sql_alter', "TABLE spip_signatures DROP id_article")); include_spip('base/upgrade'); maj_plugin($nom_meta_base_version, $version_cible, $maj); }
/** * mise a jour des donnees si envoi via formulaire * * @link http://doc.spip.org/@enregistre_modif_plugin * @global array $GLOBALS['visiteur_session'] * @global array $GLOBALS['meta'] * @return void */ function enregistre_modif_plugin() { include_spip('inc/plugin'); // recuperer les plugins dans l'ordre des $_POST $test = array(); foreach (liste_plugin_files() as $file) { $test['s' . substr(md5($file), 0, 16)] = $file; } $plugin = array(); foreach ($_POST as $choix => $val) { if (isset($test[$choix]) && $val == 'O') { $plugin[] = $test[$choix]; } } spip_log("Changement des plugins actifs par l'auteur " . $GLOBALS['visiteur_session']['id_auteur'] . ": " . join(',', $plugin)); ecrire_plugin_actifs($plugin); // Chaque fois que l'on valide des plugins, on memorise la liste de ces plugins comme etant "interessants", avec un score initial, qui sera decremente a chaque tour : ainsi un plugin active pourra reter visible a l'ecran, jusqu'a ce qu'il tombe dans l'oubli. $plugins_interessants = @unserialize($GLOBALS['meta']['plugins_interessants']); if (!is_array($plugins_interessants)) { $plugins_interessants = array(); } $plugins_interessants2 = array(); foreach ($plugins_interessants as $plug => $score) { if ($score > 1) { $plugins_interessants2[$plug] = $score - 1; } } foreach ($plugin as $plug) { $plugins_interessants2[$plug] = 10; } // score initial ecrire_meta('plugins_interessants', serialize($plugins_interessants2)); }
/** * Envoi du Mail des nouveautés * * Ce mail est basé sur le squelette nouveautes.html * * La meta `dernier_envoi_neuf` permet de marquer la date du dernier envoi * et de determiner les nouveautes publiees depuis cette date * * @param int $t * @return int */ function genie_mail_dist($t) { $adresse_neuf = $GLOBALS['meta']['adresse_neuf']; $jours_neuf = $GLOBALS['meta']['jours_neuf']; $now = time(); if (!isset($GLOBALS['meta']['dernier_envoi_neuf'])) { ecrire_meta('dernier_envoi_neuf', date('Y-m-d H:i:s', $now - 3600 * 24 * $jours_neuf)); } $page = recuperer_fond('nouveautes', array('date' => $GLOBALS['meta']['dernier_envoi_neuf'], 'jours_neuf' => $jours_neuf), array('raw' => true)); if (strlen(trim($page['texte']))) { // recuperer les entetes envoyes par #HTTP_HEADER $headers = ""; if (isset($page['entetes']) and count($page['entetes'])) { foreach ($page['entetes'] as $k => $v) { $headers .= (strlen($v) ? "{$k}: {$v}" : $k) . "\n"; } } include_spip("inc/notifications"); notifications_envoyer_mails($adresse_neuf, $page['texte'], "", "", $headers); ecrire_meta('dernier_envoi_neuf', date('Y-m-d H:i:s', $now)); } else { spip_log("mail nouveautes : rien de neuf depuis {$jours_neuf} jours"); } return 1; }
function accesrestreint_appliquer_modifs_config() { include_spip('inc/meta'); // modifs de secu (necessitent une authentification ftp) $liste_meta = array( 'creer_htpasswd', 'creer_htaccess' ); foreach($liste_meta as $i) { if (_request($i) !== NULL AND _request($i) != $GLOBALS['meta'][$i]) { $admin = _T('info_modification_parametres_securite'); include_spip('inc/admin'); echo debut_admin(_request('exec'), $admin); foreach($liste_meta as $i) { if (_request($i) !== NULL) { ecrire_meta($i, _request($i)); } } ecrire_metas(); echo fin_admin($admin); break; } } }
function action_zengarden_activer_theme_dist() { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); if (strncmp('defaut:', $arg, 7) == 0) { $dir_theme = _DIR_RACINE . substr($arg, 7); $flux = pipeline('zengarden_activer_theme', array('args' => array('dir' => $dir_theme, 'action' => 'effacer'), 'data' => true)); if ($flux) { include_spip('inc/meta'); effacer_meta("zengarden_theme"); } } elseif (strncmp('apercu:', $arg, 7) == 0) { $theme = substr($arg, 7); $dir_theme = _DIR_RACINE . $theme; if (is_dir($dir_theme)) { $flux = pipeline('zengarden_activer_theme', array('args' => array('dir' => $dir_theme, 'action' => 'apercevoir'), 'data' => true)); if ($flux) { include_spip('inc/cookie'); spip_setcookie('spip_zengarden_theme', $theme); } } } elseif (strncmp('activation:', $arg, 11) == 0) { $theme = substr($arg, 11); $dir_theme = _DIR_RACINE . $theme; if (is_dir($dir_theme)) { $flux = pipeline('zengarden_activer_theme', array('args' => array('dir' => $dir_theme, 'action' => 'activer'), 'data' => true)); if ($flux) { include_spip('inc/meta'); ecrire_meta("zengarden_theme", $theme); } } } }
/** * Modifier la langue d'un objet * * @param string $objet * @param int $id * @param int $id_rubrique * @param string $changer_lang * @return string */ function action_instituer_langue_objet_dist($objet, $id, $id_rubrique, $changer_lang) { if ($changer_lang) { $table_objet_sql = table_objet_sql($objet); $id_table_objet = id_table_objet($objet); if ($changer_lang != "herit") { sql_updateq($table_objet_sql, array('lang' => $changer_lang, 'langue_choisie' => 'oui'), "{$id_table_objet}=" . intval($id)); include_spip('inc/rubriques'); if ($table_objet_sql == 'spip_rubriques') { calculer_langues_rubriques(); } $langues = calculer_langues_utilisees(); ecrire_meta('langues_utilisees', $langues); } else { $langue_parent = sql_getfetsel("lang", "spip_rubriques", "id_rubrique=" . intval($id_rubrique)); if (!$langue_parent) { $langue_parent = $GLOBALS['meta']['langue_site']; } sql_updateq($table_objet_sql, array('lang' => $langue_parent, 'langue_choisie' => 'non'), "{$id_table_objet}=" . intval($id)); $changer_lang = $langue_parent; if ($table_objet_sql == 'spip_rubriques') { include_spip('inc/rubriques'); calculer_langues_rubriques(); } } } return $changer_lang; }
function admin_verifie_session($script, $anonymous = false) { include_spip('base/abstract_sql'); $pref = sprintf("_%d_", $GLOBALS['visiteur_session']['id_auteur']); $signal = fichier_admin($script, "{$script}{$pref}"); $valeur = sql_getfetsel('valeur', 'spip_meta', "nom='admin'"); if ($valeur === NULL) { ecrire_meta('admin', $signal, 'non'); } else { if (!$anonymous and $valeur != $signal) { if (!preg_match('/^(.*)_(\\d+)_/', $GLOBALS['meta']["admin"], $l) or intval($l[2]) != $GLOBALS['visiteur_session']['id_auteur']) { include_spip('inc/minipres'); spip_log("refus de lancer {$script}, priorite a {$valeur}"); return minipres(_T('info_travaux_texte')); } } } $journal = "spip"; if (autoriser('configurer')) { // c'est une action webmestre, soit par ftp soit par statut webmestre $journal = 'webmestre'; } // on pourrait statuer automatiquement les webmestres a l'init d'une action auth par ftp ... ? spip_log("admin {$pref}" . ($valeur ? " (reprise)" : ' (init)'), $journal); return ''; }
function formulaires_configurer_forums_participants_traiter_dist() { include_spip('inc/config'); include_spip('inc/meta'); $purger_skel = false; 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'); } appliquer_modifs_config(); if ($purger_skel) { include_spip('inc/invalideur'); suivre_invalideur("forum/*"); } return array('message_ok' => _T('config_info_enregistree')); }
function accesrestreint_upgrade_protection_documents() { if (isset($GLOBALS['meta']["creer_htaccess"]) and $GLOBALS['meta']["creer_htaccess"] == 'oui' and !isset($GLOBALS['meta']["accesrestreint_proteger_documents"])) { ecrire_meta("accesrestreint_proteger_documents", "oui"); include_spip("inc/accesrestreint_documents"); accesrestreint_gerer_htaccess(true); } }
/** * Verifier si une mise a jour est disponible * * @param int $t * @return int */ function genie_mise_a_jour_dist($t) { include_spip('inc/meta'); $maj = info_maj('spip', 'SPIP', $GLOBALS['spip_version_branche']); ecrire_meta('info_maj_spip', $maj ? $GLOBALS['spip_version_branche'] . "|{$maj}" : "", 'non'); spip_log("Verification version SPIP : " . ($maj ? $maj : "version a jour"), "verifie_maj"); return 1; }
function formulaires_csv2auteurs_separateur_traiter_dist() { $separateur = _request('separateur'); ecrire_meta("csv2auteurs_separateur", _request('separateur')); $retour = array(); $retour['message_ok'] = _T('csv2auteurs:nouveau_separateur', array("separateur" => $separateur)); //$retour['redirect'] = "ecrire/?exec=csv2auteurs"; return $retour; }
function cache_signature(&$page) { if (!isset($GLOBALS['meta']['cache_signature'])) { include_spip('inc/acces'); include_spip('auth/sha256.inc'); ecrire_meta('cache_signature', _nano_sha256($_SERVER["DOCUMENT_ROOT"] . $_SERVER["SERVER_SIGNATURE"] . creer_uniqid()), 'non'); } return crc32($GLOBALS['meta']['cache_signature'] . $page['texte']); }
/** * Traite une demande de redirection * * Si le fond du formulaire demande expressement une redirection * par <!-- rediriger=1 -->, on stocke le message dans une meta * et on redirige le client, de maniere a charger la page * avec la nouvelle config (ce qui permet par exemple a Autorite * de controler d'eventuels conflits generes par les nouvelles autorisations) * * @param mixed $valeur # inutilisé * @param Object $cfg */ function cfg_post_traiter_param_rediriger($valeur, &$cfg){ if ($cfg->messages) { include_spip('inc/meta'); ecrire_meta('cfg_message_'.$GLOBALS['auteur_session']['id_auteur'], serialize($cfg->messages), 'non'); if (defined('_COMPAT_CFG_192')) ecrire_metas(); include_spip('inc/headers'); redirige_par_entete(parametre_url(self(),null,null,'&')); } }
function formulaires_configurer_previsualiseur_traiter_dist() { $res = array('editable' => true); if ($i = _request('preview') and is_array($i)) { $i = ',' . implode(",", $i) . ','; } ecrire_meta('preview', $i); $res['message_ok'] = _T('config_info_enregistree'); return $res; }
function action_configurer_previsualiseur_dist() { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); if ($i = _request('preview') AND is_array($i)) $i = ',' . join($i, ",") . ','; ecrire_meta('preview', $i); }