Changeset 2556


Ignore:
Timestamp:
Jan 1, 2012, 9:18:53 PM (8 years ago)
Author:
goya
Message:

improve API en divisant fonctions des responsabilités en sous-champs + lien vers csv enrichi des députés en cours de mandat

Location:
cpc/trunk/project/apps/frontend
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • cpc/trunk/project/apps/frontend/config/routing.yml

    r2359 r2556  
    139139  url: /deputes/rechercher/:query
    140140  param: {module: solr, action: redirect, object_name: Parlementaire}
     141list_parlementaires_en_mandat_json:
     142  url: /deputes/enmandat/json
     143  param: {module: api, action: listParlementaires, format: json, current: true}
     144list_parlementaires_en_mandat_xml:
     145  url: /deputes/enmandat/xml
     146  param: {module: api, action: listParlementaires, format: xml, current: true}
     147list_parlementaires_en_mandat_csv:
     148  url: /deputes/enmandat/csv
     149  param: {module: api, action: listParlementaires, format: csv, current: true}
    141150list_parlementaires_json:
    142151  url: /deputes/json
  • cpc/trunk/project/apps/frontend/modules/api/actions/actions.class.php

    r2550 r2556  
    7676  }
    7777
    78   protected function array2hash($array, $hashname) {
     78  protected static function array2hash($array, $hashname) {
    7979    if (!$array)
    8080      return '';
    8181    $hash = array();
    8282    if (!isset($array[0])) {
    83       return $array;
    84     }
    85     foreach($array as $e) {
    86       if ($e)
    87         $hash[] = array($hashname => preg_replace('/\n/', ', ', $e));
     83      if (isset($array->fonction))
     84        return array("organisme" => $array->getNom(), "fonction" => $array->fonction);
     85      else return $array;
     86    }
     87    foreach($array as $e) if ($e) {
     88      if (isset($e->fonction))
     89        $hash[] = array($hashname => array("organisme" => $e->getNom(), "fonction" => $e->fonction));
     90      else $hash[] = array($hashname => preg_replace('/\n/', ', ', $e));
    8891    }
    8992    return $hash;
     
    9295  public function executeListParlementaires(sfWebRequest $request)
    9396  {
    94     $deputes = Doctrine::getTable('Parlementaire')->createQuery('p')->execute();
     97    $query = Doctrine::getTable('Parlementaire')->createQuery('p');
     98    if ($request->getParameter('current') == true) {
     99      $query->where('fin_mandat IS NULL OR debut_mandat > fin_mandat');
     100      $this->multi = array();
     101      $this->multi['responsabilite'] = 1;
     102      $this->multi['email'] = 1;
     103      $this->multi['adresse'] = 1;
     104      $this->multi['mandat'] = 1;
     105    }
     106    $deputes = $query->execute();
     107    $this->champs = array();
    95108    $this->res = array('deputes' => array());
    96     $this->champs = array();
    97109    $this->breakline = 'depute';
    98110    sfProjectConfiguration::getActive()->loadHelpers(array('Url'));
    99111    foreach($deputes as $dep) {
    100       $depute = array();
    101       $depute['id'] = $dep->id;
    102       $this->champs['id'] = 1;
    103       $depute['nom'] = $dep->nom;
    104       $this->champs['nom'] = 1;
    105       if ($dep->fin_mandat && $dep->fin_mandat >= $dep->debut_mandat)
    106         $depute['ancien_depute'] = 1;
    107       else if ($request->getParameter('format') == 'csv')
    108         $depute['ancien_depute'] = 0;
    109       $this->champs['ancien_depute'] = 1;
    110       $depute['mandat_debut'] = $dep->debut_mandat;
    111       $this->champs['mandat_debut'] = 1;
    112       if ($request->getParameter('format') == 'csv' || $dep->fin_mandat)
    113         $depute['mandat_fin'] = $dep->fin_mandat;
    114       $this->champs['mandat_fin'] = 1;
     112      if ($request->getParameter('current') == true) {
     113        $depute = $this->getParlementaireArray($dep);
     114        if ($request->getParameter('format') == 'csv')
     115         foreach(array_keys($depute) as $key)
     116          if (!isset($this->champs[$key]))
     117           $this->champs[$key] = 1;
     118      } else {
     119        $depute = array();
     120        $depute['id'] = $dep->id;
     121        $depute['nom'] = $dep->nom;
     122        if ($dep->fin_mandat && $dep->fin_mandat >= $dep->debut_mandat)
     123          $depute['ancien_depute'] = 1;
     124        else if ($request->getParameter('format') == 'csv')
     125          $depute['ancien_depute'] = 0;
     126        $depute['mandat_debut'] = $dep->debut_mandat;
     127        if ($request->getParameter('format') == 'csv' || $dep->fin_mandat)
     128          $depute['mandat_fin'] = $dep->fin_mandat;
     129        $this->champs['id'] = 1;
     130        $this->champs['nom'] = 1;
     131        $this->champs['ancien_depute'] = 1;
     132        $this->champs['mandat_debut'] = 1;
     133        $this->champs['mandat_fin'] = 1;
     134      }
    115135      $depute['api_url'] = 'http://'.$_SERVER['HTTP_HOST'].url_for('api/parlementaire?format='.$request->getParameter('format').'&slug='.$dep->slug);
    116136      $this->champs['api_url'] = 1;
    117137      $this->res['deputes'][] = array('depute' => $depute);
    118138    }
    119     $this->templatize($request, 'nosdeputes.fr_deputes');
    120   }
     139    $this->templatize($request, 'nosdeputes.fr_deputes'.($request->getParameter('current') == true ? "_en_mandat" : ""));
     140  }
     141
    121142  public function executeParlementaire(sfWebRequest $request)
    122143  {
    123144    $slug = $request->getParameter('slug');
    124145    $this->forward404Unless($slug);
    125 
    126146    $depute = Doctrine::getTable('Parlementaire')->findOneBySlug($slug);
    127147    $this->res = array();
     148    $this->res['depute'] = $this->getParlementaireArray($depute);
    128149    $this->multi = array();
    129     $this->res['depute'] = array();
    130     $this->res['depute']['id'] = $depute->id * 1;
    131     $this->res['depute']['nom'] = $depute->nom;
    132     $this->res['depute']['nom_de_famille'] = $depute->getNomFamilleCorrect();
    133     $this->res['depute']['prenom'] = $depute->getPrenom();
    134     $this->res['depute']['slug'] = $depute->getSlug();
    135     $this->res['depute']['num_deptmt'] = $depute->getNumDepartement();
    136     $this->res['depute']['nom_circo'] = $depute->nom_circo;
    137     $this->res['depute']['num_circo'] = $depute->num_circo * 1;
    138     $this->res['depute']['mandat_debut'] = $depute->debut_mandat;
    139     if ($depute->fin_mandat)
    140       $this->res['depute']['mandat_fin'] = $depute->fin_mandat;
    141     $groupe = $depute->getGroupe();
    142     if (is_object($groupe))
    143       $this->res['depute']['groupe'] = $groupe->__toString();
    144     $this->res['depute']['groupe_sigle'] = $depute->groupe_acronyme;
    145     $this->res['depute']['responsabilites'] = $this->array2hash($depute->getResponsabilites(), 'responsabilite');
    146     $this->res['depute']['responsabilites_extra_parlementaires'] = $this->array2hash($depute->getExtras(), 'responsabilite');
    147150    $this->multi['responsabilite'] = 1;
    148     $this->res['depute']['site_web'] = $depute->site_web;
    149     $this->res['depute']['url_an'] = $depute->url_an;
    150     $this->res['depute']['emails'] = $this->array2hash(unserialize($depute->mails), 'email');
    151151    $this->multi['email'] = 1;
    152     $this->res['depute']['adresses'] = $this->array2hash(unserialize($depute->adresses), 'adresse');
    153152    $this->multi['adresse'] = 1;
    154     $this->res['depute']['autres_mandats'] = $this->array2hash(unserialize($depute->autres_mandats), 'mandat');
    155153    $this->multi['mandat'] = 1;
    156     $this->res['depute']['profession'] = $depute->profession;
    157     $this->res['depute']['place_en_hemicycle'] = $depute->place_hemicycle;
    158     $this->res['depute']['sexe'] = $depute->sexe;
    159154    $this->champ = 'depute';
    160155    $this->breakline = '';
     
    162157    $date = preg_replace('/[- :]/', '', $date);
    163158    $this->templatize($request, 'nosdeputes.fr_'.'_'.$slug.'_'.$date);
     159  }
     160
     161
     162  public static function getParlementaireArray($parl) {
     163    $res = array();
     164    $res['id'] = $parl->id * 1;
     165    $res['nom'] = $parl->nom;
     166    $res['nom_de_famille'] = $parl->getNomFamilleCorrect();
     167    $res['prenom'] = $parl->getPrenom();
     168    $res['sexe'] = $parl->sexe;
     169    $res['num_deptmt'] = $parl->getNumDepartement();
     170    $res['nom_circo'] = $parl->nom_circo;
     171    $res['num_circo'] = $parl->num_circo * 1;
     172    $res['mandat_debut'] = $parl->debut_mandat;
     173    if ($parl->fin_mandat)
     174      $res['mandat_fin'] = $parl->fin_mandat;
     175    $groupe = $parl->getGroupe();
     176    if (is_object($groupe))
     177      $res['groupe'] = self::array2hash($groupe, 'groupe_politique');
     178    $res['groupe_sigle'] = $parl->groupe_acronyme;
     179    $res['responsabilites'] = self::array2hash($parl->getResponsabilites(), 'responsabilite');
     180    $res['responsabilites_extra_parlementaires'] = self::array2hash($parl->getExtras(), 'responsabilite');
     181    $res['site_web'] = $parl->site_web;
     182    $res['url_an'] = $parl->url_an;
     183    $res['emails'] = self::array2hash(unserialize($parl->mails), 'email');
     184    $res['adresses'] = self::array2hash(unserialize($parl->adresses), 'adresse');
     185    $res['autres_mandats'] = self::array2hash(unserialize($parl->autres_mandats), 'mandat');
     186    $res['profession'] = $parl->profession;
     187    $res['place_en_hemicycle'] = $parl->place_hemicycle;
     188    $res['sexe'] = $parl->sexe;
     189    $res['slug'] = $parl->getSlug();
     190    return $res;
    164191  }
    165192
  • cpc/trunk/project/apps/frontend/modules/api/templates/csvSuccess.php

    r1216 r2556  
    2929function depile($res, $breakline, $multi, $comma = 0) {
    3030  if (is_array($res)) {
     31    if (isset($res['organisme']) && isset($res['fonction']))
     32      return depile($res['organisme']." - ".$res['fonction'], $breakline, $multi, $comma);
    3133    if (!isset($res[0])) {
    3234      if (array_keys($res))
     
    3537      return;
    3638    }
    37     foreach($res as $r) {
     39    foreach($res as $r)
    3840      $semi = depile($r, $breakline, $multi);
    39     }
    4041    if ($semi)
    4142      echo ';';
     
    4344    if ($comma)
    4445      $res = preg_replace('/[,;]/', '', $res);
    45     $string = preg_match('/[,;]/', $res);
    46     if ($string)
     46    $string = preg_match('/[,;"]/', $res);
     47    if ($string) {
     48      $res = preg_replace('/"/', '\"', $res);
    4749      echo '"';
     50    }
    4851    echo $res;
    4952    if ($string)
     
    5154    if ($comma)
    5255      echo '|';
    53     else
    54       echo ';';
     56    else echo ';';
    5557  }
    5658}
Note: See TracChangeset for help on using the changeset viewer.