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

Last change on this file since 1344 was 1344, checked in by goya, 11 years ago

oubli v1.4

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