2014-07-14 21:41:09 +04:00
< ? php
class DeveloppezDotComBridge extends BridgeAbstract {
2015-11-04 01:28:44 +03:00
public function loadMetadatas () {
$this -> maintainer = " polopollo " ;
$this -> name = " Developpez.com Actus (FR) " ;
$this -> uri = " http://www.developpez.com/ " ;
$this -> description = " Returns the 15 newest posts from DeveloppezDotCom (full text). " ;
$this -> update = " 2014-07-14 " ;
}
2014-07-14 21:41:09 +04:00
public function collectData ( array $param ){
function DeveloppezDotComStripCDATA ( $string ) {
$string = str_replace ( '<![CDATA[' , '' , $string );
$string = str_replace ( ']]>' , '' , $string );
return $string ;
}
2014-07-16 04:31:54 +04: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 21:41:09 +04:00
function DeveloppezDotComExtractContent ( $url ) {
$articleHTMLContent = file_get_html ( $url );
2014-07-16 04:31:54 +04:00
$text = convert_smart_quotes ( $articleHTMLContent -> find ( 'div.content' , 0 ) -> innertext );
$text = utf8_encode ( $text );
return trim ( $text );
2014-07-14 21:41:09 +04: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-18 21:52:55 +04:00
if ( $limit < 10 ) {
2014-07-14 21:41:09 +04: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 04:31:54 +04: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 21:41:09 +04:00
$this -> items [] = $item ;
$limit ++ ;
}
}
}
public function getName (){
return 'DeveloppezDotCom' ;
}
public function getURI (){
return 'http://www.developpez.com/' ;
}
public function getCacheDuration (){
return 1800 ; // 30min
}
}