mirror of
https://github.com/RSS-Bridge/rss-bridge.git
synced 2025-04-23 15:06:53 +00:00
71 lines
2.1 KiB
PHP
71 lines
2.1 KiB
PHP
<?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);
|
|
}
|
|
}
|
|
}
|