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

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