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

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

Ajout d'un champ pour les amendements multiples (+correction bug rectifié)

File size: 4.6 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                $nb_serie = 0;
62                if (preg_match('/,/', $json->serie)) {
63                  $arr = preg_split('/,/', $json->serie);
64                  foreach ($arr as $gap_stri) {
65                    $gap = preg_split('/-/', $gap_stri);
66                    for ($n = $gap[0]; $n <= $gap[1]; $n++) {
67                      $amdmt->addTag('loi:amendement='.$n.$lettre);
68                      $nb_serie++;
69                    }
70                  }
71                } else {
72                  $gap = preg_split('/-/', $json->serie);
73                  for ($n = $gap[0]; $n <= $gap[1]; $n++) {
74                    $amdmt->addTag('loi:amendement='.$n.$lettre);
75                    $nb_serie++;
76                  }
77                }
78                $amdmt->nb_multiples = $nb_serie;
79              } else {
80                $amdmt->addTag('loi:amendement='.$amdmt->numero);
81                $amdmt->nb_multiples = 1;
82              }
83              if ($json->parent)
84                $amdmt->sous_amendement_de = $json->parent.$lettre;
85              $amdmt->sujet = $json->sujet;
86              $amdmt->texte = $json->texte;
87              if ($json->expose)
88                $amdmt->expose = $json->expose;
89              $amdmt->content_md5 = md5($json->legislature.$json->loi.$json->sujet.$json->texte);
90              if ($json->auteurs) {
91                $amdmt->signataires = $json->auteurs;
92                $amdmt->setAuteurs($json->auteurs);
93              } else if (!$json->sort || !preg_match('/(irrecevable|retir)/i', $json->sort)) {
94                echo "ERROR json auteurs missing : $line\n";
95                $amdmt->free();
96                continue;
97              }
98            }
99            if ($json->sort)
100              $amdmt->sort = $json->sort;
101            elseif (!$amdmt->sort)
102              $amdmt->sort = "Indéfini";
103            $amdmt->save();
104            $amdmt->free();
105          }
106          if ($ct_crees) print "$dir$file\n".$ct_lines." amendements lus : ".$ct_lus." écrits dont ".$ct_crees." nouveaux.\n";
107          unlink($dir.$file);
108        }
109        closedir($dh);
110      }
111    }
112  }
113}
Note: See TracBrowser for help on using the repository browser.