source: cpc/trunk/project/lib/task/loadAmdmtsTask.class.php @ 2673

Last change on this file since 2673 was 2673, checked in by teymour, 9 years ago

Ajout des sous amendements au moment du load

File size: 4.5 KB
Line 
1<?php
2
3class loadAmdmtsTask extends sfBaseTask {
4  protected function configure() {
5    $this->namespace = 'load';
6    $this->name = 'Amdmts';
7    $this->briefDescription = 'Load Amendements data';
8    $this->addOption('env', null, sfCommandOption::PARAMETER_OPTIONAL, 'Changes the environment this task is run in', 'test');
9    $this->addOption('app', null, sfCommandOption::PARAMETER_OPTIONAL, 'Changes the environment this task is run in', 'frontend');
10  }
11
12  protected function execute($arguments = array(), $options = array()) {
13  // your code here
14    $dir = dirname(__FILE__).'/../../batch/amendements/json/';
15    $manager = new sfDatabaseManager($this->configuration);
16
17    if (is_dir($dir)) {
18      if ($dh = opendir($dir)) {
19        while (($file = readdir($dh)) != false) {
20          if ($file == ".." || $file == ".") continue;
21          $ct_lines = 0;
22          $ct_lus = 0;
23          $ct_crees = 0;
24          foreach(file($dir.$file) as $line) {
25            $ct_lines++;
26            $json = json_decode($line);
27            if (!$json) {
28                echo "ERROR json : $line";
29                continue;
30            }
31            if (!$json->source || !$json->legislature || !$json->numero || !$json->loi || !$json->sujet || !$json->texte || !$json->date || !isset($json->rectif)) {
32              echo "ERROR mandatory arg missing (source|legis|numero|loi|sujet|texte|date|rectif): $line\n";
33              continue;
34            }
35            $ct_lus++;
36            $modif = true;
37            $amdmt = Doctrine::getTable('Amendement')->findOneByLegisLoiNumRect($json->legislature, $json->loi, $json->numero, $json->rectif);
38            if ($json->rectif > 0) foreach(Doctrine::getTable('Amendement')->findBySource($json->source) as $rect) {
39             if ($rect->rectif < $json->rectif && $rect->texteloi_id == $json->loi && $rect->numero == $json->numero) {
40              $rect->sort = "Rectifié";
41              $rect->save();
42             }
43            }
44           
45            if (!$amdmt) {
46              $ct_crees++;
47              $amdmt = new Amendement();
48              $amdmt->source = $json->source;
49              $amdmt->legislature = $json->legislature;
50              $amdmt->texteloi_id = $json->loi;
51              $amdmt->addTag('loi:numero='.$amdmt->texteloi_id);
52              $amdmt->numero = $json->numero;
53              $amdmt->rectif = $json->rectif;
54            } elseif ($amdmt->signataires == $json->auteurs && ($amdmt->date == $json->date || ($amdmt->texte == $json->texte && $amdmt->expose == $json->expose && $amdmt->sujet == $json->sujet))) {
55              $modif = false;
56            }
57            if ($modif) {
58              $amdmt->date = $json->date;
59              $lettre = $amdmt->getLettreLoi();
60              if ($json->serie) {
61                if (preg_match('/,/', $json->serie)) {
62                  $arr = preg_split('/,/', $json->serie);
63                  foreach ($arr as $gap_stri) {
64                    $gap = preg_split('/-/', $gap_stri);
65                    for ($n = $gap[0]; $n <= $gap[1]; $n++) 
66                      $amdmt->addTag('loi:amendement='.$n.$lettre);
67                  }
68                } else {
69                  $gap = preg_split('/-/', $json->serie);
70                  for ($n = $gap[0]; $n <= $gap[1]; $n++)
71                    $amdmt->addTag('loi:amendement='.$n.$lettre);
72                }
73              } else $amdmt->addTag('loi:amendement='.$amdmt->numero);
74              if ($json->parent)
75                $amdmt->sous_amendement_de = $json->parent.$lettre;
76              $amdmt->sujet = $json->sujet;
77              $amdmt->texte = $json->texte;
78              if ($json->expose)
79                $amdmt->expose = $json->expose;
80              $amdmt->content_md5 = md5($json->legislature.$json->loi.$json->sujet.$json->texte);
81              if ($json->auteurs) {
82                $amdmt->signataires = $json->auteurs;
83                $amdmt->setAuteurs($json->auteurs);
84              } else if (!$json->sort || !preg_match('/(irrecevable|retir)/i', $json->sort)) {
85                echo "ERROR json auteurs missing : $line\n";
86                $amdmt->free();
87                continue;
88              }
89            }
90            if ($json->sort)
91              $amdmt->sort = $json->sort;
92            elseif (!$amdmt->sort)
93              $amdmt->sort = "Indéfini";
94            $amdmt->save();
95            $amdmt->free();
96          }
97          if ($ct_crees) print "$dir$file\n".$ct_lines." amendements lus : ".$ct_lus." écrits dont ".$ct_crees." nouveaux.\n";
98          unlink($dir.$file);
99        }
100        closedir($dh);
101      }
102    }
103  }
104}
Note: See TracBrowser for help on using the repository browser.