$related_news = getRelatedNews($obj); $n_related_news = count($related_news); $t->ok($n_related_news == 3, 'Now there are two more news related to the act'); dumpNews($t, "news related to the act", $related_news); $t->diag('Create a document'); $doc = new OppDocumento(); $doc->setData('2008-11-20'); $doc->setTitolo('Titolo di prova'); $doc->setOppAtto($obj); $doc->save(); $related_news = getRelatedNews($obj); $n_related_news = count($related_news); $t->ok($n_related_news == 4, 'Four related news'); dumpNews($t, "news related to the act", $related_news); $t->diag('Add a non-conclusive iter step'); $iter = OppIterPeer::retrieveByPK(29); $iter_att = new OppAttoHasIter(); $iter_att->setOppAtto($obj); $iter_att->setOppIter($iter); $iter_att->save(); $related_news = getRelatedNews($obj); $n_related_news = count($related_news); $generated_news = $iter_att->getGeneratedNews(); $first_generated = $generated_news[0]; $t->ok($n_related_news == 5, 'Five related news'); $t->ok($first_generated->getPriority() == 2, 'Priority for non-conclusive iter step is ' . $first_generated->getPriority()); dumpNews($t, "news related to the act", $related_news); $t->diag('Add a new politician'); $pol = new OppPolitico(); $pol->setNome('Guglielmo'); $pol->setCognome('Celata');
dumpNews($t, "news related to the act", $related_news); $t->diag('Add a non-conclusive iter step'); $iter = OppIterPeer::retrieveByPK(29); $iter_att = new OppAttoHasIter(); $iter_att->setOppAtto($obj); $iter_att->setOppIter($iter); $iter_att->save(); $related_news = getRelatedNews($obj); $n_related_news = count($related_news); $generated_news = $iter_att->getGeneratedNews(); $first_generated = $generated_news[0]; $t->ok($n_related_news == 7, 'Seven related news'); $t->ok($first_generated->getPriority() == 2, 'Priority for non-conclusive iter step is ' . $first_generated->getPriority()); dumpNews($t, "news related to the act", $related_news); $t->diag('Add a conclusive iter step'); $iter = OppIterPeer::retrieveByPK(45); $iter_att = new OppAttoHasIter(); $iter_att->setOppAtto($obj); $iter_att->setOppIter($iter); $iter_att->save(); $related_news = getRelatedNews($obj); $n_related_news = count($related_news); $generated_news = $iter_att->getGeneratedNews(); $first_generated = $generated_news[0]; $t->ok($n_related_news == 8, 'Eight related news'); $t->ok($first_generated->getPriority() == 1, 'Priority for conclusive iter step is ' . $first_generated->getPriority()); dumpNews($t, "news related to the act", $related_news); $t->diag('Add a new assignment to a commission'); $sede = OppSedePeer::retrieveByPK(24); $sede_att = new OppAttoHasSede(); $sede_att->setOppAtto($obj);
/** * API (protetta da una API key) * torna flusso xml con i dati di un singolo atto * 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"> * <ramo>S</ramo> * <numero>1611-4-B</numero> * <tipo_atto>12</tipo_atto> * <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> * <tipo_iniziativa>2</tipo_iniziativa> * <primi_firmatari> * <parlamentare opp_id="167"> * <tipo>On</tipo> * <nome>Angelino</nome> * <cognome>ALFANO</cognome> * <gruppo> * <nome>Popolo delle Libertà</nome> * <acronimo>PdL</acronimo> * </gruppo> * <data_inizio_carica>2008-04-29</data_inizio_carica> * <circoscrizione>Sicilia 1</circoscrizione> * </parlamentare> * </primi_firmatari> * <cofirmatari> * * </cofirmatari> * <relatori> * <parlamentare opp_id="1518"> * <tipo>Sen</tipo> * <nome>Roberto</nome> * <cognome>CENTARO</cognome> * <gruppo> * <nome>Popolo delle Libertà</nome> * <acronimo>PdL</acronimo> * </gruppo> * <data_inizio_carica>2008-04-29</data_inizio_carica> * <circoscrizione>Sicilia</circoscrizione> * </parlamentare> * </relatori> * <commissioni_assegnatarie> * <commissione tipo_sede="referente">Senato Commissione II Giustizia</commissione> * <commissione tipo_sede="consultiva">Senato Commissione I Affari Costituzionali</commissione> * <commissione tipo_sede="consultiva">Senato Commissione III Affari Esteri</commissione> * <commissione tipo_sede="consultiva">Senato Commissione V Bilancio</commissione> * </commissioni_assegnatarie> * <url_fonte_ufficiale xlink:href="http://www.senato.it/leg/16/BGT/Schede/Ddliter/33809.htm"/> * <testi_atto> * <url_testo_atto xlink:href="http://www.senato.it/loc/link.asp?tipodoc=DDLPRES&leg=16&id=424336"/> * </testi_atto> * </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 executeAtto() { $key = $this->getRequestParameter('key'); $id = $this->getRequestParameter('opp_id'); $is_valid_key = deppApiKeysPeer::isValidKey($key); $storage_path = sfConfig::get('sf_root_cache_dir'); $file_path = sprintf("%s/atti/%s.xml", $storage_path, $id); $resp_node = new SimpleXMLExtended('<opp xmlns="' . $this->opp_ns . '" ' . ' xmlns:op="' . $this->op_ns . '" ' . ' xmlns:xlink="' . $this->xlink_ns . '" >' . '</opp>'); $is_error = false; if ($is_valid_key) { // controllo esistenza del file if ($fp = @fopen($file_path, "r")) { // retrieve contenuto XML dalla cache sfContext::getInstance()->getLogger()->info("reading from cache: " . $file_path); $xmlContent = fread($fp, filesize($file_path)); fclose($fp); // send xml to output $this->_send_output($xmlContent); return sfView::NONE; } // estrazione informazioni $atto = OppAttoPeer::retrieveByPK($id); if ($atto) { $titulo = $atto->getTitolo(); $data_pres = $atto->getDataPres('Y-m-d'); $ramo = $atto->getRamo(); $numero = str_replace("/", "-", $atto->getNumfase()); $legislatura = $atto->getLegislatura(); // produzione xml $content_node = $resp_node->addChild('op:content', null, $this->op_ns); $atto_node = $content_node->addChild('atto', null, $this->opp_ns); $atto_node->addAttribute('opp_id', $id); $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); //tipo di iniziativa $tipo_iniziativa = ''; if ($atto->getIniziativa()) { switch ($atto->getIniziativa()) { case '1': $tipo_iniziativa = 'Parlamentare'; break; case '2': $tipo_iniziativa = 'di Governo'; break; case '4': $tipo_iniziativa = 'Popolare'; break; default: $tipo_iniziativa = ''; break; } } $primi_firmatari_node = $atto_node->addChild('primi_firmatari'); $this->addFirmatari('P', $atto, $primi_firmatari_node); $relatori_node = $atto_node->addChild('relatori'); $this->addFirmatari('R', $atto, $relatori_node); $co_firmatari_node = $atto_node->addChild('co_firmatari'); $this->addFirmatari('C', $atto, $co_firmatari_node); $commissioni_node = $atto_node->addChild('commissioni_assegnatarie'); $commissioni = $atto->getCommissioni(); foreach ($commissioni as $commissione) { $tipo_sede = $commissione->getTipo(); $commissione_node = $commissioni_node->addChild('commissione'); $commissione_node->addChild('tipo_sede', $tipo_sede); $commissione_node->addChild('ramo', $commissione->getOppSede()->getRamo()); $commissione_node->addChild('nome', $commissione->getOppSede()->getDenominazione()); } $atto_node->addChild('tipo_iniziativa', $tipo_iniziativa); // individuazione link fonte /* if ($atto->getTipoAttoId() == '1') $link = 'http://www.senato.it/leg/' . $atto->getLegislatura() . '/BGT/Schede/Ddliter/' . $atto->getParlamentoId() . '.htm'; else if ($atto->getTipoAttoId() > '1' && $atto->getTipoAttoId() < '12' ) $link = 'http://banchedati.camera.it/sindacatoispettivo_' . $atto->getLegislatura() . '/showXhtml.Asp?idAtto=' . $atto->getParlamentoId() . '&stile=6&highLight=1'; else if ($atto->getTipoAttoId() == '12' ) { $anno = explode("-",$atto->getDataPres()); $numero = explode("/",$atto->getNumfase()); $link = "http://www.normattiva.it/uri-res/N2Ls?urn:nir:stato:decreto.legge:".$anno[0].";".$numero[0]; } else if ($atto->getTipoAttoId() == '14' ) { if ($atto->getRamo()=='C') $link = 'http://www.camera.it/_dati/leg' . $atto->getLegislatura() . '/lavori/stencomm/' . $atto->getNumfase() . '/s010.htm'; else $link = 'http://www.senato.it/leg/' . $atto->getLegislatura() . '/BGT/Schede/ProcANL/ProcANLscheda' . $atto->getParlamentoId() . '.htm'; } else if ($atto->getTipoAttoId() > '14' && $atto->getTipoAttoId() < '18' ) { $str = $atto->getParlamentoId(); $len = 5 - strlen($str); for($i=0; $i<$len; $i++) $str = '0' . $str; $link = 'http://www.camera.it/parlam/leggi/deleghe/'.$str.'dl.htm'; } if ($atto->getTipoAttoId() == '13') $link = 'http://www.governo.it/GovernoInforma/Comunicati/testo_int.asp?d='.$atto->getParlamentoId(); $fonte_node = $atto_node->addChild('fonte'); $fonte_node->addAttribute('href', $link); */ // estrazione documenti $c = new Criteria(); $c->add(OppDocumentoPeer::DOSSIER, 0); $documenti = $atto->getOppDocumentos($c); $documenti_node = $atto_node->addChild('documenti'); foreach ($documenti as $documento) { $documento_node = $documenti_node->addChild('documento'); if ($documento->getUrlTesto()) { $documento_node->addCData($documento->getTesto()); // $documento_node->addAttribute('href_txt', $documento->getUrlTesto()); if ($documento->getUrlPdf()) { $documento_node->addAttribute('href_pdf', $documento->getUrlPdf()); } } } $documenti_node->addAttribute('n', count($documenti)); // determina ultimo status $status = $atto->getStatus(); $status_str = ""; foreach ($status as $data => $status_iter) { $iter = OppIterPeer::retrieveByPK($status_iter); $status_str = $iter->getFase(); } $atto_node->addChild('status', $status_str); // determina lettura $preds = $atto->getAllPred(); $atto_node->addChild('lettura', 1 + count($preds)); } else { $is_error = true; $resp_node->addChild('op:error', 'Nessun atto trovato per questo ID', $this->op_ns); } } else { $is_error = true; $resp_node->addChild('op:error', 'Chiave di accesso non valida', $this->op_ns); } // build xml content out of respNode $xmlContent = $resp_node->asXML(); // write xml cache to file system (for non-error xml's) if (!$is_error) { $fp = @fopen($file_path, "w"); sfContext::getInstance()->getLogger()->info("writing to cache: " . $file_path); fwrite($fp, $xmlContent); fclose($fp); } // send xml to output $this->_send_output($xmlContent); return sfView::NONE; }
<?php if ($status) { ?> <li><h6> ultimo status: <?php foreach ($status as $data => $status_iter) { ?> <?php $iter = OppIterPeer::retrieveByPK($status_iter); ?> <em> <?php if ($data != '' || $data != null) { ?> <span class="date"><?php echo format_date($data, 'dd/MM/yyyy'); ?> </span> <?php } ?> <?php echo ($atto->getRamo() == 'C' ? 'Camera' : 'Senato') . ": " . $iter->getFase(); ?> </em> <?php }