forked from spip/sites
Compare commits
44 Commits
Author | SHA1 | Date |
---|---|---|
![]() |
5a8c5e5c6a | 4 years ago |
![]() |
e5396749ef | 5 years ago |
![]() |
fed401d4c5 | 6 years ago |
![]() |
38c0a5149f | 6 years ago |
![]() |
50ce35c7b6 | 6 years ago |
![]() |
34b3e0fb1f | 7 years ago |
![]() |
9038715e65 | 7 years ago |
![]() |
c2753631a3 | 7 years ago |
![]() |
6d790612e5 | 7 years ago |
![]() |
d2f97a6483 | 7 years ago |
![]() |
a22489e6a0 | 7 years ago |
![]() |
72821c6b3f | 7 years ago |
![]() |
6a11dd1f7b | 7 years ago |
![]() |
b01c26b630 | 7 years ago |
![]() |
2bbce7e880 | 7 years ago |
![]() |
34246c6fc5 | 7 years ago |
![]() |
a144140467 | 8 years ago |
![]() |
5805f7eac7 | 8 years ago |
![]() |
9e62230ecc | 8 years ago |
![]() |
ea319e3afc | 8 years ago |
![]() |
47fcd8c6e4 | 8 years ago |
![]() |
e4e8d5b5ec | 9 years ago |
![]() |
72714e632d | 9 years ago |
![]() |
78bda51461 | 9 years ago |
![]() |
7945451ddc | 9 years ago |
![]() |
a0d0e5f53c | 9 years ago |
![]() |
87dc9ae7af | 9 years ago |
![]() |
05d861b585 | 9 years ago |
![]() |
9aab5cd507 | 9 years ago |
![]() |
e5b730c3d3 | 9 years ago |
![]() |
5a08aabf52 | 9 years ago |
![]() |
e877cb548b | 9 years ago |
![]() |
5b2da28d0e | 10 years ago |
![]() |
0e957b33c7 | 10 years ago |
![]() |
376f1a073b | 10 years ago |
![]() |
79691fe031 | 10 years ago |
![]() |
1736c56bc9 | 10 years ago |
![]() |
b70c23665d | 10 years ago |
![]() |
b50ad28e24 | 10 years ago |
![]() |
3148e5a9d2 | 10 years ago |
![]() |
05ea196ee1 | 10 years ago |
![]() |
bca42902e3 | 10 years ago |
![]() |
fe3b4fb1ff | 10 years ago |
![]() |
5ac7d22c12 | 11 years ago |
108 changed files with 1559 additions and 3607 deletions
@ -0,0 +1,211 @@
|
||||
<?php |
||||
/** |
||||
* adaptation en php de feedfinder.py : |
||||
* |
||||
* """Ultra-liberal feed finder, de Mark Pilgrim |
||||
* <http://diveintomark.org/projects/feed_finder/> |
||||
* Par: courcy.michael@wanadoo.fr |
||||
* |
||||
* adaptation en php, je ne reprends qu'une partie de cette algorithme |
||||
* |
||||
* 0) A chaque etape on verifie si les feed indiques sont reellement des feeds |
||||
* 1) Si l'uri passe est un feed on retourne le resultat tout simplement |
||||
* 2) Si le header de la page contient des balises LINK qui renvoient vers des feed on les retourne |
||||
* 3) on cherche les liens <a> qui se termine par ".rss", ".rdf", ".xml", ou ".atom" |
||||
* 4) on cherche les liens <a> contenant "rss", "rdf", "xml", ou "atom" |
||||
* |
||||
* j'integre pas l'interrogation avec xml_rpc de syndic8, mais on peut le faire assez facilement |
||||
* dans la phase de test sur differentes url je n'ai constate aucune diffrerence entre les reponses |
||||
* donnees par feedfinder.py et les miennes donc je ne suis pas sur de voir l'interet |
||||
* |
||||
* Je ne me preoccupe pas comme l'auteur de savoir si mes liens de feed sont sur le meme serveur ou pas |
||||
* |
||||
* exemple d'utilisation |
||||
* |
||||
* print_r (get_feed_from_url("http://willy.boerland.com/myblog/")); |
||||
* |
||||
* on obtient |
||||
* |
||||
* Array |
||||
* ( |
||||
* [0] => http://willy.boerland.com/myblog/atom/feed |
||||
* [1] => http://willy.boerland.com/myblog/blogapi/rsd |
||||
* [2] => http://willy.boerland.com/myblog/rss.xml |
||||
* [3] => http://willy.boerland.com/myblog/node/feed |
||||
* ) |
||||
*/ |
||||
if (!defined('_ECRIRE_INC_VERSION')) return; |
||||
|
||||
$verif_complete = 0; //mettez le a 1 si vous voulez controler la validite des feed trouves mais le temps d'execution |
||||
//est alors plus long |
||||
|
||||
/** |
||||
* une fonction qui permet de si un lien est un feed ou nom, |
||||
* si c'est un feed elle retourne son type, si c'est pas un feed elle retourne 0, |
||||
* cette verification est évidemment très très légère |
||||
* |
||||
* @param string $url |
||||
* URL à analyser |
||||
* @return string|0 |
||||
* Retourne son type (rss|atom|rdf) ou 0 si pas feed |
||||
*/ |
||||
function is_feed($url){ |
||||
|
||||
/** |
||||
* méthode SPIP |
||||
*/ |
||||
if (function_exists('recuperer_page')) { |
||||
$buffer = recuperer_page($url); |
||||
if (preg_match("/<(\w*) .*/", $buffer, $matches)){ |
||||
//ici on detecte la premiere balise |
||||
$type_feed = $matches[1]; |
||||
switch ($type_feed) { |
||||
case "rss": return "rss"; |
||||
case "feed": return "atom"; |
||||
case "rdf": return "rdf"; |
||||
} |
||||
} |
||||
return ''; |
||||
} |
||||
|
||||
$fp = @fopen($url, "r"); |
||||
if (!$fp ) |
||||
return 0; |
||||
//verifion la nature de ce fichier |
||||
while (!feof($fp)) { |
||||
$buffer = fgets($fp, 4096); |
||||
if (preg_match("/<(\w*) .*/", $buffer, $matches)){ |
||||
//ici on detecte la premiere balise |
||||
$type_feed = $matches[1]; |
||||
switch ($type_feed) { |
||||
case "rss": fclose($fp); return "rss"; |
||||
case "feed": fclose($fp); return "atom"; |
||||
case "rdf": fclose($fp); return "rdf"; |
||||
default : fclose($fp); return 0; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
/*****************test is_feed****************************** |
||||
echo is_feed("https://contrib.spip.net/spip.php?page=backend" _EXTENSIO_PHP") . "<br />"; //retourne rss |
||||
echo is_feed("http://liberation.fr/rss.php") . "<br />"; //retourne rss |
||||
echo is_feed("http://liberation.fr/rss.php") . "<br />"; //retourne rss |
||||
echo is_feed("http://willy.boerland.com/myblog/atom/feed") //retourne atom |
||||
echo is_feed("http://spip.net/") . "<br />"; //retoune 0 |
||||
************************************************************/ |
||||
|
||||
/** |
||||
* fonction sans finesse mais efficace |
||||
* on parcourt ligne par ligne a la recherche de balise <a> ou <link> |
||||
* si dans le corps de celle-ci on trouve les mots rss, xml, atom ou rdf |
||||
* alors on recupere la valeur href='<url>', on adapte celle-ci si elle |
||||
* est relative et on verifie que c'est bien un feed si oui on l'ajoute |
||||
* au tableau des feed si on ne trouve rien ou si aucun feed est trouve on retourne |
||||
* un tableau vide |
||||
* |
||||
* @param string $url |
||||
* L'URL à analyser |
||||
* @param $buffer |
||||
* @return array $feed_list |
||||
* Le tableau des feed trouvés dans la page |
||||
*/ |
||||
function get_feed_from_url($url, $buffer=false){ |
||||
global $verif_complete; |
||||
//j'ai prevenu ce sera pas fin |
||||
if (!preg_match("/^http:\/\/.*/", $url)) $url = "http://www." . $url; |
||||
if (!$buffer) $buffer = @file_get_contents($url); |
||||
|
||||
include_spip("inc/filtres"); |
||||
|
||||
$feed_list = array(); |
||||
//extraction des <link> |
||||
if ($links = extraire_balises($buffer,"link")){ |
||||
//y a t-y rss atom rdf ou xml dans ces balises |
||||
foreach($links as $link){ |
||||
if ( |
||||
(strpos($link, "rss") |
||||
|| strpos($link, "rdf") |
||||
|| strpos($link, "atom") |
||||
|| strpos($link, "xml")) |
||||
&& |
||||
(!strpos($link,'opensearch') && !strpos($link,'oembed')) |
||||
){ |
||||
//voila un candidat on va extraire sa partie href et la placer dans notre tableau |
||||
if ($href = extraire_attribut($link,"href")){ |
||||
//on aura pris soin de verifier si ce lien est relatif d'en faire un absolu |
||||
$href = suivre_lien($url, $href); |
||||
if(!$verif_complete OR is_feed($href)){ |
||||
$feed_list[] = $href; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
//extraction des <a> |
||||
if ($links = extraire_balises($buffer,"a")){ |
||||
//y a t-y rss atom rdf ou xml dans ces balises |
||||
foreach($links as $link){ |
||||
if ( |
||||
(strpos($link, "rss") |
||||
|| strpos($link, "rdf") |
||||
|| strpos($link, "atom") |
||||
|| strpos($link, "xml")) |
||||
&& |
||||
(!strpos($link,'opensearch') && !strpos($link,'oembed')) |
||||
){ |
||||
//voila un candidat on va extraire sa partie href et la placer dans notre tableau |
||||
if ($href = extraire_attribut($link,"href")){ |
||||
//on aura pris soin de verifier si ce lien est relatif d'en faire un absolu |
||||
$href = suivre_lien($url, $href); |
||||
if(!$verif_complete OR is_feed($href)){ |
||||
$feed_list[] = $href; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
// si c'est un site SPIP, tentons l'url connue |
||||
if (!count($feed_list) |
||||
AND ( |
||||
strpos($url,"spip") OR stripos($buffer,"spip") |
||||
)){ |
||||
$href = suivre_lien($url,"spip.php?page=backend"); |
||||
if (is_feed($href)) |
||||
$feed_list[] = $href; |
||||
} |
||||
return $feed_list; |
||||
} |
||||
/************************************ getFeed **************************** |
||||
print_r (get_feed_from_url("contrib.spip.net")); |
||||
print_r (get_feed_from_url("http://liberation.fr/")); |
||||
print_r (get_feed_from_url("cnn.com")); |
||||
print_r (get_feed_from_url("http://willy.boerland.com/myblog/")); |
||||
***************************** Resultat ***************************************** |
||||
Array |
||||
( |
||||
[0] => https://contrib.spip.net/backend.php |
||||
) |
||||
Array |
||||
( |
||||
[0] => http://www.liberation.fr/rss.php |
||||
) |
||||
Array |
||||
( |
||||
[0] => http://rss.cnn.com/rss/cnn_topstories.rss |
||||
[1] => http://rss.cnn.com/rss/cnn_latest.rss |
||||
[2] => http://www.cnn.com/services/rss/ |
||||
[3] => http://www.cnn.com/services/rss/ |
||||
[4] => http://www.cnn.com/services/rss/ |
||||
) |
||||
Array |
||||
( |
||||
[0] => http://willy.boerland.com/myblog/atom/feed |
||||
[1] => http://willy.boerland.com/myblog/blogapi/rsd |
||||
[2] => http://willy.boerland.com/myblog/rss.xml |
||||
[3] => http://willy.boerland.com/myblog/node/feed |
||||
) |
||||
************************************************************************/ |
||||
|
||||
?> |
@ -1,30 +1,43 @@
|
||||
<traduction module="paquet-sites" gestionnaire="salvatore" url="http://trad.spip.org" source="svn://zone.spip.org/spip-zone/_core_/plugins/sites/lang/" reference="fr"> |
||||
<langue code="ar" url="http://trad.spip.org/tradlang_module/paquet-sites?lang_cible=ar"> |
||||
<traducteur nom="<span lang='fr'>George</span>" lien="http://trad.spip.org/auteur/جورج-قندلفت" /> |
||||
<traduction module="paquet-sites" gestionnaire="salvatore" url="https://trad.spip.net" source="svn://zone.spip.org/spip-zone/_core_/plugins/sites/lang/" reference="fr"> |
||||
<langue code="ar" url="https://trad.spip.net/tradlang_module/paquet-sites?lang_cible=ar" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> |
||||
<traducteur nom="George" lien="https://trad.spip.net/auteur/جورج-قندلفت" /> |
||||
</langue> |
||||
<langue code="de" url="http://trad.spip.org/tradlang_module/paquet-sites?lang_cible=de"> |
||||
<traducteur nom="klaus++" lien="http://trad.spip.org/auteur/klaus" /> |
||||
<langue code="de" url="https://trad.spip.net/tradlang_module/paquet-sites?lang_cible=de" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> |
||||
<traducteur nom="klaus++" lien="https://trad.spip.net/auteur/klaus" /> |
||||
</langue> |
||||
<langue code="en" url="http://trad.spip.org/tradlang_module/paquet-sites?lang_cible=en"> |
||||
<traducteur nom="kent1" lien="http://trad.spip.org/auteur/kent1" /> |
||||
<langue code="en" url="https://trad.spip.net/tradlang_module/paquet-sites?lang_cible=en" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> |
||||
<traducteur nom="kent1" lien="https://trad.spip.net/auteur/kent1" /> |
||||
</langue> |
||||
<langue code="es" url="http://trad.spip.org/tradlang_module/paquet-sites?lang_cible=es"> |
||||
<traducteur nom="jotacese" lien="http://trad.spip.org/auteur/jotacese" /> |
||||
<langue code="es" url="https://trad.spip.net/tradlang_module/paquet-sites?lang_cible=es" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> |
||||
<traducteur nom="jotacese" lien="https://trad.spip.net/auteur/jotacese" /> |
||||
</langue> |
||||
<langue code="fa" url="http://trad.spip.org/tradlang_module/paquet-sites?lang_cible=fa"> |
||||
<traducteur nom="Davood Hossein" lien="http://trad.spip.org/auteur/davood-hossein" /> |
||||
<langue code="fa" url="https://trad.spip.net/tradlang_module/paquet-sites?lang_cible=fa" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> |
||||
<traducteur nom="Davood Hossein" lien="https://trad.spip.net/auteur/davood-hossein" /> |
||||
</langue> |
||||
<langue code="fr" /> |
||||
<langue code="it" url="http://trad.spip.org/tradlang_module/paquet-sites?lang_cible=it"> |
||||
<traducteur nom="phante" lien="http://trad.spip.org/auteur/phante" /> |
||||
<langue code="fr" url="https://trad.spip.net/tradlang_module/paquet-sites?lang_cible=fr" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> |
||||
</langue> |
||||
<langue code="pt_br" url="http://trad.spip.org/tradlang_module/paquet-sites?lang_cible=pt_br"> |
||||
<traducteur nom="Ricardo Porto" lien="http://trad.spip.org/auteur/ricardo-porto" /> |
||||
<langue code="fr_fem" url="https://trad.spip.net/tradlang_module/paquet-sites?lang_cible=fr_fem" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> |
||||
<traducteur nom="denisb" lien="https://trad.spip.net/auteur/denisb" /> |
||||
</langue> |
||||
<langue code="ru" url="http://trad.spip.org/tradlang_module/paquet-sites?lang_cible=ru"> |
||||
<traducteur nom="Serge Markitanenko" lien="http://trad.spip.org/auteur/serge-markitanenko" /> |
||||
<langue code="it" url="https://trad.spip.net/tradlang_module/paquet-sites?lang_cible=it" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> |
||||
<traducteur nom="phante" lien="https://trad.spip.net/auteur/phante" /> |
||||
</langue> |
||||
<langue code="sk" url="http://trad.spip.org/tradlang_module/paquet-sites?lang_cible=sk"> |
||||
<traducteur nom="jaro" lien="http://trad.spip.org/auteur/jaro" /> |
||||
<langue code="lb" url="https://trad.spip.net/tradlang_module/paquet-sites?lang_cible=lb" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> |
||||
<traducteur nom="jwander" lien="https://trad.spip.net/auteur/jwander" /> |
||||
</langue> |
||||
<langue code="nl" url="https://trad.spip.net/tradlang_module/paquet-sites?lang_cible=nl" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> |
||||
<traducteur nom="Suske" lien="https://trad.spip.net/auteur/suske" /> |
||||
</langue> |
||||
<langue code="pt" url="https://trad.spip.net/tradlang_module/paquet-sites?lang_cible=pt" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> |
||||
<traducteur nom="Cláudia Anjos Lopes" lien="https://trad.spip.net/auteur/claudia_a_lopes" /> |
||||
</langue> |
||||
<langue code="pt_br" url="https://trad.spip.net/tradlang_module/paquet-sites?lang_cible=pt_br" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> |
||||
<traducteur nom="Ricardo Porto" lien="https://trad.spip.net/auteur/ricardo-porto" /> |
||||
</langue> |
||||
<langue code="ru" url="https://trad.spip.net/tradlang_module/paquet-sites?lang_cible=ru" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> |
||||
<traducteur nom="Serge Markitanenko" lien="https://trad.spip.net/auteur/serge-markitanenko" /> |
||||
</langue> |
||||
<langue code="sk" url="https://trad.spip.net/tradlang_module/paquet-sites?lang_cible=sk" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> |
||||
<traducteur nom="jaro" lien="https://trad.spip.net/auteur/jaro" /> |
||||
</langue> |
||||
</traduction> |
||||
|
@ -0,0 +1,15 @@
|
||||
<?php |
||||
// This is a SPIP language file -- Ceci est un fichier langue de SPIP |
||||
// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-sites?lang_cible=fr_fem |
||||
// ** ne pas modifier le fichier ** |
||||
|
||||
if (!defined('_ECRIRE_INC_VERSION')) return; |
||||
|
||||
$GLOBALS[$GLOBALS['idx_lang']] = array( |
||||
|
||||
// S |
||||
'sites_description' => 'Sites et syndication dans SPIP (privé et public)', |
||||
'sites_slogan' => 'Gestion des sites et de la syndication dans SPIP' |
||||
); |
||||
|
||||
?> |
@ -0,0 +1,15 @@
|
||||
<?php |
||||
// This is a SPIP language file -- Ceci est un fichier langue de SPIP |
||||
// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-sites?lang_cible=lb |
||||
// ** ne pas modifier le fichier ** |
||||
|
||||
if (!defined('_ECRIRE_INC_VERSION')) return; |
||||
|
||||
$GLOBALS[$GLOBALS['idx_lang']] = array( |
||||
|
||||
// S |
||||
'sites_description' => 'Websäiten a Syndicatioun am SPIP (privat an ëffentlech)', |
||||
'sites_slogan' => 'Gestioun vun de Websäiten a Syndicatioun am SPIP' |
||||
); |
||||
|
||||
?> |
@ -0,0 +1,15 @@
|
||||
<?php |
||||
// This is a SPIP language file -- Ceci est un fichier langue de SPIP |
||||
// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-sites?lang_cible=nl |
||||
// ** ne pas modifier le fichier ** |
||||
|
||||
if (!defined('_ECRIRE_INC_VERSION')) return; |
||||
|
||||
$GLOBALS[$GLOBALS['idx_lang']] = array( |
||||
|
||||
// S |
||||
'sites_description' => 'Sites en Websyndicatie in SPIP (privé en publiek)', # Websyndicatie d'après http://nl.wikipedia.org/wiki/Websyndicatie |
||||
'sites_slogan' => 'Beheer van de sites en van de Websyndicatie in SPIP' |
||||
); |
||||
|
||||
?> |
@ -0,0 +1,15 @@
|
||||
<?php |
||||
// This is a SPIP language file -- Ceci est un fichier langue de SPIP |
||||
// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-sites?lang_cible=pt |
||||
// ** ne pas modifier le fichier ** |
||||
|
||||
if (!defined('_ECRIRE_INC_VERSION')) return; |
||||
|
||||
$GLOBALS[$GLOBALS['idx_lang']] = array( |
||||
|
||||
// S |
||||
'sites_description' => 'Sítios e vinculação em SPIP (privado e público)', |
||||
'sites_slogan' => 'Gestão dos sítios e da vinculação em SPIP' |
||||
); |
||||
|
||||
?> |