source: cpc/trunk/project/lib/task/loadJOTask.class.php @ 2707

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

Ajout des présences pour l'APF, l'UIP et les groupes d'amitiés

File size: 2.6 KB
Line 
1<?php
2
3class loadJOTask extends sfBaseTask
4{
5  protected function configure()
6  {
7    $this->namespace = 'load';
8    $this->name = 'JO';
9    $this->briefDescription = 'Load Présences from JO data or CRI';
10    $this->addOption('source', null, sfCommandOption::PARAMETER_OPTIONAL, 'Define the source to load: jo or cri or international', 'jo');
11    $this->addOption('env', null, sfCommandOption::PARAMETER_OPTIONAL, 'Changes the environment this task is run in', 'test');
12    $this->addOption('app', null, sfCommandOption::PARAMETER_OPTIONAL, 'Changes the environment this task is run in', 'frontend');
13  }
14 
15  protected function execute($arguments = array(), $options = array())
16  {
17    if ($options['source'] === "jo") {
18      $workdir = "jo/xml";
19      $typesource = "jo";
20    } else if ($options['source'] === "cri") {
21      $workdir = "commission/presents";
22      $typesource = "compte-rendu";
23    } else if ($options['source'] === "international") {
24      $workdir = "presences/json";
25      $typesource = "international";
26    } else {
27      echo "Error wrong value for option --source, choose cri or jo";
28      return;
29    }
30    $dir = dirname(__FILE__).'/../../batch/'.$workdir.'/';
31    $manager = new sfDatabaseManager($this->configuration);   
32
33    if (is_dir($dir)) {
34      if ($dh = opendir($dir)) {
35        while (($file = readdir($dh)) !== false) {
36          if (! is_file($dir.$file))
37             continue;
38          foreach(file($dir.$file) as $line) {
39            $jo = json_decode($line);
40            if (!$jo) {
41              echo "ERROR json : ";
42              echo $line;
43              echo "\n";
44              continue;
45            }
46            if (!$jo->depute) {
47              echo "ERROR null : ";
48              echo $line;
49              echo "\n";
50              continue;
51            }
52            $depute = Doctrine::getTable('Parlementaire')->findOneByNom($jo->depute);
53            if ($jo->depute && !$depute) {
54              $depute = Doctrine::getTable('Parlementaire')->similarTo($jo->depute);
55            }
56            if (!$depute) {
57              echo "ERROR depute : ";
58              echo $line;
59              echo "\n";
60              continue;
61            }
62            $commission = Doctrine::getTable('Organisme')->findOneByNomOrCreateIt($jo->commission, 'parlementaire');
63            if (!$jo->reunion) {
64              $depute->clearRelated();
65              $depute->free();
66              $commission->clearRelated();
67              $commission->free();
68              echo "ERROR date : ";
69              echo $line;
70              echo "\n";
71              continue;
72            }
73            $seance = $commission->getSeanceByDateAndMomentOrCreateIt($jo->reunion, $jo->session);
74            $seance->addPresence($depute, $typesource, $jo->source);
75            $seance->free();
76            $commission->free();
77            $depute->free();
78          }
79          unlink($dir.$file);
80        }
81        closedir($dh);
82      }
83    }
84  }
85}
Note: See TracBrowser for help on using the repository browser.