2014-07-14 19:41:09 +02:00
< ? php
/**
* RssBridgeDeveloppezDotCom
* Returns the 15 newest posts from http :// www . developpez . com ( full text )
* 2014 - 07 - 14
*
* @ name Developpez . com Actus ( FR )
* @ homepage http :// www . developpez . com /
* @ description Returns the 15 newest posts from DeveloppezDotCom ( full text ) .
* @ maintainer polopollo
*/
class DeveloppezDotComBridge extends BridgeAbstract {
public function collectData ( array $param ){
function DeveloppezDotComStripCDATA ( $string ) {
$string = str_replace ( '<![CDATA[' , '' , $string );
$string = str_replace ( ']]>' , '' , $string );
return $string ;
}
2014-07-16 02:31:54 +02:00
function convert_smart_quotes ( $string ) //F***ing quotes from Microsoft Word badly encoded, here was the trick: http://stackoverflow.com/questions/1262038/how-to-replace-microsoft-encoded-quotes-in-php
{
$search = array ( chr ( 145 ),
chr ( 146 ),
chr ( 147 ),
chr ( 148 ),
chr ( 151 ));
$replace = array ( " ' " ,
" ' " ,
'"' ,
'"' ,
'-' );
return str_replace ( $search , $replace , $string );
}
2014-07-14 19:41:09 +02:00
function DeveloppezDotComExtractContent ( $url ) {
$articleHTMLContent = file_get_html ( $url );
2014-07-16 02:31:54 +02:00
$text = convert_smart_quotes ( $articleHTMLContent -> find ( 'div.content' , 0 ) -> innertext );
$text = utf8_encode ( $text );
return trim ( $text );
2014-07-14 19:41:09 +02:00
}
$rssFeed = file_get_html ( 'http://www.developpez.com/index/rss' ) or $this -> returnError ( 'Could not request http://www.developpez.com/index/rss' , 404 );
$limit = 0 ;
foreach ( $rssFeed -> find ( 'item' ) as $element ) {
2014-07-16 02:31:54 +02:00
if ( $limit < 2 ) {
2014-07-14 19:41:09 +02:00
$item = new \Item ();
$item -> title = DeveloppezDotComStripCDATA ( $element -> find ( 'title' , 0 ) -> innertext );
$item -> uri = DeveloppezDotComStripCDATA ( $element -> find ( 'guid' , 0 ) -> plaintext );
$item -> timestamp = strtotime ( $element -> find ( 'pubDate' , 0 ) -> plaintext );
2014-07-16 02:31:54 +02:00
$content = DeveloppezDotComExtractContent ( $item -> uri );
$item -> content = strlen ( $content ) ? $content : $element -> description ; //In case of it is a tutorial, we just keep the original description
2014-07-14 19:41:09 +02:00
$this -> items [] = $item ;
$limit ++ ;
}
}
}
public function getName (){
return 'DeveloppezDotCom' ;
}
public function getURI (){
return 'http://www.developpez.com/' ;
}
public function getCacheDuration (){
return 1800 ; // 30min
}
}