2014-07-14 19:41:09 +02:00
< ? php
class DeveloppezDotComBridge extends BridgeAbstract {
2015-11-03 23:28:44 +01: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-06 16:00:56 +02:00
private function DeveloppezDotComStripCDATA ( $string ) {
2016-08-03 12:37:56 +02:00
$string = str_replace ( '<![CDATA[' , '' , $string );
$string = str_replace ( ']]>' , '' , $string );
return $string ;
}
2014-07-14 19:41:09 +02:00
2016-07-08 19:06:35 +02:00
// F***ing quotes from Microsoft Word badly encoded, here was the trick:
2016-08-03 12:42:57 +02:00
// http://stackoverflow.com/questions/1262038/how-to-replace-microsoft-encoded-quotes-in-php
2016-08-06 16:00:56 +02:00
private function convert_smart_quotes ( $string )
2016-08-03 12:37:56 +02:00
{
$search = array ( chr ( 145 ),
chr ( 146 ),
chr ( 147 ),
chr ( 148 ),
chr ( 151 ));
2014-07-14 19:41:09 +02:00
2016-08-03 12:37:56 +02:00
$replace = array ( " ' " ,
" ' " ,
'"' ,
'"' ,
'-' );
2014-07-16 02:31:54 +02:00
2016-08-03 12:37:56 +02:00
return str_replace ( $search , $replace , $string );
}
2014-07-16 02:31:54 +02:00
2016-08-06 16:00:56 +02:00
private function DeveloppezDotComExtractContent ( $url ) {
2016-07-08 19:06:35 +02:00
$articleHTMLContent = $this -> getSimpleHTMLDOM ( $url );
2016-08-03 12:37:56 +02:00
$text = $this -> convert_smart_quotes ( $articleHTMLContent -> find ( 'div.content' , 0 ) -> innertext );
$text = utf8_encode ( $text );
return trim ( $text );
}
2014-07-16 02:31:54 +02:00
2016-08-25 01:24:53 +02:00
public function collectData (){
2016-07-08 19:06:35 +02:00
$rssFeed = $this -> getSimpleHTMLDOM ( 'http://www.developpez.com/index/rss' ) or $this -> returnServerError ( 'Could not request http://www.developpez.com/index/rss' );
2016-08-03 12:42:57 +02:00
$limit = 0 ;
2014-07-14 19:41:09 +02:00
2016-08-03 12:42:57 +02:00
foreach ( $rssFeed -> find ( 'item' ) as $element ) {
if ( $limit < 10 ) {
2016-08-22 18:55:59 +02:00
$item = array ();
$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
2016-08-03 12:42:57 +02:00
$this -> items [] = $item ;
$limit ++ ;
}
}
}
2014-07-14 19:41:09 +02:00
2016-08-03 12:42:57 +02:00
public function getCacheDuration (){
return 1800 ; // 30min
}
2014-07-14 19:41:09 +02:00
}