function profils_creer_auteur($set) { include_spip("action/editer_auteur"); include_spip('inc/acces'); $id_auteur = auteur_inserer(); spip_log($id_auteur, 'profils'); spip_log($set, 'profils'); if ($id_auteur) { $set['pass'] = creer_pass_aleatoire(); $set['statut'] = '6forum'; autoriser_exception('modifier', 'auteur', $id_auteur); autoriser_exception('instituer', 'auteur', $id_auteur); auteur_modifier($id_auteur, $set); autoriser_exception('modifier', 'auteur', $id_auteur, false); autoriser_exception('instituer', 'auteur', $id_auteur, false); // verifier $row = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)); if (!$row['login'] or !$row['email']) { spip_log("Erreur creation profil {$id_auteur} " . var_export($set, true), "profils" . _LOG_ERREUR); return false; } $row['pass'] = $set['pass']; return $row; } return false; }
function insert_auteur($source = null) { return auteur_inserer($source); }
/** * On enregistre le demandeur comme 'nouveau', en memorisant le statut final * provisoirement dans le champ prefs, afin de ne pas visualiser les inactifs * A sa premiere connexion il obtiendra son statut final. * * http://doc.spip.org/@inscription_nouveau * * @param array $desc * @return mixed|string */ function inscription_nouveau($desc) { if (!isset($desc['login']) or !strlen($desc['login'])) { $desc['login'] = test_login($desc['nom'], $desc['email']); } $desc['statut'] = 'nouveau'; include_spip('action/editer_auteur'); if (isset($desc['id_auteur'])) { $id_auteur = $desc['id_auteur']; } else { $id_auteur = auteur_inserer(); } if (!$id_auteur) { return _T('titre_probleme_technique'); } include_spip('inc/autoriser'); // lever l'autorisation pour pouvoir modifier le statut autoriser_exception('modifier', 'auteur', $id_auteur); auteur_modifier($id_auteur, $desc); autoriser_exception('modifier', 'auteur', $id_auteur, false); $desc['id_auteur'] = $id_auteur; return $desc; }
function spip_importer_articles($spip_data) { global $tables_conversion; foreach ($spip_data as $entry) { $id_rubrique = null; $type = $entry['metadata']['type']; journaliser(sprintf("Traitement d'un nouvel item : %s - %s", $entry['metadata']['nid'], $type), 2); if (binlog_contient($entry['metadata']['nid'])) { journaliser("L'élément %s a déjà été converti", $entry['metadata']['nid']); continue; } journaliser("Recherche de la catégorie cible pour l'article"); /* FIXME: doit être déplacé hors de cette fonction (spécifique site cible). */ /* CATEGORIE CIBLE */ /* Remarque : les articles de type 'story' sont dispatchés par la * fonction dispatch_story_type() */ $cat_cible = array('video' => 14, 'photos' => 23, 'audio' => 24, 'commission' => 36, 'livre' => 15, 'evenement' => 11); $fct = "dispatch_{$type}_type"; if (function_exists($fct)) { $id_rubrique = call_user_func($fct, $entry); } elseif ($cat_cible[$type]) { $id_rubrique = $cat_cible[$type]; } if ($id_rubrique == null) { journaliser("Catégorie cible introuvable pour le type de contenu " . $type, 4); die; } journaliser("Envoi de l'article dans la rubrique %s", $id_rubrique, 1); /* --- VIDEO --- */ if ($type == "video") { if ($entry['documents']['video']) { /* Si une vidéo est présente dans ce champ, il faut modifier le * texte de l'article et ajouter le lien vers la video à la * fin. */ $entry['article']['texte'] .= sprintf("\n\n%s", $entry['documents']['video']); } } /* --- AUDIO --- */ if ($type == "audio") { journaliser("Gestion des documents audio"); $audio_path = $entry['documents']['audio']; $audio_name = $entry['documents']['audio_name']; $id_document = importer_document($audio_path, $audio_name); journaliser("Import du document : " . $id_document, 1); $entry['article']['texte'] = sprintf("<emb%s>\nRéalisation : %s\n\n%s", $id_document, $entry['documents']['audio_desc'], $entry['article']['texte']); document_modifier($id_document, array('credits' => $entry['documents']['audio_desc'])); } /* --- PIECES JOINTES --- */ if ($entry['documents']['pdf']) { journaliser("Ajout des pièces jointes au format PDF"); foreach ($entry['documents']['pdf'] as $document) { $id_document = importer_document($document['filepath'], $document['filename']); journaliser(sprintf("Document PDF %s importé", $id_document), 1); $entry['article']['texte'] = sprintf("%s\n\n<lecteurpdf%s>", $entry['article']['texte'], $id_document); } } /* --- ARTICLE --- */ journaliser("Création du nouvel article"); $id_article = article_inserer($id_rubrique); journaliser("Nouvel article créee : {$id_article}", 1); //print_r($entry['article']); article_modifier($id_article, $entry['article']); journaliser("Ajout des données dans l'article n° {$id_article}", 1); /* --- AUTEUR => ARTICLE --- */ journaliser("Création ou récupération des auteurs qui doivent être associées à l'article"); $id_auteurs = array(); if ($entry['auteur']['nom']) { foreach ($entry['auteur']['nom'] as $nom_auteur) { journaliser("Recherche de l'auteur « {$nom_auteur} »", 1); if ($id = sql_getfetsel("id_auteur", "spip_auteurs", 'nom LIKE ' . sql_quote("% - {$nom_auteur}"))) { journaliser("« {$nom_auteur} » trouvé : {$id} (REGEXP)", 1); $id_auteurs[] = $id; } elseif ($id = sql_getfetsel("id_auteur", "spip_auteurs", 'nom=' . sql_quote($nom_auteur))) { journaliser("« {$nom_auteur} » trouvé : {$id}", 1); $id_auteurs[] = $id; } else { $id = auteur_inserer(); auteur_modifier($id, array('nom' => $nom_auteur, 'statut' => '1comite')); $id_auteurs[] = $id; journaliser("« {$nom_auteur} » créé : {$id}", 1); } } foreach ($id_auteurs as $id) { journaliser("Association de l'auteur %s à l'article", $id, 1); auteur_associer($id, array('article' => $id_article)); } } if (!in_array(1, $id_auteurs)) { journaliser("Retrait de l'auteur 1", 1); auteur_dissocier(1, array('article' => $id_article)); } /* --- CAMPAGNE --- */ if ($entry['metadata']['campagne']) { journaliser("Ajout des mots-clés de campagne"); foreach ($entry['metadata']['campagne'] as $campagne) { journaliser("Association du mot clé %s à l'article %s", $campagne, $id_article, 1); mot_associer($campagne, array('article' => $id_article)); } } /* --- ATTACPÉDIA --- */ if ($entry['metadata']['attacpedia']) { journaliser("Ajout des mots-clés Attacpédia"); foreach ($entry['metadata']['attacpedia'] as $attacpedia) { journaliser("Association du mot clé %s à l'article %s", $attacpedia, $id_article, 1); mot_associer($attacpedia, array('article' => $id_article)); } } /* EVENEMENT */ if ($type == "evenement") { journaliser("Création de l'évènement"); foreach ($entry['evenement']['dates'] as $dates_evt) { $id_evenement = evenement_inserer($id_article); journaliser("Numéro de l'évènement : %s", $id_evenement, 1); evenement_modifier($id_evenement, array('titre' => $entry['article']['titre'], 'lieu' => $entry['evenement']['lieu'], 'date_debut' => $dates_evt['date_debut'], 'date_fin' => $dates_evt['date_fin'], 'statut' => $entry['article']['statut'])); journaliser("Géolocation GIS", 1); $id_gis = gis_inserer(); journaliser("Création du lieu GIS : %s", $id_gis, 1); gis_modifier($id_gis, $entry['gis']); lier_gis($id_gis, "evenement", $id_evenement); journaliser("Lien de l'évènement %s au lieu %s", $id_evenement, $id_gis, 1); } } /* --- TYPE D'EVENEMENT --- */ if ($type == "evenement") { $id_mot_drupal = $entry['metadata']['type_evenement']; $mod_evt = $tables_conversion['type_evenement'][$id_mot_drupal]; mot_associer($mod_evt, array('article' => $id_article)); journaliser("Association du mot clé %s/%s à l'article %s", $id_mot_drupal, $mod_evt, $id_article, 1); } /* --- PIECES JOINTES --- */ if ($entry['documents']['pj']) { journaliser("Ajout des pièces jointes"); foreach ($entry['documents']['pj'] as $document) { $id_document = importer_document($document['filepath'], $document['filename'], $id_article); journaliser(sprintf("Document %s importé", $id_document), 1); } } /* --- GALERIES PHOTO --- */ if ($entry['documents']['photos']) { journaliser("Ajout des pĥotos jointes"); foreach ($entry['documents']['photos'] as $document) { $id_document = importer_document($document['filepath'], $document['filename'], $id_article, "document"); journaliser(sprintf("Document %s importé", $id_document), 1); } } /* --- URL --- */ journaliser("Gestion des URL"); $urls = array(); $urls[] = "node/" . $entry['metadata']['nid']; $urls[] = $entry['url']['url']; foreach ($urls as $url) { if ($url) { if ($url_existante = sql_fetsel(array('id_objet', 'type'), 'spip_urls', 'url=' . sql_quote($url))) { journaliser(sprintf("URL ({$url}) déjà existante (%s / %s)", $url_existante['type'], $url_existante['id_objet']), 4); } else { $sql_url = array('url' => $url, 'type' => 'article', 'id_objet' => $id_article, 'perma' => 1, 'id_parent' => $id_rubrique); url_insert($sql_url, false, '-'); journaliser(sprintf("URL ajoutée : %s/%s", $GLOBALS['meta']['adresse_site'], $url), 1); } } } /* --- LOGO --- */ if ($entry['logo']['chemin']) { journaliser("Import du logo"); $remote = sprintf("http://www.france.attac.org/%s", $entry['logo']['chemin']); $filename = $entry['logo']['fichier']; $fic = copie_locale($remote, 'auto', determine_upload() . $filename); journaliser("Logo ({$remote}) => {$fic}", 1); $spip_image_ajouter = charger_fonction('spip_image_ajouter', 'action'); $spip_image_ajouter('arton' . $id_article, true, $filename); spip_unlink($fic); } $dest_url = sprintf("%s/%s", $GLOBALS['meta']['adresse_site'], $id_article); journaliser(sprintf("Article publié : <%s>", $dest_url), 2); binlog($entry['metadata']['nid'], $entry['metadata']['type'], $id_article, $entry['article']['titre'], $dest_url); } }
function formulaires_constructor_traiter_dist($id_auteur = 'new', $retour = '', $ajaxload = 'oui') { include_spip('base/abstract_sql'); include_spip('inc/texte'); include_spip('inc/auth'); include_spip('action/editer_auteur'); include_spip('action/editer_article'); include_spip('action/editer_document'); include_spip('inc/autoriser'); $nom = _request('nom'); $email = _request('email'); $login = _request('login'); $pass = _request('pass'); $base_url = _request('base_url'); $qr_url = _request('qr_url'); $image = _request('image'); $ajouter_documents = charger_fonction('ajouter_documents', 'action'); $id_editeur = $GLOBALS['visiteur_session']['id_auteur']; if (autoriser('webmestre')) { $id_auteur = auteur_inserer('spip'); if ($id_auteur) { auteur_modifier($id_auteur, array('nom' => $nom, 'email' => $email, 'statut' => '1comite')); auth_modifier_login('spip', $login, $id_auteur); auth_modifier_pass('spip', $login, $pass, $id_auteur); // primera entrada $rubrique = 1; // 1 creamos un articulo vacio $id_article = insert_article($rubrique); if ($id_article) { auteur_associer($id_auteur, array('article' => intval($id_article))); auteur_dissocier($id_editeur, array('article' => intval($id_article))); // 2 actualizampos los campos del articulo sql_updateq('spip_articles', array('titre' => 'Bienvenida', 'soustitre' => 'Tu primer artículo', 'id_rubrique' => $rubrique, 'statut' => 'publie', 'date' => date('Y-m-d H:i:s')), 'id_article=' . intval($id_article)); // 3 insertamos las coordenadas del articulo $latitude = rand(-90000, 90000) / 1000; $longitude = rand(-180000, 180000) / 1000; $zoom = 8; $id_vhplab_gis = sql_insertq("spip_vhplab_gis", array('latitude' => $latitude, 'longitude' => $longitude, 'zoom' => $zoom, 'address' => '')); sql_insertq('spip_vhplab_gis_liens', array('id_vhplab_gis' => intval($id_vhplab_gis), 'id_objet' => intval($id_article), 'objet' => 'article')); // 5 asociamos las palabras clave al articulo sql_insertq('spip_mots_liens', array('id_mot' => 1, 'id_objet' => intval($id_article), 'objet' => 'article')); sql_insertq('spip_mots_liens', array('id_mot' => 5, 'id_objet' => intval($id_article), 'objet' => 'article')); // 6 hacemos una copia de la imagen inicial $file = array('name' => 'cgeomap_explorer_banner_1100x591.jpg', 'tmp_name' => $image); $id_document = $ajouter_documents('new', array(0 => $file), 'article', intval($id_article), 'image'); sql_updateq('spip_documents', array('statut' => 'publie', 'date_publication' => date('Y-m-d H:i:s')), 'id_document=' . intval($id_document[0])); sql_insertq('spip_documents_liens', array('id_document' => intval($id_document[0]), 'id_objet' => intval($id), 'objet' => 'article', 'vu' => 'oui')); // 7 procesamos los módulos y actualizamos el texto del artículo $texte = '<block class="audiovisuel"> <module class="text" name="Bienvenid@ a CGeomap!">Con tu cuenta Explorer podrás empezar a construir rutas audiovisuales locativas y cartografiar tu entorno.</module> <module class="media" name="Explorer"><image' . $id_document[0] . '></module> <module class="text" name="Edita y publica contenidos">Este editor online te permitirá posicionar contenidos audiovisuales, accessibles desde tu smartphone (web app) y/o con la app CGeomap para Android y IOS. Para aprender a crear entradas locativas en pocos minutos, accede a la página de tutoriales (icono de información en la esquina superior derecha del editor).</module> <module class="text" name="Contacta con nosotr@s">Estamos a tu disposición para ayudarte a crear con CGeomap, ¡la tierra, el mar y las nubes esperan tus contenidos!.</module> </block>'; sql_updateq('spip_articles', array('texte' => $texte), 'id_article=' . intval($id_article)); // 8 creamos el qr y lo adjuntamos como documento $file = array('name' => 'article_' . $id_article . '_qr.png', 'tmp_name' => $qr_url . urlencode($base_url . 'author=' . $id_auteur . '&nodo=' . $id_article)); $descriptif = "qr"; $id_document = $ajouter_documents('new', array(0 => $file), 'article', intval($id_article), 'image'); sql_updateq('spip_documents', array('descriptif' => $descriptif, 'statut' => 'publie', 'date_publication' => date('Y-m-d H:i:s')), 'id_document=' . intval($id_document[0])); sql_insertq('spip_documents_liens', array('id_document' => intval($id_document[0]), 'id_objet' => intval($id_article), 'objet' => 'article', 'vu' => 'oui')); } } } }
function csv2auteurs_ajout_utilisateur($login, $Tauteur_csv, $Tnom_champs_bdd, $Tcorrespondances, $tableau_bdd_rubriques_admins, $tableau_bdd_zones_admins, $id_auteur = 0) { $set = $Tzones = $Trubadmin = array(); foreach ($Tauteur_csv as $champ => $valeur) { if ($champ == "ss_groupe") { $T = explode('|', $valeur); foreach ($T as $rub) { $Trubadmin[] = array_search(strtolower($rub), $tableau_bdd_rubriques_admins); } } if ($champ == "zone") { $T = explode('|', $valeur); foreach ($T as $zone) { $Tzones[] = array_search(trim(rtrim(strtolower($zone))), $tableau_bdd_zones_admins); } //spip_log("tzone de id_auteur $id_auteur","csvspip"); //spip_log($Tzones,"csvspip"); } if (in_array($champ, $Tnom_champs_bdd)) { $set[$champ] = ($champ == "statut" and array_key_exists($valeur, $Tcorrespondances)) ? $Tcorrespondances[$valeur] : $valeur; } } //inserer l'auteur si il n'y a pas d'id_auteur transmis if (!$id_auteur) { $id_auteur = auteur_inserer(); } // remplir les champs ou les maj auteur_modifier($id_auteur, $set); //liaison des rubriques if (count($Trubadmin) and $set["statut"] == "0minirezo") { objet_associer(array("auteur" => $id_auteur), array("rubrique" => $Trubadmin)); } //liaison des zones if (count($Tzones) and test_plugin_actif("accesrestreint") and test_plugin_actif("accesrestreint")) { zone_lier($Tzones, 'auteur', $id_auteur, 'add'); } }