Changeset 101710 in spip-zone


Ignore:
Timestamp:
Jan 14, 2017, 10:48:34 AM (3 years ago)
Author:
marcimat@…
Message:

Tabulations, espaces, écritures (pas de changement fonctionnel).

Location:
_plugins_/partageur/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/partageur/trunk/exec/partageur_import.php

    r100332 r101710  
    55
    66function exec_partageur_import() {
    7   // droits
     7        // droits
    88        if (!autoriser('importer', 'partageur')) {
    99                include_spip('inc/minipres');
     
    1111                exit;
    1212        }
    13        
     13
    1414        // data
    1515        $id_rubrique = intval(_request("id_rubrique"));
     
    1717        $id_article = intval(_request("id_article"));
    1818        $cle = _request("cle");
    19        
    20   $callback = partageur_syndiquer($id_partageur,$id_article,$id_rubrique,$cle);
    21  
    22   if (is_int($callback)) {
    23         // nouvel article
    24         include_spip('inc/headers');
    25         $redirect =  generer_url_ecrire('article', "id_article=$callback",'&');
    26         redirige_par_entete($redirect);
    27   } else {
    28         // erreur: page 
    29         $commencer_page = charger_fonction('commencer_page', 'inc');
    30         echo $commencer_page(_T("partageur:ajout_via_partageur"),_T("partageur:ajout_via_partageur"),_T("partageur:ajout_via_partageur"));
    31         echo debut_gauche('', true);
    32         echo debut_droite('', true);
    33         echo "<h1>"._T('partageur:ajout_via_partageur')."</h1>";
    34         echo debut_cadre_relief(true);
    35         echo $callback;
    36        
    37         echo icone_verticale(_T('partageur:retour_partageur'), generer_url_ecrire('partageur_add', "id_rubrique=$id_rubrique"), "partageur-24.png", "new", 'right')
    38                                         . "<br class='nettoyeur' />";
    39         echo fin_cadre_relief();
    40         echo fin_gauche().fin_page();
    41 
    42   }
     19
     20        $callback = partageur_syndiquer($id_partageur,$id_article,$id_rubrique,$cle);
     21
     22        if (is_int($callback)) {
     23                // nouvel article
     24                include_spip('inc/headers');
     25                $redirect =  generer_url_ecrire('article', "id_article=$callback",'&');
     26                redirige_par_entete($redirect);
     27        } else {
     28                // erreur: page
     29                $commencer_page = charger_fonction('commencer_page', 'inc');
     30                echo $commencer_page(_T("partageur:ajout_via_partageur"),_T("partageur:ajout_via_partageur"),_T("partageur:ajout_via_partageur"));
     31                echo debut_gauche('', true);
     32                echo debut_droite('', true);
     33                echo "<h1>"._T('partageur:ajout_via_partageur')."</h1>";
     34                echo debut_cadre_relief(true);
     35                echo $callback;
     36
     37                echo icone_verticale(_T('partageur:retour_partageur'), generer_url_ecrire('partageur_add', "id_rubrique=$id_rubrique"), "partageur-24.png", "new", 'right')
     38                                        . "<br class='nettoyeur' />";
     39                echo fin_cadre_relief();
     40                echo fin_gauche().fin_page();
     41        }
    4342
    4443
     
    4948// fonction principale: partageur_syndique
    5049//
    51 // effectue la syndicatioe  d'un article ($id_article) d'un site distant ($id_partageur) pour l'importer dans une rubrique ($id_rubrique) 
     50// effectue la syndicatioe  d'un article ($id_article) d'un site distant ($id_partageur) pour l'importer dans une rubrique ($id_rubrique)
    5251//---------------------------------------
    5352function partageur_syndiquer($id_partageur,$id_article,$id_rubrique=0,$cle="") {
    54     include_spip("inc/distant");
    55     include_spip("inc/syndic");
    56     include_spip("inc/getdocument");
    57     include_spip("inc/ajouter_documents");
    58     include_spip("inc/renseigner_document");
    59     include_spip('inc/config');
    60 
    61     $log_html = "";
    62     $id_nouvel_article = false;
    63     $cle = strip_tags($cle);
    64    
    65     //------------------------------- 
    66     // Recupere la config ou charger les valeurs par defaut
    67     //-------------------------------
    68 
    69     if (lire_config('partageur/import_statut')=="publie") $import_statut = "publie";  else $import_statut = "prop";   
    70     if (lire_config('partageur/import_mot_article'))  $import_mot_article=true; else  $import_mot_article=false;
    71     if (lire_config('partageur/import_mot_evnt'))  $import_mot_evt=true; else  $import_mot_evt=false;
    72     if (lire_config('partageur/import_mot_groupe_creer')=="oui")  $import_mot_groupe_creer=true; else  $import_mot_groupe_creer=false;
    73     if (lire_config('partageur/import_mot_groupe'))  $id_import_mot_groupe = intval(lire_config('partageur/import_mot_groupe'));
    74                                                 else $id_import_mot_groupe = -1;
    75    
    76     //-------------------------------
    77     // selection du site
    78     //-------------------------------   
    79     if ($row_site = sql_fetsel("*","spip_partageurs",'id_partageur='.sql_quote($id_partageur))) {   
    80      
    81       $titre_site = $row_site["titre"];           
    82       $url_syndic = $row_site['url_site']."/spip.php?page=backend-partageur&id_article=$id_article&cle=".urlencode($cle);
    83       spip_log("partageur: ".$url_syndic);
    84          
    85       // Aller chercher les donnees du flux RSS et les analyser
    86       if (function_exists('recuperer_url'))
    87           $rss = recuperer_url($url_syndic);
    88       else
    89             $rss = recuperer_page($url_syndic,true);
    90 
    91       if (!$rss) {
    92         $log_html .= "<div style='color:red'>"._T('partageur:erreur_echec_syndication')."</div>"; 
    93       } else {
    94 
    95 
    96           if (function_exists('recuperer_url')){
    97               $rss = $rss['page'];
    98           }
    99 
    100         $articles = analyser_backend_partageur($rss);
    101          //----*************       
    102         // Des articles dispo pour ce site ?
    103         if (is_array($articles)) {
    104             foreach ($articles as $article) {
    105            
    106               if (isset($article['link'])) {                               
    107                 $documents_current_article = array();
    108                 $version_flux = $article['version_flux'];
    109                
    110                 $current_titre = $article['titre'];
    111                 $current_link  = $article['link'];                                             
    112                 // Est que l'article n'a pas été déjà importé ?                 
    113                 $articles_importes = sql_select("id_article,titre","spip_articles","s2s_url=".sql_quote($current_link));
    114                 if ($articles_importes and sql_count($articles_importes)>0) {
    115                    // article deja connu et present ds la base                   
    116                    $log_html .= "[<span style='color:#999'>"._T('partageur:imported_already')."</span>]\n";
    117                    while ($r = sql_fetch($articles_importes)) {
    118                        $log_html .= "<a href='".generer_url_ecrire('article', "id_article=".$r['id_article'],'&')."'>".$r['titre']."</a><br />";
    119                    }                   
    120                    spip_log("partageur: deja importe: ".$current_link);                   
    121                    
    122                 } else {
    123                    // nouvel article à importer
    124                    $log_html .= "[<span style='color:#090'>"._T('partageur:imported_new')."</span>] <a href='$current_link'>$current_titre</a>\n";
    125                    
    126                    // securite verifie sur rubrique destination existe
    127                    $target=$id_rubrique;
    128                    $is_rubrique_destination_valide = partageur_verifier_id_rubrique($id_rubrique);
    129                    if (!$is_rubrique_destination_valide) {  // pas de destination
    130                       $log_html .= _T('partageur:erreur_rubrique_invalide');                   
    131                    } else {   
    132                       // tout est bon, on insert les donnnees !
    133                      
    134                       // etape 1 -  traitement des documents
    135                       $_documents = $article['documents'];                   
    136                       $documents_current_article = array();
    137                       if ($_documents!="") {
    138                         $_documents = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $_documents );
    139                         $_documents = unserialize($_documents);                 
    140                         foreach($_documents as $_document) {                   
    141                             $id_distant = $_document['id'];
    142                             $source = $_document['url'];
    143                             $titre = stripslashes($_document['titre']);                       
    144                             $desc =  stripslashes($_document['desc']);
    145                             $fonction_renseigner='renseigner_source_distante';
    146                             if (!function_exists($fonction_renseigner))
    147                                 $fonction_renseigner='recuperer_infos_distantes';
    148 
    149                             if ($a = $fonction_renseigner($source)) {
    150                            
    151 
    152                                                 unset($a['mime_type']);
    153                                                 unset($a['type_image']);
    154                                                 unset($a['body']);
    155                                                 unset($a['mode']);
    156                                                 $a['date'] = 'NOW()';
    157                                                 $a['distant'] = 'oui';
    158                                                 $a['fichier'] = set_spip_doc($source);
    159                                                                                                
    160                                                 $a['titre'] = $titre;     // infos partageur, recuperer via le flux
    161                                                 $a['descriptif'] = $desc;
    162                                                 $documents_current_article[$id_distant] = sql_insertq("spip_documents", $a);
    163                                  
    164                                         }                           
    165                         }                       
    166                       }
    167                      
    168                      
    169                       // etape 2 -  traitement de l'article                             
    170                       $_surtitre = $article['surtitre'];
    171                                 $_titre = $article['titre'];
    172                                 $_soustitre = $article['soustitre'];
    173                                 $_descriptif = partageur_convert_extra($article['descriptif'],$documents_current_article,$version_flux);
    174                                 $_chapo = partageur_convert_extra($article['chapo'],$documents_current_article,$version_flux);
    175                                 $_texte = partageur_convert_extra($article['texte'],$documents_current_article,$version_flux);
    176                                 $_ps = partageur_convert_extra($article['ps'],$documents_current_article,$version_flux);
    177                                 $_date =  date('Y-m-d H:i:s',time()); // $article['date'];  // date de la syndication ou date de l'article ?
    178                                 $_lang = $article['lang'];
    179                                 $_logo = $article['logo']; 
    180                                 $_id_rubrique = $target;
    181                       $_id_secteur = partageur_get_id_secteur($target);                                                 
    182                                 $_statut = $import_statut;
    183                                 $_id_auteur = $article['auteur'];
    184                                 $_link = $article['link'];
    185                                 $_trad = $article['trad'];
    186                                                                          
    187                                                                                
    188                                 // ....dans la table articles                                   
    189                                 $id_nouvel_article = sql_insertq("spip_articles",array(
    190                                               'lang' => $_lang,
    191                                               'surtitre' => $_surtitre,
    192                                               'titre' => $_titre,
    193                                               'soustitre' => $_soustitre,
    194                                               'id_rubrique' => $_id_rubrique,
    195                                               'id_secteur' => $_id_secteur,
    196                                               'descriptif' => $_descriptif,
    197                                               'chapo' => $_chapo,
    198                                               'texte' => $_texte,
    199                                               'ps' => $_ps,
    200                                               'statut' => $_statut,
    201                                               'accepter_forum' => 'non',
    202                                               'date' => $_date,
    203                                               's2s_url' => $_link,
    204                                               's2s_url_trad' => $_trad,
    205                                               ));                                       
    206                                         $log_html  .= "<a href='?exec=articles&amp;id_article=$id_nouvel_article' style='padding:5px;border-bottom:3px solid;background:#eee;display:block;'>"._T('spiptospip:imported_view')."</a>";
    207                      
    208                       // gestion lien traduction
    209                      if  ($_trad) {                     
    210                           if ($_trad == $_link) { // il s'agit de l'article origine de traduc
    211                               sql_updateq('spip_articles', array("id_trad"=>$id_nouvel_article), "id_article=$id_nouvel_article");   // maj article orig trad                             
    212                               sql_updateq('spip_articles', array("id_trad"=>$id_nouvel_article), "s2s_url_trad=".sql_quote($_link)); // maj article trad (si deja importe ds une session precedente)
    213                           } else { // il s'agit d'un article traduit, on cherche si on a l'article origine de trad en local
    214                               if ($row = sql_fetsel("id_article","spip_articles","s2s_url=".sql_quote($_trad))) {
    215                                   $id_article_trad = (int) $row['id_article'];                                 
    216                                   sql_updateq('spip_articles', array("id_trad"=>$id_article_trad), "id_article=$id_nouvel_article"); // maj article trad
    217                                   sql_updateq('spip_articles', array("id_trad"=>$id_article_trad), "id_article=$id_article_trad");   // maj article orig trad (si deja importe ds une session precedente)
    218                               }
    219                           }                                   
    220                       }
    221                                                                
    222                       // ... dans la table auteurs
    223                       if ($_id_auteur) {
    224                                             $auteurs = explode(", ",$_id_auteur);
    225                                             foreach($auteurs as $auteur) {
    226                                                 $id_auteur = partageur_get_id_auteur($auteur);
    227                                                 if ($id_auteur)         
    228                                 @sql_insertq("spip_auteurs_liens",array('id_auteur'=>$id_auteur,'objet'=>'article','vu'=>'non','id_objet'=>$id_nouvel_article));
    229                           }
    230                       }
    231                      
    232                       // ....dans la table documents_article
    233                       foreach($documents_current_article as $document_current_article) {
    234                           @sql_insertq('spip_documents_liens',array(
    235                                       'id_document'=>$document_current_article, 'id_objet'=>$id_nouvel_article,
    236                                       'objet' => 'article'));
    237                       } 
    238                      
    239                       // ... si logo, tente de l'importer                     
    240                       if ($_logo) {                                         
    241                             $logo_local = copie_locale($_logo);                         
    242                             if ($logo_local) {                                 
    243                                 $logo_local_dest = "IMG/arton$id_nouvel_article.".substr($logo_local,-3);                                                       
    244                                 @rename( _DIR_RACINE.$logo_local, _DIR_RACINE.$logo_local_dest);
    245                             }
    246                       }
    247                      
    248                       // etape 3 - traitement des mots de l'article
    249                       $_mots = $article['mots'];                                           
    250                       if ($_mots!="" && $import_mot_article) { 
    251                         $_mots = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $_mots );                     
    252                         $_mots = unserialize($_mots);                         
    253                         foreach($_mots as $_mot) {                                               
    254                             $groupe = stripslashes($_mot['groupe']);                           
    255                             $titre  = stripslashes($_mot['titre']);                                                     
    256                             partageur_insert_mode_article($id_nouvel_article, $titre, $groupe, $import_mot_groupe_creer, $id_import_mot_groupe,"article");                                             
    257                         }
    258                       }
    259                            
    260                      
    261                       // etape 4 - traitement des evenements
    262                       $_evenements = $article['evenements'];                                           
    263                       if ($_evenements!="") {
    264                         $_evenements = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $_evenements );
    265                         $_evenements = unserialize(base64_decode($_evenements));
    266                         foreach($_evenements as $_evenement) {
    267                             $datedeb = $_evenement['datedeb'];                           
    268                             $datefin = $_evenement['datefin'];
    269                             $lieu = stripslashes($_evenement['lieu']);
    270                             $adresse = partageur_convert_extra(stripslashes($_evenement['adresse']),$documents_current_article,$version_flux);
    271                             $horaire = $_evenement['horaire'];
    272                             $titre = stripslashes($_evenement['titre']);                       
    273                             $desc = partageur_convert_extra(stripslashes($_evenement['desc']),$documents_current_article,$version_flux);
    274                             $motevts = $_evenement['motevts'];
    275                                                                                                                                                                      
    276                             $id_nouvel_evt = sql_insertq('spip_evenements',array(
    277                                                                             'id_article'=> $id_nouvel_article,
    278                                                                             'date_debut'=> $datedeb,
    279                                                                             'date_fin'=> $datefin,
    280                                                                             'titre'=>$titre,
    281                                                                             'descriptif'=>$desc,
    282                                                                             'lieu'=>$lieu,
    283                                                                             'adresse'=>$adresse,
    284                                                                             'horaire'=>$horaire,
    285                                         'statut'=>$import_statut));
    286                             $log_html .= "<div style='padding:2px 5px;border-bottom:1px solid #5DA7C5;background:#eee;display:block;'>"._T('partageur:event_ok')." : $datedeb  $lieu</div>";
    287                                                                
    288                             // mot cle ?                           
    289                             if ($motevts!="" && $import_mot_evt) {
    290                               foreach($motevts as $motevt) {                               
    291                                 $groupe = stripslashes($motevt['groupe']);                           
    292                                 $titre  = stripslashes($motevt['titre']);
    293                                 partageur_insert_mode_article($id_nouvel_evt, $titre, $groupe, $import_mot_groupe_creer, $id_import_mot_groupe, "evenement");                             
    294                               }
    295                             }                           
    296                             // #mot cle                 
    297                         }
    298                       } // # etape 4: evenements
    299                    
    300 
    301                    }  // # insert article
    302                    
    303                  
    304                 }
    305 
    306               } 
    307              
    308              
    309 
    310             }
    311         } else {
    312           $log_html .= "<div style='color:purple'>"._T('partageur:erreur_aucun_article')."</div>";
    313         }
    314         // #analyse article
    315         //----*************
    316       }         
    317    
    318      
    319     } // #selection du site
    320    
    321 
    322     if ($id_nouvel_article) return $id_nouvel_article;
    323                     else    return $log_html;   
    324    
     53        include_spip("inc/distant");
     54        include_spip("inc/syndic");
     55        include_spip("inc/getdocument");
     56        include_spip("inc/ajouter_documents");
     57        include_spip("inc/renseigner_document");
     58        include_spip('inc/config');
     59
     60        $log_html = "";
     61        $id_nouvel_article = false;
     62        $cle = strip_tags($cle);
     63
     64        //-------------------------------
     65        // Recupere la config ou charger les valeurs par defaut
     66        //-------------------------------
     67
     68        if (lire_config('partageur/import_statut')=="publie") $import_statut = "publie";  else $import_statut = "prop";
     69        if (lire_config('partageur/import_mot_article'))  $import_mot_article=true; else  $import_mot_article=false;
     70        if (lire_config('partageur/import_mot_evnt'))  $import_mot_evt=true; else  $import_mot_evt=false;
     71        if (lire_config('partageur/import_mot_groupe_creer')=="oui")  $import_mot_groupe_creer=true; else  $import_mot_groupe_creer=false;
     72        if (lire_config('partageur/import_mot_groupe')) {
     73                $id_import_mot_groupe = intval(lire_config('partageur/import_mot_groupe'));
     74        } else {
     75                $id_import_mot_groupe = -1;
     76        }
     77
     78        //-------------------------------
     79        // selection du site
     80        //-------------------------------
     81        if ($row_site = sql_fetsel("*","spip_partageurs",'id_partageur='.sql_quote($id_partageur))) {
     82
     83                $titre_site = $row_site["titre"];
     84                $url_syndic = $row_site['url_site']."/spip.php?page=backend-partageur&id_article=$id_article&cle=".urlencode($cle);
     85                spip_log("partageur: ".$url_syndic);
     86
     87                // Aller chercher les donnees du flux RSS et les analyser
     88                if (function_exists('recuperer_url')) {
     89                  $rss = recuperer_url($url_syndic);
     90                } else {
     91                        $rss = recuperer_page($url_syndic,true);
     92                }
     93
     94                if (!$rss) {
     95                        $log_html .= "<div style='color:red'>"._T('partageur:erreur_echec_syndication')."</div>";
     96                } else {
     97
     98                        if (function_exists('recuperer_url')){
     99                                $rss = $rss['page'];
     100                        }
     101
     102                        $articles = analyser_backend_partageur($rss);
     103                         //----*************
     104                        // Des articles dispo pour ce site ?
     105                        if (is_array($articles)) {
     106                                foreach ($articles as $article) {
     107
     108                                        if (isset($article['link'])) {
     109                                                $documents_current_article = array();
     110                                                $version_flux = $article['version_flux'];
     111
     112                                                $current_titre = $article['titre'];
     113                                                $current_link  = $article['link'];
     114                                                // Est que l'article n'a pas été déjà importé ?
     115                                                $articles_importes = sql_select("id_article,titre","spip_articles","s2s_url=".sql_quote($current_link));
     116                                                if ($articles_importes and sql_count($articles_importes)>0) {
     117                                                   // article deja connu et present ds la base
     118                                                   $log_html .= "[<span style='color:#999'>"._T('partageur:imported_already')."</span>]\n";
     119                                                   while ($r = sql_fetch($articles_importes)) {
     120                                                           $log_html .= "<a href='".generer_url_ecrire('article', "id_article=".$r['id_article'],'&')."'>".$r['titre']."</a><br />";
     121                                                   }
     122                                                   spip_log("partageur: deja importe: ".$current_link);
     123
     124                                                } else {
     125                                                   // nouvel article à importer
     126                                                   $log_html .= "[<span style='color:#090'>"._T('partageur:imported_new')."</span>] <a href='$current_link'>$current_titre</a>\n";
     127
     128                                                   // securite verifie sur rubrique destination existe
     129                                                   $target=$id_rubrique;
     130                                                   $is_rubrique_destination_valide = partageur_verifier_id_rubrique($id_rubrique);
     131                                                   if (!$is_rubrique_destination_valide) {  // pas de destination
     132                                                          $log_html .= _T('partageur:erreur_rubrique_invalide');
     133                                                   } else {
     134                                                          // tout est bon, on insert les donnnees !
     135
     136                                                          // etape 1 -  traitement des documents
     137                                                          $_documents = $article['documents'];
     138                                                          $documents_current_article = array();
     139                                                          if ($_documents!="") {
     140                                                                $_documents = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $_documents );
     141                                                                $_documents = unserialize($_documents);
     142                                                                foreach($_documents as $_document) {
     143                                                                        $id_distant = $_document['id'];
     144                                                                        $source = $_document['url'];
     145                                                                        $titre = stripslashes($_document['titre']);
     146                                                                        $desc =  stripslashes($_document['desc']);
     147                                                                        $fonction_renseigner='renseigner_source_distante';
     148                                                                        if (!function_exists($fonction_renseigner))
     149                                                                                $fonction_renseigner='recuperer_infos_distantes';
     150
     151                                                                        if ($a = $fonction_renseigner($source)) {
     152
     153
     154                                                                                        unset($a['mime_type']);
     155                                                                                        unset($a['type_image']);
     156                                                                                        unset($a['body']);
     157                                                                                        unset($a['mode']);
     158                                                                                        $a['date'] = 'NOW()';
     159                                                                                        $a['distant'] = 'oui';
     160                                                                                        $a['fichier'] = set_spip_doc($source);
     161
     162                                                                                        $a['titre'] = $titre;     // infos partageur, recuperer via le flux
     163                                                                                        $a['descriptif'] = $desc;
     164                                                                                        $documents_current_article[$id_distant] = sql_insertq("spip_documents", $a);
     165
     166                                                                                }
     167                                                                }
     168                                                          }
     169
     170
     171                                                          // etape 2 -  traitement de l'article
     172                                                          $_surtitre = $article['surtitre'];
     173                                                                $_titre = $article['titre'];
     174                                                                $_soustitre = $article['soustitre'];
     175                                                                $_descriptif = partageur_convert_extra($article['descriptif'],$documents_current_article,$version_flux);
     176                                                                $_chapo = partageur_convert_extra($article['chapo'],$documents_current_article,$version_flux);
     177                                                                $_texte = partageur_convert_extra($article['texte'],$documents_current_article,$version_flux);
     178                                                                $_ps = partageur_convert_extra($article['ps'],$documents_current_article,$version_flux);
     179                                                                $_date =  date('Y-m-d H:i:s',time()); // $article['date'];  // date de la syndication ou date de l'article ?
     180                                                                $_lang = $article['lang'];
     181                                                                $_logo = $article['logo'];
     182                                                                $_id_rubrique = $target;
     183                                                          $_id_secteur = partageur_get_id_secteur($target);
     184                                                                $_statut = $import_statut;
     185                                                                $_id_auteur = $article['auteur'];
     186                                                                $_link = $article['link'];
     187                                                                $_trad = $article['trad'];
     188
     189
     190                                                                // ....dans la table articles
     191                                                                $id_nouvel_article = sql_insertq("spip_articles",array(
     192                                                                                                          'lang' => $_lang,
     193                                                                                                          'surtitre' => $_surtitre,
     194                                                                                                          'titre' => $_titre,
     195                                                                                                          'soustitre' => $_soustitre,
     196                                                                                                          'id_rubrique' => $_id_rubrique,
     197                                                                                                          'id_secteur' => $_id_secteur,
     198                                                                                                          'descriptif' => $_descriptif,
     199                                                                                                          'chapo' => $_chapo,
     200                                                                                                          'texte' => $_texte,
     201                                                                                                          'ps' => $_ps,
     202                                                                                                          'statut' => $_statut,
     203                                                                                                          'accepter_forum' => 'non',
     204                                                                                                          'date' => $_date,
     205                                                                                                          's2s_url' => $_link,
     206                                                                                                          's2s_url_trad' => $_trad,
     207                                                                                                          ));
     208                                                                        $log_html  .= "<a href='?exec=articles&amp;id_article=$id_nouvel_article' style='padding:5px;border-bottom:3px solid;background:#eee;display:block;'>"._T('spiptospip:imported_view')."</a>";
     209
     210                                                          // gestion lien traduction
     211                                                         if  ($_trad) {
     212                                                                  if ($_trad == $_link) { // il s'agit de l'article origine de traduc
     213                                                                          sql_updateq('spip_articles', array("id_trad"=>$id_nouvel_article), "id_article=$id_nouvel_article");   // maj article orig trad
     214                                                                          sql_updateq('spip_articles', array("id_trad"=>$id_nouvel_article), "s2s_url_trad=".sql_quote($_link)); // maj article trad (si deja importe ds une session precedente)
     215                                                                  } else { // il s'agit d'un article traduit, on cherche si on a l'article origine de trad en local
     216                                                                          if ($row = sql_fetsel("id_article","spip_articles","s2s_url=".sql_quote($_trad))) {
     217                                                                                  $id_article_trad = (int) $row['id_article'];
     218                                                                                  sql_updateq('spip_articles', array("id_trad"=>$id_article_trad), "id_article=$id_nouvel_article"); // maj article trad
     219                                                                                  sql_updateq('spip_articles', array("id_trad"=>$id_article_trad), "id_article=$id_article_trad");   // maj article orig trad (si deja importe ds une session precedente)
     220                                                                          }
     221                                                                  }
     222                                                          }
     223
     224                                                          // ... dans la table auteurs
     225                                                          if ($_id_auteur) {
     226                                                                                $auteurs = explode(", ",$_id_auteur);
     227                                                                                foreach($auteurs as $auteur) {
     228                                                                                        $id_auteur = partageur_get_id_auteur($auteur);
     229                                                                                        if ($id_auteur)
     230                                                                                @sql_insertq("spip_auteurs_liens",array('id_auteur'=>$id_auteur,'objet'=>'article','vu'=>'non','id_objet'=>$id_nouvel_article));
     231                                                                  }
     232                                                          }
     233
     234                                                          // ....dans la table documents_article
     235                                                          foreach($documents_current_article as $document_current_article) {
     236                                                                  @sql_insertq('spip_documents_liens',array(
     237                                                                                          'id_document'=>$document_current_article, 'id_objet'=>$id_nouvel_article,
     238                                                                                          'objet' => 'article'));
     239                                                          }
     240
     241                                                          // ... si logo, tente de l'importer
     242                                                          if ($_logo) {
     243                                                                        $logo_local = copie_locale($_logo);
     244                                                                        if ($logo_local) {
     245                                                                                $logo_local_dest = "IMG/arton$id_nouvel_article.".substr($logo_local,-3);
     246                                                                                @rename( _DIR_RACINE.$logo_local, _DIR_RACINE.$logo_local_dest);
     247                                                                        }
     248                                                          }
     249
     250                                                          // etape 3 - traitement des mots de l'article
     251                                                          $_mots = $article['mots'];
     252                                                          if ($_mots!="" && $import_mot_article) {
     253                                                                $_mots = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $_mots );
     254                                                                $_mots = unserialize($_mots);
     255                                                                foreach($_mots as $_mot) {
     256                                                                        $groupe = stripslashes($_mot['groupe']);
     257                                                                        $titre  = stripslashes($_mot['titre']);
     258                                                                        partageur_insert_mode_article($id_nouvel_article, $titre, $groupe, $import_mot_groupe_creer, $id_import_mot_groupe,"article");
     259                                                                }
     260                                                          }
     261
     262
     263                                                          // etape 4 - traitement des evenements
     264                                                          $_evenements = $article['evenements'];
     265                                                          if ($_evenements!="") {
     266                                                                $_evenements = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $_evenements );
     267                                                                $_evenements = unserialize(base64_decode($_evenements));
     268                                                                foreach($_evenements as $_evenement) {
     269                                                                        $datedeb = $_evenement['datedeb'];
     270                                                                        $datefin = $_evenement['datefin'];
     271                                                                        $lieu = stripslashes($_evenement['lieu']);
     272                                                                        $adresse = partageur_convert_extra(stripslashes($_evenement['adresse']),$documents_current_article,$version_flux);
     273                                                                        $horaire = $_evenement['horaire'];
     274                                                                        $titre = stripslashes($_evenement['titre']);
     275                                                                        $desc = partageur_convert_extra(stripslashes($_evenement['desc']),$documents_current_article,$version_flux);
     276                                                                        $motevts = $_evenement['motevts'];
     277
     278                                                                        $id_nouvel_evt = sql_insertq('spip_evenements',array(
     279                                                                                                                        'id_article'=> $id_nouvel_article,
     280                                                                                                                        'date_debut'=> $datedeb,
     281                                                                                                                        'date_fin'=> $datefin,
     282                                                                                                                        'titre'=>$titre,
     283                                                                                                                        'descriptif'=>$desc,
     284                                                                                                                        'lieu'=>$lieu,
     285                                                                                                                        'adresse'=>$adresse,
     286                                                                                                                        'horaire'=>$horaire,
     287                                                                                                'statut'=>$import_statut));
     288                                                                        $log_html .= "<div style='padding:2px 5px;border-bottom:1px solid #5DA7C5;background:#eee;display:block;'>"._T('partageur:event_ok')." : $datedeb  $lieu</div>";
     289
     290                                                                        // mot cle ?
     291                                                                        if ($motevts!="" && $import_mot_evt) {
     292                                                                          foreach($motevts as $motevt) {
     293                                                                                $groupe = stripslashes($motevt['groupe']);
     294                                                                                $titre  = stripslashes($motevt['titre']);
     295                                                                                partageur_insert_mode_article($id_nouvel_evt, $titre, $groupe, $import_mot_groupe_creer, $id_import_mot_groupe, "evenement");
     296                                                                          }
     297                                                                        }
     298                                                                        // #mot cle
     299                                                                }
     300                                                          } // # etape 4: evenements
     301
     302
     303                                                   }  // # insert article
     304
     305
     306                                                }
     307
     308                                        }
     309
     310
     311
     312                                }
     313                        } else {
     314                                $log_html .= "<div style='color:purple'>"._T('partageur:erreur_aucun_article')."</div>";
     315                        }
     316                        // #analyse article
     317                        //----*************
     318                }
     319
     320
     321        } // #selection du site
     322
     323
     324        if ($id_nouvel_article) {
     325                return $id_nouvel_article;
     326        } else {
     327                return $log_html;
     328        }
    325329}
    326330
     
    333337// verifie s'il s'agit du bon format de backend
    334338// a terme peut etre utile pour recuperer le numero de version
    335 function is_partageur_backend($str) { 
     339function is_partageur_backend($str) {
    336340        // Chercher un numero de version
    337         if (preg_match('/(spip2spip)[[:space:]](([^>]*[[:space:]])*)version[[:space:]]*=[[:space:]]*[\'"]([-_a-zA-Z0-9\.]+)[\'"]/', $str, $regs)) 
    338             return true;
    339          return false;
    340 }
    341 
    342 // 
    343 // parse le backend xml partageur 
     341        if (preg_match('/(spip2spip)[[:space:]](([^>]*[[:space:]])*)version[[:space:]]*=[[:space:]]*[\'"]([-_a-zA-Z0-9\.]+)[\'"]/', $str, $regs))
     342                return true;
     343                 return false;
     344}
     345
     346//
     347// parse le backend xml partageur
    344348// basée sur la fonction originale: ecrire/inc/syndic.php -> analyser_backend()
    345 function analyser_backend_partageur($rss){ 
     349function analyser_backend_partageur($rss){
    346350  include_spip("inc_texte.php"); # pour couper()
    347351        include_spip("inc_filtres.php"); # pour filtrer_entites()
    348                
    349         $xml_tags = array('surtitre','titre','soustitre','descriptif','chapo','texte','ps','auteur','link','trad','evenements', 'lang','logo','keyword','mots','licence','documents'); 
    350        
     352
     353        $xml_tags = array('surtitre','titre','soustitre','descriptif','chapo','texte','ps','auteur','link','trad','evenements', 'lang','logo','keyword','mots','licence','documents');
     354
    351355        $syndic_regexp = array(
    352356                                'item'           => ',<item[>[:space:]],i',
    353357                                'itemfin'        => '</item>',
    354                                
     358
    355359                                'surtitre'       => ',<surtitre[^>]*>(.*?)</surtitre[^>]*>,ims',
    356360                                'titre'          => ',<titre[^>]*>(.*?)</titre[^>]*>,ims',
    357361                                'soustitre'      => ',<soustitre[^>]*>(.*?)</soustitre[^>]*>,ims',
    358                                 'descriptif'     => ',<descriptif[^>]*>(.*?)</descriptif[^>]*>,ims',                           
    359                                 'chapo'          => ',<chapo[^>]*>(.*?)</chapo[^>]*>,ims',                             
    360                                 'texte'          => ',<texte[^>]*>(.*?)</texte[^>]*>,ims',                             
     362                                'descriptif'     => ',<descriptif[^>]*>(.*?)</descriptif[^>]*>,ims',
     363                                'chapo'          => ',<chapo[^>]*>(.*?)</chapo[^>]*>,ims',
     364                                'texte'          => ',<texte[^>]*>(.*?)</texte[^>]*>,ims',
    361365                                'ps'             => ',<ps[^>]*>(.*?)</ps[^>]*>,ims',
    362366                                'auteur'         => ',<auteur[^>]*>(.*?)</auteur[^>]*>,ims',
     
    364368                                'trad'           => ',<trad[^>]*>(.*?)</trad[^>]*>,ims',
    365369                                'evenements'     => ',<evenements[^>]*>(.*?)</evenements[^>]*>,ims',
    366         'lang'           => ',<lang[^>]*>(.*?)</lang[^>]*>,ims',
    367         'logo'           => ',<logo[^>]*>(.*?)</logo[^>]*>,ims',
    368         'keyword'        => ',<keyword[^>]*>(.*?)</keyword[^>]*>,ims',
    369         'mots'           => ',<mots[^>]*>(.*?)</mots[^>]*>,ims',
    370         'licence'        => ',<licence[^>]*>(.*?)</licence[^>]*>,ims',
    371         'documents'      => ',<documents[^>]*>(.*?)</documents[^>]*>,ims',
    372                
     370                'lang'           => ',<lang[^>]*>(.*?)</lang[^>]*>,ims',
     371                'logo'           => ',<logo[^>]*>(.*?)</logo[^>]*>,ims',
     372                'keyword'        => ',<keyword[^>]*>(.*?)</keyword[^>]*>,ims',
     373                'mots'           => ',<mots[^>]*>(.*?)</mots[^>]*>,ims',
     374                'licence'        => ',<licence[^>]*>(.*?)</licence[^>]*>,ims',
     375                'documents'      => ',<documents[^>]*>(.*?)</documents[^>]*>,ims',
     376
    373377        );
    374        
     378
    375379        // documents
    376         $xml_doc_tags = array('id','url','titre','desc');       
    377         $document_regexp = array(               
     380        $xml_doc_tags = array('id','url','titre','desc');
     381        $document_regexp = array(
    378382                        'document'       => ',<document[>[:space:]],i',
    379383                                'documentfin'    => '</document>',
    380                
     384
    381385                                'id'             => ',<id[^>]*>(.*?)</id[^>]*>,ims',
    382         'url'            => ',<url[^>]*>(.*?)</url[^>]*>,ims',
     386                'url'            => ',<url[^>]*>(.*?)</url[^>]*>,ims',
    383387                                'titre'          => ',<titre[^>]*>(.*?)</titre[^>]*>,ims',
    384388                                'desc'           => ',<desc[^>]*>(.*?)</desc[^>]*>,ims',
    385389        );
    386        
     390
    387391        // mots
    388         $xml_mot_tags = array('groupe','titre');       
    389         $mot_regexp = array(           
     392        $xml_mot_tags = array('groupe','titre');
     393        $mot_regexp = array(
    390394                        'mot'       => ',<mot[>[:space:]],i',
    391395                                'motfin'    => '</mot>',
    392                
     396
    393397                                'groupe'    => ',<groupe[^>]*>(.*?)</groupe[^>]*>,ims',
    394398                                'titre'     => ',<titre[^>]*>(.*?)</titre[^>]*>,ims',
    395399        );
    396        
     400
    397401        // evenements
    398402        $xml_event_tags = array('datedeb','datefin','titre','desc','lieu','adresse','horaire','motevts');
    399403        // on ne gere pas pour l'instant idevent/idsource qui permet de conserver la liaison des repetitions
    400        
    401         $evenement_regexp = array(             
     404
     405        $evenement_regexp = array(
    402406                        'evenement'        => ',<evenement[>[:space:]],i',
    403                                 'evenementfin'     => '</evenement>',                           
    404         'datedeb'          => ',<datedeb[^>]*>(.*?)</datedeb[^>]*>,ims',
     407                                'evenementfin'     => '</evenement>',
     408                'datedeb'          => ',<datedeb[^>]*>(.*?)</datedeb[^>]*>,ims',
    405409                                'datefin'          => ',<datefin[^>]*>(.*?)</datefin[^>]*>,ims',
    406410                                'titre'            => ',<titre[^>]*>(.*?)</titre[^>]*>,ims',
     
    409413                                'adresse'          => ',<adresse[^>]*>(.*?)</adresse[^>]*>,ims',
    410414                                'horaire'          => ',<horaire[^>]*>(.*?)</horaire[^>]*>,ims',
    411         'motevts'          => ',<motevts[^>]*>(.*?)</motevts[^>]*>,ims',                               
     415                'motevts'          => ',<motevts[^>]*>(.*?)</motevts[^>]*>,ims',
    412416        );
    413        
     417
    414418  $xml_motevt_tags = array('groupe','titre');
    415         $motevt_regexp = array(         
     419        $motevt_regexp = array(
    416420                        'motevt'       => ',<motevt[>[:space:]],i',
    417421                                'motevtfin'    => '</motevt>',
    418                
     422
    419423                                'groupe'    => ',<groupe[^>]*>(.*?)</groupe[^>]*>,ims',
    420424                                'titre'     => ',<titre[^>]*>(.*?)</titre[^>]*>,ims',
    421425        );
    422        
     426
    423427        // fichier backend correct ?
    424428        if (!is_partageur_backend($rss)) return _T('spiptospip:avis_echec_syndication_01');
    425        
     429
    426430        // Echapper les CDATA
    427431        $echappe_cdata = array();
     
    433437                }
    434438        }
    435        
     439
    436440  // supprimer les commentaires
    437441        $rss = preg_replace(',<!--\s+.*\s-->,Ums', '', $rss);
    438        
     442
    439443        // multi (pas echappe)
    440444        $rss = str_replace("&lt;multi&gt;",  "@@@MULTI@@@", $rss);
    441445        $rss = str_replace("&lt;/multi&gt;",  "@@@MULTJ@@@", $rss);
    442        
     446
    443447        // lien interne  <- (pas echappe)
    444448        $rss = str_replace("&lt;-",  "@@@LIEN_INV@@@", $rss);
    445        
     449
    446450        // version du flux
    447451        $version_flux = 0;
    448         if (preg_match_all(',<spip2spip version="(.*?)">,Uims',$rss,$r, PREG_SET_ORDER)) 
     452        if (preg_match_all(',<spip2spip version="(.*?)">,Uims',$rss,$r, PREG_SET_ORDER))
    449453        foreach ($r as $regs) {
    450454           $version_flux  = (float) $regs[1];
    451455  }
    452456  spip_log("partageur - version flux: $version_flux");
    453        
     457
    454458        // analyse de chaque item
    455459        $items = array();
     
    467471        // Analyser chaque <item>...</item> du backend et le transformer en tableau
    468472        if (!count($items)) return _T('spiptospip:avis_echec_syndication_01');
    469        
     473
    470474        foreach ($items as $item) {
    471          
     475
    472476                $data = array();
    473    
     477
    474478                // Date
    475479                $la_date = "";
     
    478482                if ($la_date < time() - 365 * 24 * 3600 OR $la_date > time() + 48 * 3600)               $la_date = time();
    479483                $data['date'] = $la_date;
    480                
     484
    481485                // version du flux
    482486                $data['version_flux'] = $version_flux;
    483                        
     487
    484488                // Recuperer les autres tags du xml
    485                 foreach ($xml_tags as $xml_tag) {                 
     489                foreach ($xml_tags as $xml_tag) {
    486490                  if (preg_match($syndic_regexp[$xml_tag],$item,$match)) $data[$xml_tag] = $match[1];
    487                                                                               else $data[$xml_tag] = "";
    488     }   
    489    
    490     // On parse le noeud documents
    491     if ($data['documents'] != "") {       
    492           $documents = array();
    493           if (preg_match_all($document_regexp['document'],$data['documents'],$r2, PREG_SET_ORDER))
    494                 foreach ($r2 as $regs) {
    495                         $debut_item = strpos($data['documents'],$regs[0]);
    496                         $fin_item = strpos($data['documents'],
    497                         $document_regexp['documentfin'])+strlen($document_regexp['documentfin']);
    498                         $documents[] = substr($data['documents'],$debut_item,$fin_item-$debut_item);
    499                         $debut_texte = substr($data['documents'], "0", $debut_item);
    500                         $fin_texte = substr($data['documents'], $fin_item, strlen($data['documents']));
    501                         $data['documents'] = $debut_texte.$fin_texte;
    502           }
    503          
    504           $portfolio = array();
    505           if (count($documents)) {         
    506               foreach ($documents as $document) {                 
    507                 $data_node = array();
    508                 foreach ($xml_doc_tags as $xml_doc_tag) {
    509                     if (preg_match($document_regexp[$xml_doc_tag],$document,$match)) $data_node[$xml_doc_tag] = $match[1];
    510                                                                                                       else $data_node[$xml_doc_tag] = "";
    511                                        }
    512                 $portfolio[] = $data_node;                                                     
    513               }             
    514               $data['documents'] =  serialize($portfolio);
    515           }       
    516     } # noeud documents
    517        
     491                                                                                                                          else $data[$xml_tag] = "";
     492        }
     493
     494        // On parse le noeud documents
     495        if ($data['documents'] != "") {
     496                  $documents = array();
     497                  if (preg_match_all($document_regexp['document'],$data['documents'],$r2, PREG_SET_ORDER))
     498                        foreach ($r2 as $regs) {
     499                                $debut_item = strpos($data['documents'],$regs[0]);
     500                                $fin_item = strpos($data['documents'],
     501                                $document_regexp['documentfin'])+strlen($document_regexp['documentfin']);
     502                                $documents[] = substr($data['documents'],$debut_item,$fin_item-$debut_item);
     503                                $debut_texte = substr($data['documents'], "0", $debut_item);
     504                                $fin_texte = substr($data['documents'], $fin_item, strlen($data['documents']));
     505                                $data['documents'] = $debut_texte.$fin_texte;
     506                  }
     507
     508                  $portfolio = array();
     509                  if (count($documents)) {
     510                          foreach ($documents as $document) {
     511                                $data_node = array();
     512                                foreach ($xml_doc_tags as $xml_doc_tag) {
     513                                        if (preg_match($document_regexp[$xml_doc_tag],$document,$match)) $data_node[$xml_doc_tag] = $match[1];
     514                                                                                                                                                                          else $data_node[$xml_doc_tag] = "";
     515                                           }
     516                                $portfolio[] = $data_node;
     517                          }
     518                          $data['documents'] =  serialize($portfolio);
     519                  }
     520        } # noeud documents
     521
    518522
    519523          // On parse le noeud evenement
    520     if ($data['evenements'] != "") {
    521           $evenements = array();
    522           if (preg_match_all($evenement_regexp['evenement'],$data['evenements'],$r3, PREG_SET_ORDER))
    523           foreach ($r3 as $regs) {
    524                         $debut_item = strpos($data['evenements'],$regs[0]);
    525                         $fin_item = strpos($data['evenements'],$evenement_regexp['evenementfin'])+strlen($evenement_regexp['evenementfin']);
    526                         $evenements[] = substr($data['evenements'],$debut_item,$fin_item-$debut_item);
    527                         $debut_texte = substr($data['evenements'], "0", $debut_item);
    528                         $fin_texte = substr($data['evenements'], $fin_item, strlen($data['evenements']));
    529                         $data['evenements'] = $debut_texte.$fin_texte;                         
    530           }
    531          
    532           $agenda = array();
    533           if (count($evenements)) {         
    534               foreach ($evenements as $evenement) { 
    535                  
    536                 $data_node = array();
    537                 foreach ($xml_event_tags as $xml_event_tag) {
    538                     if (preg_match($evenement_regexp[$xml_event_tag],$evenement,$match)) $data_node[$xml_event_tag] = $match[1];
    539                                                                                     else $data_node[$xml_event_tag] = "";
    540                                        }
    541                  
    542                 // bug lieu et desc  (suite au p)
    543                  $data_node['lieu'] = strip_tags(html_entity_decode($data_node['lieu']));
    544                 $data_node['desc'] = strip_tags(html_entity_decode($data_node['desc']));
    545                                        
    546                                        // On parse le noeud motevt (mot evenement) ?
    547                                        if ($data_node['motevts'] != "") {
    548                         $motevts = array();
    549                         if (preg_match_all($motevt_regexp['motevt'],$data_node['motevts'],$r2, PREG_SET_ORDER))
    550                         foreach ($r2 as $regs) {
    551                                         $debut_item = strpos($data_node['motevts'],$regs[0]);
    552                                         $fin_item = strpos($data_node['motevts'],
    553                                         $motevt_regexp['motevtfin'])+strlen($motevt_regexp['motevtfin']);
    554                                         $motevts[] = substr($data_node['motevts'],$debut_item,$fin_item-$debut_item);                                   
    555                                         $debut_texte = substr($data_node['motevts'], "0", $debut_item);
    556                                         $fin_texte = substr($data_node['motevts'], $fin_item, strlen($data_node['motevts']));
    557                                         $data_node['motevts'] = $debut_texte.$fin_texte;
    558                         }
    559                        
    560                         $motcleevt = array();                         
    561                         if (count($motevts)) {         
    562                             foreach ($motevts as $motevt) {                 
    563                                $data_node_evt = array();
    564                                foreach ($xml_motevt_tags as $xml_motevt_tag) {
    565                                   if (preg_match($motevt_regexp[$xml_motevt_tag],$motevt,$match)) $data_node_evt[$xml_motevt_tag] = $match[1];
    566                                                                                                               else $data_node_evt[$xml_motevt_tag] = "";
    567                                                        }
    568                               $motcleevt[] = $data_node_evt;                 
    569                             }
    570                             $data_node['motevts'] = $motcleevt;                                                       
    571                         }       
    572                  }                                     
    573                                        // #noeud motevt
    574                                        
    575                 $agenda[] = $data_node;                                                     
    576               } 
    577      
    578               $data['evenements'] =  base64_encode(serialize($agenda));  // astuce php.net
    579           }       
    580     } #noeud evenements
    581    
    582     // On parse le noeud mots   
    583     if ($data['mots'] != "") {       
    584           $mots = array();         
    585           if (preg_match_all($mot_regexp['mot'],$data['mots'],$r2, PREG_SET_ORDER))
    586                 foreach ($r2 as $regs) {
    587                         $debut_item = strpos($data['mots'],$regs[0]);
    588                         $fin_item = strpos($data['mots'],
    589                         $mot_regexp['motfin'])+strlen($mot_regexp['motfin']);
    590                         $mots[] = substr($data['mots'],$debut_item,$fin_item-$debut_item);                     
    591                         $debut_texte = substr($data['mots'], "0", $debut_item);
    592                         $fin_texte = substr($data['mots'], $fin_item, strlen($data['mots']));
    593                         $data['mots'] = $debut_texte.$fin_texte;                       
    594           }
    595          
    596           $motcle = array();
    597           if (count($mots)) {         
    598               foreach ($mots as $mot) {                 
    599                 $data_node = array();
    600                 foreach ($xml_mot_tags as $xml_mot_tag) {
    601                     if (preg_match($mot_regexp[$xml_mot_tag],$mot,$match)) $data_node[$xml_mot_tag] = $match[1];
    602                                                                                             else $data_node[$xml_mot_tag] = "";
    603                                        }
    604                 $motcle[] = $data_node;                         
    605               }             
    606               $data['mots'] =  serialize($motcle);             
    607           }       
    608     }   #noeud mots
    609          
    610          
     524        if ($data['evenements'] != "") {
     525                  $evenements = array();
     526                  if (preg_match_all($evenement_regexp['evenement'],$data['evenements'],$r3, PREG_SET_ORDER))
     527                  foreach ($r3 as $regs) {
     528                                $debut_item = strpos($data['evenements'],$regs[0]);
     529                                $fin_item = strpos($data['evenements'],$evenement_regexp['evenementfin'])+strlen($evenement_regexp['evenementfin']);
     530                                $evenements[] = substr($data['evenements'],$debut_item,$fin_item-$debut_item);
     531                                $debut_texte = substr($data['evenements'], "0", $debut_item);
     532                                $fin_texte = substr($data['evenements'], $fin_item, strlen($data['evenements']));
     533                                $data['evenements'] = $debut_texte.$fin_texte;
     534                  }
     535
     536                  $agenda = array();
     537                  if (count($evenements)) {
     538                          foreach ($evenements as $evenement) {
     539
     540                                $data_node = array();
     541                                foreach ($xml_event_tags as $xml_event_tag) {
     542                                        if (preg_match($evenement_regexp[$xml_event_tag],$evenement,$match)) $data_node[$xml_event_tag] = $match[1];
     543                                                                                                                                                                        else $data_node[$xml_event_tag] = "";
     544                                           }
     545
     546                                // bug lieu et desc  (suite au p)
     547                                 $data_node['lieu'] = strip_tags(html_entity_decode($data_node['lieu']));
     548                                $data_node['desc'] = strip_tags(html_entity_decode($data_node['desc']));
     549
     550                                           // On parse le noeud motevt (mot evenement) ?
     551                                           if ($data_node['motevts'] != "") {
     552                                                $motevts = array();
     553                                                if (preg_match_all($motevt_regexp['motevt'],$data_node['motevts'],$r2, PREG_SET_ORDER))
     554                                                foreach ($r2 as $regs) {
     555                                                                $debut_item = strpos($data_node['motevts'],$regs[0]);
     556                                                                $fin_item = strpos($data_node['motevts'],
     557                                                                $motevt_regexp['motevtfin'])+strlen($motevt_regexp['motevtfin']);
     558                                                                $motevts[] = substr($data_node['motevts'],$debut_item,$fin_item-$debut_item);
     559                                                                $debut_texte = substr($data_node['motevts'], "0", $debut_item);
     560                                                                $fin_texte = substr($data_node['motevts'], $fin_item, strlen($data_node['motevts']));
     561                                                                $data_node['motevts'] = $debut_texte.$fin_texte;
     562                                                }
     563
     564                                                $motcleevt = array();
     565                                                if (count($motevts)) {
     566                                                        foreach ($motevts as $motevt) {
     567                                                           $data_node_evt = array();
     568                                                           foreach ($xml_motevt_tags as $xml_motevt_tag) {
     569                                                                  if (preg_match($motevt_regexp[$xml_motevt_tag],$motevt,$match)) $data_node_evt[$xml_motevt_tag] = $match[1];
     570                                                                                                                                                                                          else $data_node_evt[$xml_motevt_tag] = "";
     571                                                                           }
     572                                                          $motcleevt[] = $data_node_evt;
     573                                                        }
     574                                                        $data_node['motevts'] = $motcleevt;
     575                                                }
     576                                 }
     577                                           // #noeud motevt
     578
     579                                $agenda[] = $data_node;
     580                          }
     581
     582                          $data['evenements'] =  base64_encode(serialize($agenda));  // astuce php.net
     583                  }
     584        } #noeud evenements
     585
     586        // On parse le noeud mots
     587        if ($data['mots'] != "") {
     588                  $mots = array();
     589                  if (preg_match_all($mot_regexp['mot'],$data['mots'],$r2, PREG_SET_ORDER))
     590                        foreach ($r2 as $regs) {
     591                                $debut_item = strpos($data['mots'],$regs[0]);
     592                                $fin_item = strpos($data['mots'],
     593                                $mot_regexp['motfin'])+strlen($mot_regexp['motfin']);
     594                                $mots[] = substr($data['mots'],$debut_item,$fin_item-$debut_item);
     595                                $debut_texte = substr($data['mots'], "0", $debut_item);
     596                                $fin_texte = substr($data['mots'], $fin_item, strlen($data['mots']));
     597                                $data['mots'] = $debut_texte.$fin_texte;
     598                  }
     599
     600                  $motcle = array();
     601                  if (count($mots)) {
     602                          foreach ($mots as $mot) {
     603                                $data_node = array();
     604                                foreach ($xml_mot_tags as $xml_mot_tag) {
     605                                        if (preg_match($mot_regexp[$xml_mot_tag],$mot,$match)) $data_node[$xml_mot_tag] = $match[1];
     606                                                                                                                                                        else $data_node[$xml_mot_tag] = "";
     607                                           }
     608                                $motcle[] = $data_node;
     609                          }
     610                          $data['mots'] =  serialize($motcle);
     611                  }
     612        }       #noeud mots
     613
     614
    611615                // Nettoyer les donnees et remettre les CDATA et multi en place
    612616                foreach ($data as $var => $val) {
     
    614618                        foreach ($echappe_cdata as $n => $e)
    615619                                $data[$var] = str_replace("@@@SPIP_CDATA$n@@@",$e, $data[$var]);
    616       if (!defined("_SPIP2SPIP_IMPORT_HTML")) $data[$var] = trim(textebrut($data[$var]));  // protection import HTML
     620          if (!defined("_SPIP2SPIP_IMPORT_HTML")) $data[$var] = trim(textebrut($data[$var]));  // protection import HTML
    617621                        $data[$var] = str_replace("@@@MULTI@@@", "<multi>", $data[$var]);
    618             $data[$var] = str_replace("@@@MULTJ@@@", "</multi>", $data[$var]);
    619       $data[$var] = str_replace("@@@LIEN_INV@@@", "<-", $data[$var]);           
     622                $data[$var] = str_replace("@@@MULTJ@@@", "</multi>", $data[$var]);
     623          $data[$var] = str_replace("@@@LIEN_INV@@@", "<-", $data[$var]);
    620624                }
    621625
    622                 //$data['item'] = $item;  //utile pour partageur ?             
    623                 $articles[] = $data;   
     626                //$data['item'] = $item;  //utile pour partageur ?
     627                $articles[] = $data;
    624628        }
    625  
     629
    626630  return $articles;
    627631}
     
    633637//
    634638// verifier si une rubrique existe
    635 function partageur_verifier_id_rubrique($id_rubrique) {   
    636    if ($row = sql_fetsel("id_rubrique","spip_rubriques","id_rubrique=".sql_quote($id_rubrique))) 
    637                return true;
    638    return false; 
     639function partageur_verifier_id_rubrique($id_rubrique) {
     640   if ($row = sql_fetsel("id_rubrique","spip_rubriques","id_rubrique=".sql_quote($id_rubrique)))
     641                           return true;
     642   return false;
    639643
    640644}
     
    643647//
    644648// recupère id du secteur
    645 function partageur_get_id_secteur($id_rubrique) { 
    646    if ($row = sql_fetsel("id_parent","spip_rubriques","id_rubrique=$id_rubrique")) 
    647                return $row['id_parent'];
    648    return 0; 
     649function partageur_get_id_secteur($id_rubrique) {
     650   if ($row = sql_fetsel("id_parent","spip_rubriques","id_rubrique=$id_rubrique"))
     651                           return $row['id_parent'];
     652   return 0;
    649653}
    650654
    651655//
    652656// recupere id d'un auteur selon son nom sinon le creer
    653 function partageur_get_id_auteur($name) { 
    654    if (trim($name)=="") 
    655               return false;
    656    if ($row = sql_fetsel("id_auteur","spip_auteurs","nom=".sql_quote($name))) 
    657               return $row['id_auteur'];
    658 
    659     // auteur inconnu, on le cree ...
    660     return sql_insertq('spip_auteurs',array('nom'=>$name,'statut'=>'1comite'));
     657function partageur_get_id_auteur($name) {
     658   if (trim($name)=="")
     659                          return false;
     660   if ($row = sql_fetsel("id_auteur","spip_auteurs","nom=".sql_quote($name)))
     661                          return $row['id_auteur'];
     662
     663        // auteur inconnu, on le cree ...
     664        return sql_insertq('spip_auteurs',array('nom'=>$name,'statut'=>'1comite'));
    661665}
    662666
     
    666670
    667671   if ($mode_creer_groupe) {
    668         // groupe existe ?
    669         if ($row = sql_fetsel("id_groupe","spip_groupes_mots","titre=".sql_quote($groupe_titre))) {
    670               $id_groupe = $row['id_groupe'];
    671         } else {
    672             $id_groupe = sql_insertq('spip_groupes_mots',array(
    673                                       'titre'=> $groupe_titre,
    674                                       'tables_liees'=> $objet_lie."s",
    675                                       'minirezo' => 'oui',
    676                                       'comite' => 'oui',
    677                                       'forum' => 'non'));
    678         }
    679        
    680    }           
    681      
    682    if ($id_groupe>0){                   
    683         // mot existe ?
    684         if ($row = sql_fetsel("id_mot","spip_mots","titre=".sql_quote($mot_titre)." AND id_groupe=".intval($id_groupe))) {
    685               $id_mot = $row['id_mot'];
    686         } else {
    687               if ($row = sql_fetsel("titre","spip_groupes_mots","id_groupe=".intval($id_groupe)))
    688                           $type = $row['titre'];
    689               $id_mot = sql_insertq('spip_mots',array(
    690                                       'titre'=> $mot_titre,
    691                                       'id_groupe'=> intval($id_groupe),
    692                                       'type' => $type));                                     
    693         }
    694            
    695         sql_insertq("spip_mots_liens", array(
    696                                       'id_mot'   => intval($id_mot),
    697                                       'id_objet' => intval($id_objet),
    698                                       'objet' => $objet_lie
    699                                       ));
    700                    
     672                // groupe existe ?
     673                if ($row = sql_fetsel("id_groupe","spip_groupes_mots","titre=".sql_quote($groupe_titre))) {
     674                          $id_groupe = $row['id_groupe'];
     675                } else {
     676                        $id_groupe = sql_insertq('spip_groupes_mots',array(
     677                                                                          'titre'=> $groupe_titre,
     678                                                                          'tables_liees'=> $objet_lie."s",
     679                                                                          'minirezo' => 'oui',
     680                                                                          'comite' => 'oui',
     681                                                                          'forum' => 'non'));
     682                }
     683
     684   }
     685
     686   if ($id_groupe>0){
     687                // mot existe ?
     688                if ($row = sql_fetsel("id_mot","spip_mots","titre=".sql_quote($mot_titre)." AND id_groupe=".intval($id_groupe))) {
     689                          $id_mot = $row['id_mot'];
     690                } else {
     691                          if ($row = sql_fetsel("titre","spip_groupes_mots","id_groupe=".intval($id_groupe)))
     692                                                  $type = $row['titre'];
     693                          $id_mot = sql_insertq('spip_mots',array(
     694                                                                          'titre'=> $mot_titre,
     695                                                                          'id_groupe'=> intval($id_groupe),
     696                                                                          'type' => $type));
     697                }
     698
     699                sql_insertq("spip_mots_liens", array(
     700                                                                          'id_mot'   => intval($id_mot),
     701                                                                          'id_objet' => intval($id_objet),
     702                                                                          'objet' => $objet_lie
     703                                                                          ));
     704
    701705   } else {
    702       spip_log("partageur pas de groupe-clé import specifie");
     706          spip_log("partageur pas de groupe-clé import specifie");
    703707   }
    704708
     
    707711
    708712// -----------------------
    709 // Fonctions de formatage 
     713// Fonctions de formatage
    710714// -----------------------
    711715
     
    714718// restaure le formatage des extra
    715719function partageur_convert_extra($texte,$documents,$version_flux=1.6) {
    716         $texte = partageur_convert_ln($texte,$version_flux); 
     720        $texte = partageur_convert_ln($texte,$version_flux);
    717721        $texte = partageur_convert_img($texte,$documents);
    718722        return $texte;
     
    724728  $texte_avt_regex = $texte;
    725729  krsort($documents);
    726         foreach($documents as $k=>$val) {       
     730        foreach($documents as $k=>$val) {
    727731           $texte = preg_replace("/__IMG$k(.*?)__/i", "<img$val$1>",$texte);
    728732           // si le doc est employe en tant image, changer son mode pour qu'il sorte du portfolio (mode=document) et passe en image (mode=image)
    729            if ($texte_avt_regex != $texte) partageur_update_mode_document($val,'image'); 
    730            
     733           if ($texte_avt_regex != $texte) partageur_update_mode_document($val,'image');
     734
    731735           // autre mise a jour non image
    732736           $texte = preg_replace("/__DOC$k(.*?)__/i", "<doc$val$1>",$texte);
    733            
    734      $texte_avt_regex = $texte;   
    735   }     
    736  
     737
     738         $texte_avt_regex = $texte;
     739  }
     740
    737741  //$texte = preg_replace("/__(IMG|DOC)(.*?)__/i", "",$texte); // nettoyage des codes qui resteraient eventuellement
    738742  $texte = preg_replace("/__(.*?)__/i", "",$texte); // expression plus large (pour prevoir la compatabilite future si ajout d'autres extras)
     
    744748function partageur_convert_ln($texte,$version_flux=1.6) {
    745749  if ($version_flux<1.7)        $texte = str_replace("__LN__","\n\n",$texte);
    746                   else    $texte = str_replace("__LN__","\n",$texte);
     750                                  else    $texte = str_replace("__LN__","\n",$texte);
    747751        return $texte;
    748752}
     
    750754//
    751755// change le mode (vignette/document/) du document
    752 function partageur_update_mode_document($id_document,$mode="vignette") { 
     756function partageur_update_mode_document($id_document,$mode="vignette") {
    753757   sql_updateq('spip_documents', array("mode"=>$mode), "id_document=$id_document");
    754758}
  • _plugins_/partageur/trunk/formulaires/editer_partageur.php

    r100332 r101710  
    3030 */
    3131function formulaires_editer_partageur_verifier_dist($id_partageur='new', $retour='', $lier_trad=0, $config_fonc='', $row=array(), $hidden=''){
    32  
    33   $erreurs = formulaires_editer_objet_verifier('partageur',$id_partageur,array('titre'));
    34  
    35   // verification supplementaires
    36   if (!_request('titre'))
    37                          $erreurs['titre'] = _T('partageur:erreur_obligatoire');
    38  
    39   if ((!_request('url_site')) OR (_request('url_site')=="http://")) {
    40                          $erreurs['url_site'] = _T('partageur:erreur_obligatoire');
    41   } else {
    42       // "ping" si flux distant disponible
    43       include_spip('inc/distant');     
    44       $url = _request('url_site')."/spip.php?page=backend-partageur&id_article=1";
    45       $fonction_recuperer='recuperer_url';
    46       if (!function_exists('recuperer_url'))
    47           $fonction_recuperer = 'recuperer_page';
    48        $ping = $fonction_recuperer($url);
    49         if (!$ping) {                   
    50                  $erreurs['url_site'] = _T('partageur:erreur_flux_inconnu')."<br /><a href='$url'>$url</a>";
    51         } else if ($row_site = sql_fetsel("url_site","spip_partageurs",'id_partageur!='.intval($id_partageur).' AND statut="publie" AND url_site='.sql_quote(_request('url_site'))))   
    52            $erreurs['url_site'] = _T('partageur:erreur_flux_doublon');
    53  
    5432
    55   }     
     33        $erreurs = formulaires_editer_objet_verifier('partageur',$id_partageur,array('titre'));
    5634
    57  
    58   return $erreurs;
     35        // verification supplementaires
     36        if (!_request('titre')) {
     37                $erreurs['titre'] = _T('partageur:erreur_obligatoire');
     38        }
     39
     40        if ((!_request('url_site')) OR (_request('url_site')=="http://")) {
     41                $erreurs['url_site'] = _T('partageur:erreur_obligatoire');
     42        } else {
     43                // "ping" si flux distant disponible
     44                include_spip('inc/distant');     
     45                $url = _request('url_site') . "/spip.php?page=backend-partageur&id_article=1";
     46
     47                if (function_exists('recuperer_url')) {
     48                        $fonction_recuperer = 'recuperer_url';
     49                } else {
     50                        // ancien SPIP
     51                        $fonction_recuperer = 'recuperer_page';
     52                }
     53               
     54                $ping = $fonction_recuperer($url);
     55                if (!$ping) {
     56                        $erreurs['url_site'] = _T('partageur:erreur_flux_inconnu') . "<br /><a href='$url'>$url</a>";
     57                } elseif ($row_site = sql_fetsel("url_site","spip_partageurs",'id_partageur!='.intval($id_partageur).' AND statut="publie" AND url_site='.sql_quote(_request('url_site')))) { 
     58                        $erreurs['url_site'] = _T('partageur:erreur_flux_doublon');
     59                }
     60        }
     61
     62        return $erreurs;
    5963}
    6064
Note: See TracChangeset for help on using the changeset viewer.