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);
	}
}
Exemple #3
0
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);
}
Exemple #11
0
/**
 * 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;
}
Exemple #12
0
/**
 * 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;
}
Exemple #13
0
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);
}
Exemple #14
0
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);
}
Exemple #17
0
/**
 * 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));
}
Exemple #18
0
/**
 * 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;
}
Exemple #22
0
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);
    }
}
Exemple #25
0
/**
 * 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;
}
Exemple #27
0
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']);
}
Exemple #28
0
/**
 * 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);
}