Skip to content
Extraits de code Groupes Projets
Valider a8370910 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

analyser_site deplacee

parent cc4bac4b
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -713,6 +713,7 @@ ecrire/inc/safehtml.php -text ...@@ -713,6 +713,7 @@ ecrire/inc/safehtml.php -text
ecrire/inc/securiser_action.php -text ecrire/inc/securiser_action.php -text
ecrire/inc/selectionner.php -text ecrire/inc/selectionner.php -text
ecrire/inc/selectionner_auteur.php -text ecrire/inc/selectionner_auteur.php -text
ecrire/inc/site.php -text
ecrire/inc/suivi_versions.php -text ecrire/inc/suivi_versions.php -text
ecrire/inc/syndic.php -text ecrire/inc/syndic.php -text
ecrire/inc/tourner.php -text ecrire/inc/tourner.php -text
......
...@@ -39,6 +39,7 @@ function sites_edit_config($row) ...@@ -39,6 +39,7 @@ function sites_edit_config($row)
function formulaires_editer_site_verifier_dist($id_syndic='new', $id_rubrique=0, $lier_trad=0, $retour='', $config_fonc='sites_edit_config', $row=array(), $hidden=''){ function formulaires_editer_site_verifier_dist($id_syndic='new', $id_rubrique=0, $lier_trad=0, $retour='', $config_fonc='sites_edit_config', $row=array(), $hidden=''){
include_spip('inc/filtres'); include_spip('inc/filtres');
include_spip('inc/site');
$oblis = array('nom_site','url_site'); $oblis = array('nom_site','url_site');
// Envoi depuis le formulaire d'analyse automatique d'un site // Envoi depuis le formulaire d'analyse automatique d'un site
if (strlen(vider_url($u = _request('url_auto')))) { if (strlen(vider_url($u = _request('url_auto')))) {
...@@ -62,103 +63,4 @@ function formulaires_editer_site_traiter_dist($id_syndic='new', $id_rubrique=0, ...@@ -62,103 +63,4 @@ function formulaires_editer_site_traiter_dist($id_syndic='new', $id_rubrique=0,
} }
// http://doc.spip.org/@analyser_site
function analyser_site($url) {
include_spip('inc/filtres');
include_spip('inc/distant');
// Accepter les URLs au format feed:// ou qui ont oublie le http://
$url = preg_replace(',^feed://,i', 'http://', $url);
if (!preg_match(',^[a-z]+://,i', $url)) $url = 'http://'.$url;
$texte = recuperer_page($url, true);
if (!$texte) return false;
if (preg_match(',<(channel|feed)([:[:space:]][^>]*)?'
.'>(.*)</\1>,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(',<image.*<url.*>(.*)</url>.*</image>,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'] = $image['fichier'];
}
else if ($image['fichier']) {
spip_unlink($image['fichier']);
}
}
}
else {
$result['syndication'] = 'non';
$result['url_site'] = $url;
if (preg_match(',<head>(.*(description|title).*)</head>,Uims', $texte, $regs)) {
$head = filtrer_entites($regs[1]);
} else
$head = $texte;
if (preg_match(',<title[^>]*>(.*),i', $head, $regs))
$result['nom_site'] = filtrer_entites(supprimer_tags(preg_replace(',</title>.*,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;
}
?> ?>
\ No newline at end of file
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2008 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
// http://doc.spip.org/@analyser_site
function analyser_site($url) {
include_spip('inc/filtres');
include_spip('inc/distant');
// Accepter les URLs au format feed:// ou qui ont oublie le http://
$url = preg_replace(',^feed://,i', 'http://', $url);
if (!preg_match(',^[a-z]+://,i', $url)) $url = 'http://'.$url;
$texte = recuperer_page($url, true);
if (!$texte) return false;
if (preg_match(',<(channel|feed)([:[:space:]][^>]*)?'
.'>(.*)</\1>,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(',<image.*<url.*>(.*)</url>.*</image>,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'] = $image['fichier'];
}
else if ($image['fichier']) {
spip_unlink($image['fichier']);
}
}
}
else {
$result['syndication'] = 'non';
$result['url_site'] = $url;
if (preg_match(',<head>(.*(description|title).*)</head>,Uims', $texte, $regs)) {
$head = filtrer_entites($regs[1]);
} else
$head = $texte;
if (preg_match(',<title[^>]*>(.*),i', $head, $regs))
$result['nom_site'] = filtrer_entites(supprimer_tags(preg_replace(',</title>.*,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;
}
?>
\ No newline at end of file
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter