Changeset 46410 in spip-zone


Ignore:
Timestamp:
Apr 6, 2011, 2:53:32 PM (9 years ago)
Author:
gmichard@…
Message:

A l'import, vérification de l'existence d'une offre :
Si l'offre existe déjà, on compare sa date de mise à jour (si supérieure, on met à jour, sinon rien).
Si elle n'existe pas, on l'ajoute.

Créé un mot clé par commune, dans le groupe de mots "communes".
Créé des liaisons articles-mots.
Modifie le statut de publication des rubriques (en fonction de leur contenu) : elle sont créée à statut=0, et lors du premier ajout d'article : statut="publie".

Désinstallation du plugin :
Supprime toutes les modifications de la base dues au plugin : supprime les tables créées, et les contenus créés (rubriques, articles, liaison auteur-article, groupes mots, mots, liaison mots-article).

Location:
_plugins_/tourinfrance
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/tourinfrance/base/tourinfrance_install.php

    r46338 r46410  
    1313                        //maj_tables('spip_articles');
    1414                       
    15                         //Tableau des type d'offre.
    16                         $tab_types_tourinfrance = array('hot', 'hpa', 'hlo', 'res', 'fma', 'pna', 'pcu', 'deg', 'loi', 'asc', 'iti', 'vil', 'org', 'mul');
     15                        //Tableau des bordereaux.
     16                        include_spip('base/tourinfrance_bordereaux');
     17                        $tab_bordereaux_tourinfrance = creer_tab_bordereaux();
    1718                       
    18                         //CrŽation de RUBRIQUES pour chaque type d'offres
    19                         for($i=0; $i<count($tab_types_tourinfrance); $i++){
    20                         $id = sql_insertq('spip_rubriques', array('titre'=>$tab_types_tourinfrance[$i]));
     19                        //CrŽation de RUBRIQUES pour chaque bordereau (id_rubrique=id_secteur)
     20                        for($i=0; $i<count($tab_bordereaux_tourinfrance); $i++){
     21                        $id_rub = sql_insertq('spip_rubriques', array(
     22                                'titre'=>$tab_bordereaux_tourinfrance[$i],
     23                                'lang'=>'fr'
     24                        ));
     25                        sql_updateq('spip_rubriques', array('id_secteur'=>$id_rub), "id_rubrique=$id_rub");
    2126                        }
     27                       
     28                        $id_gp = sql_insertq('spip_groupes_mots', array(
     29                                'titre'=>'communes',
     30                                'descriptif'=>'Liste des communes associ&eacute;es &agrave; une offre Tourinfrance.',
     31                                'tables_liees'=>'articles',
     32                                'unseul'=>'non',
     33                                'obligatoire'=>'non',
     34                                'minirezo'=>'oui',
     35                                'comite'=>'oui',
     36                                'forum'=>'non',
     37                        ));
    2238                       
    2339                        ecrire_meta($nom_meta_base_version, $current_version=$version_cible, 'non');
     
    2945        include_spip('base/abstract_sql');
    3046   
    31     //Tableau des type d'offre.
    32         $tab_types_tourinfrance = array('hot', 'hpa', 'hlo', 'res', 'fma', 'pna', 'pcu', 'deg', 'loi', 'asc', 'iti', 'vil', 'org', 'mul');
     47    //Tableau des bordereaux.
     48        include_spip('base/tourinfrance_bordereaux');
     49        $tab_bordereaux_tourinfrance = creer_tab_bordereaux();
     50       
    3351   
    3452    // On efface les tables du plugin
    3553    sql_drop_table('spip_tourinfrance_flux');
    3654   
    37     //CrŽation des RUBRIQUES pour chaque type d'offres
    38         for($i=0; $i<count($tab_types_tourinfrance); $i++){
    39                 $nom_table = "spip_tourinfrance_" . $tab_types_tourinfrance[$i];
     55
     56        //Supprime le groupes de mots "communes", et tous ses mots clŽs.
     57        $req = sql_fetsel("id_groupe", "spip_groupes_mots", "titre='communes'");
     58        $id_gp_mot_communes = $req['id_groupe'];
     59        sql_delete("spip_mots", "id_groupe=" . $id_gp_mot_communes);
     60        sql_delete("spip_groupes_mots", "id_groupe=" . $id_gp_mot_communes);
     61   
     62   
     63    //Suppression des RUBRIQUES pour chaque bordereau
     64        for($i=0; $i<count($tab_bordereaux_tourinfrance); $i++){
     65                $nom_table = "spip_tourinfrance_" . $tab_bordereaux_tourinfrance[$i];
     66       
     67        $req = sql_fetsel("id_rubrique", "spip_rubriques", "titre='" . $tab_bordereaux_tourinfrance[$i] . "'");
     68        $id_rub = $req['id_rubrique'];
     69       
     70        if ($req2 = sql_select("id_article", "spip_articles", "id_rubrique=" . $id_rub)) {
     71                    while ($res2 = sql_fetch($req2)) {
     72                        $id_art = $res2['id_article'];
     73                       
     74                        //Supprime les liaisons des avec les articles.
     75                        sql_delete("spip_mots_articles", "id_article=" . $id_art);
     76                        sql_delete("spip_auteurs_articles", "id_article=" . $id_art);
     77                    }
     78                }
     79                //Supprime tous les articles de la rubrique
     80                sql_delete("spip_articles", "id_rubrique=" . $id_rub);
     81               
     82                //Supprime la rubrique du bordereau
     83        sql_delete("spip_rubriques", "titre = '" . $tab_bordereaux_tourinfrance[$i] . "'");
     84       
     85        //Supprime la table du bordereau
    4086        sql_drop_table($nom_table);
    41         sql_delete("spip_rubriques", "titre = '" . $tab_types_tourinfrance[$i] . "'");
    4287        }
    4388   
  • _plugins_/tourinfrance/base/tourinfrance_table.php

    r46338 r46410  
    44function tourinfrance_declarer_tables_interfaces($interface){
    55
    6         //Tableau des type d'offre.
    7         $tab_types_tourinfrance = array('hot', 'hpa', 'hlo', 'res', 'fma', 'pna', 'pcu', 'deg', 'loi', 'asc', 'iti', 'vil', 'org', 'mul');
     6        //Tableau des bordereaux.
     7        include_spip('base/tourinfrance_bordereaux');
     8        $tab_bordereaux_tourinfrance = creer_tab_bordereaux();
    89
    910   // 'spip_' dans l'index de $tables_principales
    1011        $interface['table_des_tables']['tourinfrance_flux']='tourinfrance_flux';
    1112       
    12         for($i=0; $i<count($tab_types_tourinfrance); $i++){
    13                 $nom_table = "tourinfrance_" . $tab_types_tourinfrance[$i];
     13        for($i=0; $i<count($tab_bordereaux_tourinfrance); $i++){
     14                $nom_table = "tourinfrance_" . $tab_bordereaux_tourinfrance[$i];
    1415        $interface['table_des_tables'][$nom_table]=$nom_table;
    1516        }
     
    2021function tourinfrance_declarer_tables_principales($tables_principales){
    2122       
    22         //Tableau des type d'offre.
    23         $tab_types_tourinfrance = array('hot', 'hpa', 'hlo', 'res', 'fma', 'pna', 'pcu', 'deg', 'loi', 'asc', 'iti', 'vil', 'org', 'mul');
     23        //Tableau des bordereaux.
     24        include_spip('base/tourinfrance_bordereaux');
     25        $tab_bordereaux_tourinfrance = creer_tab_bordereaux();
    2426       
    2527        /************************************************/
     
    3133                        "nom_offre"    => "text DEFAULT '' NOT NULL",
    3234                        "description_offre"    => "text DEFAULT '' NOT NULL",
     35                        "commune"    => "text DEFAULT '' NOT NULL",
    3336                        "datecrea"    => "text DEFAULT '' NOT NULL",
    3437                        "datemaj"    => "text DEFAULT '' NOT NULL",
    35                         "id_objettour"    => "text DEFAULT '' NOT NULL",
    3638                        "id_type"    => "text DEFAULT '' NOT NULL",
    3739                        "id_cat_cam"    => "text DEFAULT '' NOT NULL"
     
    4749       
    4850        /****************************************************************************/
    49         /*****  Creation de tables TOURINFRANCE_type par type d'offre  **************/
     51        /*****  Creation de tables TOURINFRANCE_bordereau par bordereau  **************/
    5052       
    51         for($i=0; $i<count($tab_types_tourinfrance); $i++){
     53        for($i=0; $i<count($tab_bordereaux_tourinfrance); $i++){
    5254       
    53                 $nom_tab = "tourinfrance_" . $tab_types_tourinfrance[$i];
     55                $nom_tab = "tourinfrance_" . $tab_bordereaux_tourinfrance[$i];
    5456                $nom_tab_key = $nom_tab . "_key";
    5557               
     
    6062                        "nom_offre"    => "text DEFAULT '' NOT NULL",
    6163                        "description_offre"    => "text DEFAULT '' NOT NULL",
    62                         "datecrea"    => "text DEFAULT '' NOT NULL",
    63                         "datemaj"    => "text DEFAULT '' NOT NULL",
    64                         "id_objettour"    => "text DEFAULT '' NOT NULL",
     64                        "commune"    => "text DEFAULT '' NOT NULL",
     65                        "datecrea"    => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
     66                        "datemaj"    => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
    6567                        "id_type"    => "text DEFAULT '' NOT NULL",
    6668                        "id_cat_cam"    => "text DEFAULT '' NOT NULL",
     
    7981        }
    8082       
    81        
    82         /*
    83         // Extension de la table ARTICLES
    84         $tables_principales['spip_articles']['field']['type_tourinsoft'] = "text DEFAULT '' NOT NULL"; 
    85         $tables_principales['spip_articles']['field']['donnees_tourinsoft'] = "text DEFAULT '' NOT NULL";
    86         $tables_principales['spip_articles']['field']['identifiant_offre_tourinsoft'] = "text DEFAULT '' NOT NULL";
    87         */
    88        
    8983        return $tables_principales;
    9084       
  • _plugins_/tourinfrance/contenu/page-import-tourinfrance.html

    r46338 r46410  
    11<B_flux>
    2 <ul>
    32        <BOUCLE_flux(TOURINFRANCE_FLUX)>
    4        
    5                 [<b>#ID_FLUX - (#URL_FLUX)</b><br />]
    63               
    7                 #SET{infos_flux, #ARRAY{id_offre, #ID_OFFRE, nom_offre, #NOM_OFFRE, description_offre, #DESCRIPTION_OFFRE, datecrea, #DATECREA, datemaj, #DATEMAJ, id_objettour, #ID_OBJETTOUR, id_type, #ID_TYPE, id_cat_cam, #ID_CAT_CAM}|serialize}
     4                #SET{infos_flux, #ARRAY{id_offre, #ID_OFFRE, nom_offre, #NOM_OFFRE, description_offre, #DESCRIPTION_OFFRE, commune, #COMMUNE, datecrea, #DATECREA, datemaj, #DATEMAJ, id_type, #ID_TYPE, id_cat_cam, #ID_CAT_CAM}|serialize}
    85                               
    96                [(#URL_FLUX|copie_locale{force}|traiter_donnees_tourinfrance{#ID_FLUX, #GET{infos_flux}})]
    107               
    118        </BOUCLE_flux>
    12 </ul>
    139</B_flux>
    14 <b>Aucun Flux n'est import&eacute;.</b>
     10<p><b>Aucun flux n'est import&eacute;.</b></p>
     11<p>La table "<i>spip_tourinfrance_flux</i>" est vide.</p>
    1512<//B_flux>
    1613
  • _plugins_/tourinfrance/tourinfrance_fonctions.php

    r46338 r46410  
    33
    44        if (file_exists($url_flux)) {
    5                
     5
    66                $xml = simplexml_load_file($url_flux);
    77               
     
    99               
    1010               
    11                 /*****  Liste des ELEMENTS déclarés  *****/
     11                /*****  Liste des ELEMENTS déclarés   !!!IMPORTANT!!!   *****/
     12                /*
    1213                $listeElements = $xml->xpath("//*[name()='xs:element']");
    1314                foreach ($listeElements as $element) {
    1415                        $c .= ' - ' . $element->getName() . ' : ' . $element->attributes() . "<br />";
    15                 }
     16                }*/
    1617               
    1718                /*****  PARCOURS DES OFFRES : <LISTING>  *****/
    1819                $offres = $xml->xpath('//child::LISTING');
    1920               
     21               
     22               
     23                $exec = "<b>Flux proposé à la base de données !</b><br />";
     24                $exec .= "URL : <i>$url_flux</i><br /><ul>";
     25               
     26                $retour_exec = "";
     27               
    2028                for($i=0; $i<count($offres); $i++){
    21                
    2229                       
    2330                        /*****  VALEURS des ELEMENTS DES OFFRES  *****/
     
    2734                        foreach( $offres[$i] as $element => $valeur ){
    2835               
    29                                 $contenu = strip_tags(trim($valeur->asXML()));
    30                                 //$contenus = $contenu->getElementsByTagName($element)->item(0)->textContent;
    31                                 //$contenus = $contenu->getElementsByTagName($element)->item(0)->textContent;
     36                                $contenu = trim(strip_tags($valeur->asXML()));
    3237                               
    3338                                if(in_array($element, $tab_infos_flux)){
     
    4045                        }
    4146                       
    42                         /*foreach( $commun as $cle => $valeur ){
    43                                 $c .= "<br />COMMUN == $cle = $valeur<br />";
    44                         }
    45                         foreach( $extra as $cle => $valeur ){
    46                                 $c .= "EXTRA == $cle = $valeur<br />";
    47                         }*/
    48                        
    4947                       
    5048                        /*****  DONNEES FORMATEES  *****/
     
    5452                       
    5553                        /*****  INSERER LES DONNEES  *****/     
    56                         inserer_donnees_tourinfrance($id_flux, $commun_srlz, $extra_srlz);
     54                        $retour_exec .= inserer_donnees_tourinfrance($id_flux, $commun_srlz, $extra_srlz);
    5755                       
    5856                }
     57               
     58                if($retour_exec == ""){
     59                        $retour_exec = "Aucune modification apportée.";
     60                }
     61               
     62                $exec .= $retour_exec . "</ul><br />";
    5963                               
    60             return "Flux ajout&eacute; !";
     64            return $exec;
    6165        }
    6266        else{
     
    6569       
    6670}
    67 
    6871function inserer_donnees_tourinfrance($id_flux, $commun_srlz, $extra_srlz) {
    6972
     
    7174        $extra = unserialize($extra_srlz);
    7275       
    73         $type_offre = strtolower($commun["id_type"]);
    74 
    75         //Recupere le TYPE D'OFFRE
    76         if ($req = sql_select("id_rubrique", "spip_rubriques", "titre='" . $type_offre . "'")) {
     76        $id_offre = $commun["id_offre"];
     77        $nom_offre = $commun["nom_offre"];
     78        $nom_commune = $commun["commune"];
     79        $datemaj = formater_date($commun["datemaj"]);
     80        $bordereau = strtolower($commun["id_type"]); //Bordereau
     81
     82        //RUBRIQUES : Recupere le TYPE D'OFFRE / BORDEREAU
     83        if ($req = sql_select("id_rubrique", "spip_rubriques", "titre=" . sql_quote($bordereau))) {
    7784            while ($res = sql_fetch($req)) {
    7885                $id_rubrique = $res['id_rubrique'];
     
    8087        }
    8188       
    82 
     89        //GROUPES_MOTS : Recupere ID du GROUPE "COMMUNES"
     90        if ($req = sql_select("id_groupe", "spip_groupes_mots", "titre='communes'")) {
     91            while ($res = sql_fetch($req)) {
     92                $id_gp_mot_communes = $res['id_groupe'];
     93            }
     94        }
     95       
     96        //MOTS_CLES : Test existance de la COMMUNE en MOT-CLE
     97        if ($req = sql_select("id_mot", "spip_mots", "titre=" . sql_quote($nom_commune))) {
     98            if ($res = sql_fetch($req)) {
     99                $id_mot = $res['id_mot'];
     100            }
     101            else{       //INSERTION SPIP_MOTS : Si la COMMUNE n'est pas en MOT CLE, on l'ajoute.
     102                        $id_mot = sql_insertq("spip_mots", array(
     103                                'titre'=>$nom_commune,
     104                                'id_groupe'=>$id_gp_mot_communes,
     105                                'type'=>'communes'
     106                        ));
     107            }
     108        }
     109       
    83110        //INSERER un ARTICLE dans la table SPIP_ARTICLES (bon id_rubrique)
    84111        $champ_article = array(
    85                 "id_rubrique" => $id_rubrique,
    86                 "titre" => $commun["nom_offre"],
    87                 "descriptif" => $commun["description_offre"]
     112                "id_rubrique" => $id_rubrique,
     113                "id_secteur" => $id_rubrique,
     114                "titre" => $commun["nom_offre"],
     115                "descriptif" => $commun["description_offre"],
     116                "texte" => $commun["description_offre"],
     117                "statut" => "publie"
    88118                );
    89         //INSERTION ARTICLE
    90         $id_article = sql_insertq("spip_articles", $champ_article);
    91 
    92        
    93         //INSERTION AUTEUR
    94         $liaison_auteur_article = sql_insertq("spip_auteurs_articles", array(
    95                 'id_auteur'=>'1',
    96                 'id_article'=>$id_article
    97         ));
    98        
    99119       
    100120        //INSERER dans la bonne table SPIP_TOURINFRANCE
    101         $nom_table_tourinfrance = "spip_tourinfrance_" . $type_offre;
     121        $nom_table_tourinfrance = "spip_tourinfrance_" . $bordereau;
    102122       
    103123        $champ_tourinfrance_type = $commun;
    104124        $champ_tourinfrance_type["id_flux"] = $id_flux;
    105         $champ_tourinfrance_type["id_article"] = $id_article;
    106125        $champ_tourinfrance_type["extra"] = $extra_srlz;
    107126       
    108         //INSERTION TOURINFRANCE
    109         $id_tourinfrance = sql_insertq($nom_table_tourinfrance, $champ_tourinfrance_type);
    110 
    111        
    112         //return  print_r($champ_article) . "<br />" . $nom_table_tourinfrance;
    113        
    114 }
    115 
     127       
     128       
     129        //Test l'EXISTANCE de l'offre, et si MISE A JOUR.
     130        $update = false;
     131        $exist = false;
     132        if ($req = sql_select("*", $nom_table_tourinfrance, "id_offre=" . sql_quote($id_offre))) {
     133            while ($res = sql_fetch($req)) {
     134                $exist = true;
     135                $id_article = $res['id_article'];
     136               
     137                $update = comparer_date($datemaj, $res['datemaj']); //true si MAJ
     138            }
     139        }
     140       
     141        /***********  IF !UPDATE  id_offre n'existe pas deja  ***************/
     142        if(!$exist){
     143       
     144                //MODIFICATION : Mise a jour statut de la rubrique si c'est le premier ajout.
     145                if (!sql_countsel('spip_articles', "id_rubrique=$id_rubrique")) {
     146                        sql_updateq('spip_rubriques', array('statut'=>'publie'), "id_rubrique=$id_rubrique");
     147                }
     148       
     149                //INSERTION ARTICLE
     150                $id_article = sql_insertq("spip_articles", $champ_article);
     151               
     152                //INSERTION AUTEURS_ARTICLES (liaison)
     153                $liaison_auteur_article = sql_insertq("spip_auteurs_articles", array(
     154                        'id_auteur'=>'1',
     155                        'id_article'=>$id_article
     156                ));
     157               
     158                //INSERTION MOTS_ARTICLES (liaison)
     159                $liaison_mot_article = sql_insertq("spip_mots_articles", array(
     160                        'id_mot'=>$id_mot,
     161                        'id_article'=>$id_article
     162                ));
     163               
     164                $champ_tourinfrance_type["id_article"] = $id_article;
     165               
     166                //INSERTION TOURINFRANCE
     167                $id_tourinfrance = sql_insertq($nom_table_tourinfrance, $champ_tourinfrance_type);
     168               
     169                $retour = "<li>ADDED : <b>Article n°" . $id_article . "</b> : " . $id_offre . " - " . $nom_offre . "</li>";
     170
     171        }
     172       
     173        /***********  IF UPDATE  id_offre existe deja  ***************/
     174        else if($update){
     175       
     176                //MODIFICATION ARTICLE
     177                sql_updateq("spip_articles", $champ_article, "id_article=" . intval($id_article));
     178               
     179                //MODIFICATION MOTS_ARTICLES (liaison)
     180                sql_updateq("spip_mots_articles", array('id_mot'=>$id_mot), "id_article='" . $id_article . "'");
     181               
     182                $champ_tourinfrance_type["id_article"] = $id_article;
     183               
     184                //MODIFICATION TOURINFRANCE
     185                sql_updateq($nom_table_tourinfrance, $champ_tourinfrance_type, "id_offre='" . $id_offre . "'");
     186               
     187                $retour = "<li>MODIFIED : <b>Article n°" . $id_article . "</b> : " . $id_offre . " - " . $nom_offre . "</li>";
     188
     189        }
     190
     191        return $retour;
     192       
     193}
     194function formater_date($date) {
     195        $date = str_replace('T', ' ', $date);
     196        return (substr($date,0,19));
     197}
     198function comparer_date($newdate, $exdate) {
     199
     200        $search = array('-', ' ', ':');
     201       
     202        $newdate = str_replace($search, '', $newdate);
     203        $exdate = str_replace($search, '', $exdate);
     204       
     205        $up = false;
     206        if($exdate!="00000000000000" && $newdate>$exdate){
     207                $up = true;
     208        }
     209       
     210        return $up;
     211}
    116212?>
Note: See TracChangeset for help on using the changeset viewer.