source: cpc/trunk/project/lib/model/doctrine/Seance.class.php @ 2609

Last change on this file since 2609 was 2609, checked in by goya, 9 years ago

oups

File size: 5.7 KB
Line 
1<?php
2
3/**
4 * This class has been auto-generated by the Doctrine ORM Framework
5 */
6class Seance extends BaseSeance
7{
8  public function __tostring() {
9    return 'séance du '.myTools::displayDate($this->date).', '.$this->moment;
10  }
11 
12  static $debut_session = null;
13  public static function identifySession($date) {
14    if (!self::$debut_session) {
15      $session = Doctrine::getTable('VariableGlobale')->findOneByChamp('session');
16      self::$debut_session = unserialize($session->value);
17    }
18    if (!is_array(self::$debut_session))
19        return ;
20    foreach(array_keys(self::$debut_session) as $session) {
21      if (strtotime($date) >= strtotime(self::$debut_session[$session]))
22        return $session;
23    }
24  }
25
26  public function setSession($session) {
27    if (!$session && $this->date)
28      $session = self::identifySession($this->date);
29    return $this->_set('session', $session);
30  }
31  public function addPresence($parlementaire, $type, $source) {
32    $q = Doctrine::getTable('Presence')->createQuery('p');
33    $q->where('parlementaire_id = ?', $parlementaire->id)->andWhere('seance_id = ?', $this->id);
34    $presence = $q->execute()->getFirst();
35    $q->free();
36    unset($q);
37    if (!$presence) {
38      $presence = new Presence();
39      $presence->Parlementaire = $parlementaire;
40      $presence->Seance = $this;
41      $presence->date = $this->date;
42      $presence->save();
43    }
44    $res = $presence->addPreuve($type, $source);
45    $presence->free();
46    return $res;
47  }
48 
49  public function addPresenceLight($parlementaire_id, $type, $source) {
50    $q = Doctrine::getTable('Presence')->createQuery('p');
51    $q->where('parlementaire_id = ?', $parlementaire_id)->andWhere('seance_id = ?', $this->id);
52    $presence = $q->execute()->getFirst();
53    $q->free();
54    unset($q);
55    if (!$presence) {
56      $presence = new Presence();
57      $presence->_set('parlementaire_id', $parlementaire_id);
58      $presence->Seance = $this;
59      $presence->date = $this->date;
60      $presence->save();
61    }
62    $res = $presence->addPreuve($type, $source);
63    $presence->free();
64    return $res;
65  }
66
67 
68  public static function convertMoment($moment) {
69    if (preg_match('`(seance|séance)`i', $moment)) {
70        if (preg_match('`1`', $moment)) return "1ère séance";
71        if (preg_match('`(\d{1})`', $moment, $match)) return $match[1];
72        return $moment;
73    }
74    if (preg_match('/(reunion|réunion|^\d+$)/i', $moment)) {
75      if (preg_match('/1/', $moment)) return "1ère réunion";
76      if (preg_match('/(\d+)/', $moment, $match)) return $match[1]."ème réunion";
77      return $moment;
78    }
79    if (preg_match('/(\d{1,2})[:h](\d{2})/', $moment, $match)) {
80      $moment = sprintf("%02d:%02d", $match[1], $match[2]);
81      return $moment;
82    }
83    return $moment;
84  }
85 
86  public function getShortMoment() {
87    if (preg_match('/:/', $this->moment))
88      return preg_replace('/^0/', '', str_replace('00', '', str_replace(':', 'h', $this->moment)));
89    else if (!$this->moment)
90      return "réunion";
91    return $this->moment;
92  }
93 
94  public function setDate($date) {
95    if (!$this->_set('date', $date))
96      return false;
97    $date = strtotime($date);
98    $annee = date('Y', $date);
99    $semaine = date('W', $date);
100    if ($semaine == 53) {
101      $annee++;
102      $semaine = 1;
103    }
104    $this->_set('annee', $annee);
105    $this->_set('numero_semaine', $semaine);
106    return true;
107  }
108  public function getInterventions() {
109    $q = Doctrine::getTable('Intervention')->createQuery('i')->where('seance_id = ?', $this->id)->leftJoin('i.Personnalite p')->leftJoin('i.Parlementaire pa')->orderBy('i.timestamp ASC');
110    return $q->execute();
111  }
112  public function getTableMatiere() {
113    $q = Doctrine_Query::create()->select('s.titre, s.titre_complet, s.id, s.section_id, s.nb_interventions')->from('Section s')->leftJoin('s.Interventions i')->where('i.seance_id = ?', $this->id)->orderBy('i.timestamp ASC');
114    return $q->fetchArray();
115  }
116
117  public function getTypeOrga() {
118    if ($this->type == 'hemicycle') return "Hémicycle";
119    return $this->getOrganisme()->getNom();
120  }
121
122  public function deleteInterventions() {
123    if ($this->countComments()) {
124      throw new Exception('Il existe des commentaires');
125    }
126    foreach (Doctrine::getTable('Intervention')->createQuery('i')->where('i.seance_id = ?', $this->id)->execute() as $i) {
127      $i->delete();
128    }
129  }
130
131  public function countComments() {
132    $interventions = Doctrine::getTable('Intervention')->createQuery('i')->where('i.seance_id = ?', $this->id)->select('i.id')->fetchArray();
133    if (!count($interventions)) {
134        if ($this->type != "commission")
135          echo("WARNING: Pas d'intervention dans cette séance\n");
136        return 0;
137    }
138    $q = Doctrine::getTable('Commentaire')->createQuery('c')->whereIn('c.object_id', $interventions)->andWhere('c.object_type = ?', 'Intervention');
139    return $q->count();
140  }
141
142  public function getTitre($miniature = 0, $hemicycle = 0, $ref = '') {
143    $titre = '';
144    if ($ref != '')
145      $titre .= '<a href="'.url_for('@interventions_seance?seance='.$this->id).'#inter_'.$ref.'">';
146    if ($miniature == 0)
147      $titre .= 'S';
148    else $titre .= 's';
149    $titre .= 'éance ';
150    if ($hemicycle == 1)
151      $titre .= 'en hémicycle ';
152    $titre .= 'du '.preg_replace('/^0(\d)/', '\\1', myTools::displayDate($this->getDate()));
153    if ($moment = $this->getMoment()) {
154      if (preg_match('/(réunion|^\d+$)/', $moment))
155        $titre .= ' : ';
156      else $titre .= ' à ';
157      $titre .= $moment;
158    }
159    $titre = preg_replace('/00:00/', 'minuit', $titre);
160    $titre = preg_replace('/0(\d:\d{2})/', '\\1', $titre);
161    $titre = preg_replace('/ (\d+):(\d{2})/', ' \\1h\\2', $titre);
162    if ($ref != '')
163      $titre .= '</a>';
164    return $titre;
165  }
166}
Note: See TracBrowser for help on using the repository browser.