function upgrade_evenements_statut_025()
{
    include_spip('action/editer_evenement');
    $res = sql_select('id_evenement', 'spip_evenements', "statut='0'");
    while ($row = sql_fetch($res)) {
        evenement_modifier($row['id_evenement'], array());
    }
}
Exemplo n.º 2
0
function action_supprimer_evenement_dist()
{
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $arg = $securiser_action();
    list($id_evenement, $id_article) = preg_split(',[^0-9],', $arg);
    include_spip('inc/autoriser');
    if (intval($id_article) and intval($id_evenement) and autoriser('supprimer', 'evenement', $id_evenement, null, array('id_article' => $id_article))) {
        include_spip("action/editer_evenement");
        evenement_modifier($id_evenement, array('statut' => 'poubelle'));
    }
}
Exemplo n.º 3
0
function formulaires_editer_evenement_traiter_dist($id_evenement = 'new', $id_article = 0, $retour = '', $lier_trad = 0, $config_fonc = 'evenements_edit_config', $row = array(), $hidden = '')
{
    set_request('horaire', _request('horaire') == 'non' ? 'non' : 'oui');
    set_request('inscription', _request('inscription') ? 1 : 0);
    include_spip('inc/date_gestion');
    $erreurs = array();
    $date_debut = verifier_corriger_date_saisie('debut', _request('horaire') == 'oui', $erreurs);
    $date_fin = verifier_corriger_date_saisie('fin', _request('horaire') == 'oui', $erreurs);
    set_request('date_debut', date('Y-m-d H:i:s', $date_debut));
    set_request('date_fin', date('Y-m-d H:i:s', $date_fin));
    $res = formulaires_editer_objet_traiter('evenement', $id_evenement, $id_article, 0, $retour, $config_fonc, $row, $hidden);
    // si c'est une creation dans un article publie, passer l'evenement en publie
    // l'article peut être renseigné/modifié par l'utilisateur dans le formulaire. On le retrouve.
    if (!intval($id_evenement) and $id_article = sql_getfetsel('id_article', 'spip_evenements', 'id_evenement=' . $res['id_evenement']) and objet_test_si_publie('article', $id_article)) {
        // sera refuse si auteur pas autorise
        evenement_modifier($res['id_evenement'], array('statut' => 'publie'));
    }
    // a la creation, documenter la date de creation
    if (!intval($id_evenement)) {
        evenement_modifier($res['id_evenement'], array('date_creation' => date('Y-m-d H:i:s')));
    }
    $id_evenement = $res['id_evenement'];
    if ($res['redirect']) {
        if (strpos($res['redirect'], 'article') !== false) {
            $id_article = sql_getfetsel('id_article', 'spip_evenements', 'id_evenement=' . intval($id_evenement));
            $res['redirect'] = parametre_url($res['redirect'], 'id_article', $id_article);
        }
    }
    return $res;
}
Exemplo n.º 4
0
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 action_evenement_set($id_evenement, $set = null)
{
    return evenement_modifier($id_evenement, $set);
}
Exemplo n.º 6
0
/**
 * Synchroniser le statut des evenements lorsqu'on publie/depublie un article
 * @param array $flux
 * @return array
 */
function agenda_post_edition($flux)
{
    if ($flux['args']['table'] == 'spip_articles' and $flux['args']['action'] == 'instituer' and $id_article = $flux['args']['id_objet'] and isset($flux['data']['statut']) and $statut = $flux['data']['statut'] and $statut_ancien = $flux['args']['statut_ancien'] and $statut != $statut_ancien) {
        $set = array();
        // les evenements principaux, associes a cet article
        $where = array('id_article=' . intval($id_article), 'id_evenement_source=0');
        switch ($statut) {
            case 'poubelle':
                // on passe aussi tous les evenements associes a la poubelle, sans distinction
                $set['statut'] = 'poubelle';
                break;
            case 'publie':
                // on passe aussi tous les evenements prop en publie
                $set['statut'] = 'publie';
                $where[] = "statut='prop'";
                break;
            default:
                if ($statut_ancien == 'publie') {
                    // on depublie aussi tous les evenements publie
                    $set['statut'] = 'prop';
                    $where[] = "statut='publie'";
                }
                break;
        }
        if (count($set)) {
            include_spip('action/editer_evenement');
            $res = sql_select('id_evenement', 'spip_evenements', $where);
            // et on applique a tous les evenements lies a l'article
            while ($row = sql_fetch($res)) {
                evenement_modifier($row['id_evenement'], $set);
            }
        }
    }
    return $flux;
}
Exemplo n.º 7
0
function migrer_articles($where_articles, $champ_date_debut, $champ_date_fin, $horaire, $where_mots)
{
    include_spip('action/editer_evenement');
    $where_mots = implode(' AND ', $where_mots);
    $nb = 0;
    $res = sql_select('*', 'spip_articles', $where_articles);
    while ($row = sql_fetch($res)) {
        $id_evenement = evenement_inserer($row['id_article']);
        // mettre les champs
        $set = array('date_debut' => $row[$champ_date_debut], 'date_fin' => $row[$champ_date_fin], 'titre' => $row['titre'], 'horaire' => $horaire ? 'oui' : 'non');
        evenement_modifier($id_evenement, $set);
        // associer les mots : en sql pour ne pas exploser si plein de mots en base
        $mots = sql_allfetsel('M.id_mot', 'spip_mots AS M JOIN spip_mots_liens AS L ON (M.id_mot=L.id_mot AND L.objet=' . sql_quote('article') . ')', 'id_objet=' . intval($row['id_article']) . ' AND (' . $where_mots . ')');
        if (count($mots)) {
            $insert = array();
            foreach ($mots as $mot) {
                $insert[] = array('id_mot' => $mot['id_mot'], 'objet' => 'evenement', 'id_objet' => $id_evenement);
            }
            sql_insertq_multi('spip_mots_liens', $insert);
        }
        // publier l'evenement
        evenement_modifier($id_evenement, array('statut' => 'publie'));
        $nb++;
    }
    return $nb;
}