source: cpc/trunk/project/lib/model/doctrine/myTools.class.php @ 2985

Last change on this file since 2985 was 2985, checked in by roux, 8 years ago

better profession list

File size: 11.4 KB
Line 
1<?php
2class myTools {
3
4  public static function displayContact($adresses, $emails = array()) {
5    if (!$adresses) return;
6    $telephones = array();
7    foreach (unserialize($adresses) as $adresse) {
8      if(trim($adresse) != '' && strpos($adresse, 'Assemblée nationale') === false) {
9        $adresse = preg_replace('/Télécopie : ([-. ]?[0-9]{2}){5}/', '', $adresse);
10        $adresse = preg_replace('/Téléphone : /', '', $adresse);
11        preg_match('/(([-. ]?[0-9]{2}){5})/', $adresse, $tels);
12        array_shift($tels);
13        foreach ($tels as $tel) {
14          $callto = preg_replace('/0/', '0033',preg_replace('/[^0-9]/', '', $tel), 1);
15          if(strlen($callto) == 13) {
16            $telephones[] = '<span class="tel"><a href="callto:'.$callto.'" title="'.trim(preg_replace('/'.$tel.'/', '', $adresse)).'">'.trim($tel).'</a>';
17          }
18        }
19      }
20    }
21    if(count($telephones) != 0) {
22      echo '<li><img src="/css/xneth/images/telephone.png" alt="Téléphone(s) :" /> ';
23      foreach ($telephones as $key => $telephone) {
24        echo $telephone;
25        if($key < (count($telephones) - 1)) { echo ', '; }
26      }
27      echo '</li>';
28    }
29    if(!is_array($emails)) { $emails = array_filter(unserialize($emails)); }
30    if(count($emails) != 0) {
31      echo '<li><img src="/css/xneth/images/email.png" alt="Email(s) :" /> ';
32      foreach ($emails as $key => $email) {
33        if(trim($email) != '') {
34          if(count($emails) > 1) { $num_ad = $key+1; } else { $num_ad = ''; }
35          echo '<span><a class="email" href="mailto:'.str_replace('@', 'an@parl', $email).'">adresse '.$num_ad.'</a></span>';
36          if($key < (count($emails) - 1)) { echo ', '; }
37        }
38      }
39      echo '</li>';
40    }
41  }
42
43  public static function get_solr_list_url($query="", $parlementaire='', $type='', $tags='', $options= '', $absolute=false) {
44    if ($query)
45      $query = '"'.$query.'"';
46    if ($type)
47      $query .= "&object_name=".$type;
48    if ($parlementaire)
49      $query .= "&tag=parlementaire%3D".self::solrize($parlementaire);
50    if ($tags) {
51      if ($parlementaire)
52        $query .= ",";
53      else $query .= "&tag=";
54      $query .= str_replace('=', '%3D', $tags);
55    }
56    if ($options)
57      $query .= "&".$options;
58    $query .= "&sort=1";
59    return url_for('@recherche_solr?query='.$query, $absolute);
60  }
61
62  public static function solrize($str) {
63    $str = trim($str);
64    $str = str_replace(array('à', 'â', 'À', 'Â'), 'a', $str);
65    $str = str_replace(array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ë', 'Ê'), 'e', $str);
66    $str = str_replace(array('ï', 'î', 'Ï', 'Î'), 'i', $str);
67    $str = str_replace(array('ô', 'ö', 'Ö', 'Ô'), 'o', $str);
68    $str = str_replace(array('ù', 'ü', 'û', 'Ù', 'Û', 'Ü'), 'u', $str);
69    $str = str_replace(array('ç', 'Ç'), 'c', $str);
70    $str = preg_replace('/\s+/', '+', $str);
71    return strtolower($str);
72  }
73
74  public static function betterUCFirst($str) {
75    $str = ucfirst($str);
76    $str = preg_replace('/^é/', 'É', $str);
77    $str = preg_replace('/^ê/', 'Ê', $str);
78    $str = preg_replace('/^â/', 'Â', $str);
79    $str = preg_replace('/^à/', 'À', $str);
80    return $str;
81  }
82
83  public static function convertYamlToArray($string) {
84    $string = preg_replace('/^\s*\[\s*"\s*/', '', $string);
85    $string = preg_replace('/\s*"\s*]\s*$/', '', $string);
86    $string = preg_replace('/",\s+"/', '","', $string);
87    return explode('","', $string);
88  }
89
90  public static function getDebutLegislature() {
91    $date = sfConfig::get('app_debut_legislature');
92    if (!$date)
93      $date = "2007-06-20";
94    return $date;
95  }
96
97  public static function isFinLegislature() {
98    return (sfConfig::get('app_fin_legislature'));
99  }
100
101  public static function isLegislatureCloturee() {
102    return preg_match('/clotur/', sfConfig::get('app_fin_legislature'));
103  }
104
105  public static function isCommentairesLocked() {
106    return (sfConfig::get('app_lock_commentaires'));
107  }
108
109  public static function getGroupesInfos() {
110    $conf = sfConfig::get('app_groupes_infos', '');
111    if (!$conf) {
112      $config = sfYaml::load(dirname(__FILE__).'/../../../config/app.yml');
113      $conf = $config['all']['groupes_infos'];
114    }
115    $gpes = self::convertYamlToArray($conf);
116    $res = array();
117    foreach ($gpes as $gpe)
118      $res[] = explode(' / ', $gpe);
119    return $res;
120  }
121
122  public static function getGroupesInfosOrder() {
123    $gpes = self::getGroupesInfos();
124    $map = array();
125    foreach ($gpes as $gpe)
126      $map[$gpe[1]] = $gpe;
127    $gpes = array();
128    foreach (self::convertYamlToArray(sfConfig::get('app_groupes_actuels', '')) as $gpe)
129      $gpes[] = $map[$gpe];
130    return $gpes;
131  }
132
133  public static function getGroupesColorMap() {
134    $colormap = array();
135    foreach (myTools::getGroupesInfos() as $gpe)
136      $colormap[$gpe[1]] = $gpe[2];
137    return $colormap;
138  }
139
140  static $num_mois = array(
141     "01" => "janvier",
142     "02" => "février",
143     "03" => "mars",
144     "04" => "avril",
145     "05" => "mai",
146     "06" => "juin",
147     "07" => "juillet",
148     "08" => "août",
149     "09" => "septembre",
150     "10" => "octobre",
151     "11" => "novembre",
152     "12" => "décembre");
153
154  public static function displayDate($date) {
155    if (preg_match('/(\d{4})-(\d{2})-(\d{2})/', $date, $match)) {
156      $match[3] = preg_replace('/^0(\d)/', '\\1', $match[3]);
157      if ($match[3] == '1') $match[3] .= 'er';
158      return $match[3].' '.self::$num_mois[$match[2]].' '.$match[1];
159    } else return $date;
160  }
161
162  public static function displayDateMoisAnnee($date) {
163    if (preg_match('/(\d{4})-(\d{2})-(\d{2})/', $date, $match)) {
164      if($match[2] != '00') {
165        return self::$num_mois[$match[2]].' '.$match[1];
166      } else return $date;
167    } else return $date;
168  }
169
170  static $day_week = array(
171     "0" => "Dimanche",
172     "1" => "Lundi",
173     "2" => "Mardi",
174     "3" => "Mercredi",
175     "4" => "Jeudi",
176     "5" => "Vendredi",
177     "6" => "Samedi");
178
179  public static function displayDateSemaine($date) {
180    $day = self::$day_week[date('w', strtotime($date))];
181    return $day.' '.self::displayDate($date);
182  }
183
184  public static function displayShortDate($d) {
185    $d = preg_replace ('/\-/', '', $d);
186    $date = substr($d,6,2)."/";        // jour
187    $date = $date.substr($d,4,2)."/";  // mois
188    $date = $date.substr($d,0,4);      // année
189    return $date;
190  }
191
192  public static function displayVeryShortDate($d) {
193    $d = preg_replace ('/\-/', '', $d);
194    $date = substr($d,6,2)."/";        // jour
195    $date = $date.substr($d,4,2)."/";  // mois
196    $date = $date.substr($d,2,2);      // année
197    return $date;
198  }
199
200  public static function displayMoisAnnee($d) {
201    $d = preg_replace ('/\-/', '', $d);
202    $date = self::$num_mois[substr($d,4,2)].' ';  // mois txt
203    $date = $date.substr($d,0,4);      // année num
204    return $date;
205  }
206
207  public static function displayDateTime($d) {
208    $date = self::displayShortDate($d)." à ";
209    $date = $date.substr($d,11,5);     // heures et minutes
210    return $date;
211  }
212
213  public static function getAge($dob) {
214    list($year,$month,$day) = explode("-",$dob);
215    $year_diff  = date("Y") - $year;
216    $month_diff = date("m") - $month;
217    $day_diff   = date("d") - $day;
218    if (($month_diff == 0 && $day_diff < 0) || $month_diff < 0)
219      $year_diff--;
220    return $year_diff;
221  }
222
223  public static function getLinkDossier($urlan) {
224    return link_to('Dossier sur le site de l\'Assemblée', "http://www.assemblee-nationale.fr/".sfConfig::get('app_legislature', 13)."/dossiers/".$urlan.".asp");
225  }
226
227  public static function getLinkLoi($id) {
228    return link_to($id, "http://recherche2.assemblee-nationale.fr/resultats-avancee.jsp?11AUTPropositions=&11AUTRap-enq=&11AUTRap-info=&11AUTRapports=&12AUTPropositions=&12AUTRap-enq=&12AUTRap-info=&12AUTRap-infoLoi=&12AUTRapports=&".sfConfig::get('app_legislature', 13)."AUTComptesRendusReunions=&".sfConfig::get('app_legislature', 13)."AUTComptesRendusReunionsDeleg=&".sfConfig::get('app_legislature', 13)."AUTPropositions=&".sfConfig::get('app_legislature', 13)."AUTRap-info=&".sfConfig::get('app_legislature', 13)."AUTRap-infoLoi=&".sfConfig::get('app_legislature', 13)."".sfConfig::get('app_legislature', 13)."AUTRapports=&legislature=".sfConfig::get('app_legislature', 13)."&legisnum=&num_init_11=&num_init_12=&num_init_13=".$id."&searchadvanced=Rechercher&searchtype=&texterecherche=&type=".sfConfig::get('app_legislature', 13)."ProjetsLoi");
229  }
230
231  public static function getLiasseLoiAN($id) {
232    return link_to('liasse de l\'Assemblée', "http://recherche2.assemblee-nationale.fr/amendements/resultats.jsp?typeEcran=avance&chercherDateParNumero=non&NUM_INIT=".$id."&NUM_AMEND=&AUTEUR=&DESIGNATION_ARTICLE=&DESIGNATION_ALINEA=&SORT_EN_SEANCE=&DELIBERATION=&NUM_PARTIE=&DateDebut=&DateFin=&periode=&LEGISLATURE=".sfConfig::get('app_legislature', 13)."Amendements&QueryText=&Scope=TEXTEINTEGRAL&SortField=ORDRE_TEXTE&SortOrder=Asc&format=PDF&searchadvanced=Rechercher");
233  }
234
235  public static function getLiasseLoiImpr($id) {
236    return link_to('liasse imprimable', "/liasses/liasse_".$id.".pdf");
237  }
238
239  public static function escape_blanks($txt) {
240    $txt = preg_replace('/« /', '«&nbsp;', $txt);
241    $txt = preg_replace('/ +([0»:;\?!\-%])/', '&nbsp;\\1', $txt);
242    return $txt;
243  }
244
245  public static function clearHtml($s, $authorized_tags = '<strong><i><b><a><em>') {
246    sfProjectConfiguration::getActive()->loadHelpers(array('Url'));
247
248    if ($authorized_tags)
249      $s = strip_tags($s, $authorized_tags.'<depute>');
250
251    //Protection des liens
252    $s = preg_replace('/on[^=\s]+=[^\s>]+/i', '', $s);
253    $s = preg_replace('/=[\'"]?javascript:[^\s\>]+/i', '=""', $s);
254    $s = preg_replace('/<a /i', '<a rel="nofollow" ', $s);
255    //Conversion des urls en liens
256    $s = preg_replace('/(^|\s)(http\S+)/', ' <a rel="nofollow" href="\\2">\\2</a>', $s);
257    if (preg_match_all('/(({+|\<depute\>)([^}<]+)(}+|\<\/?depute\>))/i', $s, $matches)) {
258      for($i = 0 ; $i < count($matches[0]) ; $i++) {
259  $parlementaire = Doctrine::getTable('Parlementaire')->similarTo($matches[3][$i]);
260  $matches[1][$i] = preg_replace('/\//', '\/', $matches[1][$i]);
261  if ($parlementaire) {
262    $s = preg_replace('/'.$matches[1][$i].'/', '<a href="'.url_for('@parlementaire?slug='.$parlementaire->slug).'"><img src="'.url_for('@photo_parlementaire?slug='.$parlementaire->slug).'/20" height=20/>'.$parlementaire->nom.'</a>', $s);
263  }else{
264    $s = preg_replace('/'.$matches[1][$i].'/', '<b class="erreur" style="color:red">'.$matches[2][$i].'</b>', $s);
265  }
266      }
267    }
268    $s = '<p>'.$s.'</p>';
269    $s = preg_replace('/\n/', '</p><p>', $s);
270    return $s;
271  }
272
273  public static function echo_synthese_groupe($list, $bulles, $class, $ktop, $cpt) {
274    foreach ($list as $gpe => $t) {
275      $cpt++;
276      echo '<tr'.($cpt %2 ? ' class="tr_odd"' : '').'>';
277      echo '<td id="'.$gpe.'" class="jstitle c_'.strtolower($gpe).' '.$class['parl'].'" title="'.$t[0]['nom'];
278      if (isset($t[0]['desc'])) {
279        echo ' -- '.$t[0]['desc'].'"><a href="'.url_for('@list_parlementaires_groupe?acro='.$gpe).'">'.$gpe.' : '.$t[0]['nb'].' députés</a>';
280      } else {
281        echo '">'.$t[0]['nom']." : ".$t[0]['nb'];
282      }
283      echo '</td>';
284      for($i = 1 ; $i < count($t) ; $i++) {
285        $t[$i] = round($t[$i]/$t[0]['nb']);
286        echo '<td title="'.$t[$i].' '.($t[$i] < 2 ? preg_replace('/s (.*-- )/', ' \\1', preg_replace('/s (.*-- )/', ' \\1', $bulles[$i])) : $bulles[$i]).'" class="jstitle '.$class[$ktop[$i]].'">';
287        if (preg_match('/\./', $t[$i]))
288          printf('%02d', $t[$i]);
289        else echo $t[$i];
290        echo '</td>';
291      }
292      echo '</tr>';
293    }
294    return $cpt;
295  }
296
297}
Note: See TracBrowser for help on using the repository browser.