source: cpc/trunk/project/apps/frontend/modules/api/actions/actions.class.php @ 1395

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

premiers essais pour la carte

File size: 6.4 KB
Line 
1<?php
2
3/**
4 * api actions.
5 *
6 * @package    cpc
7 * @subpackage api
8 * @author     Your name here
9 * @version    SVN: $Id: actions.class.php 12479 2008-10-31 10:54:40Z fabien $
10 */
11class apiActions extends sfActions
12{
13  public function executeSynthese(sfWebRequest $request)
14  {
15   
16  }
17 /**
18  * Executes index action
19  *
20  * @param sfRequest $request A request object
21  */
22  public function executeTop(sfWebRequest $request)
23  {
24    $date = $request->getParameter('date');
25    $this->forward404Unless(preg_match('/(\d{2,4})-?\d{2}/', $date, $d));
26    $date = preg_replace('/-/', '', $date);
27    $date = preg_replace('/^(\d{2})(\d{2})$/', '20\\1\\2', $date);
28    $d[1] = preg_replace('/^(\d{2})$/', '20\\1', $d[1]);
29    $vg = Doctrine::getTable('VariableGlobale')->findOneByChamp('stats_month_'.$d[1]);
30    $top = unserialize($vg->value);
31
32    $this->forward404Unless(isset($top[$date]));
33
34    $this->res = array();
35    $this->champs = array();
36    foreach(array_keys($top[$date]) as $id) {
37      $depute['id'] = $id;
38      $this->champs['id'] = 1;
39
40      foreach (array_keys($top[$date][$id]) as $k) {
41        //Gestion de l'ordre des parametres
42        $kfinal = preg_replace('/^\d*_/', '', $k);
43        $depute[$kfinal] = $top[$date][$id][$k]['value'];
44        $this->champs[$kfinal] = 1;
45      }
46      $this->res["deputes"][] = array('depute' => $depute);
47    }
48
49    for($i = 0 ; $i < count($this->res["deputes"]) ; $i++) {
50      foreach(array_keys($this->champs) as $key) {
51        if (!isset($this->res['deputes'][$i]['depute'][$key])) {
52          $this->res['deputes'][$i]['depute'][$key] = 0;
53        }
54      }
55    }
56
57    $this->breakline = 'depute';
58    $this->templatize($request, $date.'_stats_deputes');
59  }
60
61  protected function array2hash($array, $hashname) {
62    if (!$array)
63      return '';
64    $hash = array();
65    if (!isset($array[0])) {
66      return $array;
67    }
68    foreach($array as $e) {
69      if ($e)
70        $hash[] = array($hashname => preg_replace('/\n/', ', ', $e));
71    }
72    return $hash;
73  }
74
75  public function executeListParlementaires(sfWebRequest $request) 
76  {
77    $deputes = Doctrine::getTable('Parlementaire')->createQuery('p')->execute();
78    $this->res = array('deputes' => array());
79    $this->champs = array();
80    $this->breakline = 'depute';
81    sfProjectConfiguration::getActive()->loadHelpers(array('Url'));
82    foreach($deputes as $dep) {
83      $depute = array();
84      $depute['id'] = $dep->id;
85      $this->champs['id'] = 1;
86      $depute['nom'] = $dep->nom;
87      $this->champs['nom'] = 1;
88      if ($dep->fin_mandat) 
89        $depute['ancien_depute'] = 1;
90      else if ($request->getParameter('type') == 'csv')
91        $depute['ancien_depute'] = 0;
92      $this->champs['ancien_depute'] = 1;
93      $depute['mandat_debut'] = $dep->debut_mandat;
94      $this->champs['mandat_debut'] = 1;
95      if ($request->getParameter('type') == 'csv' || $dep->fin_mandat)
96        $depute['mandat_fin'] = $dep->fin_mandat;
97      $this->champs['mandat_fin'] = 1;
98      $depute['api_url'] = 'http://'.$_SERVER['HTTP_HOST'].url_for('api/parlementaire?type='.$request->getParameter('type').'&slug='.$dep->slug);
99      $this->champs['api_url'] = 1;
100      $this->res['deputes'][] = array('depute' => $depute);
101    }
102    $this->templatize($request, 'nosdeputes.fr_deputes');
103  }
104  public function executeParlementaire(sfWebRequest $request) 
105  {
106    $slug = $request->getParameter('slug');
107    $this->forward404Unless($slug);
108
109    $depute = Doctrine::getTable('Parlementaire')->findOneBySlug($slug);
110    $this->res = array();
111    $this->multi = array();
112    $this->res['depute'] = array();
113    $this->res['depute']['id'] = $depute->id * 1;
114    $this->res['depute']['nom'] = $depute->nom;
115    $this->res['depute']['nom_de_famille'] = $depute->nom_de_famille;
116    $this->res['depute']['nom_circo'] = $depute->nom_circo;
117    $this->res['depute']['num_circo'] = $depute->num_circo * 1;
118    $this->res['depute']['mandat_debut'] = $depute->debut_mandat;
119    if ($depute->fin_mandat)
120      $this->res['depute']['mandat_fin'] = $depute->fin_mandat;
121    $this->res['depute']['groupe'] = $depute->getGroupe();
122    $this->res['depute']['groupe_sigle'] = $depute->groupe_acronyme;
123    $this->res['depute']['responsabilites'] = $this->array2hash($depute->getResponsabilites(), 'responsabilite');
124    $this->res['depute']['responsabilites_extra_parlementaires'] = $this->array2hash($depute->getExtras(), 'responsabilite');
125    $this->multi['responsabilite'] = 1;
126    $this->res['depute']['site_web'] = $depute->site_web;
127    $this->res['depute']['url_an'] = 'http://www.assembleenationale.fr/13/tribun/fiches_id/'.$depute->id_an.'.asp';
128    $this->res['depute']['emails'] = $this->array2hash(unserialize($depute->mails), 'email');
129    $this->multi['email'] = 1;
130    $this->res['depute']['adresses'] = $this->array2hash(unserialize($depute->adresses), 'adresse');
131    $this->multi['adresse'] = 1;
132    $this->res['depute']['autres_mandats'] = $this->array2hash(unserialize($depute->autres_mandats), 'mandat');
133    $this->multi['mandat'] = 1;
134    $this->res['depute']['profession'] = $depute->profession;
135    $this->res['depute']['place_en_hemicycle'] = $depute->place_hemicycle;
136    $this->res['depute']['sexe'] = $depute->sexe;
137    $this->champ = 'depute';
138    $this->breakline = '';
139    $date = $depute->updated_at.'';
140    $date = preg_replace('/[- :]/', '', $date);
141    $this->templatize($request, 'nosdeputes.fr_'.'_'.$slug.'_'.$date);
142  }
143
144  private function templatize($request, $filename) {
145    $this->setLayout(false);
146    switch($request->getParameter('type')) {
147      case 'json':
148        $this->setTemplate('json');
149        if (!$request->getParameter('textplain')) {
150          $this->getResponse()->setContentType('text/plain; charset=utf-8');
151          $this->getResponse()->setHttpHeader('content-disposition', 'attachment; filename="'.$filename.'.json"');
152        }
153        break;
154      case 'xml':
155        $this->setTemplate('xml');
156        if (!$request->getParameter('textplain')) {
157          $this->getResponse()->setContentType('text/xml; charset=utf-8');
158          //    $this->getResponse()->setHttpHeader('content-disposition', 'attachment; filename="'.$filename.'.xml"');
159        }
160        break;
161      case 'csv':
162        $this->setTemplate('csv');
163        if (!$request->getParameter('textplain')) {
164          $this->getResponse()->setContentType('application/csv; charset=utf-8');
165          $this->getResponse()->setHttpHeader('content-disposition', 'attachment; filename="'.$filename.'.csv"');
166        }
167        break;
168    default:
169      $this->forward404();
170    }
171    if ($request->getParameter('textplain')) {
172      $this->getResponse()->setContentType('text/plain; charset=utf-8');
173    }
174  }
175}
Note: See TracBrowser for help on using the repository browser.