Esempio n. 1
0
function insert_rubrique($id_parent) {
	$champs = array(
		'titre' => _T('item_nouvelle_rubrique'),
		'id_parent' => intval($id_parent),
		'statut' => 'new');

	// Envoyer aux plugins
	$champs = pipeline('pre_insertion',
		array(
			'args' => array(
				'table' => 'spip_rubriques',
			),
			'data' => $champs
		)
	);

	$id_rubrique = sql_insertq("spip_rubriques", $champs);
	pipeline('post_insertion',
		array(
			'args' => array(
				'table' => 'spip_rubriques',
				'id_objet' => $id_rubrique
			),
			'data' => $champs
		)
	);
	propager_les_secteurs();
	calculer_langues_rubriques();
	return $id_rubrique;
}
Esempio n. 2
0
function action_editer_mot_dist($arg=null)
{
	if (is_null($arg)){
		$securiser_action = charger_fonction('securiser_action', 'inc');
		$arg = $securiser_action();
	}
	$id_mot = intval($arg);

	$id_groupe = intval(_request('id_groupe'));
	if (!$id_mot AND $id_groupe) {
		$id_mot = sql_insertq("spip_mots", array('id_groupe' => $id_groupe));
	}

	// modifier le contenu via l'API
	include_spip('inc/modifier');

	$c = array();
	foreach (array(
		'titre', 'descriptif', 'texte', 'id_groupe'
	) as $champ)
		$c[$champ] = _request($champ);

	revision_mot($id_mot, $c);
	if ($redirect = _request('redirect')) {
		include_spip('inc/headers');
		redirige_par_entete(parametre_url(urldecode($redirect),
			'id_mot', $id_mot, '&'));
	} else
		return array($id_mot,'');
}
function peupler_base_0_0_1()
{
    // pas besoin d'insert si pas de mail webmaster défini
    if ($GLOBALS['meta']['email_webmaster']) {
        sql_insertq('spip_cm_settings', array('set_name' => 'CM_MAIL_FROM', 'set_value' => $GLOBALS['meta']['email_webmaster']));
        sql_insertq('spip_cm_settings', array('set_name' => 'CM_MAIL_ADMIN', 'set_value' => $GLOBALS['meta']['email_webmaster']));
        sql_insertq('spip_cm_settings', array('set_name' => 'CM_MAIL_RETURN', 'set_value' => $GLOBALS['meta']['email_webmaster']));
    }
    sql_insertq('spip_cm_settings', array('set_name' => 'CM_SEND_NUMBER', 'set_value' => 50));
    // champ exercice
    sql_insertq('spip_cm_champ_exercice', array('id' => 10, 'name' => 'Domaine de la santé/handicap'));
    sql_insertq('spip_cm_champ_exercice', array('id' => 20, 'name' => "Domaine de l'éducation/insertion"));
    sql_insertq('spip_cm_champ_exercice', array('id' => 30, 'name' => 'Domaine social'));
    sql_insertq('spip_cm_champ_exercice', array('id' => 40, 'name' => 'Domaine de la prévention'));
    sql_insertq('spip_cm_champ_exercice', array('id' => 50, 'name' => 'Domaine de la justice et de la sécurité publique'));
    sql_insertq('spip_cm_champ_exercice', array('id' => 60, 'name' => 'Domaine de la communication'));
    sql_insertq('spip_cm_champ_exercice', array('id' => 70, 'name' => 'Domaine de la recherche'));
    sql_insertq('spip_cm_champ_exercice', array('id' => 80, 'name' => 'Domaine de la santé publique'));
    sql_insertq('spip_cm_champ_exercice', array('id' => 90, 'name' => 'Autre'));
    // territoire
    sql_insertq('spip_cm_territoire', array('id' => 10, 'name' => 'France hexagonale'));
    sql_insertq('spip_cm_territoire', array('id' => 20, 'name' => 'La Réunion'));
    sql_insertq('spip_cm_territoire', array('id' => 30, 'name' => 'Martinique'));
    sql_insertq('spip_cm_territoire', array('id' => 40, 'name' => 'Guadeloupe'));
    sql_insertq('spip_cm_territoire', array('id' => 50, 'name' => 'Guyane'));
    sql_insertq('spip_cm_territoire', array('id' => 60, 'name' => 'Mayotte'));
    sql_insertq('spip_cm_territoire', array('id' => 70, 'name' => "Collectivité d'Outre-Mer"));
    sql_insertq('spip_cm_territoire', array('id' => 80, 'name' => 'International'));
}
Esempio n. 4
0
function auth_ldap_dist($login, $pass, $serveur = '', $phpauth = false)
{
    #spip_log("ldap $login " . ($pass ? "mdp fourni" : "mdp absent"));
    // Utilisateur connu ?
    // si http auth, inutile de reauthentifier: cela
    // ne marchera pas avec auth http autre que basic.
    $checkpass = isset($_SERVER["REMOTE_USER"]) ? false : true;
    if (!($dn = auth_ldap_search($login, $pass, $checkpass, $serveur))) {
        return array();
    }
    $credentials_ldap = array('ldap_dn' => $dn, 'ldap_password' => $pass);
    // Si l'utilisateur figure deja dans la base, y recuperer les infos
    $r = sql_fetsel("*", "spip_auteurs", "login="******" AND source='ldap'", '', '', '', '', $serveur);
    if ($r) {
        return array_merge($r, $credentials_ldap);
    }
    // sinon importer les infos depuis LDAP,
    if ($GLOBALS['meta']["ldap_statut_import"] and $desc = auth_ldap_retrouver($dn, array(), $serveur)) {
        // rajouter le statut indique  a l'install
        $desc['statut'] = $GLOBALS['meta']["ldap_statut_import"];
        $desc['login'] = $login;
        $desc['source'] = 'ldap';
        $desc['pass'] = '';
        $r = sql_insertq('spip_auteurs', $desc, '', $serveur);
    }
    if ($r) {
        return array_merge($credentials_ldap, sql_fetsel("*", "spip_auteurs", "id_auteur=" . intval($r), '', '', '', '', $serveur));
    }
    // sinon echec
    spip_log("Creation de l'auteur '{$login}' impossible");
    return array();
}
Esempio n. 5
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;
}
Esempio n. 6
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);
        }
    }
}
Esempio n. 7
0
function tispipskelet_upgrade($nom_meta_base_version,$version_cible){
			
		// Installer les types de docs
				$ext = array("ggb","glb","gxt","mm","zir");
				$nm = array("GeoGebra","GeoLabo","GeoNExT","FreeMind","CarMetal");
				$rep=_DIR_PLUGIN_TISPIPSKELET."img_pack/icones/";
				foreach ($ext as $k => $val){
					// on verifie si le user est deja dans cette zone
					$champs = array('titre', 'extension');
					$where = array( 'extension='.$val);
					$row_type_docs = sql_fetsel($champs, "spip_types_documents", $where);
					if (!$row_type_docs){
						$vals['extension']=$val;
						$vals['titre']=$nm[$k];
						$vals['mime_type']="application/".strtolower($nm[$k]);
						$vals['inclus']="embed";
						$vals['upload']="oui";
						$type_documents = sql_insertq("spip_types_documents", $vals,'',$serveur='connect',$option=true);
					}
				}

	// Installer les icones
							$rep_img=_DIR_PLUGIN_TISPIPSKELET."img_pack/icones/";
							$ext_img = array("ggb","glb","gxt","mm","zir");
							if (!@opendir(_DIR_IMG."icones")){
								mkdir(_DIR_IMG."icones", 0777);
							}
							foreach ($ext_img as $k => $val){
								if(file_exists($file=$rep_img.$val.".png")){
									$newfile=_DIR_IMG."icones/".$val.".png";
									copy($file,$newfile);
								}
							}
}
Esempio n. 8
0
function action_poster_forum_prive_post($r)
{
	list(,$id, $id_parent, $statut, $script, $objet) = $r;

	if (_request('valider_forum') AND ($statut!='')) {
		include_spip('inc/texte');
		include_spip('inc/forum');

		$titre_message = corriger_caracteres(_request('titre_message'));
		$texte = corriger_caracteres(_request('texte'));

		$id_forum = sql_insertq('spip_forum', array(
			$objet => $id,
			'titre' => $titre_message,
			'texte' => $texte,
			'date_heure' => date('Y-m-d H:i:s'),
			'nom_site' => _request('nom_site'),
			'url_site' => _request('url_site'),
			'statut' => $statut,
			'id_auteur' =>$GLOBALS['visiteur_session']['id_auteur'],
			'auteur' => $GLOBALS['visiteur_session']['nom'],
			'email_auteur' => $GLOBALS['visiteur_session']['email'],
			'id_parent' => $id_parent));

		calculer_threads();

		if ($objet == 'id_message') {
			sql_updateq("spip_auteurs_messages", array("vu" => 'non'), "id_message=$id");

		}

		// Notification
		if ($notifications = charger_fonction('notifications', 'inc')) {
			$notifications('forumprive', $id_forum);
		}

		$retour = urldecode(_request('redirect'));
		$retour = parametre_url($retour, 'modif_forum', 'fin', '&');
		$retour = parametre_url($retour, 'texte', $objet, '&');
#		$retour = parametre_url($retour, 'script', $script, '&');
		redirige_par_entete($retour ."#id".$id_forum);
	} else {
	   // previsualisation : on ne fait que passer .... 
	   // et si les clients HTTP respectaient le RFC HTTP selon lequel
	   // une redirection d'un POST doit etre en POST et pas en GET
	   // on n'aurait pas a faire l'horreur ci-dessous.
		  
	   set_request('action', '');
	   set_request('exec', 'poster_forum_prive');
	   set_request('id', $id);
	   set_request('id_parent', $id_parent);
	   set_request('statut', $statut);
	   set_request('script', $script);

	   include(_DIR_RESTREINT.'index.php');
	   exit;
	}
}
Esempio n. 9
0
/**
 * Creer un nouveau document
 *
 * @return int
 */
function document_inserer()
{
    $champs = array('statut' => 'prop', 'date' => 'NOW()');
    // Envoyer aux plugins
    $champs = pipeline('pre_insertion', array('args' => array('table' => 'spip_documents'), 'data' => $champs));
    $id_document = sql_insertq("spip_documents", $champs);
    pipeline('post_insertion', array('args' => array('table' => 'spip_documents', 'id_objet' => $id_document), 'data' => $champs));
    return $id_document;
}
Esempio n. 10
0
/**
 * Insertion d'un groupe de mots clés
 *
 * @pipeline_appel pre_insertion
 * @pipeline_appel post_insertion
 * 
 * @param string $table
 *     Tables sur lesquels des mots de ce groupe pourront être liés
 * @return int|bool
 *     Identifiant du nouveau groupe de mots clés.
 */
function groupe_mots_inserer($table = '')
{
    $champs = array('titre' => '', 'unseul' => 'non', 'obligatoire' => 'non', 'tables_liees' => $table, 'minirezo' => 'oui', 'comite' => 'non', 'forum' => 'non');
    // Envoyer aux plugins
    $champs = pipeline('pre_insertion', array('args' => array('table' => 'spip_groupes_mots'), 'data' => $champs));
    $id_groupe = sql_insertq("spip_groupes_mots", $champs);
    pipeline('post_insertion', array('args' => array('table' => 'spip_groupes_mots', 'id_objet' => $id_groupe), 'data' => $champs));
    return $id_groupe;
}
function stage_action_insert_candidature($id_auteur)
{
    // nouvelle candidature
    $id_candidature = sql_insertq("spip_candidatures", array('id_auteur' => intval($id_auteur), 'date' => date("Y-m-d H:i:s"), "maj" => date("Y-m-d H:i:s")));
    if (!$id_candidature) {
        spip_log("action formulaire insert candidature : impossible d'ajouter une candidature", 'journal');
        return false;
    }
    return $id_candidature;
}
Esempio n. 12
0
/**
 * Crée un nouveau contact et retourne son ID
 *
 * @param array $champs Un tableau avec les champs par défaut lors de l'insertion
 * @return int id_organisation
 */
function insert_contact($champs = array())
{
    $id_contact = false;
    // Envoyer aux plugins avant insertion
    $champs = pipeline('pre_insertion', array('args' => array('table' => 'spip_contacts'), 'data' => $champs));
    // Insérer l'objet
    $id_contact = sql_insertq('spip_contacts', $champs);
    // Envoyer aux plugins après insertion
    pipeline('post_insertion', array('args' => array('table' => 'spip_contacts'), 'data' => $champs));
    return $id_contact;
}
Esempio n. 13
0
function formulaires_site_traiter_dist($id_rubrique)
{
    $res = array('message_erreur' => _T('titre_probleme_technique'));
    $nom = _request('nom_site');
    $url = _request('url_site');
    $desc = _request('description_site');
    include_spip('base/abstract_sql');
    if ($id_syndic = sql_insertq('spip_syndic', array('nom_site' => $nom, 'url_site' => $url, 'id_rubrique' => $id_rubrique, 'id_secteur' => sql_getfetsel('id_secteur', 'spip_rubriques', 'id_rubrique=' . sql_quote($id_rubrique)), 'descriptif' => $desc, 'date' => date('Y-m-d H:i:s'), 'date_syndic' => date('Y-m-d H:i:s'), 'statut' => 'prop', 'syndication' => 'non'))) {
        $res = array('message_ok' => _T('form_prop_enregistre'), 'id_syndic' => $id_syndic);
    }
    return $res;
}
/**
 * Inserer une nouvelle souscription en en base.
 *
 * @return bool
 */
function souscription_inserer()
{
    $champs = array('date_souscription' => date('Y-m-d H:i:s'), 'statut' => 'prepa');
    if (!test_espace_prive() and is_null(_request('id_auteur')) and isset($GLOBALS['visiteur_session']['id_auteur'])) {
        $champs['id_auteur'] = $GLOBALS['visiteur_session']['id_auteur'];
    }
    // Envoyer aux plugins
    $champs = pipeline('pre_insertion', array('args' => array('table' => 'spip_souscriptions'), 'data' => $champs));
    $id_souscription = sql_insertq("spip_souscriptions", $champs);
    pipeline('post_insertion', array('args' => array('table' => 'spip_souscriptions', 'id_objet' => $id_souscription), 'data' => $champs));
    return $id_souscription;
}
function souscription_maj_liens_transactions()
{
    $done = sql_allfetsel("DISTINCT id_souscription", "spip_souscriptions_liens");
    $done = array_map('reset', $done);
    $res = sql_select("id_souscription,id_transaction_echeance", "spip_souscriptions", sql_in('id_souscription', $done, "NOT"));
    while ($row = sql_fetch($res)) {
        $ins = array('id_souscription' => $row['id_souscription'], 'id_objet' => $row['id_transaction_echeance'], 'objet' => 'transaction');
        sql_insertq("spip_souscriptions_liens", $ins);
        if (time() > _TIME_OUT) {
            return;
        }
    }
}
Esempio n. 16
0
/**
 * Inserer une petition en base
 * @param <type> $id_article
 * @return <type> 
 */
function petition_inserer($id_article)
{
    // Si id_article vaut 0 ou n'est pas definie, echouer
    if (!($id_article = intval($id_article))) {
        return 0;
    }
    $champs = array('id_article' => $id_article);
    // Envoyer aux plugins
    $champs = pipeline('pre_insertion', array('args' => array('table' => 'spip_petitions'), 'data' => $champs));
    $id_petition = sql_insertq("spip_petitions", $champs);
    pipeline('post_insertion', array('args' => array('table' => 'spip_petitions', 'id_objet' => $id_petition), 'data' => $champs));
    return $id_petition;
}
Esempio n. 17
0
/**
 * Inserer une signature en base
 * @param int $id_petition
 * @return int
 */
function signature_inserer($id_petition)
{
    // Si $id_petition vaut 0 ou n'est pas definie, echouer
    if (!($id_petition = intval($id_petition))) {
        return 0;
    }
    $champs = array('id_petition' => $id_petition, 'statut' => 'prepa', 'date_time' => date('Y-m-d H:i:s'));
    // Envoyer aux plugins
    $champs = pipeline('pre_insertion', array('args' => array('table' => 'spip_signatures'), 'data' => $champs));
    $id_signature = sql_insertq("spip_signatures", $champs);
    pipeline('post_insertion', array('args' => array('table' => 'spip_signatures', 'id_objet' => $id_signature), 'data' => $champs));
    return $id_signature;
}
Esempio n. 18
0
/**
 * Surcharge plugin panier/action/remplir_panier.php
 * ajout du numéro de départ d'abonnement
 */
function action_remplir_panier($arg = null)
{
    if (is_null($arg)) {
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $arg = $securiser_action();
    }
    // le numero en cours
    $num_encours = sql_fetsel("reference", "spip_produits", "statut = 'publie' AND id_rubrique = '2' AND reference LIKE '%v%'", "", "reference DESC");
    $num_encours = str_replace("v", "", $num_encours);
    // On récupère les infos de l'argument
    @(list($objet, $id_objet, $quantite, $numero) = explode('-', $arg));
    if ($objet == 'produit') {
        $numero = '-1';
    }
    if ($objet == 'abonnement') {
        if (intval($numero) <= 0) {
            $numero = intval($num_encours);
            if (_DEBUG_VACARME) {
                spip_log("action remplir panier {$objet} {$id_objet} {$numero} : numero inférieur ou égal à zéro", 'vacarme_debug');
            }
        }
    }
    $id_objet = intval($id_objet);
    $quantite = intval($quantite) ? intval($quantite) : 1;
    // Il faut cherche le panier du visiteur en cours
    include_spip('inc/session');
    $id_panier = session_get('id_panier');
    // S'il n'y a pas de panier, on le crée
    if (!$id_panier) {
        include_spip('inc/paniers');
        $id_panier = paniers_creer_panier();
    }
    // On ne fait que s'il y a bien un panier existant et un objet valable
    if ($id_panier > 0 and $objet and $id_objet and $numero) {
        // Il faut maintenant chercher si cet objet précis est *déjà* dans le panier
        $quantite_deja = intval(sql_getfetsel('quantite', 'spip_paniers_liens', array('id_panier = ' . $id_panier, 'objet = ' . sql_quote($objet), 'id_objet = ' . $id_objet, 'numero =' . $numero)));
        //spip_log('quantite deja ='.$quantite_deja,'ajoutpanier');
        // Si on a déjà une quantité, on fait une mise à jour
        if ($quantite_deja > 0) {
            sql_updateq('spip_paniers_liens', array('quantite' => $quantite_deja + $quantite), 'id_panier = ' . $id_panier . ' and objet = ' . sql_quote($objet) . ' and id_objet = ' . $id_objet . ' and numero = ' . $numero);
        } else {
            sql_insertq('spip_paniers_liens', array('id_panier' => $id_panier, 'objet' => $objet, 'id_objet' => $id_objet, 'quantite' => $quantite, 'numero' => $numero));
        }
        // le numéro de départ d'un abonnement
        /*if ($objet == 'abonnement') {
             sql_updateq('spip_paniers_liens',array('numero' => $numero),'id_panier = '.$id_panier.' and id_objet ='.$id_objet);
          }*/
        // Mais dans tous les cas on met la date du panier à jour
        sql_updateq('spip_paniers', array('date' => 'NOW()'), 'id_panier = ' . $id_panier);
    }
}
Esempio n. 19
0
/**
 * Ajout d'un dépot et de son contenu (paquets, plugins) dans la base de données
 *
 * Si une erreur survient (syntaxe XML incorrecte, pas de plugin dans le dépot),
 * son texte est placé dans le paramètre $erreur
 * 
 * @param string $url
 *     URL du fichier XML de description du dépot
 * @param string $erreur
 *     Texte d'un éventuel message d'erreur
 * @return bool
 *     true si le dépot est ajouté correctement, false sinon
 */
function svp_ajouter_depot($url, &$erreur = '')
{
    include_spip('inc/distant');
    // On considere que l'url a deja ete validee (correcte et nouveau depot)
    $url = trim($url);
    // Ajout du depot dans la table spip_depots. Les compteurs de paquets et de plugins
    // sont mis a jour apres le traitement des paquets
    // on recupère le XML
    $fichier_xml = copie_locale($url, 'modif');
    if (!$fichier_xml) {
        $erreur = _T('svp:message_nok_xml_non_recupere', array('fichier' => $url));
        return false;
    }
    $fichier_xml = _DIR_RACINE . $fichier_xml;
    // Lire les donnees d'un depot de paquets
    $infos = svp_phraser_depot($fichier_xml);
    if (!$infos) {
        $erreur = _T('svp:message_nok_xml_non_conforme', array('fichier' => $url));
        return false;
    }
    $titre = filtrer_entites($infos['depot']['titre']);
    $champs = array('titre' => $titre, 'descriptif' => filtrer_entites($infos['depot']['descriptif']), 'type' => $infos['depot']['type'], 'url_serveur' => $infos['depot']['url_serveur'], 'url_brouteur' => $infos['depot']['url_brouteur'], 'url_archives' => $infos['depot']['url_archives'], 'url_commits' => $infos['depot']['url_commits'], 'xml_paquets' => $url, 'sha_paquets' => sha1_file($fichier_xml), 'nbr_paquets' => 0, 'nbr_plugins' => 0, 'nbr_autres' => 0);
    // verifier avant l'insertion que le depot n'existe pas deja
    // car la recuperation pouvant etre longue on risque le probleme en cas de concurrence
    if (sql_countsel('spip_depots', 'xml_paquets=' . sql_quote($url))) {
        $erreur = _T('svp:message_nok_depot_deja_ajoute', array('url' => $url));
        return false;
    } elseif (!($id_depot = sql_insertq('spip_depots', $champs))) {
        $erreur = _T('svp:message_nok_sql_insert_depot', array('objet' => "{$titre} ({$url})"));
        return false;
    }
    // Ajout des paquets dans spip_paquets et actualisation des plugins dans spip_plugins
    $ok = svp_actualiser_paquets($id_depot, $infos['paquets'], $nb_paquets, $nb_plugins, $nb_autres);
    if (!$ok or $nb_paquets == 0) {
        // Si une erreur s'est produite, on supprime le depot deja insere
        sql_delete('spip_depots', 'id_depot=' . sql_quote($id_depot));
        if (!$ok) {
            $erreur = _T('svp:message_nok_xml_non_conforme', array('fichier' => $url));
        } else {
            $erreur = _T('svp:message_nok_aucun_paquet_ajoute', array('url' => $url));
        }
        return false;
    }
    // On met à jour le nombre de paquets et de plugins du depot maintenant !
    sql_updateq('spip_depots', array('nbr_paquets' => $nb_paquets, 'nbr_plugins' => $nb_plugins, 'nbr_autres' => $nb_autres), 'id_depot=' . sql_quote($id_depot));
    // On vide les paquets locaux pour mettre a jour leurs donnees relatives au depot
    // comme les mises a jour disponibles
    include_spip('inc/svp_depoter_local');
    svp_actualiser_paquets_locaux(true);
    return true;
}
Esempio n. 20
0
function action_instituer_groupe_mots_get($table)
{
	$titre = _T('info_mot_sans_groupe');
	$id_groupe = sql_insertq("spip_groupes_mots", array(
		'titre' => $titre,
		'unseul' => 'non',
		'obligatoire' => 'non',
		'tables_liees'=>$table,
		'minirezo' =>  'oui',
		'comite' =>  'non',
		'forum' => 'non')) ;

  redirige_par_entete(parametre_url(urldecode(_request('redirect')),
		  'id_groupe', $id_groupe, '&'));
}
Esempio n. 21
0
/**
 * Inserer un auteur en base
 * 
 * @param string $source
 * @return int
 */
function auteur_inserer($source = null)
{
    // Ce qu'on va demander comme modifications
    $champs = array();
    $champs['source'] = $source ? $source : 'spip';
    $champs['login'] = '';
    $champs['statut'] = '5poubelle';
    // inutilisable tant qu'il n'a pas ete renseigne et institue
    $champs['webmestre'] = 'non';
    // Envoyer aux plugins
    $champs = pipeline('pre_insertion', array('args' => array('table' => 'spip_auteurs'), 'data' => $champs));
    $id_auteur = sql_insertq("spip_auteurs", $champs);
    pipeline('post_insertion', array('args' => array('table' => 'spip_auteurs', 'id_objet' => $id_auteur), 'data' => $champs));
    return $id_auteur;
}
Esempio n. 22
0
function clevermail_post_queue($pst_id)
{
    if ($post = sql_fetsel("lst_id, pst_subject", "spip_cm_posts", "pst_id = " . intval($pst_id))) {
        $lst_id = $post['lst_id'];
        $lst_name = sql_getfetsel("lst_name", "spip_cm_lists", "lst_id = " . intval($lst_id));
        if (sql_countsel("spip_cm_posts", "pst_id = " . intval($pst_id) . " AND pst_date_sent = 0")) {
            // Si le script plante en cours, on ne renvoie pas deux fois aux premiers, tant pis pour ceux qui ne sont pas passes
            sql_update("spip_cm_posts", array('pst_date_sent' => time()), "pst_id = " . intval($pst_id));
            $subscribers = sql_select("sub_id", "spip_cm_lists_subscribers", "lst_id = " . intval($lst_id));
            while ($sub = sql_fetch($subscribers)) {
                sql_insertq("spip_cm_posts_queued", array('pst_id' => intval($pst_id), 'sub_id' => intval($sub['sub_id']), 'psq_date' => time()));
            }
            spip_log('Déclenchement de l\'envoi du message « ' . $post['pst_subject'] . ' » (id=' . $pst_id . ') de la liste « ' . $lst_name . ' » (id=' . $lst_id . ')', 'clevermail');
        }
    }
}
Esempio n. 23
0
/**
 * Insertion d'un mot dans un groupe
 * @param int $id_groupe
 * @return int
 */
function mot_inserer($id_groupe)
{
    $champs = array();
    $row = sql_fetsel("titre", "spip_groupes_mots", "id_groupe=" . intval($id_groupe));
    if ($row) {
        $champs['id_groupe'] = $id_groupe;
        $champs['type'] = $row['titre'];
    } else {
        return false;
    }
    // Envoyer aux plugins
    $champs = pipeline('pre_insertion', array('args' => array('table' => 'spip_mots'), 'data' => $champs));
    $id_mot = sql_insertq("spip_mots", $champs);
    pipeline('post_insertion', array('args' => array('table' => 'spip_mots', 'id_objet' => $id_mot), 'data' => $champs));
    return $id_mot;
}
Esempio n. 24
0
function forum_insert_base($c, $id_forum, $objet, $id_objet, $statut, $ajouter_mot = false)
{
    if (!in_array($statut, array('privrac', 'privadm'))) {
        // si le statut est vide, c'est qu'on ne veut pas de ce presume spam !
        if (!$statut or !$objet or !$id_objet) {
            $args = func_get_args();
            spip_log("Erreur sur forum_insert_base " . var_export($args, 1), 'forum.' . _LOG_ERREUR);
            return false;
        }
    }
    // Entrer le message dans la base
    $id_reponse = sql_insertq('spip_forum', array('date_heure' => date('Y-m-d H:i:s'), 'ip' => $GLOBALS['ip'], 'id_auteur' => $GLOBALS['visiteur_session']['id_auteur']));
    if ($id_reponse) {
        if ($id_forum > 0) {
            $id_thread = sql_getfetsel("id_thread", "spip_forum", "id_forum =" . intval($id_forum));
        } else {
            $id_thread = $id_reponse;
        }
        # id_thread oblige INSERT puis UPDATE.
        // Entrer les cles
        sql_updateq('spip_forum', array('id_parent' => $id_forum, 'objet' => $objet, 'id_objet' => $id_objet, 'id_thread' => $id_thread, 'statut' => $statut), "id_forum=" . intval($id_reponse));
        // Entrer les mots-cles associes
        if ($ajouter_mot) {
            mots_du_forum($ajouter_mot, $id_reponse);
        }
        //
        // Entree du contenu et invalidation des caches
        //
        include_spip('action/editer_forum');
        revision_forum($id_reponse, $c);
        // Ajouter un document
        if (isset($_FILES['ajouter_document']) and $_FILES['ajouter_document']['tmp_name']) {
            $files[] = array('tmp_name' => $_FILES['ajouter_document']['tmp_name'], 'name' => $_FILES['ajouter_document']['name']);
            $ajouter_documents = charger_fonction('ajouter_documents', 'action');
            $ajouter_documents('new', $files, 'forum', $id_reponse, 'document');
            // supprimer le temporaire et ses meta donnees
            spip_unlink($_FILES['ajouter_document']['tmp_name']);
            spip_unlink(preg_replace(',\\.bin$,', '.txt', $_FILES['ajouter_document']['tmp_name']));
        }
        // Notification
        $quoi = strncmp($statut, 'priv', 4) == 0 ? 'forumprive' : 'forumposte';
        if ($notifications = charger_fonction('notifications', 'inc')) {
            $notifications($quoi, $id_reponse);
        }
    }
    return $id_reponse;
}
Esempio n. 25
0
/**
 * Generer une facture unique pour une transaction
 * en gerant le risque de double appel concurent pour la meme transaction
 * (en principe deja gere en amont de l'appel, mais pas de facon certaine a 100%)
 *
 * @param int $id_transaction
 * @param null|array $options_notif
 * @return array|bool
 */
function factures_creer_facture($id_transaction, $options_notif = null)
{
    $id_facture = 0;
    $no_comptable = '';
    $url = '';
    // transaction deja en cours de facturation ?
    // attendons au max 5s pour voir si la facturation se fait entre temps
    // permet de recuperer le numero de facture
    $max_wait = 5;
    while ($row = sql_fetsel("*", "spip_transactions", "id_transaction=" . intval($id_transaction)) and $row['id_facture'] == -1 and $max_wait--) {
        sleep(1);
    }
    // transaction introuvable ou toujours verrouillee ?
    if (!$row or $row['id_facture'] == -1) {
        return false;
    }
    // deja facture
    if ($row['id_facture']) {
        $url = generer_url_public('facture', "id_facture={$id_facture}&hash=" . md5($row['details']), false, false);
        return array($row['id_facture'], $row['no_comptable'], $url);
    }
    // verouiller la facturation de cette transaction
    sql_updateq("spip_transactions", array('id_facture' => -1), "id_transaction=" . intval($id_transaction));
    // creer la facture
    $details = recuperer_fond('modeles/transaction_details', array('id_transaction' => $id_transaction));
    $client = recuperer_fond('modeles/client_adresse_facture', array('id_auteur' => $row['id_auteur'], 'id_transaction' => $id_transaction));
    $numeroter_facture = charger_fonction('numeroter_facture', 'inc');
    $set = array('id_auteur' => $row['id_auteur'], 'montant_ht' => $row['montant_ht'], 'montant' => $row['montant'], 'montant_regle' => $row['montant_regle'], 'date' => date('Y-m-d H:i:s'), 'date_paiement' => $row['date_paiement'], 'client' => $client, 'details' => $details, 'parrain' => $row['parrain'], 'tracking_id' => $row['tracking_id']);
    // Envoyer aux plugins
    $set = pipeline('pre_insertion', array('args' => array('table' => 'spip_factures'), 'data' => $set));
    $id_facture = sql_insertq('spip_factures', $set);
    if ($id_facture) {
        $no_comptable = $numeroter_facture($id_facture, $set['date']);
        $set['no_comptable'] = $no_comptable;
        sql_updateq("spip_factures", array("no_comptable" => $no_comptable), "id_facture=" . intval($id_facture));
        sql_updateq("spip_transactions", array("id_facture" => $id_facture), "id_transaction=" . intval($id_transaction));
        pipeline('post_insertion', array('args' => array('table' => 'spip_factures', 'id_objet' => $id_facture), 'data' => $set));
        // on relit le no_comptable en base au cas ou le pipeline aurait surcharge
        $no_comptable = sql_getfetsel('no_comptable', 'spip_factures', 'id_facture=' . intval($id_facture));
        $url = generer_url_public('facture', "id_facture={$id_facture}&hash=" . md5($set['details']), false, false);
        if ($options_notif and is_array($options_notif) and $notifications = charger_fonction('notifications', 'inc')) {
            $options_notif['url_facture'] = $url;
            $notifications("genererfacture", $id_facture, $options_notif);
        }
    }
    return array($id_facture, $no_comptable, $url);
}
Esempio n. 26
0
function balise_CLEVERMAIL_UNSUBSCRIBE_dyn()
{
    if (isset($_GET['id']) && $_GET['id'] != '') {
        if (sql_countsel("spip_cm_lists_subscribers", "lsr_id=" . sql_quote($_GET['id'])) == 1) {
            $abonnement = sql_fetsel("*", "spip_cm_lists_subscribers", "lsr_id=" . sql_quote($_GET['id']));
            // Desinscription a cette liste demandee
            $actionId = md5('unsubscribe#' . intval($abonnement['lst_id']) . '#' . intval($abonnement['sub_id']) . '#' . time());
            if (sql_countsel("spip_cm_pending", "lst_id = " . intval($abonnement['lst_id']) . " AND sub_id = " . intval($abonnement['sub_id'])) == 0) {
                sql_insertq("spip_cm_pending", array('lst_id' => intval($abonnement['lst_id']), 'sub_id' => $abonnement['sub_id'], 'pnd_action' => 'unsubscribe', 'pnd_action_date' => time(), 'pnd_action_id' => $actionId));
            }
            // Composition du message de demande de confirmation
            $sub = sql_fetsel("*", "spip_cm_subscribers", "sub_id=" . intval($abonnement['sub_id']));
            $list = sql_fetsel("*", "spip_cm_lists", "lst_id=" . intval($abonnement['lst_id']));
            $template = array();
            if (strpos($list['lst_name'], '/') === false) {
                $template['@@NOM_LETTRE@@'] = supprimer_numero($list['lst_name']);
                $template['@@NOM_CATEGORIE@@'] = '';
                $template['@@NOM_COMPLET@@'] = $template['@@NOM_LETTRE@@'];
            } else {
                $template['@@NOM_LETTRE@@'] = supprimer_numero(substr($list['lst_name'], strpos($list['lst_name'], '/') + 1));
                $template['@@NOM_CATEGORIE@@'] = supprimer_numero(substr($list['lst_name'], 0, strpos($list['lst_name'], '/')));
                $template['@@NOM_COMPLET@@'] = $template['@@NOM_CATEGORIE@@'] . ' / ' . $template['@@NOM_LETTRE@@'];
            }
            $template['@@EMAIL@@'] = $sub['sub_email'];
            $template['@@FORMAT_INSCRIPTION@@'] = $data['lsr_mode'] == 1 ? 'HTML' : 'texte';
            //$template['@@URL_CONFIRMATION@@'] = $GLOBALS['meta']['adresse_site'].'/spip.php?page=clevermail_do&id='.$actionId;
            $template['@@URL_CONFIRMATION@@'] = url_absolue(generer_url_public(_CLEVERMAIL_UNSUBSCRIBE, 'id=' . $actionId));
            $to = $sub['sub_email'];
            $subject = (intval($list['lst_subject_tag']) == 1 ? '[' . $template['@@NOM_COMPLET@@'] . '] ' : '') . html_entity_decode($list['lst_unsubscribe_subject'], ENT_QUOTES, 'UTF-8');
            $body = $list['lst_unsubscribe_text'];
            while (list($translateFrom, $translateTo) = each($template)) {
                $body = str_replace($translateFrom, $translateTo, $body);
            }
            $from = sql_getfetsel("set_value", "spip_cm_settings", "set_name='CM_MAIL_FROM'");
            $return = sql_getfetsel("set_value", "spip_cm_settings", "set_name='CM_MAIL_RETURN'");
            // TODO : Et le charset ?
            // TODO : Et le return-path ?
            $envoyer_mail = charger_fonction('envoyer_mail', 'inc');
            $envoyer_mail($to, $subject, $body, $from);
            $return = '<p>' . _T('clevermail:desinscription_confirmation_debut') . ' ' . $template['@@NOM_COMPLET@@'] . ' ' . _T('clevermail:desinscription_confirmation_fin') . '</p>';
        } else {
            $return = '<p>' . _T('clevermail:aucune_inscription') . '</p>';
        }
    }
    return $return;
}
Esempio n. 27
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'));
}
function formulaires_clevermail_unsubscribe_why_traiter_dist()
{
    if (isset($_GET['id']) && $_GET['id'] != '') {
        $action = sql_fetch(sql_select("*", "spip_cm_pending", array("pnd_action_id=" . sql_quote($_GET['id']), "pnd_action='unsubscribe'")));
        if (empty($action)) {
            return array('message_erreur' => 'Votre demande ne peut pas être traitée', 'editable' => false);
        }
        $list = sql_fetsel("*", "spip_cm_lists", "lst_id = " . intval($action['lst_id']));
        $pos = strpos($list['lst_name'], "/");
        if (strpos($list['lst_name'], '/') === false) {
            $lettre = supprimer_numero($list['lst_name']);
            $categorie = '';
            $list_name_complet = $lettre;
        } else {
            $lettre = supprimer_numero(substr($list['lst_name'], strpos($list['lst_name'], '/') + 1));
            $categorie = supprimer_numero(substr($list['lst_name'], 0, strpos($list['lst_name'], '/')));
            $list_name_complet = $categorie . " / " . $lettre;
        }
        sql_delete("spip_cm_lists_subscribers", "lst_id = " . intval($action['lst_id']) . " AND sub_id = " . intval($action['sub_id']));
        // remove posts from this list already queued
        sql_delete("spip_cm_posts_queued", "sub_id = " . intval($action['sub_id']) . " AND pst_id IN (" . implode(',', sql_fetsel("lst_id", "spip_cm_posts", "lst_id=" . intval($action['lst_id']), "lst_id")) . ")");
        $lst_name = sql_getfetsel("lst_name", "spip_cm_lists", "lst_id = " . intval($action['lst_id']));
        $message_ok = _T('clevermail:desinscription_validee', array('lst_name' => $list_name_complet));
        // E-mail d'alerte envoye au moderateur de la liste
        $sub = sql_fetsel("*", "spip_cm_subscribers", "sub_id = " . intval($action['sub_id']));
        sql_insertq("spip_cm_unsubscribe_why", array('sub_email' => $sub['sub_email'], 'sub_champ_exercice' => $sub['sub_champ_exercice'], 'sub_territoire' => $sub['sub_territoire'], 'lst_id' => $action['lst_id'], 'date_unsubscribe' => date('Y-m-d H:i:s'), 'choices_unsubscribe' => implode(':', $_POST['choices_unsubscribe']), 'choices_autre' => $_POST['autre']));
        $list = sql_fetsel("*", "spip_cm_lists", "lst_id = " . intval($action['lst_id']));
        $destinataire = $list['lst_moderator_email'];
        $sujet = '[' . $list['lst_name'] . '] Désinscription de ' . addslashes($sub['sub_email']);
        $corps = _T('clevermail:mail_info_desinscription_corps', array('nom_site' => $GLOBALS['meta']['nom_site'], 'url_site' => $GLOBALS['meta']['adresse_site'], 'sub_email' => addslashes($sub['sub_email']), 'lst_name' => $list['lst_name']));
        $expediteur = sql_getfetsel("set_value", "spip_cm_settings", "set_name='CM_MAIL_FROM'");
        $envoyer_mail = charger_fonction('envoyer_mail', 'inc');
        $envoyer_mail($destinataire, $sujet, $corps, $expediteur);
        $abonne = sql_getfetsel("sub_email", "spip_cm_subscribers", "sub_id=" . intval($action['sub_id']));
        $liste = sql_getfetsel("lst_name", "spip_cm_lists", "lst_id=" . intval($action['lst_id']));
        if (sql_countsel("spip_cm_lists_subscribers", "sub_id=" . intval($action['sub_id'])) == 0) {
            sql_updateq("spip_cm_subscribers", array('sub_email' => md5(substr($abonne, 0, strpos($abonne, '@'))) . substr($abonne, strpos($abonne, '@'))), "sub_id = " . intval($action['sub_id']));
        }
        spip_log('Suppression du l\'abonnement de « ' . $abonne . ' » de la liste « ' . $liste . ' » (id=' . $action['lst_id'] . ')', 'clevermail');
        sql_delete("spip_cm_pending", "pnd_action_id=" . sql_quote($_GET['id']));
        return array('message_ok' => $message_ok, 'redirect' => 'spip.php');
    } else {
        return array('message_erreur' => 'Votre demande ne peut pas être traitée', 'editable' => false);
    }
}
Esempio n. 29
0
function formulaires_editer_geo_article_traiter_dist($id_article = 'new', $retour = '', $ajaxload = 'oui')
{
    $message = array('editable' => true, 'message_ok' => '');
    $vhplab_latitude = _request('vhplab_latitude');
    $vhplab_longitude = _request('vhplab_longitude');
    $vhplab_zoom = _request('vhplab_zoom');
    !_request('vhplab_address') ? $vhplab_address = _request('vhplab_address') : ($vhplab_address = '');
    // insertamos as coordenadas do artigo
    $result = sql_select('*', 'spip_vhplab_gis_liens', 'id_objet=' . intval($id_article) . ' AND objet=' . sql_quote("article"));
    if ($row = sql_fetch($result)) {
        sql_updateq('spip_vhplab_gis', array('latitude' => $vhplab_latitude, 'longitude' => $vhplab_longitude, 'zoom' => $vhplab_zoom, 'address' => $vhplab_address), 'id_vhplab_gis=' . intval($row['id_vhplab_gis']));
    } else {
        $id_vhplab_gis = sql_insertq("spip_vhplab_gis", array('latitude' => $vhplab_latitude, 'longitude' => $vhplab_longitude, 'zoom' => $vhplab_zoom, 'address' => $vhplab_address));
        sql_insertq('spip_vhplab_gis_liens', array('id_vhplab_gis' => intval($id_vhplab_gis), 'id_objet' => intval($id_article), 'objet' => 'article'));
    }
    // message
    return array("editable" => true, "message_ok" => _T('vhplab:message_ok'));
}
/**
 * Creer un nouvel evenement
 *
 * @param int $id_article
 * @param int $id_evenement_source
 * @return int
 */
function evenement_inserer($id_article, $id_evenement_source = 0)
{
    include_spip('inc/autoriser');
    if (!autoriser('creerevenementdans', 'article', $id_article)) {
        spip_log('agenda action formulaire article : auteur ' . $GLOBALS['visiteur_session']['id_auteur'] . " n'a pas le droit de creer un evenement dans article {$id_article}", 'agenda');
        return false;
    }
    $champs = array('id_evenement_source' => intval($id_evenement_source), 'id_article' => intval($id_article), 'statut' => 'prop');
    // Envoyer aux plugins
    $champs = pipeline('pre_insertion', array('args' => array('table' => 'spip_evenements'), 'data' => $champs));
    // nouvel evenement
    $id_evenement = sql_insertq('spip_evenements', $champs);
    pipeline('post_insertion', array('args' => array('table' => 'spip_evenements', 'id_objet' => $id_evenement), 'data' => $champs));
    if (!$id_evenement) {
        spip_log("agenda action formulaire evenement : impossible d'ajouter un evenement", 'agenda');
        return false;
    }
    return $id_evenement;
}