Example #1
0
function genie_depublier_dist($time)
{
    //va chercher les objets de spip_depublies avec une date_depublie pour aujourd'hui
    include_spip('base/abstract_sql');
    $today = date('Y-m-d H:i:s');
    if ($depublications = sql_allfetsel('*', 'spip_depublies', 'DATE_FORMAT(date_depublie, "%Y-%m-%d %H:%i:%s") <= ' . sql_quote($today) . ' AND DATE_FORMAT(date_depublie, "%Y-%m-%d %H:%i:%s") >0') and is_array($depublications)) {
        foreach ($depublications as $depublication) {
            $objet = $depublication['objet'];
            $id_objet = $depublication['id_objet'];
            $statut_depublication = $depublication['statut'];
            $date_depublie = $depublication['date_depublie'];
            spip_log("on veut depublier {$objet} {$id_objet} {$statut_depublication}", 'depublication');
            //on cherche la table de l'objet donné
            $_id_objet = id_table_objet($objet);
            //id_article
            $table = table_objet_sql($objet);
            //articles
            //si le statut est différent de celui demandé
            if ($a_depublier = sql_getfetsel($_id_objet, $table, "statut != " . sql_quote($statut_depublication) . " AND {$_id_objet} = " . intval($id_objet))) {
                //si les conditions sont remplies, on change le statut dans cette table
                sql_updateq($table, array("statut" => $statut_depublication), "{$_id_objet}= " . intval($id_objet));
                //et on supprime l'entrée
                sql_delete('spip_depublies', 'id_objet=' . intval($id_objet) . ' AND objet=' . sql_quote($objet));
            }
        }
    }
    return 1;
}
function action_clevermail_list_subscriber_remove_dist()
{
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $arg = $securiser_action();
    $lsr_id = $arg;
    if (sql_countsel("spip_cm_lists_subscribers", "lsr_id=" . sql_quote($lsr_id)) == 1) {
        include_spip('inc/autoriser');
        if (autoriser('supprimer', 'cm_list_subscriber', sql_quote($lsr_id))) {
            $abonnement = sql_fetsel("sub_id, lst_id", "spip_cm_lists_subscribers", "lsr_id=" . sql_quote($lsr_id));
            $abonne = sql_getfetsel("sub_email", "spip_cm_subscribers", "sub_id=" . intval($abonnement['sub_id']));
            $liste = sql_fetsel("lst_moderator_email, lst_name", "spip_cm_lists", "lst_id=" . intval($abonnement['lst_id']));
            sql_delete("spip_cm_lists_subscribers", "lsr_id = " . sql_quote($lsr_id));
            sql_delete("spip_cm_posts_queued", "sub_id = " . intval($abonnement['sub_id']));
            if (sql_countsel("spip_cm_lists_subscribers", "sub_id=" . intval($abonnement['sub_id'])) == 0) {
                // No more subscription, subscriber address is removed
                sql_delete("spip_cm_pending", "sub_id = " . intval($abonnement['sub_id']));
                sql_updateq("spip_cm_subscribers", array('sub_email' => md5($abonne) . '@example.com'), "sub_id = " . intval($abonnement['sub_id']));
            }
            $destinataire = $liste['lst_moderator_email'];
            $sujet = '[' . $liste['lst_name'] . '] Désinscription de ' . addslashes($abonne);
            $corps = _T('clevermail:mail_info_desinscription_corps', array('nom_site' => $GLOBALS['meta']['nom_site'], 'url_site' => $GLOBALS['meta']['adresse_site'], 'sub_email' => addslashes($abonne), 'lst_name' => $liste['lst_name']));
            $expediteur = sql_getfetsel("set_value", "spip_cm_settings", "set_name='CM_MAIL_FROM'");
            $envoyer_mail = charger_fonction('envoyer_mail', 'inc');
            if ($envoyer_mail($destinataire, $sujet, $corps, $expediteur)) {
                spip_log('Envoie du mail OK', 'clevermail');
            } else {
                spip_log('Envoie du mail KO', 'clevermail');
            }
            spip_log('Suppression de l\'abonnement de « ' . $abonne . ' » à la liste « ' . $liste['lst_name'] . ' » (id=' . $abonnement['lst_id'] . ')', 'clevermail');
        }
    }
}
Example #3
0
function supprimer_lien_document($id_document, $objet, $id_objet) {
	if (!$id_document = intval($id_document))
		return false;

	// D'abord on ne supprime pas, on dissocie
	sql_delete("spip_documents_liens",
		$z = "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND id_document=".$id_document);

	// Si c'est une vignette, l'eliminer du document auquel elle appartient
	sql_updateq("spip_documents", array('id_vignette' => 0), "id_vignette=".$id_document);

	pipeline('post_edition',
		array(
			'args' => array(
				'operation' => 'delier_document',
				'table' => 'spip_documents',
				'id_objet' => $id_document,
				'objet' => $objet,
				'id' => $id_objet
			),
			'data' => null
		)
	);

	// On supprime ensuite s'il est orphelin
	// (autorisation verifiee dans l'action)
	$supprimer_document = charger_fonction('supprimer_document','action');
	return $supprimer_document($id_document);
}
/**
 * Supprimer les révisions des objets disparus
 */
function optimiser_base_revisions()
{
    /**
     * On commence par récupérer la liste des types d'objet ayant au moins une révision
     */
    $objets_revises = sql_select('objet', 'spip_versions', 'id_version=1', 'objet');
    /**
     * Pour chaque objet, on va contruire un tableau des identifiants disparus
     * On supprimera ensuite les occurences dans spip_versions et spip_versions_fragments
     */
    while ($objet = sql_fetch($objets_revises)) {
        $in = array();
        $table = table_objet_sql($objet['objet']);
        $id_table_objet = id_table_objet($objet['objet']);
        $res = sql_select("A.id_objet AS id_objet, A.objet AS objet", "spip_versions AS A LEFT JOIN {$table} AS R\n\t\t\t\t\t\t\tON R.{$id_table_objet}=A.id_objet AND A.objet=" . sql_quote($objet['objet']), "R.{$id_table_objet} IS NULL AND A.objet=" . sql_quote($objet['objet']) . " AND A.id_objet > 0", "A.id_objet", "A.id_objet");
        while ($row = sql_fetch($res)) {
            $in[$row['id_objet']] = true;
        }
        sql_free($res);
        /**
         * Si on a un array
         * On supprime toute occurence des objets disparus dans :
         * -* spip_versions
         * -* spip_versions_fragments
         */
        if ($in) {
            foreach (array('spip_versions', 'spip_versions_fragments') as $table) {
                sql_delete($table, sql_in('id_objet', array_keys($in)) . " AND objet=" . sql_quote($objet['objet']));
            }
        }
    }
}
function action_supprimer_url_dist($arg = null)
{
    if (is_null($arg)) {
        // Rien a faire ici pour le moment
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $arg = $securiser_action();
    }
    if (strncmp($arg, "-1-", 3) == 0) {
        $id_parent = -1;
        $url = substr($arg, 3);
    } else {
        $arg = explode('-', $arg);
        $id_parent = array_shift($arg);
        $url = implode('-', $arg);
    }
    $where = 'id_parent=' . intval($id_parent) . " AND url=" . sql_quote($url);
    if ($row = sql_fetsel('*', 'spip_urls', $where)) {
        if (autoriser('modifierurl', $row['type'], $row['id_objet'])) {
            sql_delete('spip_urls', $where);
        } else {
            spip_log('supprimer sans autorisation l\'URL ' . $id_parent . "://" . $url, "urls." . _LOG_ERREUR);
        }
    } else {
        spip_log('Impossible de supprimer une URL inconnue ' . $id_parent . "://" . $url, "urls." . _LOG_INFO_IMPORTANTE);
    }
}
function action_clevermail_list_subscriber_clear_dist()
{
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $arg = $securiser_action();
    if (sql_countsel("spip_cm_lists_subscribers AS list, spip_cm_subscribers AS sub", "list.sub_id = sub.sub_id AND sub.sub_email LIKE '*****@*****.**'")) {
        $subscribers = sql_select("sub.sub_id", "spip_cm_lists_subscribers AS list, spip_cm_subscribers AS sub", "list.sub_id = sub.sub_id AND sub.sub_email LIKE '*****@*****.**'", "list.sub_id", "", "");
        $sub_deleted = "";
        while ($subscriber = sql_fetch($subscribers)) {
            sql_delete("spip_cm_lists_subscribers", "sub_id = " . intval($subscriber['sub_id']));
            sql_delete("spip_cm_pending", "sub_id = " . intval($subscriber['sub_id']));
            $sub_deleted = $sub_deleted . ' ' . intval($subscriber['sub_id']);
        }
        spip_log('Suppression des abonnements ' . $sub_deleted, 'clevermail');
    } else {
        spip_log('Il n\'y a pas d\'abonnement à supprimer', 'clevermail');
    }
    if (sql_countsel("spip_cm_lists_subscribers", "", "lsr_id", "count(lsr_id) > 1") > 1) {
        $doublons = sql_select("lsr_id", "spip_cm_lists_subscribers", "", "lsr_id", "", "", "count(lsr_id) > 1");
        while ($doublon = sql_fetch($doublons)) {
            $lists = sql_select("lst_id, sub_id", "spip_cm_lists_subscribers", "lsr_id ='" . $doublon['lsr_id'] . "'");
            while ($list = sql_fetch($lists)) {
                sql_updateq("spip_cm_lists_subscribers", array('lsr_id' => md5('subscribe#' . intval($list['lst_id']) . '#' . intval($list['sub_id']) . '#' . time())), "lst_id=" . sql_quote($list['lst_id']) . " AND sub_id=" . sql_quote($list['sub_id']));
            }
        }
    }
    //Récupération du timestamp du mois dernier
    $today = time();
    $date_today = date("d:m:Y", $today);
    $today_exploded = explode(":", $date_today);
    $mois = (int) $today_exploded[1];
    $mois = --$mois;
    $valid_date = mktime(0, 0, 0, $mois, $today_exploded[0], $today_exploded[2]);
    sql_delete("spip_cm_pending", "pnd_action_date <" . $valid_date);
    spip_log('Suppression des abonnements en attente depuis plus d\'un mois', 'clevermail');
}
Example #7
0
function action_supprimer_rubrique($r)
{
	list(,,$id_rubrique) = $r;
	sql_delete("spip_rubriques", "id_rubrique=$id_rubrique");
	sql_delete("spip_mots_rubriques", "id_rubrique=$id_rubrique");
	// Les admin restreints qui n'administraient que cette rubrique
	// deviennent redacteurs
	// (il y a sans doute moyen de faire ca avec un having)

	$q = sql_select("id_auteur", "spip_auteurs_rubriques", "id_rubrique=$id_rubrique");

	while ($r = sql_fetch($q)) {
		$id_auteur = $r['id_auteur'];
		sql_delete("spip_auteurs_rubriques", "id_rubrique=$id_rubrique AND id_auteur=$id_auteur");
		$n = sql_countsel("spip_auteurs_rubriques", "id_auteur=$id_auteur");
		if (!$n)
			sql_updateq("spip_auteurs", array("statut" => '1comite'), "id_auteur=$id_auteur");
	}
	// menu_rubriques devra recalculer
	effacer_meta("date_calcul_rubriques");

	// Une rubrique supprimable n'avait pas le statut "publie"
	// donc rien de neuf pour la rubrique parente
	include_spip('inc/rubriques');
	calculer_langues_rubriques();

	// invalider les caches marques de cette rubrique
	include_spip('inc/invalideur');
	suivre_invalideur("id='id_rubrique/$id_rubrique'");
}
Example #8
0
 /**
  * Удаление счета
  *
  * @param integer $bill_id
  */
 function deleteBill($bill_id)
 {
     $auth_obj =& Registry::get('TUserAuth');
     $client = $auth_obj->getCurrentUserData();
     // Проверяем принадлежность
     if ($client['id'] != sql_getValue('SELECT client_id FROM bills WHERE id=' . $bill_id)) {
         redirect("/cabinet/bills/");
     }
     $page =& Registry::get('TPage');
     // Подготовка данных для отправки письма
     $bill = sql_getRow('SELECT * FROM bills WHERE id=' . $bill_id);
     $bill['r_comp'] = array();
     foreach ($bill as $key => $val) {
         if ($key != 'r_comp' && substr($key, 0, strlen('r_comp_')) == 'r_comp_') {
             $bill['r_comp'][$key] = $val;
         }
     }
     $tmpl = $this->getParseBill($this->tmpl[$bill['method']][$bill['client_type']], $bill);
     require_once './modules/pclzip.lib.php';
     $dir = getcwd();
     chdir(dirname($tmpl));
     $zip = new PclZip('bill.zip');
     $zip->create(basename($tmpl));
     chdir($dir);
     $res = sql_delete('bills', $bill_id);
     if ($res) {
         // Уведомление для администратора
         sendEmail($page->tpl->get_config_vars('admin_email'), $page->tpl->get_config_vars('robot_email'), $page->tpl->get_config_vars('cabinet_delete_bill_subj'), $page->tpl->get_config_vars('cabinet_delete_bill_mail'), $bill, PATH_CACHE . 'tmp/' . session_id() . '/bill.zip');
         redirect("/cabinet/bills/?msg=cabinet_msg_bill_delete_success");
     } else {
         redirect("/cabinet/bills/?msg=msg_fail");
     }
 }
Example #9
0
/**
 * Effacer une rubrique
 *
 * http://doc.spip.org/@action_supprimer_dist
 *
 * @param null $id_rubrique
 * @return void
 */
function action_supprimer_rubrique_dist($id_rubrique = null)
{
    if (is_null($id_rubrique)) {
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $id_rubrique = $securiser_action();
    }
    if (intval($id_rubrique)) {
        sql_delete("spip_rubriques", "id_rubrique=" . intval($id_rubrique));
        // Les admin restreints qui n'administraient que cette rubrique
        // deviennent redacteurs
        // (il y a sans doute moyen de faire ca avec un having)
        $q = sql_select("id_auteur", "spip_auteurs_liens", "objet='rubrique' AND id_objet=" . intval($id_rubrique));
        while ($r = sql_fetch($q)) {
            $id_auteur = $r['id_auteur'];
            // degrader avant de supprimer la restriction d'admin
            // section critique sur les droits
            $n = sql_countsel("spip_auteurs_liens", "objet='rubrique' AND id_objet!=" . intval($id_rubrique) . " AND id_auteur=" . intval($id_auteur));
            if (!$n) {
                include_spip('action/editer_auteur');
                auteurs_set($id_auteur, array("statut" => '1comite'));
            }
            sql_delete("spip_auteurs_liens", "objet='rubrique' AND id_objet=" . intval($id_rubrique) . " AND id_auteur=" . intval($id_auteur));
        }
        // menu_rubriques devra recalculer
        effacer_meta("date_calcul_rubriques");
        // Une rubrique supprimable n'avait pas le statut "publie"
        // donc rien de neuf pour la rubrique parente
        include_spip('inc/rubriques');
        calculer_langues_rubriques();
        // invalider les caches marques de cette rubrique
        include_spip('inc/invalideur');
        suivre_invalideur("id='rubrique/{$id_rubrique}'");
    }
}
Example #10
0
/**
 * Optimiser la base de données en supprimant les liens orphelins
 * de l'objet vers quelqu'un et de quelqu'un vers l'objet.
 *
 * @pipeline optimiser_base_disparus
 * @param  array $flux Données du pipeline
 * @return array       Données du pipeline
 */
function cpub_optimiser_base_disparus($flux)
{
    $mydate = $flux['args']['date'];
    sql_delete("spip_publicites", "statut='poubelle' AND maj < {$mydate}");
    sql_delete("spip_bannieres", "statut='poubelle' AND maj < {$mydate}");
    return $flux;
}
/**
 * Fonction de désinstallation du plugin.
**/
function roles_auteurs_vider_tables($nom_meta_base_version) {

	// tant qu'il existe des doublons, on supprime une ligne doublonnée
	// sinon on ne pourra pas modifier la cle primaire ensuite
	// cet algo est certainement a optimiser
	while ($doublons = sql_allfetsel(
				array('id_auteur', 'id_objet', 'objet', 'role'),
				array('spip_auteurs_liens'),
				'', 'id_auteur,id_objet,objet', '', '', 'COUNT(*) > 1'))
	{
		foreach ($doublons as $d) {
			$where = array();
			foreach ($d as $cle=>$valeur) {
				$where[] = "$cle=".sql_quote($valeur);
			}
			sql_delete('spip_auteurs_liens', $where);
		}
	}

	// supprimer la clé primaire, la colonne rôle, et remettre l'ancienne clé primaire
	sql_alter("TABLE spip_auteurs_liens DROP PRIMARY KEY");
	sql_alter("TABLE spip_auteurs_liens DROP COLUMN role");
	sql_alter("TABLE spip_auteurs_liens ADD PRIMARY KEY (id_auteur,id_objet,objet)");

	effacer_meta($nom_meta_base_version);
}
function formulaires_ecatalogue_prices_group_traiter_dist()
{
    $result = array();
    $is_active = _request('is_active');
    $prices_group = _request('price');
    $elements_insert = _request('elements_insert');
    $isset_price_group = sql_select('*', 'spip_ecatalogue_prices_group');
    if ($isset_price_group) {
        while ($row = sql_fetch($isset_price_group)) {
            $id_price_group = $row['id_group'];
            if (isset($prices_group[$id_price_group])) {
                $name = $prices_group[$id_price_group];
                $status = isset($is_active[$id_price_group]) ? 1 : 0;
                sql_update('spip_ecatalogue_prices_group', array('titre' => '"' . $name . '"', 'is_active' => $status), 'id_group = ' . (int) $id_price_group);
            } else {
                sql_delete('spip_ecatalogue_prices_group', 'id_group = ' . $id_price_group);
                // Delete price group
            }
        }
    }
    if (is_array($elements_insert) && !empty($elements_insert)) {
        foreach ($elements_insert as $key => $value) {
            $name = $value['titre'];
            $is_active = isset($value['is_active']) ? 1 : 0;
            sql_insert('spip_ecatalogue_prices_group', '(titre,is_active)', '("' . $name . '",' . $is_active . ')');
        }
    }
    return $result;
}
Example #13
0
function action_instituer_groupe_mots_post($id_groupe)
{
	if ($id_groupe < 0){
		sql_delete("spip_groupes_mots", "id_groupe=" . (0- $id_groupe));
	}
	else
		spip_log('appel deprecie, rien a faire ici (voir action/edite_groupe_mot)');
}
function action_referer_spam_supprimer($p, $arg)
{
    include_spip('base/abstract_sql');
    $url = $_GET['url'];
    if (sql_countsel("spip_referer_spam", "referer LIKE '%{$url}%'")) {
        sql_delete("spip_referer_spam", "referer LIKE '%{$url}%'");
    }
}
Example #15
0
/**
 * Préparer les listes `id_article IN (...)` pour les parties WHERE
 * et calcul des `points` pour la partie SELECT des requêtes du moteur de recherche
 * 
 * Le paramètre $serveur est utilisé pour savoir sur quelle base on cherche
 * mais l'index des résultats est toujours stocké sur le serveur principal
 * car on ne sait pas si la base distante dispose d'une table spip_resultats
 * ni meme si on aurait le droit d'ecrire dedans
 *
 * @param string $recherche
 *    chaine recherchee
 * @param string $table
 *    table dans laquelle porte la recherche
 * @param bool $cond
 *    critere conditionnel sur {recherche?}
 * @param string $serveur
 *    serveur de base de donnees
 * @param array $modificateurs
 *    modificateurs de boucle, ie liste des criteres presents
 * @param string $primary
 *    cle primaire de la table de recherche
 * @return array
 */
function inc_prepare_recherche_dist($recherche, $table = 'articles', $cond = false, $serveur = '', $modificateurs = array(), $primary = '')
{
    static $cache = array();
    $delai_fraicheur = min(_DELAI_CACHE_resultats, time() - (isset($GLOBALS['meta']['derniere_modif']) ? $GLOBALS['meta']['derniere_modif'] : 0));
    // si recherche n'est pas dans le contexte, on va prendre en globals
    // ca permet de faire des inclure simple.
    if (!isset($recherche) and isset($GLOBALS['recherche'])) {
        $recherche = $GLOBALS['recherche'];
    }
    // traiter le cas {recherche?}
    if ($cond and !strlen($recherche)) {
        return array("0 as points", '');
    }
    $rechercher = false;
    if (!isset($cache[$serveur][$table][$recherche])) {
        $hash_serv = $serveur ? substr(md5($serveur), 0, 16) : '';
        $hash = substr(md5($recherche . $table), 0, 16);
        $where = "(resultats.recherche='{$hash}' AND resultats.table_objet=" . sql_quote($table) . " AND resultats.serveur='{$hash_serv}')";
        $row = sql_fetsel('UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(resultats.maj) AS fraicheur', 'spip_resultats AS resultats', $where, '', 'fraicheur DESC', '0,1');
        if (!$row or $row['fraicheur'] > $delai_fraicheur or defined('_VAR_MODE') and _VAR_MODE == 'recalcul') {
            $rechercher = true;
        }
    }
    // si on n'a pas encore traite les donnees dans une boucle precedente
    if ($rechercher) {
        //$tables = liste_des_champs();
        $x = objet_type($table);
        $points = recherche_en_base($recherche, $x, array('score' => true, 'toutvoir' => true, 'jointures' => true), $serveur);
        // pas de résultat, pas de point
        $points = isset($points[$x]) ? $points[$x] : array();
        // permettre aux plugins de modifier le resultat
        $points = pipeline('prepare_recherche', array('args' => array('type' => $x, 'recherche' => $recherche, 'serveur' => $serveur, 'modificateurs' => $modificateurs), 'data' => $points));
        // supprimer les anciens resultats de cette recherche
        // et les resultats trop vieux avec une marge
        // pas de AS resultats dans un delete (mysql)
        $whered = str_replace(array("resultats.recherche", "resultats.table_objet", "resultats.serveur"), array("recherche", "table_objet", "serveur"), $where);
        sql_delete('spip_resultats', 'NOT(' . sql_date_proche('maj', 0 - ($delai_fraicheur + 100), " SECOND") . ") OR ({$whered})");
        // inserer les resultats dans la table de cache des resultats
        if (count($points)) {
            $tab_couples = array();
            foreach ($points as $id => $p) {
                $tab_couples[] = array('recherche' => $hash, 'id' => $id, 'points' => $p['score'], 'table_objet' => $table, 'serveur' => $hash_serv);
            }
            sql_insertq_multi('spip_resultats', $tab_couples, array());
        }
    }
    if (!isset($cache[$serveur][$table][$recherche])) {
        if (!$serveur) {
            $cache[$serveur][$table][$recherche] = array("resultats.points AS points", $where);
        } else {
            if (sql_countsel('spip_resultats as resultats', $where)) {
                $rows = sql_allfetsel('resultats.id,resultats.points', 'spip_resultats as resultats', $where);
            }
            $cache[$serveur][$table][$recherche] = generer_select_where_explicites($table, $primary, $rows, $serveur);
        }
    }
    return $cache[$serveur][$table][$recherche];
}
/**
 * Fonction de désinstallation du plugin Livraison.
 *
 * @param string $nom_meta_base_version
 *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
 * @return void
**/
function livraison_vider_tables($nom_meta_base_version)
{
    livraison_generer_csv_installation();
    sql_drop_table("spip_livraisonmodes");
    # Nettoyer les versionnages et forums
    sql_delete("spip_versions", sql_in("objet", array('livraisonmode')));
    sql_delete("spip_versions_fragments", sql_in("objet", array('livraisonmode')));
    sql_delete("spip_forum", sql_in("objet", array('livraisonmode')));
    effacer_meta($nom_meta_base_version);
}
/**
 * Fonction de désinstallation du plugin Réseŕvations Crédits.
 * 
 * Vous devez :
 *
 * - nettoyer toutes les données ajoutées par le plugin et son utilisation
 * - supprimer les tables et les champs créés par le plugin. 
 *
 * @param string $nom_meta_base_version
 *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
 * @return void
**/
function reservations_credits_vider_tables($nom_meta_base_version)
{
    sql_drop_table("spip_reservation_credit_mouvements");
    sql_drop_table("spip_reservation_credits");
    # Nettoyer les versionnages et forums
    sql_delete("spip_versions", sql_in("objet", array('reservation_credit_mouvement', 'reservation_credit')));
    sql_delete("spip_versions_fragments", sql_in("objet", array('reservation_credit_mouvement', 'reservation_credit')));
    sql_delete("spip_forum", sql_in("objet", array('reservation_credit_mouvement', 'reservation_credit')));
    effacer_meta($nom_meta_base_version);
}
function action_purger_site_dist($id_syndic = null)
{
    if (is_null($id_syndic)) {
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $id_syndic = $securiser_action();
    }
    if ($id_syndic = intval($id_syndic) and autoriser('purger', 'site', $id_syndic)) {
        include_spip('base/abstract_sql');
        sql_delete('spip_syndic_articles', 'id_syndic=' . intval($id_syndic));
    }
}
Example #19
0
/**
 * Fonction de désinstallation du plugin cPublicité.
 *
 * @param string $nom_meta_base_version
 *     Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
 * @return void
**/
function cpub_vider_tables($nom_meta_base_version)
{
    sql_drop_table("spip_publicites");
    sql_drop_table("spip_bannieres");
    sql_drop_table("spip_stats_pubs");
    # Nettoyer les versionnages et forums
    sql_delete("spip_versions", sql_in("objet", array('publicite', 'banniere')));
    sql_delete("spip_versions_fragments", sql_in("objet", array('publicite', 'banniere')));
    sql_delete("spip_forum", sql_in("objet", array('publicite', 'banniere')));
    effacer_meta($nom_meta_base_version);
}
Example #20
0
function submitModifiedTitle($objid, $title, $comment, $mature, $forClub, $folder = 0, $collab = 0, $gift = 0, $forClub2 = 0, $forClub3 = 0)
{
    $oldCollab = 0;
    $collabConfirmed = 0;
    $objCreator = 0;
    $sql = "SELECT `objCollab`, `objCollabConfirmed`, `objCreator` " . "FROM `objects`, `objExtData`" . dbWhere(array("objid*" => "objEid", "objid" => $objid));
    $objResult = sql_query($sql);
    if ($objData = mysql_fetch_assoc($objResult)) {
        $oldCollab = $objData["objCollab"];
        $collabConfirmed = $objData["objCollabConfirmed"];
        $objCreator = $objData["objCreator"];
    }
    mysql_free_result($objResult);
    if ($forClub2 == $forClub) {
        $forClub2 = 0;
    }
    if ($forClub3 == $forClub || $forClub3 == $forClub2) {
        $forClub3 = 0;
    }
    sql_where(array("cloObject" => $objid));
    sql_delete("clubObjects");
    if ($forClub > 0) {
        sql_values(array("cloObject" => $objid, "cloClub" => $forClub));
        sql_insert("clubObjects");
    }
    if ($forClub2 > 0) {
        sql_values(array("cloObject" => $objid, "cloClub" => $forClub2));
        sql_insert("clubObjects");
    }
    if ($forClub3 > 0) {
        sql_values(array("cloObject" => $objid, "cloClub" => $forClub3));
        sql_insert("clubObjects");
    }
    $values = array("objTitle" => $title, "objMature" => $mature, "objForClub" => $forClub, "objForClub2" => $forClub2, "objForClub3" => $forClub3, "objFolder" => $folder);
    if (!$collabConfirmed || atLeastSModerator()) {
        $values["objCollab"] = $collab;
    }
    $values["objForUser"] = $gift;
    $sql = "UPDATE `objects`" . dbSet($values) . dbWhere(array("objid" => $objid));
    sql_query($sql);
    $values = array("objComment" => $comment);
    if ($collab == 0 && atLeastSModerator()) {
        $values["objCollabConfirmed"] = 0;
    }
    $sql = "UPDATE `objExtData`" . dbSet($values) . dbWhere(array("objEid" => $objid));
    sql_query($sql);
    updateSearchCache($objid);
    updateObjCount($objCreator);
    updateObjCount($collab);
    if ($collab != $oldCollab) {
        updateObjCount($oldCollab);
    }
}
Example #21
0
/**
 * Optimiser la base de donnee en supprimant les liens orphelins
 *
 * @param int $n
 * @return int
 */
function mots_optimiser_base_disparus($flux)
{
    $n =& $flux['data'];
    $mydate = $flux['args']['date'];
    $result = sql_delete("spip_mots", "length(titre)=0 AND maj < {$mydate}");
    include_spip('action/editer_liens');
    // optimiser les liens morts :
    // entre mots vers des objets effaces
    // depuis des mots effaces
    $n += objet_optimiser_liens(array('mot' => '*'), '*');
    return $flux;
}
Example #22
0
function action_supprimer_groupe_mots_dist($id_groupe = null)
{
    if (is_null($id_groupe)) {
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $id_groupe = $securiser_action();
    }
    if (autoriser('supprimer', 'groupemots', $id_groupe)) {
        sql_delete("spip_groupes_mots", "id_groupe=" . intval($id_groupe));
    } else {
        spip_log("action_supprimer_groupe_mots_dist {$id_groupe} interdit", _LOG_INFO_IMPORTANTE);
    }
}
function recountTagReferences($tagid)
{
    sql_where(array("hfmTag" => $tagid));
    $count = sql_count("helpdeskFAQTagMap");
    if ($count > 0) {
        sql_values(array("hftCount" => $count));
        sql_where(array("hftid" => $tagid));
        sql_update("helpdeskFAQTags");
    } else {
        sql_where(array("hftid" => $tagid));
        sql_delete("helpdeskFAQTags");
    }
}
Example #24
0
/**
 * Supprimer les referers
 * @param strinf $titre
 * @param bool $reprise
 * @return string
 */
function base_delete_referers_dist($titre = '', $reprise = '')
{
    if (!$titre) {
        return;
    }
    // anti-testeur automatique
    sql_delete("spip_referers");
    sql_delete("spip_referers_articles");
    sql_update("spip_articles", array('referers' => 0));
    // un pipeline pour detruire les tables de referers installees par les plugins ?
    //pipeline('delete_referers', '');
    spip_log("raz des referers operee redirige vers " . _request('redirect'));
}
function action_clevermail_list_remove_dist($lst_id = 0)
{
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $arg = $securiser_action();
    $lst_id = intval($arg);
    $lst_name = sql_getfetsel("lst_name", "spip_cm_lists", "lst_id=" . intval($lst_id));
    include_spip('inc/autoriser');
    if (autoriser('supprimer', 'cm_list', intval($lst_id))) {
        if (sql_countsel("spip_cm_lists_subscribers", "lst_id=" . intval($lst_id)) == 0 && sql_countsel("spip_cm_posts", "lst_id=" . intval($lst_id)) == 0) {
            sql_delete('spip_cm_lists', 'lst_id=' . intval($lst_id));
            spip_log('Suppression de la liste « ' . $lst_name . ' » (id = ' . intval($lst_id) . ')', 'clevermail');
        }
    }
}
function action_supprimer_document_dist($id_document = 0)
{
    if (!$id_document) {
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $id_document = $securiser_action();
    }
    include_spip('inc/autoriser');
    if (!autoriser('supprimer', 'document', $id_document)) {
        spip_log("Echec : Suppression document {$id_document} interdite", _LOG_ERREUR);
        return false;
    }
    // si c'etait une vignette, modifier le document source !
    if ($source = sql_getfetsel('id_document', 'spip_documents', 'id_vignette=' . intval($id_document))) {
        include_spip('action/editer_document');
        document_modifier($source, array("id_vignette" => 0));
    }
    include_spip('inc/documents');
    if (!($doc = sql_fetsel('*', 'spip_documents', 'id_document=' . intval($id_document)))) {
        spip_log("Echec : Suppression document {$id_document} : le document n'existe pas en base", _LOG_ERREUR);
        return false;
    }
    spip_log("Suppression du document {$id_document} (" . $doc['fichier'] . ")");
    include_spip('action/editer_liens');
    // Si c'est un document ayant une vignette, supprimer aussi la vignette
    if ($doc['id_vignette']) {
        action_supprimer_document_dist($doc['id_vignette']);
        objet_dissocier(array('document' => $doc['id_vignette']), '*');
    }
    // Si c'est un document ayant des documents annexes (sous-titre, ...)
    // les supprimer aussi
    $annexes = array_map('reset', sql_allfetsel("id_document", "spip_documents_liens", "objet='document' AND id_objet=" . intval($id_document)));
    foreach ($annexes as $id) {
        action_supprimer_document_dist($id);
    }
    // dereferencer dans la base
    objet_dissocier(array('document' => $id_document), '*', array('role' => '*'));
    sql_delete('spip_documents', 'id_document=' . intval($id_document));
    // Supprimer le fichier si le doc est local,
    // et la copie locale si le doc est distant
    if ($doc['distant'] == 'oui') {
        include_spip('inc/distant');
        if ($local = _DIR_RACINE . copie_locale($doc['fichier'], 'test')) {
            spip_unlink($local);
        }
    } else {
        spip_unlink(get_spip_doc($doc['fichier']));
    }
    pipeline('post_edition', array('args' => array('operation' => 'supprimer_document', 'action' => 'supprimer_document', 'table' => 'spip_documents', 'id_objet' => $id_document, 'document' => $doc), 'data' => null));
    return true;
}
Example #27
0
/**
 * Optimiser la base de donnee en supprimant les forums orphelins
 *
 * @param int $n
 * @return int
 */
function petitions_optimiser_base_disparus($flux)
{
    $n =& $flux['data'];
    $mydate = $flux['args']['date'];
    //
    // Signatures poubelles
    //
    sql_delete("spip_petitions", "statut='poubelle' AND maj < {$mydate}");
    // rejeter les signatures non confirmees trop vieilles (20jours)
    if (!defined('_PETITIONS_DELAI_SIGNATURES_REJETEES')) {
        define('_PETITIONS_DELAI_SIGNATURES_REJETEES', 20);
    }
    sql_delete("spip_signatures", "NOT (statut='publie' OR statut='poubelle') AND NOT(" . sql_date_proche('date_time', -_PETITIONS_DELAI_SIGNATURES_REJETEES, ' DAY') . ')');
    return $flux;
}
Example #28
0
function insere_1_init($request) {

//  table des translations

	$res = insere_1bis_init($request);
	$desc = $GLOBALS['tables_principales'][_SPIP_TRANSLATE];
	$v = sql_create(_SPIP_TRANSLATE, $desc['field'], $desc['key'], true);
	if (!$v) {
		spip_log("echec de la creation de la table de fusion");
		return  false; 
	}
	// au cas ou la derniere fois ce serait terminee anormalement
	$d = sql_delete(_SPIP_TRANSLATE);
	spip_log("init " . _SPIP_TRANSLATE . " : $d");
	return $res;
}
function action_supprimer_evenement_participant_dist()
{
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $arg = $securiser_action();
    list($id_evenement, $id_evenement_participant) = explode('-', $arg);
    include_spip('inc/autoriser');
    if (intval($id_evenement) and autoriser('modifier', 'evenement', $id_evenement)) {
        if (intval($id_evenement_participant)) {
            sql_delete('spip_evenements_participants', 'id_evenement=' . intval($id_evenement) . ' AND id_evenement_participant=' . intval($id_evenement_participant));
        } else {
            if ($id_evenement_participant == 'tous') {
                sql_delete('spip_evenements_participants', 'id_evenement=' . intval($id_evenement));
            }
        }
    }
    return true;
}
Example #30
0
function formulaires_editer_icon_article_traiter_dist($id_article = 'new', $retour = '', $ajaxload = 'oui')
{
    $message = array('editable' => true, 'message_ok' => '');
    if (!_request('vhplab_gis_icon_existant')) {
        $vhplab_gis_icon = _request('vhplab_gis_icon');
    } else {
        if (_request('vhplab_gis_icon_precedent') && _request('vhplab_gis_icon_precedent') != '') {
            $vhplab_gis_icon_precedent = preg_split('/_/', _request('vhplab_gis_icon_precedent'));
            sql_delete("spip_mots_liens", "id_mot='{$vhplab_gis_icon_precedent['1']}' AND id_objet='{$id_article}'");
        }
        $vhplab_gis_icon_existant = preg_split('/_/', _request('vhplab_gis_icon_existant'));
        // asociamos a palabra chave ao artigo para vincular o icono existente ao mesmo
        sql_insertq('spip_mots_liens', array('id_mot' => intval($vhplab_gis_icon_existant[1]), 'id_objet' => intval($id_article), 'objet' => 'article'));
    }
    // message
    return array("editable" => true, "message_ok" => _T('vhplab:icon_ok'));
}