source: cpc/trunk/project/lib/model/doctrine/Parlementaire.class.php @ 1275

Last change on this file since 1275 was 1275, checked in by roux, 10 years ago

debugs liste deputes et citoyens et généralisation à fiche citoyen, liste deputes par groupe-commission-deptmt

File size: 16.3 KB
Line 
1<?php
2
3/**
4 * This class has been auto-generated by the Doctrine ORM Framework
5 */
6class Parlementaire extends BaseParlementaire
7{
8
9  public function __tostring() {
10    return $this->getNom();
11  }
12
13  /*  public function save() {
14    Doctrine::getTable('Personnalite')->hasChanged();
15    return parent::save($conn);
16    }*/
17
18  public function setCirconscription($str) {
19    if (preg_match('/(.*)\((\d+)/', $str, $match)) {
20      $this->nom_circo = trim($match[1]);
21      $this->num_circo = $match[2];
22    }
23  }
24
25  public function getNumCircoString($list = 0) {
26    if ($this->num_circo == 1) $string = $this->num_circo.'ère circonscription';
27    else $string = $this->num_circo.'ème circonscription';
28    if ($list == 1 && $this->num_circo < 10) {
29      $string = "&nbsp;".$string."&nbsp;";
30      if ($this->num_circo == 1) $string .= "&nbsp;";
31    }
32    return $string;
33  }
34
35  public function getNomPrenom() {
36    $weird = array('é' => 'e', 'è' => 'e', 'ë' => 'e', 'Le ' => 'Le', 'La ' => 'La', '\'' => '^ ');
37    $beg_name = " ".substr($this->nom_de_famille, 0, 3);
38    $ct = strpos($this->nom, $beg_name);
39    if (!$ct) foreach ($weird as $good => $bad)
40        if ($ct = strpos($this->nom, preg_replace("/".$bad."/", $good, $beg_name)))
41           break;
42    $nom = substr($this->nom, $ct+1);
43    $prenom = substr($this->nom, 0, strpos($this->nom, $nom));
44    return $nom.", ".preg_replace('/\s$/', '', $prenom);
45  }
46
47  public function getStatut($link = 0) {
48    if ($this->type == 'depute') {
49        if ($this->sexe == 'F') $type = 'députée';
50        else $type = 'député';
51    } else {
52        if ($this->sexe == 'F') $type = 'sénatrice';
53        else $type = 'sénateur';
54    }
55    $statut = "";
56    if ($this->fin_mandat != null) {
57      if ($this->sexe == 'F') $statut = 'ancienne ';
58      else $statut = 'ancien ';
59    }
60    $groupe = "";
61    if ($this->groupe_acronyme != "") {
62      if ($link == 1)
63        $groupe = " ".link_to($this->groupe_acronyme, '@list_parlementaires_groupe?acro='.$this->groupe_acronyme);
64      else $groupe = " ".$this->groupe_acronyme;
65    }
66    return $statut.$type.$groupe;
67  }
68 
69  public function getLongStatut($link = 0) {
70    $circo = $this->nom_circo;
71    if ($link == 1) {
72      $circo = link_to($this->nom_circo, '@list_parlementaires_departement?departement='.$circo);
73    }
74    return $this->getStatut($link).' de la '.$this->getNumCircoString().' '.$this->getPrefixeCirconscription().$circo;
75  }
76
77  public function setDebutMandat($str) {
78    if (preg_match('/(\d{2})\/(\d{2})\/(\d{4})/', $str, $m)) {
79      $this->_set('debut_mandat', $m[3].'-'.$m[2].'-'.$m[1]);
80    }
81  }
82  public function setFinMandat($str) {
83    if (preg_match('/(\d{2})\/(\d{2})\/(\d{4})/', $str, $m)) {
84      $this->_set('fin_mandat', $m[3].'-'.$m[2].'-'.$m[1]);
85    }
86    if (!$str) {
87      $this->_set('fin_mandat', NULL);
88    }
89  }
90  public function setFonctions($array) {
91    return $this->setPOrganisme('parlementaire', $array);
92  }
93  public function setExtras($array) {
94    return $this->setPOrganisme('extra', $array);
95  }
96  public function setGroupe($array) {
97    return $this->setPOrganisme('groupe', $array);
98  }
99
100  public function setPOrganisme($type, $array) {
101    if (!$array)
102      return;
103    $orgas = $this->getParlementaireOrganismes();
104    foreach($orgas->getKeys() as $key) {
105      $o = $orgas->get($key);
106      if ($o->type == $type)
107        $orgas->remove($key);
108    }
109    foreach ($array as $args) {
110      $orga = Doctrine::getTable('Organisme')->findOneByNomOrCreateIt($args[0], $type);
111      if ($type == 'groupe')
112        $this->groupe_acronyme = $orga->getSmallNomGroupe();
113      $po = new ParlementaireOrganisme();
114      $po->setParlementaire($this);
115      $po->setOrganisme($orga);
116      $fonction = preg_replace("/\(/","",$args[1]);
117      $po->setFonction($fonction);
118      $importance = ParlementaireOrganisme::defImportance($fonction);
119      $po->setImportance($importance);
120  /*      if (isset($args[2])) {
121        $po->setDebutFonction($args[2]);
122        }*/
123      $orgas->add($po);
124    }
125    $this->_set('ParlementaireOrganismes', $orgas);
126  }
127
128  private function getPOFromJoinIf($field, $value) {
129    $p = $this->toArray();
130    if (isset($p['ParlementaireOrganisme'])) {
131      $i = 0;
132      while (isset($p['ParlementaireOrganisme'][$i])) {
133        if ($p['ParlementaireOrganisme'][$i]['Organisme'][$field] == $value) {
134          $po = new ParlementaireOrganisme();
135          $o = new Organisme();
136          $o->fromArray($p['ParlementaireOrganisme'][$i]['Organisme']);
137          $po->setFonction($p['ParlementaireOrganisme'][$i]['fonction']);
138          $po->setParlementaire($this);
139          $po->setOrganisme($o);
140          return $po;
141        }
142        $i++;
143      }
144      return NULL;
145    }
146  }
147
148  public function getPOrganisme($str) {
149    if($po = $this->getPOFromJoinIf('nom', $str))
150      return $po;
151    foreach($this->getParlementaireOrganismes() as $po) {
152      if ($po['Organisme']->nom == $str)
153        return $po;
154    }
155  }
156  public function setAutresMandats($array) {
157    $this->_set('autres_mandats', serialize($array));
158  }
159  public function setMails($array) {
160    $this->_set('mails', serialize($array));
161  }
162  public function setAdresses($array) {
163    $this->_set('adresses', serialize($array));
164  }
165  public function getGroupe() {
166    if($po = $this->getPOFromJoinIf('type', 'groupe'))
167      return $po;
168    foreach($this->getParlementaireOrganismes() as $po) {
169      if ($po->type === 'groupe') 
170        return $po;
171    }
172  }
173  public function getExtras() {
174    $res = array();
175    foreach($this->getParlementaireOrganismes() as $po) {
176      if ($po->type == 'extra') 
177        array_push($res, $po);
178    }
179    return $res;
180  }
181  public function getResponsabilites() {
182    $res = array();
183    foreach($this->getParlementaireOrganismes() as $po) {
184      if ($po->type == 'parlementaire') 
185        $res[sprintf('%04d',abs(100-$po->importance)).$po->nom]=$po;
186    }
187    ksort($res);
188    return array_values($res);
189  }
190
191  public function hasPhoto() 
192  {
193    $photo = $this->_get('photo');
194    return (strlen($photo) > 0) ;
195  }
196  public function setPhoto($s) {
197    if (preg_match('/http/', $s)) {
198      $len = strlen($this->_get('photo'));
199      if ($len < 5200) {
200        $s = file_get_contents($s);
201      }else
202        return true;
203      if (!$s)
204        return false;
205    }
206    $this->_set('photo', $s);
207  }
208  public function getPageLink() {
209    return '@parlementaire?slug='.$this->slug;
210  }
211
212  public function getNomNumCirco() {
213    $shortcirco = trim(strtolower($this->_get('nom_circo')));
214    $shortcirco = preg_replace('/\s+/','-', $shortcirco);
215    return $this->_get('nom_circo')." (".$this->getNumeroDepartement($shortcirco).")";
216  }
217
218  public function getNumDepartement() {
219    $shortcirco = trim(strtolower($this->_get('nom_circo')));
220    $shortcirco = preg_replace('/\s+/','-', $shortcirco);
221    return $this->getNumeroDepartement($shortcirco);
222  }
223
224   static $dptmt_pref = array(
225     "Ain" => "de l'",
226     "Aisne" => "de l'",
227     "Allier" => "de l'",
228     "Alpes-de-Haute-Provence" => "des",
229     "Alpes-Maritimes" => "des",
230     "Ardèche" => "de l'",
231     "Ardennes" => "des",
232     "Ariège" => "d'",
233     "Aube" => "de l'",
234     "Aude" => "de l'",
235     "Aveyron" => "de l'",
236     "Bas-Rhin" => "du",
237     "Bouches-du-Rhône" => "des",
238     "Calvados" => "du",
239     "Cantal" => "du",
240     "Charente" => "de",
241     "Charente-Maritime" => "de",
242     "Cher" => "du",
243     "Corrèze" => "de",
244     "Corse-du-Sud" => "de",
245     "Côte-d'Or" => "de",
246     "Côtes-d'Armor" => "des",
247     "Creuse" => "de la",
248     "Deux-Sèvres" => "des",
249     "Dordogne" => "de la",
250     "Doubs" => "du",
251     "Drôme" => "de la",
252     "Essonne" => "de l'",
253     "Eure" => "de l'",
254     "Eure-et-Loir" => "d'",
255     "Finistère" => "du",
256     "Gard" => "du",
257     "Gers" => "du",
258     "Gironde" => "de la",
259     "Guadeloupe" => "de",
260     "Guyane" => "de",
261     "Haut-Rhin" => "du",
262     "Haute-Corse" => "de",
263     "Haute-Garonne" => "de la",
264     "Haute-Loire" => "de la",
265     "Haute-Marne" => "de la",
266     "Haute-Saône" => "de la",
267     "Haute-Savoie" => "de",
268     "Haute-Vienne" => "de la",
269     "Hautes-Alpes" => "des",
270     "Hautes-Pyrénées" => "des",
271     "Hauts-de-Seine" => "des",
272     "Hérault" => "de l'",
273     "Ille-et-Vilaine" => "d'",
274     "Indre" => "de l'",
275     "Indre-et-Loire" => "de l'",
276     "Isère" => "de l'",
277     "Jura" => "du",
278     "Landes" => "des",
279     "Loir-et-Cher" => "du",
280     "Loire" => "de la",
281     "Loire-Atlantique" => "de",
282     "Loiret" => "du",
283     "Lot" => "du",
284     "Lot-et-Garonne" => "du",
285     "Lozère" => "de la",
286     "Maine-et-Loire" => "du",
287     "Manche" => "de la",
288     "Marne" => "de la",
289     "Martinique" => "de",
290     "Mayenne" => "de la",
291     "Mayotte" => "de",
292     "Meurthe-et-Moselle" => "de",
293     "Meuse" => "de la",
294     "Morbihan" => "du",
295     "Moselle" => "de la",
296     "Nièvre" => "de la",
297     "Nord" => "du",
298     "Nouvelle-Calédonie" => "de la",
299     "Oise" => "de l'",
300     "Orne" => "de l'",
301     "Paris" => "de",
302     "Pas-de-Calais" => "du",
303     "Polynésie Française" => "de la",
304     "Puy-de-Dôme" => "du",
305     "Pyrénées-Atlantiques" => "des",
306     "Pyrénées-Orientales" => "des",
307     "Réunion" => "de la",
308     "Rhône" => "du",
309     "Saint-Pierre-et-Miquelon" => "de",
310     "Saône-et-Loire" => "de",
311     "Sarthe" => "de la",
312     "Savoie" => "de",
313     "Seine-et-Marne" => "de",
314     "Seine-Maritime" => "de",
315     "Seine-Saint-Denis" => "de",
316     "Somme" => "de la",
317     "Tarn" => "du",
318     "Tarn-et-Garonne" => "du",
319     "Territoire-de-Belfort" => "du",
320     "Val-d'Oise" => "du",
321     "Val-de-Marne" => "du",
322     "Var" => "du",
323     "Vaucluse" => "du",
324     "Vendée" => "de",
325     "Vienne" => "de la",
326     "Vosges" => "des",
327     "Wallis-et-Futuna" => "de",
328     "Yonne" => "de l'",
329     "Yvelines" => "des"
330    );
331 public function getPrefixeCirconscription() {
332     $prefixe = self::$dptmt_pref[trim($this->nom_circo)];
333    if (! preg_match("/'/", $prefixe)) $prefixe = $prefixe.' ';
334    return $prefixe;
335  }
336
337 public static $dptmt_nom = array(
338      "1" => "Ain",
339      "2" => "Aisne",
340      "3" => "Allier",
341      "4" => "Alpes-de-Haute-Provence",
342      "5" => "Hautes-Alpes",
343      "6" => "Alpes-Maritimes",
344      "7" => "Ardèche",
345      "8" => "Ardennes",
346      "9" => "Ariège",
347      "10" => "Aube",
348      "11" => "Aude",
349      "12" => "Aveyron",
350      "13" => "Bouches-du-Rhône",
351      "14" => "Calvados",
352      "15" => "Cantal",
353      "16" => "Charente",
354      "17" => "Charente-Maritime",
355      "18" => "Cher",
356      "19" => "Corrèze",
357      "2a" => "Corse-du-Sud",
358      "2b" => "Haute-Corse",
359      "21" => "Côte-d'Or",
360      "22" => "Côtes-d'Armor",
361      "23" => "Creuse",
362      "24" => "Dordogne",
363      "25" => "Doubs",
364      "26" => "Drôme",
365      "27" => "Eure",
366      "28" => "Eure-et-Loir",
367      "29" => "Finistère",
368      "30" => "Gard",
369      "31" => "Haute-Garonne",
370      "32" => "Gers",
371      "33" => "Gironde",
372      "34" => "Hérault",
373      "35" => "Ille-et-Vilaine",
374      "36" => "Indre",
375      "37" => "Indre-et-Loire",
376      "38" => "Isère",
377      "39" => "Jura",
378      "40" => "Landes",
379      "41" => "Loir-et-Cher",
380      "42" => "Loire",
381      "43" => "Haute-Loire",
382      "44" => "Loire-Atlantique",
383      "45" => "Loiret",
384      "46" => "Lot",
385      "47" => "Lot-et-Garonne",
386      "48" => "Lozère",
387      "49" => "Maine-et-Loire",
388      "50" => "Manche",
389      "51" => "Marne",
390      "52" => "Haute-Marne",
391      "53" => "Mayenne",
392      "54" => "Meurthe-et-Moselle",
393      "55" => "Meuse",
394      "56" => "Morbihan",
395      "57" => "Moselle",
396      "58" => "Nièvre",
397      "59" => "Nord",
398      "60" => "Oise",
399      "61" => "Orne",
400      "62" => "Pas-de-Calais",
401      "63" => "Puy-de-Dôme",
402      "64" => "Pyrénées-Atlantiques",
403      "65" => "Hautes-Pyrénées",
404      "66" => "Pyrénées-Orientales",
405      "67" => "Bas-Rhin",
406      "68" => "Haut-Rhin",
407      "69" => "Rhône",
408      "70" => "Haute-Saône",
409      "71" => "Saône-et-Loire",
410      "72" => "Sarthe",
411      "73" => "Savoie",
412      "74" => "Haute-Savoie",
413      "75" => "Paris",
414      "76" => "Seine-Maritime",
415      "77" => "Seine-et-Marne",
416      "78" => "Yvelines",
417      "79" => "Deux-Sèvres",
418      "80" => "Somme",
419      "81" => "Tarn",
420      "82" => "Tarn-et-Garonne",
421      "83" => "Var",
422      "84" => "Vaucluse",
423      "85" => "Vendée",
424      "86" => "Vienne",
425      "87" => "Haute-Vienne",
426      "88" => "Vosges",
427      "89" => "Yonne",
428      "90" => "Territoire-de-Belfort",
429      "91" => "Essonne",
430      "92" => "Hauts-de-Seine",
431      "93" => "Seine-Saint-Denis",
432      "94" => "Val-de-Marne",
433      "95" => "Val-d'Oise",
434      "971" => "Guadeloupe",
435      "972" => "Martinique",
436      "973" => "Guyane",
437      "974" => "Réunion",
438      "975" => "Saint-Pierre-et-Miquelon",
439      "976" => "Mayotte",
440    //  "977" => "Saint-Barthélémy",
441    //  "978" => "Saint-Martin",
442      "986" => "Wallis-et-Futuna",
443      "987" => "Polynésie Française",
444      "988" => "Nouvelle-Calédonie");
445  public static function getNomDepartement($numero) {
446    $numero = strtolower($numero);
447    if ( isset(self::$dptmt_nom["$numero"]) ) return $nom = self::$dptmt_nom["$numero"];
448    else return false;
449  }
450
451    static $nom_dptmt = array(
452      "ain" => "01",
453      "aisne" => "02",
454      "allier" => "03",
455      "alpes-de-haute-provence" => "04",
456      "hautes-alpes" => "05",
457      "alpes-maritimes" => "06",
458      "ardèche" => "07",
459      "ardennes" => "08",
460      "ariège" => "09",
461      "aube" => "10",
462      "aude" => "11",
463      "aveyron" => "12",
464      "bouches-du-rhône" => "13",
465      "calvados" => "14",
466      "cantal" => "15",
467      "charente" => "16",
468      "charente-maritime" => "17",
469      "cher" => "18",
470      "corrèze" => "19",
471      "corse-du-sud" => "2A",
472      "haute-corse" => "2B",
473      "côte-d'or" => "21",
474      "côtes-d'armor" => "22",
475      "creuse" => "23",
476      "dordogne" => "24",
477      "doubs" => "25",
478      "drôme" => "26",
479      "eure" => "27",
480      "eure-et-loir" => "28",
481      "finistère" => "29",
482      "gard" => "30",
483      "haute-garonne" => "31",
484      "gers" => "32",
485      "gironde" => "33",
486      "hérault" => "34",
487      "ille-et-vilaine" => "35",
488      "indre" => "36",
489      "indre-et-loire" => "37",
490      "isère" => "38",
491      "jura" => "39",
492      "landes" => "40",
493      "loir-et-cher" => "41",
494      "loire" => "42",
495      "haute-loire" => "43",
496      "loire-atlantique" => "44",
497      "loiret" => "45",
498      "lot" => "46",
499      "lot-et-garonne" => "47",
500      "lozère" => "48",
501      "maine-et-loire" => "49",
502      "manche" => "50",
503      "marne" => "51",
504      "haute-marne" => "52",
505      "mayenne" => "53",
506      "meurthe-et-moselle" => "54",
507      "meuse" => "55",
508      "morbihan" => "56",
509      "moselle" => "57",
510      "nièvre" => "58",
511      "nord" => "59",
512      "oise" => "60",
513      "orne" => "61",
514      "pas-de-calais" => "62",
515      "puy-de-dôme" => "63",
516      "pyrénées-atlantiques" => "64",
517      "hautes-pyrénées" => "65",
518      "pyrénées-orientales" => "66",
519      "bas-rhin" => "67",
520      "haut-rhin" => "68",
521      "rhône" => "69",
522      "haute-saône" => "70",
523      "saône-et-loire" => "71",
524      "sarthe" => "72",
525      "savoie" => "73",
526      "haute-savoie" => "74",
527      "paris" => "75",
528      "seine-maritime" => "76",
529      "seine-et-marne" => "77",
530      "yvelines" => "78",
531      "deux-sèvres" => "79",
532      "somme" => "80",
533      "tarn" => "81",
534      "tarn-et-garonne" => "82",
535      "var" => "83",
536      "vaucluse" => "84",
537      "vendée" => "85",
538      "vienne" => "86",
539      "haute-vienne" => "87",
540      "vosges" => "88",
541      "yonne" => "89",
542      "territoire-de-belfort" => "90",
543      "essonne" => "91",
544      "hauts-de-seine" => "92",
545      "seine-saint-denis" => "93",
546      "val-de-marne" => "94",
547      "val-d'oise" => "95",
548      "guadeloupe" => "971",
549      "martinique" => "972",
550      "guyane" => "973",
551      "réunion" => "974",
552      "saint-pierre-et-miquelon" => "975",
553      "mayotte" => "976",
554      "saint-barthélémy" => "977",
555      "saint-martin" => "978",
556      "wallis-et-futuna" => "986",
557      "polynésie française" => "987",
558      "nouvelle-calédonie" => "988");
559  public static function getNumeroDepartement($nom) {
560    $nom = strtolower($nom);
561    if (isset(self::$nom_dptmt[$nom])) return $numero = self::$nom_dptmt[$nom];
562    else return 0;
563  }
564
565  public function getTop() {
566    //A supprimer lorsque les top seront unifiés (cf. parlementaire action)
567    $s = preg_replace('/s:20:"hemicycle_invectives/', 's:31:"hemicycle_interventions_courtes', $this->_get('top'));
568    return unserialize($s);
569  }
570
571}
Note: See TracBrowser for help on using the repository browser.