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; }
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')); }
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(); }
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; }
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); } } }
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); } } }
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; } }
/** * 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; }
/** * 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; }
/** * 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; }
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; } } }
/** * 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; }
/** * 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; }
/** * 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); } }
/** * 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; }
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, '&')); }
/** * 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; }
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'); } } }
/** * 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; }
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; }
/** * 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); }
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; }
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); } }
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; }