X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fecrire%2Finc%2Fsite.php;fp=www%2Fecrire%2Finc%2Fsite.php;h=24ef8d3ff733a534dc1e8a5299f1980af0641354;hp=0000000000000000000000000000000000000000;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c diff --git a/www/ecrire/inc/site.php b/www/ecrire/inc/site.php new file mode 100644 index 0000000..24ef8d3 --- /dev/null +++ b/www/ecrire/inc/site.php @@ -0,0 +1,116 @@ +]*)?' + .'>(.*),ims', $texte, $regs)) { + $result['syndication'] = 'oui'; + $result['url_syndic'] = $url; + $channel = $regs[3]; + + // Pour recuperer l'entete, on supprime tous les items + $b = array_merge( + extraire_balises($channel, 'item'), + extraire_balises($channel, 'entry') + ); + $header = str_replace($b,array(),$channel); + + if ($t = extraire_balise($header, 'title')) + $result['nom_site'] = supprimer_tags($t); + if ($t = extraire_balises($header, 'link')) { + foreach ($t as $link) { + $u = supprimer_tags(filtrer_entites($link)); + if (!strlen($u)) + $u = extraire_attribut($link, 'href'); + if (strlen($u)) { + // on installe l'url comme url du site + // si c'est non vide, en donnant la priorite a rel=alternate + if (preg_match(',\balternate\b,', extraire_attribut($link, 'rel')) + OR !isset($result['url_site'])) + $result['url_site'] = filtrer_entites($u); + } + } + } + $result['url_site'] = url_absolue($result['url_site'], $url); + + if ($a = extraire_balise($header, 'description') + OR $a = extraire_balise($header, 'tagline')) { + $result['descriptif'] = supprimer_tags($a); + } + + if (preg_match(',(.*).*,Uims', + $header, $r) + AND preg_match(',(https?://.*/.*(gif|png|jpg)),ims', $r[1], $r) + AND $image = recuperer_infos_distantes($r[1])) { + if (in_array($image['extension'], array('gif', 'jpg', 'png'))) { + $result['format_logo'] = $image['extension']; + $result['logo'] = $r[1]; + } + else if ($image['fichier']) { + spip_unlink($image['fichier']); + } + } + } + else { + $result['syndication'] = 'non'; + $result['url_site'] = $url; + if (preg_match(',(.*(description|title).*),Uims', $texte, $regs)) { + $head = filtrer_entites($regs[1]); + } else + $head = $texte; + if (preg_match(',]*>(.*),i', $head, $regs)) + $result['nom_site'] = filtrer_entites(supprimer_tags(preg_replace(',.*,i', '', $regs[1]))); + if ($a = array_merge( + extraire_balises($head, 'meta'), + extraire_balises($head, 'http-equiv') + )) { + foreach($a as $meta) { + if (extraire_attribut($meta, 'name') == 'description') { + $desc = trim(extraire_attribut($meta, 'content')); + if (!strlen($desc)) + $desc = trim(extraire_attribut($meta, 'value')); + $result['descriptif'] = $desc; + } + } + } + + // Cherchons quand meme un backend + include_spip('inc/distant'); + include_spip('inc/feedfinder'); + $feeds = get_feed_from_url($url, $texte); + // si on a a trouve un (ou plusieurs) on le note avec select: + // ce qui constitue un signal pour exec=sites qui proposera de choisir + // si on syndique, et quelle url. + if (count($feeds)>=1) { + spip_log("feedfinder.php :\n".join("\n", $feeds)); + $result['url_syndic'] = "select: ".join(' ',$feeds); + } + } + + return $result; +} + +?>