|
@@ -0,0 +1,70 @@
|
|
|
+<?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=$this->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);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|