summaryrefslogtreecommitdiff
path: root/bridges/LegifranceJOBridge.php
diff options
context:
space:
mode:
Diffstat (limited to 'bridges/LegifranceJOBridge.php')
-rw-r--r--bridges/LegifranceJOBridge.php68
1 files changed, 68 insertions, 0 deletions
diff --git a/bridges/LegifranceJOBridge.php b/bridges/LegifranceJOBridge.php
new file mode 100644
index 0000000..348be8f
--- /dev/null
+++ b/bridges/LegifranceJOBridge.php
@@ -0,0 +1,68 @@
+<?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);
+ }
+ }
+}