Roge Pierre
2003-01-11 09:57:25 UTC
Demande d'autorisation aux développeurs de SPIP de reprendre une partie
d'une fonction dans un programme externe à spip, également en GPL (il s'agit
des forums phpBB), en le signalant bien sûr dans le source pour la partie
reprise et en mettant le lien vers le site uZine.
Si j'ai votre accord, je publierais sur le forum www.phpBB-fr.org dans la
partie développement des modules la partie du source jointe ci-dessous en
l'état, avec le reste du module qui lui est développé par mes soins :).
L'objectif de ce module est de proposer une intégration des news d'un site
sous SPIP par exemple sur la page d'un forum phpBB. Je vous communiquerais
également le lien vers cette publication.
Cordialement,
Ptirhiik
La partie du source reprise des fonctions de syndication (inc-site.php3) :
______________________________________________________________________
function syndic_read_site($site_file_url)
{
//--------------------------------------------------------------------------
----------
//
// Cette fonction est une partie reprise et adaptée d'un module de spip,
// gestionnaire de publication sous license GPL :
http://www.uzine.net/rubrique91.html
// (un incontournable :))
//--------------------------------------------------------------------------
----------
$texte = "";
$items = array();
if ( ($site_file_url != "") && (strtolower($site_file_url) != "http://") )
{
if ($fp = @fopen($site_file_url, "r"))
{
while (!feof($fp)) $texte .= fread($fp, 16384);
if (strlen($texte)>10)
{
$txt_items=array();
while(strpos($texte,"<item")>0)
{
$debut_item = strpos($texte,"<item");
$fin_item = strpos($texte,"</item>")+strlen("</item>");
$txt_items[] = substr($texte,$debut_item,$fin_item-$debut_item);
$debut_texte = substr($texte,0,$debut_item);
$fin_texte = substr($texte,$fin_item,strlen($texte));
$texte = $debut_texte.$fin_texte;
}
if ( count($txt_items) > 0 )
{
for($i=0 ; $i<count($txt_items) ; $i++)
{
$match="";
ereg("<title>(.*)</title>",$txt_items[$i],$match);
$match[1] = eregi_replace(" ", " ", $match[1]);
$items[$i]['item_title'] = addslashes($match[1]);
$match="";
ereg("<link>(.*)</link>",$txt_items[$i],$match);
$items[$i]['item_link'] = addslashes($match[1]);
$match="";
ereg("<date>(.*)</date>",$txt_items[$i],$match);
$items[$i]['item_date'] = addslashes($match[1]);
$match="";
ereg("<author>(.*)</author>",$txt_items[$i],$match);
$match[1] = eregi_replace(" ", " ", $match[1]);
$items[$i]['item_author'] = addslashes($match[1]);
$match="";
ereg("<description[^>]*>([^<]*)</description>",$txt_items[$i],$match);
$match[1] = eregi_replace(" ", " ", $match[1]);
$items[$i]['item_descro'] = addslashes($match[1]);
}
} // end if count($txt_items)
} // end if strlen($texte)
fclose($fp);
} // end if ($fp)
} // end if file_exists($site_file_url)
return $items;
} // end function
______________________________________________________________________
d'une fonction dans un programme externe à spip, également en GPL (il s'agit
des forums phpBB), en le signalant bien sûr dans le source pour la partie
reprise et en mettant le lien vers le site uZine.
Si j'ai votre accord, je publierais sur le forum www.phpBB-fr.org dans la
partie développement des modules la partie du source jointe ci-dessous en
l'état, avec le reste du module qui lui est développé par mes soins :).
L'objectif de ce module est de proposer une intégration des news d'un site
sous SPIP par exemple sur la page d'un forum phpBB. Je vous communiquerais
également le lien vers cette publication.
Cordialement,
Ptirhiik
La partie du source reprise des fonctions de syndication (inc-site.php3) :
______________________________________________________________________
function syndic_read_site($site_file_url)
{
//--------------------------------------------------------------------------
----------
//
// Cette fonction est une partie reprise et adaptée d'un module de spip,
// gestionnaire de publication sous license GPL :
http://www.uzine.net/rubrique91.html
// (un incontournable :))
//--------------------------------------------------------------------------
----------
$texte = "";
$items = array();
if ( ($site_file_url != "") && (strtolower($site_file_url) != "http://") )
{
if ($fp = @fopen($site_file_url, "r"))
{
while (!feof($fp)) $texte .= fread($fp, 16384);
if (strlen($texte)>10)
{
$txt_items=array();
while(strpos($texte,"<item")>0)
{
$debut_item = strpos($texte,"<item");
$fin_item = strpos($texte,"</item>")+strlen("</item>");
$txt_items[] = substr($texte,$debut_item,$fin_item-$debut_item);
$debut_texte = substr($texte,0,$debut_item);
$fin_texte = substr($texte,$fin_item,strlen($texte));
$texte = $debut_texte.$fin_texte;
}
if ( count($txt_items) > 0 )
{
for($i=0 ; $i<count($txt_items) ; $i++)
{
$match="";
ereg("<title>(.*)</title>",$txt_items[$i],$match);
$match[1] = eregi_replace(" ", " ", $match[1]);
$items[$i]['item_title'] = addslashes($match[1]);
$match="";
ereg("<link>(.*)</link>",$txt_items[$i],$match);
$items[$i]['item_link'] = addslashes($match[1]);
$match="";
ereg("<date>(.*)</date>",$txt_items[$i],$match);
$items[$i]['item_date'] = addslashes($match[1]);
$match="";
ereg("<author>(.*)</author>",$txt_items[$i],$match);
$match[1] = eregi_replace(" ", " ", $match[1]);
$items[$i]['item_author'] = addslashes($match[1]);
$match="";
ereg("<description[^>]*>([^<]*)</description>",$txt_items[$i],$match);
$match[1] = eregi_replace(" ", " ", $match[1]);
$items[$i]['item_descro'] = addslashes($match[1]);
}
} // end if count($txt_items)
} // end if strlen($texte)
fclose($fp);
} // end if ($fp)
} // end if file_exists($site_file_url)
return $items;
} // end function
______________________________________________________________________