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

Last change on this file since 1237 was 1237, checked in by goya, 10 years ago

correction type source présence

File size: 2.5 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', '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 {
24      echo "Error wrong value for option --source, choose cri or jo";
25      return;
26    }
27    $dir = dirname(__FILE__).'/../../batch/'.$workdir.'/';
28    $manager = new sfDatabaseManager($this->configuration);   
29
30    if (is_dir($dir)) {
31      if ($dh = opendir($dir)) {
32        while (($file = readdir($dh)) !== false) {
33          if (! is_file($dir.$file))
34             continue;
35          foreach(file($dir.$file) as $line) {
36            $jo = json_decode($line);
37            if (!$jo) {
38              echo "ERROR json : ";
39              echo $line;
40              echo "\n";
41              continue;
42            }
43            if (!$jo->depute) {
44              echo "ERROR null : ";
45              echo $line;
46              echo "\n";
47              continue;
48            }
49            $depute = Doctrine::getTable('Parlementaire')->findOneByNom($jo->depute);
50            if ($jo->depute && !$depute) {
51              $depute = Doctrine::getTable('Parlementaire')->similarTo($jo->depute);
52            }
53            if (!$depute) {
54              echo "ERROR depute : ";
55              echo $line;
56              echo "\n";
57              continue;
58            }
59            $commission = Doctrine::getTable('Organisme')->findOneByNomOrCreateIt($jo->commission, 'parlementaire');
60            if (!$jo->reunion) {
61              $depute->clearRelated();
62              $depute->free();
63              $commission->clearRelated();
64              $commission->free();
65              echo "ERROR date : ";
66              echo $line;
67              echo "\n";
68              continue;
69            }
70            $seance = $commission->getSeanceByDateAndMomentOrCreateIt($jo->reunion, $jo->session);
71            $seance->addPresence($depute, $typesource, $jo->source);
72            $seance->free();
73            $commission->free();
74            $depute->free();
75          }
76          unlink($dir.$file);
77        }
78        closedir($dh);
79      }
80    }
81  }
82}
Note: See TracBrowser for help on using the repository browser.