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'));
}
Ejemplo n.º 2
0
/**
 * Copier le type des groupes sur la table spip_mots
 * a chaque changement d'un groupe.
 *
 * @param array $flux
 * @return array
 */
function mots_post_edition($flux)
{
    if ($flux['args']['table'] == 'spip_groupes_mots' and isset($flux['data']['titre'])) {
        sql_updateq('spip_mots', array('type' => $flux['data']['titre']), 'id_groupe=' . $flux['args']['id_objet']);
    }
    return $flux;
}
Ejemplo n.º 3
0
/**
 * Plugin TiSpiP-Lcs pour Spip 2.0
 * Licence GPL (c) 2006-2008 (d0M0.b) 
 *
 */
function action_accorder_auteurs_comptes_lcs_dist(){
#	$securiser_action = charger_fonction('securiser_action','inc');
#	$arg = $securiser_action();
	$mess_ok='';
	$err='';
    $redirect = _request('redirect');
	  if ($redirect==NULL) $redirect="?exec=accorder_comptes_lcs";

	if (_request('arg')) {
						sql_updateq('spip_auteurs', array('statut' => '5poubelle'),
						'id_auteur='.intval($args));

		if(is_array(_request('tous'))){
			foreach(_request('tous') as $k=>$val){
							sql_updateq('spip_auteurs', array('statut' => '5poubelle'),
							'id_auteur='.intval($val));
			}
		}
/*
		if(_request('newstatut') && _request('newstatut')=="supprime"){
			sql_delete ('spip_auteurs', 'id_auteur='.sql_quote(intval($args)));
		}
*/
	}
}
Ejemplo n.º 4
0
function action_bank_response_dist($cancel = null, $auto = null)
{
    if (isset($GLOBALS['meta']['bank_paiement']) and $prestas = unserialize($GLOBALS['meta']['bank_paiement']) and count($prestas = $prestas['presta'])) {
        $auto = $auto ? "auto" : "";
        $result = false;
        // intercepter les retours depuis un presta actif
        if ($p = _request('bankp') and (isset($prestas[$p]) and $prestas[$p] or $p == 'gratuit')) {
            $call_response = charger_fonction('response', "presta/{$p}/call");
            spip_log('call_' . $auto . 'response : ' . $_SERVER['REQUEST_URI'], "{$p}{$auto}");
            list($id_transaction, $result) = $call_response();
            spip_log('call_' . $auto . 'response : ' . "{$id_transaction}/{$result}", "{$p}{$auto}");
        } else {
            spip_log("Prestataire {$p} inconnu ou inactif", 'bank_response');
        }
        // fall back si le presta n'a rien renvoye de lisible
        // et qu'on a bien id=id_transaction;hash dans l'url
        if (!$result and !$id_transaction and $id = _request('id') and $id = explode(';', $id) and count($id) == 2 and $id_transaction = reset($id) and $hash = end($id)) {
            $id_transaction = sql_getfetsel("id_transaction", "spip_transactions", "id_transaction=" . intval($id_transaction) . " AND transaction_hash=" . sql_quote($hash));
            if ($id_transaction) {
                sql_updateq("spip_transactions", array('message' => 'Transaction annulée', 'statut' => 'echec', 'mode' => $p), 'id_transaction=' . intval($id_transaction) . " AND statut='commande'");
            }
        }
        if (!$auto) {
            redirige_apres_retour_transaction($p, 'acte', $cancel ? false : $result, $id_transaction);
        }
        die;
        // mourir silencieusement
    } else {
        spip_log('Aucun prestataire de paiement configure', 'bank_response');
    }
    die;
}
Ejemplo n.º 5
0
function formulaires_editer_balade_traiter_dist($id_collection = 'new', $retour = '')
{
    $message = array();
    // récupérer le rang des articles de la balade et le mettre à jour
    $rangs = _request('rang');
    foreach ($rangs as $rang => $id_article) {
        $rang = $rang + 1;
        $ok = sql_updateq('spip_collections_liens', array('rang' => intval($rang)), "objet='article' AND id_objet = {$id_article}");
    }
    // éditer le gis associé
    if ($action_editer = charger_fonction("editer_gis", 'action', true)) {
        list($id, $err) = $action_editer(_request('id_gis'));
    }
    // ne pas polluer l'url de retour avec des paramètres inutiles
    set_request('id_gis');
    set_request('id_objet');
    // invalider le cache
    include_spip('inc/invalideur');
    suivre_invalideur("id='gis/{$id}");
    // rediriger sur l'url de retour passée en paramètre
    if ($retour) {
        include_spip('inc/headers');
        $message['redirect'] = redirige_formulaire($retour);
    }
    return $message;
}
Ejemplo n.º 6
0
function action_instituer_forum_sujet_dist()
{
    static $statuts_sujet = array('verrou_on' => 'verrouille', 'verrou_off' => 'verrouille', 'resolu_on' => 'resolu', 'resolu_off' => 'resolu');
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $args = $securiser_action();
    list($objet, $id_forum, $action) = explode('/', $args);
    if (!$action or !array_key_exists($action, $statuts_sujet)) {
        return;
    }
    if ($id_forum = intval($id_forum)) {
        $titre = sql_getfetsel('titre', 'spip_forum', 'id_forum=' . sql_quote($id_forum));
        $pattern = '_' . $statuts_sujet[$action] . '_';
        // On supprime systematique le statut demande. Ainsi si l'action demandee est d'enlever un
        // statut c'est fait sinon on evite de rajouter le meme statut
        $titre_modifie = trim(preg_replace(",{$pattern},UimsS", '', $titre));
        // Si l'action demandee est de positionner un nouveau statut on le rajoute au titre
        if ($action == 'verrou_on' or $action == 'resolu_on') {
            $titre_modifie .= $pattern;
        }
        sql_updateq('spip_forum', array('titre' => $titre_modifie), 'id_forum =' . sql_quote($id_forum));
        // Invalider les pages comportant ce forum
        include_spip('inc/invalideur');
        suivre_invalideur("id='id_forum/{$id_forum}'");
    }
}
Ejemplo n.º 7
0
function admin_repair_plat(){
	spip_log("verification des documents joints");
	$out = "";
	$repertoire = array();
	include_spip('inc/getdocument');
	$res = sql_select('*','spip_documents',"fichier REGEXP CONCAT('^',extension,'[^/\]') AND distant='non'");

	while ($row=sql_fetch($res)){
		$ext = $row['extension'];
		if (!$ext) {
			spip_log("document sans extension: " . $row['id_document']);
			continue;
		}
		if (!isset($repertoire[$ext])){
			if (@file_exists($plat = _DIR_IMG. $ext .".plat"))
				spip_unlink($plat);
			$repertoire[$ext] = creer_repertoire_documents($ext);
			if (preg_match(',_$,',$repertoire[$ext]))
				$repertoire[$ext] = false;
		}
		if ($d=$repertoire[$ext]){
			$d = substr($d,strlen(_DIR_IMG));
			$src = $row['fichier'];
			$dest = $d . substr($src,strlen($d));
			if (deplacer_fichier_upload(_DIR_IMG . $src, _DIR_IMG . $dest)) {
				sql_updateq('spip_documents',array('fichier'=>$dest),'id_document='.intval($row['id_document']));
				spip_unlink(_DIR_IMG . $src);
				$out .= "$src => $dest<br />";				
			}
		}
	}

	return $out;
}
Ejemplo n.º 8
0
function action_converser_dist()
{
	if ($lang = _request('var_lang'))
		action_converser_post($lang);
	elseif ($lang = _request('var_lang_ecrire')) {
		if ( _request('arg') AND spip_connect()) {
			$securiser_action = charger_fonction('securiser_action', 'inc');
			$securiser_action();

			sql_updateq("spip_auteurs", array("lang" => $lang), "id_auteur = " . $GLOBALS['visiteur_session']['id_auteur']);
			$GLOBALS['visiteur_session']['lang'] = $lang;
			$session = charger_fonction('session', 'inc');
			if ($spip_session = $session($GLOBALS['visiteur_session'])) {
				spip_setcookie(
					'spip_session',
					$spip_session,
					time() + 3600 * 24 * 14
				);
			}
		}
		action_converser_post($lang, 'spip_lang_ecrire');
	} 

	$redirect = rawurldecode(_request('redirect'));

	if (!$redirect) $redirect = _DIR_RESTREINT_ABS;
	$redirect = parametre_url($redirect,'lang',$lang,'&');
	redirige_par_entete($redirect, true);
}
Ejemplo n.º 9
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'");
}
Ejemplo n.º 10
0
function inserer_document_syndic_article($liens, $id_syndic_article, $date, $titre_parent)
{
    include_spip("base/abstract_sql");
    $id_article_syndic = sql_getfetsel("id_syndic_article", "spip_syndic_articles", "id_syndic_article=" . _q($id_syndic_article), "", "date desc", "0,1");
    if (!$date) {
        $date = date("Y-m-d h:i:s");
    }
    foreach ($liens as $link) {
        $id3 = recuperer_id3($link);
        $champs = array('titre' => $titre_parent, 'fichier' => $link, 'tag_auteur' => $id3['artiste'], 'tag_titre' => $id3['titre'], 'date' => date("Y-m-d H:i:s", $date), 'distant' => 'oui', 'statut' => 'publie', 'date' => $date, 'extension' => 'mp3');
        $s = sql_getfetsel("id_document", "spip_documents", "fichier=" . _q($champs['fichier']), "", "date desc", "0,1");
        if ($s) {
            // maj le document distant
            sql_updateq('spip_documents', $champs, 'id_document=' . intval($s));
            // a t'on un lien entre ce doc et cet article ?
            $l = sql_getfetsel("id_document", "spip_documents_liens", "id_document=" . _q($s) . " and id_objet=" . _q($id_article_syndic));
            if (!$l) {
                $champs_liens = array('id_document' => $s, 'id_objet' => $id_article_syndic, 'objet' => 'syndic_article');
                sql_insertq('spip_documents_liens', $champs_liens);
            }
        } else {
            // enregistrer le document distant
            $id_document = sql_insertq('spip_documents', $champs);
            // le lier a son syndic article
            $champs_liens = array('id_document' => $id_document, 'id_objet' => $id_article_syndic, 'objet' => 'syndic_article');
            sql_insertq('spip_documents_liens', $champs_liens);
        }
    }
}
Ejemplo n.º 11
0
function clevermail_post_update($pst_id)
{
    if ($pst_id == intval($pst_id)) {
        $lst_id = sql_getfetsel('lst_id', 'spip_cm_posts', 'pst_id=' . intval($pst_id));
        $post = array('lst_id' => intval($lst_id), 'pst_date_create' => time());
        $list = sql_fetsel('*', 'spip_cm_lists', 'lst_id = ' . intval($lst_id));
        // Traitement de la source HTML
        if (strpos($list['lst_url_html'], 'http://') !== false) {
            include_spip('inc/distant');
            $url_html = $list['lst_url_html'] . (strpos($list['lst_url_html'], '?') !== false ? '&' : '?') . 'date=' . date("Y-m-d", $last_create) . '&lst_id=' . intval($lst_id);
            $post['pst_html'] = recuperer_page($url_html);
        } else {
            $contexte = array('date' => date("Y-m-d", $last_create), 'lst_id' => intval($lst_id));
            // on passe la globale lien_implicite_cible_public en true
            // pour avoir les liens internes en public (en non prive d'apres le contexte)
            // credit de l'astuce: denisb & rastapopoulos & erational
            $GLOBALS['lien_implicite_cible_public'] = true;
            $post['pst_html'] = recuperer_fond($list['lst_url_html'], $contexte);
            // on revient a la config initiale
            unset($GLOBALS['lien_implicite_cible_public']);
        }
        // Traitement de la source texte
        if ($list['lst_url_text'] != '') {
            if (strpos($list['lst_url_text'], 'http://') !== false) {
                include_spip('inc/distant');
                $url_text = $list['lst_url_text'] . (strpos($list['lst_url_text'], '?') !== false ? '&' : '?') . 'date=' . date("Y-m-d", $last_create) . '&lst_id=' . intval($lst_id);
                $post['pst_text'] = recuperer_page($url_text);
            } else {
                $contexte = array('date' => date("Y-m-d", $last_create), 'lst_id' => intval($lst_id));
                // on passe la globale lien_implicite_cible_public en true
                // pour avoir les liens internes en public (en non prive d'apres le contexte)
                // credit de l'astuce: denisb & rastapopoulos & erational
                $GLOBALS['lien_implicite_cible_public'] = true;
                $post['pst_text'] = recuperer_fond($list['lst_url_text'], $contexte);
                // on revient a la config initiale
                unset($GLOBALS['lien_implicite_cible_public']);
            }
            $post['pst_text'] = strip_tags($post['pst_text']);
        } else {
            // TODO : essayer d'utiliser TEN : http://www.headstar.com/ten/
            include_spip('classes/facteur');
            $post['pst_text'] = Facteur::html2text($post['pst_html']);
        }
        if (trim($post['pst_html']) != '' && trim($post['pst_text']) != '') {
            /*
            if (preg_match(",<title>(.*)</title>,", $post['pst_html'], $regs)) {
            		    $post['pst_subject'] = trim($regs[1]);
            		  } else {
            		    $post['pst_subject'] = 'Aucun sujet';
            		  }
            */
            $pst_id = sql_updateq('spip_cm_posts', $post, 'pst_id=' . $pst_id);
            spip_log('Mise a jour du message « ' . $post['pst_subject'] . ' » (id=' . $pst_id . ') dans la liste « ' . $list['lst_name'] . ' » (id=' . $lst_id . ')', 'clevermail');
            return $pst_id;
        } else {
            spip_log('Mise a jour d\'un message dans la liste « ' . $list['lst_name'] . ' » (id=' . $lst_id . ') impossible, contenu vide à ' . $url_html . ' et ' . $url_text, 'clevermail');
            return false;
        }
    }
}
function genie_ajouter_date_redac_articles_dist($t)
{
    //spip_log("Mon travail c est juste une ligne de log....",_LOG_INFO_IMPORTANTE);
    // echo "1";
    if ($resultats = sql_select("*", "spip_articles", "id_secteur=115 AND statut='publie' AND date_redac=0000-00-00")) {
        // boucler sur les resultats
        while ($res = sql_fetch($resultats)) {
            // utiliser les resultats
            // hierarchie des rubriques de l'article via la fonction de spip
            include_spip("inc/rubriques");
            $hierarchie = calcul_hierarchie_in($res['id_rubrique'], true);
            // la date_numero et l'id_rubrique de la rubrique Numéro.
            $numero = sql_fetsel("date_numero,id_rubrique", "spip_rubriques", array(sql_in('id_rubrique', $hierarchie), 'profondeur=1'));
            // la date du numéro est à 0. On ne vérifie que l'année (?)
            if (substr($numero['date_numero'], 0, 4) == '0000') {
                spip_log("Article #" . $res['id_article'] . " : la date_redac n'a pas pu être modifiée. La rubrique #" . $numero['id_rubrique'] . " correspondant au numéro n'a pas de date valide.", 'vacarme_cron' . _LOG_INFO_IMPORTANTE);
                // return 1; // 0 ou 1 ?
            } else {
                spip_log("Mise à jour de l'article #" . $res['id_article'], 'vacarme_cron' . _LOG_INFO_IMPORTANTE);
                sql_updateq("spip_articles", array('date_redac' => $numero['date_numero']), "id_article=" . intval($res['id_article']));
                // return 1;
            }
        }
    }
    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');
        }
    }
}
Ejemplo n.º 14
0
function formulaires_delete_traiter_dist($id_article = 'new', $retour = '', $ajaxload = 'oui')
{
    include_spip('base/abstract_sql');
    include_spip('inc/texte');
    include_spip('action/editer_article');
    include_spip('inc/autoriser');
    $article = _request('article');
    $id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
    include_spip('inc/autoriser');
    if (!autoriser('modifier', 'article', $article)) {
        $id_article = false;
        $result = sql_select('*', 'spip_auteurs_liens', 'id_objet=' . intval($article) . ' AND objet=' . sql_quote("article"));
        if ($row = sql_fetch($result)) {
            if ($row['id_auteur'] == $id_auteur) {
                $id_article = $article;
            }
        }
    } else {
        $id_article = $article;
    }
    if ($id_article) {
        // 2 actualizampos los campos del articulo
        sql_updateq('spip_articles', array('statut' => 'poubelle'), 'id_article=' . intval($id_article));
        // message
        return array("editable" => true, "message_ok" => _T('cgeomap:message_delete') . ':' . $id_article);
    } else {
        // message
        return array("editable" => false, "message_erreur" => _T('cgeomap:not_allowed'));
    }
}
Ejemplo n.º 15
0
function upgrade_produits()
{
    $all = sql_allfetsel("*", "spip_produits");
    include_once _DIR_PLUGIN_SALE . "sale_fonctions.php";
    foreach ($all as $produit) {
        #var_dump($produit);
        $set = array();
        if (function_exists('sale')) {
            $set['texte'] = sale($produit['texte']);
            $set['texte'] = preg_replace(",</?p>\\s*,ims", "\n\n", $set['texte']);
            $set['texte'] = preg_replace(",<br>(\n+),ims", "\\1", $set['texte']);
            $set['texte'] = trim($set['texte']) . "\n";
        }
        $set['reference'] = trim($produit['reference']);
        if (!$set['reference']) {
            $set['reference'] = 'P' . trim($produit['old_id']);
            #var_dump($set);
            #die();
        }
        if (strpos($produit['poids'], ".") !== false) {
            $set['poids'] = intval(round(floatval($produit['poids']) * 1000));
        }
        #var_dump($set);
        sql_updateq("spip_produits", $set, 'id_produit=' . intval($produit['id_produit']));
    }
    sql_alter("table spip_produits CHANGE poids poids bigint(21) NOT NULL DEFAULT 0");
    die('ok?');
}
Ejemplo n.º 16
0
function action_copier_local_post($id_document) {

	// Il faut la source du document pour le copier
	$row = sql_fetsel("fichier, descriptif", "spip_documents", "id_document=$id_document");
	$source = $row['fichier'];

	include_spip('inc/distant'); // pour 'copie_locale'
	include_spip('inc/documents'); // pour 'set_spip_doc'
	$fichier = copie_locale($source);
	if ($fichier) {
		$fichier = _DIR_RACINE . $fichier;
		$taille = filesize($fichier);
		// On le sort du repertoire IMG/distant/
		$dest = preg_replace(',^.*/distant/[^/_]+[/_],', '', $fichier);
		$dest = sous_repertoire(_DIR_IMG, preg_replace(',^.*\.,', '', $fichier)) . $dest;
		if ($dest != $fichier
		AND @rename($fichier, $dest))
			$fichier = $dest;

		// On indique l'ancien URL dans le descriptif (pis-aller)
		$row['descriptif'] .= ($row['descriptif'] ? "\n\n":'') . "[->$source]";

		// $fichier contient IMG/distant/...
		// or, dans la table documents, IMG doit etre exclu.
		$fichier = set_spip_doc($fichier);
		spip_log("convertit doc $id_document en local: $source => $fichier");
		sql_updateq('spip_documents', array('fichier' =>$fichier, 'distant'=>'non', 'taille'=>$taille, 'descriptif'=> $row['descriptif']),"id_document=".$id_document);
		
	} else {
		spip_log("echec copie locale $source");
	}
}
Ejemplo n.º 17
0
function formulaires_editer_json_article_traiter_dist($id_article = 'new', $retour = '')
{
    $message = array('editable' => true, 'message_ok' => '');
    $vhplab_json = _request('vhplab_json');
    $vhplab_json_num = intval($vhplab_json);
    if ($vhplab_json_num > 0) {
        // comprobamos si el articulo ya ha sido relacionado con un id
        $result = sql_select('*', 'spip_vhplab_json_liens', 'id_objet=' . intval($id_article) . ' AND objet=' . sql_quote("article"));
        if ($row = sql_fetch($result)) {
            // si el articulo ya ha sido relacionado con un id actualizamos el enlace
            sql_updateq('spip_vhplab_json', array('id_json' => $vhplab_json_num), 'id_vhplab_json=' . intval($row['id_vhplab_json']));
            $message['message_ok'] = _T('vhplab:json_update_ok');
        } else {
            // si el articulo no ha sido relacionado con ningún id creamos un enlace
            $id_vhplab = sql_insertq("spip_vhplab_json", array('id_json' => $vhplab_json_num));
            sql_insertq('spip_vhplab_json_liens', array('id_vhplab_json' => intval($id_vhplab), 'id_objet' => intval($id_article), 'objet' => 'article'));
            $message['message_ok'] = _T('vhplab:json_insert_ok');
        }
    }
    if ($retour) {
        include_spip('inc/headers');
        $message['message_ok'] .= redirige_formulaire($retour);
    }
    return $message;
}
Ejemplo n.º 18
0
function message_oubli($email, $param)
{
	$r = formulaires_oubli_mail($email);
	if (is_array($r) AND $r[1]) {
		include_spip('inc/acces'); # pour creer_uniqid
		include_spip('inc/texte'); # pour corriger_typo
		$cookie = creer_uniqid();
		sql_updateq("spip_auteurs", array("cookie_oubli" => $cookie), "id_auteur=" . $r[1]['id_auteur']);

		$nom = textebrut(corriger_typo($GLOBALS['meta']["nom_site"]));
		$envoyer_mail = charger_fonction('envoyer_mail','inc');

		if ($envoyer_mail($email,
				  ("[$nom] " .  _T('pass_oubli_mot')),
				  _T('pass_mail_passcookie',
				     array('nom_site_spip' => $nom,
					   'adresse_site' => url_de_base(),
					   'sendcookie' => generer_url_public('spip_pass',
					   "$param=$cookie", true)))) )
		  return _T('pass_recevoir_mail');
		else
		  return  _T('pass_erreur_probleme_technique');
	}
	return  _T('pass_erreur_probleme_technique');
}
Ejemplo n.º 19
0
/**
 * @deprecated
 * @param null|string $arg
 */
function action_bank_enregistrer_modereglement_dist($arg = null)
{
    if (is_null($arg)) {
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $arg = $securiser_action();
    }
    $arg = explode("-", $arg);
    $id_transaction = intval(array_pop($arg));
    $presta = implode("-", $arg);
    if (isset($GLOBALS['meta']['bank_paiement']) and $config = unserialize($GLOBALS['meta']['bank_paiement'])) {
        $prestas = is_array($config['presta']) ? $config['presta'] : array();
        $prestas = array_filter($prestas);
        if (is_array($config['presta_abo'])) {
            $prestas = array_merge($prestas, array_filter($config['presta_abo']));
        }
    }
    if ((isset($prestas[$presta]) and $prestas[$presta] or $presta == 'gratuit') and $id_transaction and $transaction = sql_fetsel('*', 'spip_transactions', 'id_transaction=' . intval($id_transaction))) {
        if ($transaction['statut'] == 'commande') {
            sql_updateq("spip_transactions", array('mode' => $presta, 'autorisation_id' => date('d/m/Y-H:i:s') . "/" . $GLOBALS['ip']), 'id_transaction=' . intval($id_transaction));
            // trigger le regelement en attente
            // cela permet de factoriser le code
            $row = sql_fetsel('*', 'spip_transactions', 'id_transaction=' . intval($id_transaction));
            pipeline('trig_bank_reglement_en_attente', array('args' => array('statut' => 'attente', 'mode' => $row['mode'], 'type' => $row['abo_uid'] ? 'abo' : 'acte', 'id_transaction' => $id_transaction, 'row' => $row), 'data' => ''));
            $GLOBALS['redirect'] = _request('redirect');
            $GLOBALS['redirect'] = parametre_url($GLOBALS['redirect'], "attente_mode", $presta, "&");
        }
    }
}
Ejemplo n.º 20
0
/**
 * Supprimer un lien entre un document et un objet
 *
 * @param int $id_document
 * @param string $objet
 * @param int $id_objet
 * @param bool $supprime
 *   si true, le document est supprime si plus lie a aucun objet
 * @param bool $check
 *   si true, on verifie les documents references dans le texte de l'objet
 *   et on les associe si pas deja fait
 * @return bool
 */
function supprimer_lien_document($id_document, $objet, $id_objet, $supprime = false, $check = false)
{
    if (!($id_document = intval($id_document))) {
        return false;
    }
    // D'abord on ne supprime pas, on dissocie
    include_spip('action/editer_liens');
    objet_dissocier(array('document' => $id_document), array($objet => $id_objet));
    // Si c'est une vignette, l'eliminer du document auquel elle appartient
    // cas tordu peu probable
    sql_updateq("spip_documents", array('id_vignette' => 0), "id_vignette=" . $id_document);
    // verifier son statut apres une suppression de lien
    include_spip('action/editer_document');
    document_instituer($id_document);
    pipeline('post_edition', array('args' => array('operation' => 'delier_document', 'action' => 'delier_document', 'table' => 'spip_documents', 'id_objet' => $id_document, 'objet' => $objet, 'id' => $id_objet), 'data' => null));
    if ($check) {
        // si demande, on verifie que ses documents vus sont bien lies !
        $spip_table_objet = table_objet_sql($objet);
        $table_objet = table_objet($objet);
        $id_table_objet = id_table_objet($objet, $serveur);
        $champs = sql_fetsel('*', $spip_table_objet, addslashes($id_table_objet) . "=" . intval($id_objet));
        $marquer_doublons_doc = charger_fonction('marquer_doublons_doc', 'inc');
        $marquer_doublons_doc($champs, $id_objet, $objet, $id_table_objet, $table_objet, $spip_table_objet, '', $serveur);
    }
    // On supprime ensuite s'il est orphelin
    // et si demande
    // ici on ne bloque pas la suppression d'un document rattache a un autre
    if ($supprime and !sql_countsel('spip_documents_liens', "objet!='document' AND id_document=" . $id_document)) {
        $supprimer_document = charger_fonction('supprimer_document', 'action');
        return $supprimer_document($id_document);
    }
}
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');
}
Ejemplo n.º 22
0
function formulaires_editer_profil_traiter_dist($id_auteur, $retour = '')
{
    $res = array();
    $res['nom'] = _request('nom');
    $res['prenom'] = _request('prenom');
    $res['activite'] = _request('activite');
    $res['email'] = _request('email');
    $pass = _request('new_pass');
    $pass2 = _request('new_pass2');
    if ($pass) {
        if ($pass == $pass2) {
            include_spip('inc/acces');
            $htpass = generer_htpass($pass);
            $alea_actuel = creer_uniqid();
            $alea_futur = creer_uniqid();
            $new_pass = md5($alea_actuel . $pass);
            $res['pass'] = $new_pass;
            $res['htpass'] = $htpass;
            $res['alea_actuel'] = $alea_actuel;
            $res['alea_futur'] = $alea_futur;
            $res['low_sec'] = '';
        }
    }
    if ($id_auteur = intval($id_auteur)) {
        sql_updateq('spip_auteurs', $res, "id_auteur={$id_auteur}");
        $res['message_ok'] = _T('fraap_candidatures:form_profil_modifie');
    } else {
        $res['message_erreur'] = _T('fraap_candidatures:form_probleme');
    }
    return $res;
}
Ejemplo n.º 23
0
/**
 * Enregistrer le reglement effectif d'une transaction
 * On peut passer ici 2 fois pour une meme transaction :
 * - lors de la notification serveur a serveur
 * - lors du retour de l'internaute par redirection depuis le presta bancaire
 *
 * @param int $id_transaction
 * @param array $options
 *   string message
 *   array row_prec
 *   bool notifier
 * @return bool
 */
function bank_rembourser_transaction_dist($id_transaction, $options = array())
{
    $message = isset($options['message']) ? $options['message'] : "";
    $notifier = isset($options['notifier']) ? $options['notifier'] : true;
    if (!isset($options['row_prec'])) {
        $options['row_prec'] = sql_fetsel("*", "spip_transactions", "id_transaction=" . intval($id_transaction));
    }
    $row_prec = $options['row_prec'];
    // ne pas jouer 2 fois le traitement du remboursement
    if (!$row_prec or $row_prec['statut'] !== 'ok') {
        return false;
    }
    // et on le pose aussitot
    sql_updateq('spip_transactions', array('statut' => 'rembourse'), "id_transaction=" . intval($id_transaction));
    $notifier = ($notifier and $row_prec['statut'] != 'rembourse');
    $message = trim($row_prec['message'] . "\n" . trim($message));
    // ensuite un pipeline de traitement, notification etc...
    $message = pipeline('bank_traiter_remboursement', array('args' => array('id_transaction' => $id_transaction, 'notifier' => $notifier, 'avant' => $row_prec, 'options' => $options), 'data' => $message));
    sql_updateq("spip_transactions", array('message' => $message, 'finie' => 1), "id_transaction=" . intval($id_transaction));
    // notifier aux admins avec un ticket caisse
    if ($notifier) {
        $bank_editer_ticket_admin = charger_fonction('bank_editer_ticket_admin', 'inc');
        $bank_editer_ticket_admin($id_transaction, "REMBOURSEMENT Transaction");
    }
    return true;
}
Ejemplo n.º 24
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);
}
Ejemplo n.º 25
0
function action_instituer_langue_rubrique_dist() {

	$securiser_action = charger_fonction('securiser_action', 'inc');
	$arg = $securiser_action();
	$changer_lang = _request('changer_lang');

	list($id_rubrique, $id_parent) = preg_split('/\W/', $arg);

	if ($changer_lang
	AND $id_rubrique>0
	AND $GLOBALS['meta']['multi_rubriques'] == 'oui'
	AND ($GLOBALS['meta']['multi_secteurs'] == 'non' OR $id_parent == 0)) {
		if ($changer_lang != "herit")
			sql_updateq('spip_rubriques', array('lang'=>$changer_lang, 'langue_choisie'=>'oui'), "id_rubrique=$id_rubrique");
		else {
			if ($id_parent == 0)
				$langue_parent = $GLOBALS['meta']['langue_site'];
			else {
				$langue_parent = sql_getfetsel("lang", "spip_rubriques", "id_rubrique=$id_parent");
			}
			sql_updateq('spip_rubriques', array('lang'=>$langue_parent, 'langue_choisie'=>'non'), "id_rubrique=$id_rubrique");
		}
		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'");
	}
}
Ejemplo n.º 26
0
/**
 * Action de mise à jour des descriptions d'un dépot
 *
 * @return array
 *     Liste identifiant du dépot, texte d'erreur éventuel
 **/
function action_editer_depot_dist()
{
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $arg = $securiser_action();
    // Verification des autorisations
    if (!autoriser('webmestre')) {
        include_spip('inc/minipres');
        echo minipres();
        exit;
    }
    // Le depot n'est jamais cree par une edition mais via le formulaire ajouter_depot
    // On est toujours en presence d'une mise a jour pour cette action, l'id_depot
    // doit donc etre renseigne sinon c'est une erreur
    if ($id_depot = intval($arg)) {
        // On teste si l'auteur est connecte. Si non on renvoie sur le formulaire login
        $id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
        if (!$id_auteur) {
            include_spip('inc/headers');
            redirige_url_ecrire();
        }
        // On met a jour le depot avec les saisies
        if (sql_updateq('spip_depots', array('titre' => _request('titre'), 'descriptif' => _request('descriptif'), 'type' => _request('type')), 'id_depot=' . sql_quote($id_depot))) {
        }
        // Enregistre l'envoi dans la BD
        // Dans le cas du depot rien n'est fait actuellement, on garde cette fonction
        // par souci de coherence avec les autres editions d'objet et pour usage futur
        $err = depots_set($id_depot);
        if (!$err) {
            spip_log("ACTION MODIFIER DEPOT (manuel) : id_depot = " . $id_depot, 'svp_actions.' . _LOG_INFO);
        }
    }
    return array($id_depot, $err);
}
function genie_clevermail_auto_ajout_abonnes_dist()
{
    if ($autoListes = sql_select("lst_id, lst_name, lst_auto_subscribers, lst_auto_subscribers_mode", "spip_cm_lists", "lst_auto_subscribers != '' AND lst_auto_subscribers_updated < " . (time() - 60 * 60 * 24))) {
        include_spip('inc/distant');
        while ($liste = sql_fetch($autoListes)) {
            if ($adresses = recuperer_page($liste['lst_auto_subscribers'])) {
                if (!clevermail_verification_adresses_email($adresses)) {
                    // XXX : log en chaîne de langue
                    spip_log('Le format des adresses e-mail ne semble pas bon dans le fichier distant d\'adresses de la liste « ' . $liste['lst_name'] . ' » (id=' . $liste['lst_id'] . ') : ' . $liste['lst_auto_subscribers'], 'clevermail');
                } else {
                    $retour = clevermail_abonnes_ajout(array($liste['lst_id']), intval($liste['lst_auto_subscribers_mode']), $adresses);
                    sql_updateq("spip_cm_lists", array('lst_auto_subscribers_updated' => time()), "lst_id=" . $liste['lst_id']);
                    // XXX : log en chaîne de langue
                    $msg = 'Ajout automatique d\'abonnés à la liste « ' . $liste['lst_name'] . ' » (id=' . $liste['lst_id'] . ') à partir du fichier ' . $liste['lst_auto_subscribers'] . ' : ';
                    if ($retour === false) {
                        $msg .= _T('clevermail:aucun_nouvel_abonne');
                    } else {
                        $msg .= $retour['nb_nouv'] > 0 ? $retour['nb_nouv'] . _T('clevermail:n_nouveaux_abonnes') : _T('clevermail:aucun_nouvel_abonne');
                        $msg .= $retour['nb_nouv'] > 0 && $retour['nb_maj'] > 0 ? _T('clevermail:nouveaux_abonnes_et') : '';
                        $msg .= $retour['nb_maj'] > 0 ? $retour['nb_maj'] . _T('clevermail:changements_mode_abonnement') : '';
                        spip_log($msg, 'clevermail');
                    }
                }
            } else {
                // XXX : log en chaîne de langue
                spip_log('Impossible de télécharger le fichier distant d\'adresses de la liste « ' . $liste['lst_name'] . ' » (id=' . $liste['lst_id'] . ') : ' . $liste['lst_auto_subscribers'], 'clevermail');
            }
        }
    }
    return 1;
}
Ejemplo n.º 28
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;
}
/**
 * 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;
}
Ejemplo n.º 30
0
function inc_profils_fusionner_dist($id_auteur, $id_import)
{
    spip_log($s = "Fusion auteur #{$id_import} => #{$id_auteur}", "profils" . _LOG_INFO_IMPORTANTE);
    // dupliquer les liens
    include_spip('action/editer_liens');
    objet_dupliquer_liens('auteur', $id_import, $id_auteur);
    // supprimer les liens
    objet_dissocier(array('auteur' => $id_import), '*');
    objet_dissocier('*', array('auteur' => $id_import));
    // changer le id_auteur dans toutes les tables qui en ont un
    $tables = lister_tables_objets_sql();
    foreach ($tables as $table_sql => $desc) {
        if (isset($desc['field']['id_auteur'])) {
            spip_log("{$table_sql} : id_auteur #{$id_import} => #{$id_auteur}", "profils" . _LOG_INFO_IMPORTANTE);
            sql_updateq($table_sql, array('id_auteur' => $id_auteur), 'id_auteur=' . intval($id_import));
        }
    }
    // log/poubelle sur l'import
    $log = date('Y-m-d H:i:s') . ' par #' . $GLOBALS['visiteur_session']['id_auteur'] . ' : ' . $s . "\n";
    $auteur = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_import));
    $set = array("statut" => "5poubelle", "email" => $auteur['email'] . "-xxdoublon", "login" => $auteur['login'] . "-xxdoublon", 'log' => $auteur['log'] . $log);
    sql_updateq("spip_auteurs", $set, "id_auteur=" . intval($auteur['id_auteur']));
    // log sur le nouveau
    $auteur = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_auteur));
    $set = array('log' => $auteur['log'] . $log);
    sql_updateq("spip_auteurs", $set, "id_auteur=" . intval($auteur['id_auteur']));
}