[PLUGINS] ~maj globale
[lhc/web/www.git] / www / plugins / rss_article_3_0 / genie / rssarticle_copie.php
index 5f5a1e8..10d6576 100644 (file)
@@ -15,167 +15,178 @@ include_spip('inc/chercher_logo');
 include_spip('inc/rubriques');\r
 include_spip('inc/config');\r
 \r
-function genie_rssarticle_copie_dist($t){  \r
+function genie_rssarticle_copie_dist($t){\r
 \r
-  // configuration (ou valeurs par defaut)    \r
-  if (lire_config('rssarticle/import_statut')=="publie")       $import_statut="publie"; else  $import_statut="prop";     \r
-  if (lire_config('rssarticle/mode')=="auto")       $mode_auto=true; else  $mode_auto=false;  \r
-  if (lire_config('rssarticle/email_alerte')=="on") $email_alerte=true; else  $email_alerte=false;\r
-  if (lire_config('rssarticle/copie_logo')=="on")   $copie_logo=true; else  $copie_logo=false; \r
-  if (lire_config('rssarticle/html2spip')=="on")   $html2spip=true; else  $html2spip=false; \r
-  $email_suivi = lire_config('rssarticle/email_suivi'); \r
-  \r
-  // autres valeurs\r
-  $accepter_forum =    substr($GLOBALS['meta']['forums_publics'],0,3);\r
-  \r
-  // principe de pile:\r
-  // on boucle sur les derniers articles syndiques pour les retirer ensuite\r
-  // bourrin voir les requetes avec jointure du Miroir ou du site Rezo \r
-  $log = "";\r
-  $log_c = 0;\r
-  \r
-  // boucle sur les sites publies \r
-  if ($mode_auto) $u = sql_select("id_syndic,id_rubrique,id_secteur","spip_syndic","statut='publie'");   // tous \r
-          else    $u = sql_select("id_syndic,id_rubrique,id_secteur","spip_syndic","statut='publie' AND rssarticle='oui'");\r
-  \r
-  while ($b = sql_fetch($u)) {\r
-       $id_syndic = (int) $b['id_syndic'];\r
-       $id_rubrique = (int) $b['id_rubrique'];\r
-       $id_secteur = (int) $b['id_secteur'];\r
-  \r
-       // sur chaque site copie les derniers syndication\r
-       $s = sql_select("*", "spip_syndic_articles", "statut='publie' AND id_syndic='$id_syndic'","","maj DESC","10");  // par flot de 10 articles / site pour limiter la charge\r
-       while ($a = sql_fetch($s)) {\r
-                       $titre =  $a['titre'];\r
-                       $url =  $a['url'];\r
-          $id_syndic_article = $a['id_syndic_article']; \r
-                    \r
-          // article avec mm titre existe ? (test doublons sur l'url plutot que sr le titre)\r
-               if (!$row = sql_fetsel("id_article","spip_articles","url_site=".sql_quote($url))) {        \r
-            \r
-            $texte = $a['descriptif'];\r
-            //traitement pour syntaxe SPIP\r
-            if($html2spip)\r
-                  $texte = html2spip($texte);\r
-            $lang  = $a['lang'];\r
-            $url   = $a['url'];\r
-            $tags =  $a['tags'];\r
-            $lsDate = $a['date'];\r
-            \r
-          \r
-            if ($lang=="")     \r
-                $lang = $GLOBALS['spip_lang'];  \r
-                \r
-            // cas particulier: \r
-            // site multilingue avec la configuration: 1 lang par rubrique  \r
-            // on force l'article a avoir la langue de la rubrique ds lequel il est importee(pour omaidi)            \r
-            if ($GLOBALS['meta']['multi_rubriques']=='oui') {\r
-                  $s_lang = sql_select("lang", "spip_rubriques", "id_rubrique=$id_rubrique");\r
-                  while ($a_lang = sql_fetch($s_lang)) \r
-                      $lang = $a_lang['lang'];                   \r
-            }\r
-            \r
-            //$lsDate = date('Y-m-d H:i:s');            \r
-            // creation de l'article\r
-            $id_article = sql_insertq( 'spip_articles', array(\r
-                                'titre'=>$titre, 'id_rubrique'=>$id_rubrique,\r
-                                'texte'=>$texte, 'statut'=>$import_statut, 'id_secteur'=>$id_secteur,\r
-                                'date'=> $lsDate, 'accepter_forum'=>$accepter_forum, 'lang'=>$lang, 'url_site'=>$url));\r
-                                \r
-            // lier article et site\r
-            sql_insertq( 'spip_articles_syndic', array('id_article'=>$id_article, 'id_syndic'=>$id_syndic));\r
-                                \r
-            // gestion auteur            \r
-            $auteurs= explode(", ",$a['lesauteurs']);            \r
-            foreach ($auteurs as $k => $auteur) {                       \r
-                 if ($current_id_auteur = rssarticle_get_id_auteur($auteur))\r
-                      sql_insertq( 'spip_auteurs_liens', array('id_auteur'=>$current_id_auteur, 'id_objet'=>$id_article, 'objet'=>'article'));                \r
-            }\r
-            \r
-            // tags a convertir en documents distants \r
-            $doc_distants = extraire_enclosures($tags);\r
-                       foreach ($doc_distants as $k=>$doc_distant) {\r
-                $infos = recuperer_infos_distantes($doc_distant);\r
-                if ($infos['extension']) {\r
-                    $ext    = $infos['extension'];\r
-                    $taille = $infos['tailles']; \r
-                    $row = sql_fetsel("inclus", "spip_types_documents", "extension=" . sql_quote($ext) . " AND upload='oui'");  // extension autorisee ?\r
-                    if ($row) {\r
-                          $id_document = sql_insertq( 'spip_documents', array(\r
-                                'extension'=>$ext, \r
-                                'date'=> $lsDate,\r
-                                'fichier'=> $doc_distant,\r
-                                'taille'=> $taille,\r
-                                'mode' => 'document',\r
-                                'distant' => 'oui'));\r
-                          \r
-                         sql_insertq( 'spip_documents_liens', array(\r
-                                'id_document' =>$id_document, \r
-                                'id_objet'=> $id_article,\r
-                                'objet'=> 'article',\r
-                                'vu'=> 'non'));                                        \r
-                    }\r
-                }\r
-                \r
-            }\r
-            \r
-            // logo\r
-            if ($copie_logo) {             \r
-               if ($logo_site = inc_chercher_logo_dist($id_syndic,"id_syndic")) {\r
-                  $logo_article = "arton$id_article.".$logo_site[3];\r
-                  @copy($logo_site[0],_DIR_LOGOS."$logo_article");\r
-               }                 \r
-            }\r
-                                                                       \r
-                       $log_c++;\r
-                       $log .= "\n - $titre";  \r
-            \r
-             // on "depublie" l'article syndique qui vient d'etre copie\r
-            sql_update("spip_syndic_articles", array('statut' => '"refuse"'), "id_syndic_article=$id_syndic_article");\r
+       // configuration (ou valeurs par defaut)\r
+       if (lire_config('rssarticle/import_statut')=="publie")\r
+               $import_statut="publie";\r
+       else\r
+               $import_statut="prop";\r
+       if (lire_config('rssarticle/mode')=="auto")\r
+               $mode_auto=true;\r
+       else\r
+               $mode_auto=false;\r
+       if (lire_config('rssarticle/email_alerte')=="on")\r
+               $email_alerte=true;\r
+       else\r
+               $email_alerte=false;\r
+       if (lire_config('rssarticle/copie_logo')=="on")\r
+               $copie_logo=true;\r
+       else\r
+               $copie_logo=false; \r
+       if (lire_config('rssarticle/html2spip')=="on")\r
+               $html2spip=true;\r
+       else\r
+               $html2spip=false; \r
+       $email_suivi = lire_config('rssarticle/email_suivi');\r
+\r
+       // autres valeurs\r
+       $accepter_forum =       substr($GLOBALS['meta']['forums_publics'],0,3);\r
+\r
+       // principe de pile:\r
+       // on boucle sur les derniers articles syndiques pour les retirer ensuite\r
+       // bourrin voir les requetes avec jointure du Miroir ou du site Rezo \r
+       $log = "";\r
+       $log_c = 0;\r
+       \r
+       // boucle sur les sites publies\r
+       if ($mode_auto) \r
+               $u = sql_select("id_syndic,id_rubrique,id_secteur","spip_syndic","statut='publie'");     // tous \r
+       else\r
+               $u = sql_select("id_syndic,id_rubrique,id_secteur","spip_syndic","statut='publie' AND rssarticle='oui'");\r
+       \r
+       while ($b = sql_fetch($u)) {\r
+               $id_syndic = (int) $b['id_syndic'];\r
+               $id_rubrique = (int) $b['id_rubrique'];\r
+               $id_secteur = (int) $b['id_secteur'];\r
+\r
+               // sur chaque site copie les derniers syndication\r
+               $s = sql_select("*", "spip_syndic_articles", "statut='publie' AND id_syndic='$id_syndic'","","maj DESC","10");  // par flot de 10 articles / site pour limiter la charge\r
+               while ($a = sql_fetch($s)) {\r
+                       $titre =        $a['titre'];\r
+                       $url =  $a['url'];\r
+                       $id_syndic_article = $a['id_syndic_article']; \r
+\r
+                       // article avec mm titre existe ? (test doublons sur l'url plutot que sr le titre)\r
+                       if (!$id_article = sql_getfetsel("id_article","spip_articles","url_site=".sql_quote($url))) {\r
+                               $texte = $a['descriptif'];\r
+                               //traitement pour syntaxe SPIP\r
+                               if($html2spip)\r
+                                                       $texte = html2spip($texte);\r
+                               $lang   = $a['lang'];\r
+                               $url     = $a['url'];\r
+                               $tags = $a['tags'];\r
+                               $lsdate = $a['date'];\r
+\r
+                               if ($lang=="")  \r
+                                       $lang = $GLOBALS['spip_lang'];\r
+\r
+                               // cas particulier: \r
+                               // site multilingue avec la configuration: 1 lang par rubrique  \r
+                               // on force l'article a avoir la langue de la rubrique ds lequel il est importee(pour omaidi)\r
+                               if ($GLOBALS['meta']['multi_rubriques']=='oui') {\r
+                                       $s_lang = sql_select("lang", "spip_rubriques", "id_rubrique=$id_rubrique");\r
+                                       while ($a_lang = sql_fetch($s_lang)) \r
+                                               $lang = $a_lang['lang'];\r
+                               }\r
+                               \r
+                               //$lsdate = date('Y-m-d H:i:s');\r
+                               // creation de l'article\r
+                               $id_article = sql_insertq( 'spip_articles', array(\r
+                                                                                                               'titre'=>$titre, 'id_rubrique'=>$id_rubrique,\r
+                                                                                                               'texte'=>$texte, 'statut'=>$import_statut, 'id_secteur'=>$id_secteur,\r
+                                                                                                               'date'=> $lsdate, 'accepter_forum'=>$accepter_forum, 'lang'=>$lang, 'url_site'=>$url));\r
+                                                                                                               \r
+                               // lier article et site\r
+                               sql_insertq( 'spip_articles_syndic', array('id_article'=>$id_article, 'id_syndic'=>$id_syndic));\r
+\r
+                               // gestion auteur\r
+                               $auteurs= explode(", ",$a['lesauteurs']);\r
+                               foreach ($auteurs as $k => $auteur) {\r
+                                                if ($current_id_auteur = rssarticle_get_id_auteur($auteur))\r
+                                                                       sql_insertq( 'spip_auteurs_liens', array('id_auteur'=>$current_id_auteur, 'id_objet'=>$id_article, 'objet'=>'article'));\r
+                               }\r
+                               \r
+                               // tags a convertir en documents distants \r
+                               $doc_distants = extraire_enclosures($tags);\r
+                               foreach ($doc_distants as $k=>$doc_distant) {\r
+                                       $infos = recuperer_infos_distantes($doc_distant);\r
+                                       if ($infos['extension']) {\r
+                                               $ext            = $infos['extension'];\r
+                                               $taille = $infos['tailles']; \r
+                                               $inclus = sql_getfetsel("inclus", "spip_types_documents", "extension=" . sql_quote($ext) . " AND upload='oui'");        // extension autorisee ?\r
+                                               if ($inclus) {\r
+                                                       $id_document = sql_insertq( 'spip_documents', array(\r
+                                                                               'extension'=>$ext, \r
+                                                                               'date'=> $lsdate,\r
+                                                                               'fichier'=> $doc_distant,\r
+                                                                               'taille'=> $taille,\r
+                                                                               'mode' => 'document',\r
+                                                                               'distant' => 'oui'));\r
+                                                                       \r
+                                                       sql_insertq( 'spip_documents_liens', array(\r
+                                                                                       'id_document' =>$id_document,\r
+                                                                                       'id_objet'=> $id_article,\r
+                                                                                       'objet'=> 'article',\r
+                                                                                       'vu'=> 'non'));\r
+                                               }\r
+                                       }\r
+                               }\r
+                               \r
+                               // logo\r
+                               if ($copie_logo) {\r
+                                       if ($logo_site = inc_chercher_logo_dist($id_syndic,"id_syndic")) {\r
+                                               $logo_article = "arton$id_article.".$logo_site[3];\r
+                                               @copy($logo_site[0],_DIR_LOGOS."$logo_article");\r
+                                       }\r
+                               }\r
+\r
+                               $log_c++;\r
+                               $log .= "\n - $titre";\r
+\r
+                               // on "depublie" l'article syndique qui vient d'etre copie\r
+                               sql_update("spip_syndic_articles", array('statut' => '"refuse"'), "id_syndic_article=".intval($id_syndic_article));\r
+\r
+                               // Mise à jour des dates de rubriques après création d'un article dedans\r
+                               if ($id_article) {\r
+                                       if (function_exists('calculer_rubriques'))\r
+                                               calculer_rubriques();\r
+                                       if (function_exists('calculer_langues_rubriques'))\r
+                                               calculer_langues_rubriques();\r
+                                       if (function_exists('propager_les_secteurs'))\r
+                                               propager_les_secteurs();\r
+                               }\r
+                       }       // test doublons\r
+               }\r
+       } // FIN PILE\r
 \r
-            // Mise à jour des dates de rubriques après création d'un article dedans\r
-           if ($id_article) {\r
-               if (function_exists('calculer_rubriques'))\r
-                   calculer_rubriques();\r
-               if (function_exists('calculer_langues_rubriques'))\r
-                   calculer_langues_rubriques();\r
-               if (function_exists('propager_les_secteurs'))\r
-                   propager_les_secteurs();\r
-           }\r
-                  \r
-          }  // test doublons\r
-       }  \r
-  } // FIN PILE\r
-    \r
-       \r
        // log et alerte email\r
-  $log .= "\n\n---------\nPlugin Copie RSS en Articles: $log_c articles copies\n";\r
-  spip_log($log);\r
-  $log .= $GLOBALS['meta']['adresse_site']."/ecrire/?exec=accueil";\r
-       \r
-  if ($email_alerte && $email_suivi !="" && $log_c > 0)                 \r
-                  envoyer_mail($email_suivi,"Copie RSS en Articles", $log);\r
-              \r
+       $log .= "\n\n---------\nPlugin Copie RSS en Articles: $log_c articles copies\n";\r
+       spip_log($log);\r
+       $log .= $GLOBALS['meta']['adresse_site']."/ecrire/?exec=accueil";\r
+\r
+       if ($email_alerte && $email_suivi !="" && $log_c > 0)\r
+               envoyer_mail($email_suivi,"Copie RSS en Articles", $log);\r
        // maintenance generale\r
-  // mode auto: on efface les syndic_articles de plus de 2 mois pour soulager le systeme (cf genie/syndic) \r
-  // attention: on efface sur l'ensemble des sites syndiques ss tenir compte de l'option               \r
+       // mode auto: on efface les syndic_articles de plus de 2 mois pour soulager le systeme (cf genie/syndic) \r
+       // attention: on efface sur l'ensemble des sites syndiques ss tenir compte de l'option          \r
        if ($mode_auto) sql_delete('spip_syndic_articles', "maj < DATE_SUB(NOW(), INTERVAL 2 MONTH) AND date < DATE_SUB(NOW(), INTERVAL 2 MONTH)");\r
\r
+\r
        return 1;\r
 }\r
 \r
 \r
 //\r
 // recupere id d'un auteur selon son nom sinon le creer\r
-function rssarticle_get_id_auteur($nom) {  \r
-   if (trim($nom)=="") \r
-        return false;\r
-   \r
-   if ($row = sql_fetsel(array("id_auteur"),"spip_auteurs","nom=".sql_quote($nom)))  \r
-        return $row['id_auteur']\r
+function rssarticle_get_id_auteur($nom) {\r
+       if (trim($nom)=="") \r
+               return false;\r
+\r
+       if ($id_auteur = sql_getfetsel("id_auteur","spip_auteurs","nom=".sql_quote($nom)))\r
+               return $id_auteur\r
 \r
-    // auteur inconnu, on le cree ... \r
-    return sql_insertq('spip_auteurs',array('nom'=>$nom,'statut'=>'1comite'));\r
+       // auteur inconnu, on le cree ... \r
+       return sql_insertq('spip_auteurs',array('nom'=>$nom,'statut'=>'1comite'));\r
 }\r
 \r
 //\r
@@ -196,7 +207,7 @@ function extraire_enclosures($tags) {
  * \r
  * Nettoyer l'utf-8 et ses accents \r
  *\r
-**/\r
+ */\r
 function clean_utf8($t) {\r
        if (!preg_match('!\S!u', $t))\r
                $t = preg_replace_callback(',&#x([0-9a-f]+);,i', 'utf8_do', utf8_encode(utf8_decode($t)));\r
@@ -234,7 +245,6 @@ function html2spip($lapage){
        // images (cf ressource)\r
        $lapage = preg_replace(",<img[ \t\n\r][^<>]*src=[^<>]*(http[^<>'\"]*)[^<>]*>,uims","[img]\\1[//img]", $lapage);\r
 \r
-               \r
        // intertitres\r
        $lapage = preg_replace(",<(h[1-3])( [^>]*)?".">(.+)</\\1>,Uims", "\r{{{ \\3 }}}\r", $lapage);\r
        // tableaux\r