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). " ;
2016-08-17 15:45:08 +03:00
$this -> update = '2016-08-17' ;
2015-11-04 01:28:44 +03:00
}
2016-08-06 17:00:56 +03:00
private function DeveloppezDotComStripCDATA ( $string ) {
2016-08-03 13:37:56 +03:00
$string = str_replace ( '<![CDATA[' , '' , $string );
$string = str_replace ( ']]>' , '' , $string );
return $string ;
}
2014-07-14 21:41:09 +04:00
2016-08-03 13:42:57 +03:00
// 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
2016-08-06 17:00:56 +03:00
private function convert_smart_quotes ( $string )
2016-08-03 13:37:56 +03:00
{
$search = array ( chr ( 145 ),
chr ( 146 ),
chr ( 147 ),
chr ( 148 ),
chr ( 151 ));
2014-07-14 21:41:09 +04:00
2016-08-03 13:37:56 +03:00
$replace = array ( " ' " ,
" ' " ,
'"' ,
'"' ,
'-' );
2014-07-16 04:31:54 +04:00
2016-08-03 13:37:56 +03:00
return str_replace ( $search , $replace , $string );
}
2014-07-16 04:31:54 +04:00
2016-08-06 17:00:56 +03:00
private function DeveloppezDotComExtractContent ( $url ) {
2016-08-03 13:37:56 +03:00
$articleHTMLContent = $this -> file_get_html ( $url );
$text = $this -> convert_smart_quotes ( $articleHTMLContent -> find ( 'div.content' , 0 ) -> innertext );
$text = utf8_encode ( $text );
return trim ( $text );
}
2014-07-16 04:31:54 +04:00
2016-08-03 13:42:57 +03:00
public function collectData ( array $param ){
2016-08-17 15:45:08 +03:00
$rssFeed = $this -> file_get_html ( 'http://www.developpez.com/index/rss' ) or $this -> returnServerError ( 'Could not request http://www.developpez.com/index/rss' );
2016-08-03 13:42:57 +03:00
$limit = 0 ;
2014-07-14 21:41:09 +04:00
2016-08-03 13:42:57 +03:00
foreach ( $rssFeed -> find ( 'item' ) as $element ) {
if ( $limit < 10 ) {
$item = new \Item ();
$item -> title = $this -> DeveloppezDotComStripCDATA ( $element -> find ( 'title' , 0 ) -> innertext );
$item -> uri = $this -> DeveloppezDotComStripCDATA ( $element -> find ( 'guid' , 0 ) -> plaintext );
$item -> timestamp = strtotime ( $element -> find ( 'pubDate' , 0 ) -> plaintext );
$content = $this -> DeveloppezDotComExtractContent ( $item -> uri );
$item -> content = strlen ( $content ) ? $content : $element -> description ; //In case of it is a tutorial, we just keep the original description
$this -> items [] = $item ;
$limit ++ ;
}
}
}
2014-07-14 21:41:09 +04:00
2016-08-03 13:42:57 +03:00
public function getCacheDuration (){
return 1800 ; // 30min
}
2014-07-14 21:41:09 +04:00
}