$titre, 'id_rubrique'=>$id_rubrique, 'texte'=>$texte, 'statut'=>$import_statut, 'id_secteur'=>$id_secteur, 'date'=> $lsDate, 'accepter_forum'=>$accepter_forum, 'lang'=>$lang, 'url_site'=>$url)); // lier article et site sql_insertq( 'spip_articles_syndic', array('id_article'=>$id_article, 'id_syndic'=>$id_syndic)); // gestion auteur $auteurs= explode(", ",$a['lesauteurs']); foreach ($auteurs as $k => $auteur) { if ($current_id_auteur = rssarticle_get_id_auteur($auteur)) sql_insertq( 'spip_auteurs_liens', array('id_auteur'=>$current_id_auteur, 'id_objet'=>$id_article, 'objet'=>'article')); } // tags a convertir en documents distants $doc_distants = extraire_enclosures($tags); foreach ($doc_distants as $k=>$doc_distant) { $infos = recuperer_infos_distantes($doc_distant); if ($infos['extension']) { $ext = $infos['extension']; $taille = $infos['tailles']; $row = sql_fetsel("inclus", "spip_types_documents", "extension=" . sql_quote($ext) . " AND upload='oui'"); // extension autorisee ? if ($row) { $id_document = sql_insertq( 'spip_documents', array( 'extension'=>$ext, 'date'=> $lsDate, 'fichier'=> $doc_distant, 'taille'=> $taille, 'mode' => 'document', 'distant' => 'oui')); sql_insertq( 'spip_documents_liens', array( 'id_document' =>$id_document, 'id_objet'=> $id_article, 'objet'=> 'article', 'vu'=> 'non')); } } } // logo if ($copie_logo) { if ($logo_site = inc_chercher_logo_dist($id_syndic,"id_syndic")) { $logo_article = "arton$id_article.".$logo_site[3]; @copy($logo_site[0],_DIR_LOGOS."$logo_article"); } } $log_c++; $log .= "\n - $titre"; // on "depublie" l'article syndique qui vient d'etre copie sql_update("spip_syndic_articles", array('statut' => '"refuse"'), "id_syndic_article=$id_syndic_article"); // Mise à jour des dates de rubriques après création d'un article dedans if ($id_article) { if (function_exists('calculer_rubriques')) calculer_rubriques(); if (function_exists('calculer_langues_rubriques')) calculer_langues_rubriques(); if (function_exists('propager_les_secteurs')) propager_les_secteurs(); } } // test doublons } } // FIN PILE // log et alerte email $log .= "\n\n---------\nPlugin Copie RSS en Articles: $log_c articles copies\n"; spip_log($log); $log .= $GLOBALS['meta']['adresse_site']."/ecrire/?exec=accueil"; if ($email_alerte && $email_suivi !="" && $log_c > 0) envoyer_mail($email_suivi,"Copie RSS en Articles", $log); // maintenance generale // mode auto: on efface les syndic_articles de plus de 2 mois pour soulager le systeme (cf genie/syndic) // attention: on efface sur l'ensemble des sites syndiques ss tenir compte de l'option if ($mode_auto) sql_delete('spip_syndic_articles', "maj < DATE_SUB(NOW(), INTERVAL 2 MONTH) AND date < DATE_SUB(NOW(), INTERVAL 2 MONTH)"); return 1; } // // recupere id d'un auteur selon son nom sinon le creer function rssarticle_get_id_auteur($nom) { if (trim($nom)=="") return false; if ($row = sql_fetsel(array("id_auteur"),"spip_auteurs","nom=".sql_quote($nom))) return $row['id_auteur']; // auteur inconnu, on le cree ... return sql_insertq('spip_auteurs',array('nom'=>$nom,'statut'=>'1comite')); } // // extraire les documents taggues enclosure // voir http://doc.spip.org/@afficher_enclosures function extraire_enclosures($tags) { $s = array(); foreach (extraire_balises($tags, 'a') as $tag) { if (extraire_attribut($tag, 'rel') == 'enclosure' AND $t = extraire_attribut($tag, 'href')) { $s[] = $t; } } return $s; } /** * * Nettoyer l'utf-8 et ses accents * **/ function clean_utf8($t) { if (!preg_match('!\S!u', $t)) $t = preg_replace_callback(',&#x([0-9a-f]+);,i', 'utf8_do', utf8_encode(utf8_decode($t))); return $t; } //passe le html en SPIP //repris de memo.php, merci function html2spip($lapage){ $lapage=clean_utf8($lapage); // remettre les double quotes casé par texte_backend $lapage = str_replace('"','"',$lapage); // PRETRAITEMENTS $lapage = str_replace("\n\r", "\r", $lapage); // echapper au greedyness de preg_replace $lapage = str_replace("\n", "\r", $lapage); // itals $lapage = preg_replace(",<(i|em)( [^>\r]*)?".">(.+),Uims", "{\\3}", $lapage); // gras (pas de {{ pour eviter tout conflit avec {) $lapage = preg_replace(",<(b|h[4-6])( [^>]*)?".">(.+),Uims", "@@b@@\\3@@/b@@", $lapage); $lapage = preg_replace(",]*)?".">(.+),Uims", "@@b@@\\2@@/b@@", $lapage); // entites include_spip('inc/charsets'); $lapage = html2unicode($lapage, true); //secure? // liens avec possibilités de non fermeture du tag $lapage = preg_replace(",]*href=[^<>]*(http[^<>]*)[^<>]>(.*?)<,uims", "[\\2->\\1] <", $lapage); // images (cf ressource) $lapage = preg_replace(",]*src=[^<>]*(http[^<>'\"]*)[^<>]*>,uims","[img]\\1[//img]", $lapage); // intertitres $lapage = preg_replace(",<(h[1-3])( [^>]*)?".">(.+),Uims", "\r{{{ \\3 }}}\r", $lapage); // tableaux $lapage = preg_replace(",]*)?".">,Uims", "
\r", $lapage); $lapage = preg_replace(",]*)?".">,Uims", " | ", $lapage); // POST TRAITEMENT $lapage = str_replace("\r", "\n", $lapage); // SUPPRIME LES TAGS if (eregi("(.*)", $lapage, $regs)) $titre = textebrut($regs[1]); $lapage = textebrut($lapage); // Suite tableaux $lapage = preg_replace(",\n[| ]+\n,", "", $lapage); $lapage = preg_replace(",\n[|].+?[|].+?[|].+,", "\\0|\r", $lapage); // retablir les gras $lapage = preg_replace(",@@b@@(.*)@@/b@@,Uims","{{\\1}}",$lapage); //retablir les images pour les lire avec le plugin ressource $lapage = preg_replace('#\[img\](.*)\[\//img\]#Umis', "<$1>", $lapage); //nettoyer les "] qui dépassent parfois $lapage = preg_replace(",\"\],uims", "]", $lapage); return $lapage; } ?>