12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- <?php
- class LegifranceJOBridge extends BridgeAbstract{
- const MAINTAINER = 'Pierre Mazière';
- const NAME = 'Journal Officiel de la République Française';
- const URI = 'https://www.legifrance.gouv.fr/affichJO.do';
- const DESCRIPTION = 'Returns the laws and decrees officially registered daily in France';
- const PARAMETERS=array();
- private $author;
- private $timestamp;
- private $uri;
- private function extractItem($section,$subsection=null,$origin=null){
- $item=array();
- $item['author']=$this->author;
- $item['timestamp']=$this->timestamp;
- $item['uri']=$this->uri.'#'.count($this->items);
- $item['title']=$section->plaintext;
- if(!is_null($origin)){
- $item['title']='[ '.$item['title'].' / '.$subsection->plaintext.' ] '.$origin->plaintext;
- $data=$origin;
- }elseif(!is_null($subsection)){
- $item['title']='[ '.$item['title'].' ] '.$subsection->plaintext;
- $data=$subsection;
- }else{
- $data=$section;
- }
- $item['content']='';
- foreach($data->nextSibling()->find('a') as $content){
- $text=$content->plaintext;
- $href=$content->nextSibling()->getAttribute('resource');
- $item['content'].='<p><a href="'.$href.'">'.$text.'</a></p>';
- }
- return $item;
- }
- public function collectData(){
- $html=getSimpleHTMLDOM(self::URI)
- or $this->returnServer('Unable to download '.self::URI);
- $this->author=trim($html->find('h2.title',0)->plaintext);
- $uri=$html->find('h2.titleELI',0)->plaintext;
- $this->uri=trim(substr($uri,strpos($uri,'https')));
- $this->timestamp=strtotime(substr($this->uri,strpos($this->uri,'eli/jo/')+strlen('eli/jo/')));
- foreach($html->find('h3') as $section){
- $subsections=$section->nextSibling()->find('h4');
- foreach($subsections as $subsection){
- $origins=$subsection->nextSibling()->find('h5');
- foreach($origins as $origin){
- $this->items[]=$this->extractItem($section,$subsection,$origin);
- }
- if(!empty($origins)){
- continue;
- }
- $this->items[]=$this->extractItem($section,$subsection);
- }
- if(!empty($subsections)){
- continue;
- }
- $this->items[]=$this->extractItem($section);
- }
- }
- }
|