/**
  * API (protetta da una API key)
  * torna flusso xml con gli atti in un certo intervallo di date
  * progetto op_fb
  *
  *   <opp xmlns="http://www.openpolis.it/2010/opp"
  *          xmlns:op="http://www.openpolis.it/2010/op"
  *          xmlns:xlink="http://www.w3.org/1999/xlink">
  *     <op:content> 
  *       <atto opp_id="38631">
  *         <legislatura>16</legislatura>
  *         <ramo>S</ramo>
  *         <numero>1611</numero>
  *         <titolo><![CDATA[
  *           [Ddl intercettazioni] Norme in materia di intercettazioni telefoniche, telematiche e ambientali. Modifica della disciplina in materia di astensione del giudice e degli atti di indagine. Integrazione della disciplina sulla responsabilità amministrativa delle persone giuridiche
  *           ]]>
  *         </titolo>
  *         <presentato_il>2009-06-11</presentato_il>
  *       </atto>
  *       <atto opp_id="51055">
  *         <legislatura>16</legislatura>
  *         <ramo>DL</ramo>
  *         <numero>29/10</numero>
  *         <tipo_atto>SDDL</tipo_atto>
  *         <titolo><![CDATA[
  *           [Decreto salva liste] Interpretazione autentica di disposizioni del procedimento elettorale e relativa disciplina di attuazione (G.U. n. 54 del 06/03/2010) 
  *           ]]>
  *         </titolo>
  *         <presentato_il>2010-03-05</presentato_il>
  *       </atto>
  *       <atto opp_id="36235">
  *         <legislatura>16</legislatura>
  *         <ramo>C</ramo>
  *         <numero>2350</numero>
  *         <titolo><![CDATA[
  *           [Testamento biologico e cure di fine vita] Disposizioni in materia di alleanza terapeutica, di consenso informato e di dichiarazioni anticipate di trattamento 
  *           ]]>
  *         </titolo>
  *         <presentato_il>2009-04-01</presentato_il>
  *       </atto>
  *     </op:content>
  *   </opp>
  *
  *       
  * Return error in case something's wrong
  * <opp xlmns="http://www.openpolis.it/2010/opp"
  *       xmlns:op="http://www.openpolis.it/2010/op"
  *   <op:error>Messaggio di errore</op:error>
  * </opp>
  * @return String
  * @author Guglielmo Celata
  **/
 public function executeElencoAtti()
 {
     $data_inizio = $this->getRequestParameter('data_inizio');
     $data_fine = $this->getRequestParameter('data_fine');
     $ramo = null;
     if ($this->hasRequestParameter('ramo')) {
         $ramo = $this->getRequestParameter('ramo');
     }
     $tipo_atto = null;
     if ($this->hasRequestParameter('tipo_atto')) {
         $tipo_atto = $this->getRequestParameter('tipo_atto');
     }
     $escludi_tipi = array();
     if ($this->hasRequestParameter('escludi_tipi')) {
         $escludi_tipi_str = urldecode($this->getRequestParameter('escludi_tipi'));
         $escludi_tipi = explode(",", $escludi_tipi_str);
     }
     $key = $this->getRequestParameter('key');
     $is_valid_key = deppApiKeysPeer::isValidKey($key);
     $resp_node = new SimpleXMLExtended('<opp xmlns="' . $this->opp_ns . '" ' . ' xmlns:op="' . $this->op_ns . '" ' . ' xmlns:xlink="' . $this->xlink_ns . '" >' . '</opp>');
     if ($is_valid_key) {
         // start producing xml
         $content_node = $resp_node->addChild('op:content', null, $this->op_ns);
         $atti = OppAttoPeer::getAttiInDateInterval($data_inizio, $data_fine, $ramo, $tipo_atto, $escludi_tipi);
         $atti_node = $content_node->addChild('atti', null, $this->opp_ns);
         $atti_node->addAttribute('n_atti', count($atti));
         foreach ($atti as $atto) {
             $titulo = $atto->getTitolo();
             $data_pres = $atto->getDataPres('Y-m-d');
             $ramo = $atto->getRamo();
             $numero = $atto->getNumfase();
             $legislatura = $atto->getLegislatura();
             $atto_node = $atti_node->addChild('atto', null, $this->opp_ns);
             $atto_node->addAttribute('opp_id', $atto->getId());
             $atto_node->addChild('legislatura', $legislatura);
             $atto_node->addChild('ramo', $ramo);
             $atto_node->addChild('numero', $numero);
             $tipo_atto = $atto_node->addChild('tipo_atto', $atto->getOppTipoAtto()->getDenominazione());
             // $tipo_atto->addAttribute('id', $atto->getTipoAttoId());
             $titulo_node = $atto_node->addChild('titolo', null);
             $titulo_node->addCData($titulo);
             $atto_node->addChild('presentato_il', $data_pres);
         }
     } else {
         $resp_node->addChild('op:error', 'Chiave di accesso non valida', $this->op_ns);
     }
     $xmlContent = $resp_node->asXML();
     $this->_send_output($xmlContent);
     return sfView::NONE;
 }