source: cpc/trunk/project/lib/model/doctrine/Amendement.class.php @ 1390

Last change on this file since 1390 was 1390, checked in by roux, 11 years ago

present amdmts

File size: 6.5 KB
Line 
1<?php
2
3/**
4 * This class has been auto-generated by the Doctrine ORM Framework
5 */
6class Amendement extends BaseAmendement {
7
8  public function getLink() {
9    sfProjectConfiguration::getActive()->loadHelpers(array('Url'));
10    return url_for('@amendement?loi='.$this->texteloi_id.'&numero='.$this->numero);
11  }
12  public function getPersonne() {
13    return '';
14  }
15
16  public function __toString() {
17    $str = substr(strip_tags($this->expose), 0, 250);
18    if (strlen($str) == 250) {
19      $str .= '...';
20    }
21    return $str;
22  }
23
24  public function setAuteurs($auteurs) {
25    $groupe = null;
26    $sexe = null;
27    if (preg_match('/^\s*(.*),+\s*les\s+(.*\s+[gG]roupe|membres|députés)\s+(.*)\s*$/' ,$auteurs, $match)) {
28      $auteurs = $match[1];
29      $groupe = preg_replace("/^\s*(de la|de l'|du)\s*/", "", $match[3]);
30      if (preg_match('/^(.*)(et|,)\s+(M[\s\.ml].*)$/' ,$groupe, $match2)) {
31        $groupe = $match2[1];
32        $auteurs .= ", ".$match2[3];
33      }
34      if (preg_match('/(union.*mouvement.*populaire|UMP)/i',$groupe)) $groupe = "UMP";
35      elseif (preg_match('/(socialiste.*radical|SRC)/i',$groupe)) $groupe = "SRC";
36      elseif (preg_match('/(gauche.*démocrate|GDR)/i',$groupe)) $groupe = "GDR";
37      elseif (preg_match('/(nouveau.*centre|NC)/i',$groupe)) $groupe = "NC";
38      else $groupe = null;
39    }
40    if ($debug) echo $auteurs." // ".$groupe."\n";
41    $arr = preg_split('/,/', $auteurs);
42    $signataireindex = 1;
43    foreach ($arr as $depute) {
44      if (preg_match('/^(.*)\((.*)\)/', $depute, $match)) {
45        $depute = trim($match[1]);
46        $circo = preg_replace('/\s/', '-', ucfirst(trim($match[2])));
47      } else $circo = null;
48      if (preg_match('/(gouvernement|président|rapporteur|commission|questeur)/i', $depute)) {
49        if ($debug) print "WARN: Skip auteur ".$depute." for ".$this->source."\n";
50        continue;
51      } elseif (preg_match('/^\s*(M+[\s\.ml]{1})[a-z]*\s*([a-zA-Z].*)\s*$/', $depute, $match)) {
52          $nom = $match[2];
53          if (preg_match('/M[ml]/', $match[1]))
54            $sexe = 'F';
55          else $sexe = 'H';
56      } else $nom = preg_replace("/^\s*(.*)\s*$/", "\\1", $depute);
57      $nom = ucfirst($nom);
58      if ($debug) echo $nom."//".$sexe."//".$groupe."//".$circo." => ";
59      $depute = Doctrine::getTable('Parlementaire')->findOneByNomSexeGroupeCirco($nom, $sexe, $groupe, $circo, $this);
60      if (!$depute) print "ERROR: Auteur introuvable in ".$this->source."/".$this->numero." : ".$nom." // ".$sexe." // ".$groupe."\n";
61      else {
62        if ($debug) echo $depute->nom."\n";
63        if (!$groupe && $depute->groupe_acronyme != "") $groupe = $depute->groupe_acronyme;
64        $this->addParlementaire($depute, $signataireindex);
65        $depute->free();
66      }
67      $signataireindex++;
68    }
69  }
70
71  public function addParlementaire($depute, $signataireindex) {
72    foreach(Doctrine::getTable('ParlementaireAmendement')->createQuery('pa')->select('parlementaire_id')->where('amendement_id = ?', $this->id)->fetchArray() as $parlamdt) if ($parlamdt['parlementaire_id'] == $depute->id) return true;
73   
74    $pa = new ParlementaireAmendement();
75    $pa->_set('Parlementaire', $depute);
76    $pa->_set('Amendement', $this);
77    $pa->numero_signataire = $signataireindex;
78    if ($pa->save()) {
79      $pa->free();
80      return true;
81    } else return false;
82  }
83
84  public function getSignataires($link = 0) {
85    $signa = preg_replace("/M\s+/", "M. ", $this->_get('signataires'));
86    if ($link)
87      $signa = preg_replace('/(M+[\.mles\s]+)?([\wàéëêèïîôöûüÉ\s-]+)\s*(,\s*|$)/', '<a href="/deputes?search=\\2">\\1\\2</a>\\3', $signa);
88    return $signa;
89  }
90
91  public function getSection() {
92    return PluginTagTable::getObjectTaggedWithQuery('Section', array('loi:numero='.$this->texteloi_id))->fetchOne();
93  }
94
95  public function getIntervention($num_admt) {
96    $query = PluginTagTable::getObjectTaggedWithQuery('Intervention', array('loi:numero='.$this->texteloi_id, 'loi:amendement='.$num_admt));
97    $query->select('Intervention.id, Intervention.date, Intervention.seance_id, Intervention.md5')
98      ->groupBy('Intervention.date')
99      ->orderBy('Intervention.date DESC, Intervention.timestamp ASC');
100    return $query->fetchOne();
101  }
102
103  public function getTitre($link = 0) {
104    return $this->getPresentTitre($link).' au texte N° '.$this->texteloi_id.' - '.$this->sujet.' ('.$this->getPresentSort().')';
105  }
106
107  public function getShortTitre($link = 0) {
108    return $this->getPresentTitre($link).' ('.$this->getPresentSort().')';
109  }
110
111  public function getPresentTitre($link = 0) {
112    $parent = 0;
113    $pluriel = "";
114    $parent = $this->getTags(array('is_triple' => true,
115          'namespace' => 'loi',
116          'key' => 'sous_amendement_de',
117          'return'    => 'value'));
118    if (count($parent) == 1)
119      $titre = "Sous-Amendement";
120    else {
121      $parent = "";
122      $titre = "Amendement";
123    }
124    $numeros = $this->numero;
125    $lettre = $this->getLettreLoi();
126    $ident = $this->getTags(array('is_triple' => true,
127          'namespace' => 'loi',
128          'key' => 'amendement',
129          'return'    => 'value'));
130    if (count($ident) > 1 && $lettre != "") {
131      sort($ident);
132      if ($lettre) foreach ($ident as $iden) $iden .= $lettre;
133      $numeros = implode(', ', $ident);
134      $pluriel = "s";
135    }
136    $titre .= $pluriel." N° ".$numeros;
137    if ($this->rectif == 1)
138      $titre .= " rectifié".$pluriel;
139    elseif($this->rectif > 1)
140      $titre .= " ".$this->rectif."ème rectif.";
141    if ($parent != 0) {
142      sfProjectConfiguration::getActive()->loadHelpers(array('Url'));
143      $titre .= ' à l\'amendement N° ';
144      if ($link) $titre .= '<a href="'.url_for('@amendement?loi='.$this->texteloi_id.'&numero='.$parent[0]).'">';
145      $titre .= $parent[0].$lettre;
146      if ($link) $titre .= '</a>';
147    }
148    return $titre;
149  }
150
151  public function getPresentSort() {
152    return preg_replace('/indéfini/i', 'Sort indéfini', $this->getSort());
153  }
154
155  public function getTexte($style=1) {
156    if ($style == 1) {
157      return preg_replace('/\<p\>\s*«\s*([^\<]+)\<\/p\>/', '<blockquote>«&nbsp;\1</blockquote>', $this->_get('texte')); 
158    } else return $this->_get('texte');
159  }
160
161  public function getLettreLoi() {
162    if (preg_match('/^([A-Z])\d/', $this->numero, $match)) {
163      return $match[1];
164    }
165    return;
166  }
167
168  public function getTitreNoLink() {
169    return preg_replace('/\<a href.*\>(.*)<\/a\>/', '\1', $this->getTitre());
170  }
171 
172  public function getLinkPDF() {
173    return preg_replace('/\/amendement/', '/pdf/amendement', preg_replace('/\.asp(.*)$/', '.pdf', $this->source));
174  }
175}
Note: See TracBrowser for help on using the repository browser.