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
* \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
// 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