/** * torna il numero di interventi sugli atti con un certo tag * tutti gli atti degli argomenti * * @return void * @author Guglielmo Celata */ public function executeQuantodiscusso() { $interventi_max = sfSupra::getVariable('numero_interventi_max'); $c = new Criteria(); $c->addJoin(OppInterventoPeer::ATTO_ID, OppAttoPeer::ID); $c->addJoin(TaggingPeer::TAGGABLE_ID, OppAttoPeer::ID); $c->add(TaggingPeer::TAGGABLE_MODEL, 'OppAtto'); $c->add(TaggingPeer::TAG_ID, $this->tag->getId()); $this->interventi = OppInterventoPeer::doCount($c); $this->interventi_perc = 100 * $this->interventi / $interventi_max; $this->interventi_avg = sfSupra::getVariable('numero_interventi_avg'); $this->interventi_avg_perc = 100 * $this->interventi_avg / $interventi_max; }
public function getInterventiCount() { $c = new Criteria(); $c->clearSelectColumns(); $c->addSelectColumn(OppInterventoPeer::ID); $c->addJoin(OppInterventoPeer::CARICA_ID, OppCaricaPeer::ID, Criteria::LEFT_JOIN); $c->addJoin(OppCaricaPeer::POLITICO_ID, OppPoliticoPeer::ID, Criteria::LEFT_JOIN); $c->addJoin(OppInterventoPeer::SEDE_ID, OppSedePeer::ID, Criteria::LEFT_JOIN); $c->add(OppInterventoPeer::ATTO_ID, $this->getId(), Criteria::EQUAL); $c->addDescendingOrderByColumn(OppInterventoPeer::DATA); $c->addAscendingOrderByColumn(OppPoliticoPeer::COGNOME); $count = OppInterventoPeer::doCount($c); return $count; }
public static function getPosizionePoliticoOggettiVotatiPerArgomenti($carica_id, $tags_ids, $user_id, $verbose = false, $log = null, $data = null, $con = null) { // Firme // estrazione di tutti gli atti taggati con un pool di argomenti e votati da un utente $con = Propel::getConnection(self::DATABASE_NAME); $sql = sprintf("select f.tipo, f.atto_id, a.tipo_atto_id, t.tag_id, v.voting from opp_carica_has_atto f, opp_atto a, sf_tagging t, sf_votings v where f.carica_id=%d and f.atto_id=a.id and t.taggable_model='OppAtto' and t.taggable_id = a.id and t.tag_id in (%s) and v.votable_model='OppAtto' and v.votable_id=a.id and v.user_id=%d", $carica_id, implode(", ", $tags_ids), $user_id); if ($verbose) { echo "\nAtti: " . $sql . "\n\n"; } $stm = $con->createStatement(); $rs = $stm->executeQuery($sql, ResultSet::FETCHMODE_ASSOC); $log_msgs = array(); // calcolo del punteggio $punteggio = 0; $punteggio_firme = 0; $punteggio_interventi = 0; while ($rs->next()) { $row = $rs->getRow(); $atto_id = $row['atto_id']; $tipo_atto_id = $row['tipo_atto_id']; $tipo_firma = $row['tipo']; $voto = $row['voting']; $d_punteggio = OppCaricaHasAttoPeer::get_fattore_firma_posizione($tipo_firma, $tipo_atto_id) * $voto; $log_msgs[] = $log_msg = sprintf("atto: %9d, tipo_atto: %4d, tipo_firma: %1s, voto: %3d, punteggio: %7.2f", $atto_id, $tipo_atto_id, $tipo_firma, $voto, $d_punteggio); if ($verbose) { echo sprintf(" %s\n", $log_msg); } $punteggio_firme += $d_punteggio; } $log_msgs[] = sprintf("Totale firme: %7.2f", $punteggio_firme); // Interventi // estrazione di tutti gli interventi votati da un utente e relativi ad atti taggati con un pool di argomenti $con = Propel::getConnection(self::DATABASE_NAME); $sql = sprintf("select i.id, i.tipologia, i.atto_id, t.tag_id, v.voting from opp_intervento i, sf_tagging t, sf_votings v where i.carica_id=%d and t.taggable_model='OppAtto' and t.taggable_id = i.atto_id and t.tag_id in (%s) and v.votable_model='OppIntervento' and v.votable_id=i.id and v.user_id=%d", $carica_id, implode(", ", $tags_ids), $user_id); if ($verbose) { echo "\nInterventi: " . $sql . "\n\n"; } $stm = $con->createStatement(); $rs = $stm->executeQuery($sql, ResultSet::FETCHMODE_ASSOC); // calcolo del punteggio while ($rs->next()) { $row = $rs->getRow(); $intervento_id = $row['id']; $tipo_intervento = $row['tipologia']; $atto_id = $row['atto_id']; $voto = $row['voting']; $d_punteggio = OppInterventoPeer::get_fattore_intervento_posizione($tipo_intervento) * $voto; $log_msgs[] = $log_msg = sprintf(" atto: %9d, voto: %3d, tipo_intervento: %61s\n", $atto_id, $tipo_intervento, $voto, $d_punteggio); if ($verbose) { echo sprintf(" %s\n", $log_msg); } $punteggio_interventi += $d_punteggio; } $punteggio = $punteggio_firme + $punteggio_interventi; $log_msgs[] = sprintf("Totale interventi: %7.2f", $punteggio_interventi); $log_msgs[] = sprintf("Totale: %7.2f", $punteggio); if (is_null($log)) { return $punteggio; } else { return $log_msgs; } }
/** * Processa il file specificato in --yaml-file per l'upgrade di un atto * */ function run_opp_update_ddl_from_yaml($task, $args, $options) { static $loaded; // load application context if (!$loaded) { _loader(); } $dry_run = false; if (array_key_exists('dry-run', $options)) { $dry_run = true; } if (array_key_exists('yaml-file', $options)) { $yaml_file = strtolower($options['yaml-file']); } else { throw new Exception("Specificare il file contenente i dati dei ddl con l'opzione --yaml-file=FILE_COMPLETE_PATH"); } echo "memory usage: " . memory_get_usage() . "\n"; $start_time = time(); $msg = sprintf("upgrade ddl da {$yaml_file}\n"); echo pakeColor::colorize($msg, array('fg' => 'cyan', 'bold' => true)); if (file_exists($yaml_file)) { $up_ddl = sfYaml::Load($yaml_file); } else { throw new Exception("Impossibile trovare il file {$yaml_file}"); } $con = Propel::getConnection(OppAttoPeer::DATABASE_NAME); $opp_id = $up_ddl['opp_id']; $atto = OppAttoPeer::retrieveByPK($opp_id); $parl_id = $up_ddl['parl_id']; if (is_null($atto->getParlamentoId()) || $atto->getParlamentoId() != $parl_id) { $atto->setParlamentoId($parl_id); } $key = 'titolo'; if (array_key_exists($key, $up_ddl)) { $titolo = $up_ddl['titolo']; $atto->setTitolo($titolo); print "{$key}\n"; print str_repeat("=", strlen($key)) . "\n"; print "{$titolo}\n"; print "\n"; } # firme $firmatari = array('P' => 'primi_firmatari', 'R' => 'relatori', 'C' => 'co_firmatari'); foreach ($firmatari as $tipo_firma => $key) { if (array_key_exists($key, $up_ddl) && !is_null($up_ddl[$key])) { print "{$key}\n"; print str_repeat("=", strlen($key)) . "\n"; foreach ($up_ddl[$key] as $id => $signature_data) { $ca = new OppCaricaHasAtto(); $ca->setAttoId($opp_id); $ca->setCaricaId($id); $ca->setTipo($tipo_firma); $name = $signature_data['nome']; $signature_date = $signature_data['data_firma']; $ca->setData($signature_date); $ca->save(); print " {$name} ({$id}) il {$signature_date}\n"; } print "\n"; } } # commissioni $commissioni = array('referente', 'consultiva'); foreach ($commissioni as $tipo_commissione) { if (array_key_exists($tipo_commissione, $up_ddl)) { print "{$tipo_commissione}\n"; print str_repeat("=", strlen($tipo_commissione)) . "\n"; foreach ($up_ddl[$tipo_commissione] as $id => $name) { $as = new OppAttoHasSede(); $as->setAttoId($opp_id); $as->setSedeId($id); $as->setTipo(ucfirst($tipo_commissione)); $as->save(); print " {$name} ({$id})\n"; } print "\n"; } } # tagging if (array_key_exists('tags', $up_ddl)) { print "tagging\n"; print "=======\n"; foreach ($up_ddl['tags'] as $tag_id => $name) { $t = new Tagging(); $t->setTaggableModel('OppAtto'); $t->setTaggableId($opp_id); $t->setTagId($tag_id); $t->save(); print " {$name} ({$tag_id})\n"; } print "\n"; } # documenti if (array_key_exists('documenti', $up_ddl)) { print "documenti\n"; print "=========\n"; foreach ($up_ddl['documenti'] as $cnt => $doc) { if (!array_key_exists('titolo', $doc)) { $doc['titolo'] = "Testo della Proposta di Legge"; } $d = new OppDocumento(); $d->setAttoId($opp_id); $d->setTitolo($doc['titolo']); $d->setUrlPdf($doc['url_pdf']); $d->setUrlTesto($doc['url_testo']); printf("titolo: %s\n", $doc['titolo']); printf(" pdf: %s\n", $doc['url_pdf']); printf(" html: %s\n", $doc['url_testo']); if (file_exists($doc['file_testo'])) { $doc_txt = file_get_contents($doc['file_testo']); $d->setTesto($doc_txt); printf(" text: %s\n", $doc['file_testo']); } $d->save(); } print "\n"; } #pred e succ if (array_key_exists('pred_id', $up_ddl)) { $atto->setPred($up_ddl['pred_id']); printf(" pred: %d\n\n", $up_ddl['pred_id']); } if (array_key_exists('succ_id', $up_ddl)) { $atto->setSucc($up_ddl['succ_id']); printf(" succ: %d\n\n", $up_ddl['succ_id']); } # iter if (array_key_exists('iter', $up_ddl)) { print "iter\n"; print "====\n"; foreach ($up_ddl['iter'] as $id => $details) { $ai = new OppAttoHasIter(); $ai->setAttoId($opp_id); $ai->setIterId($id); $ai->setData($details['data_pres']); $ai->save(); printf(" %s (%s) - %s\n", $details['fase'], $id, $details['data_pres']); } print "\n"; } # relazioni if (array_key_exists('relazioni', $up_ddl)) { print "relazioni\n"; print "=========\n"; foreach ($up_ddl['relazioni'] as $key => $details) { $r = new OppRelazioneAtto(); $r->setAttoFromId($details['from_id']); $r->setAttoToId($details['to_id']); $r->setTipoRelazioneId($details['tipo_id']); $r->save(); printf(" from: %s to: %s - %s (%s)\n", $details['from_id'], $details['to_id'], $details['tipo_relazione'], $details['tipo_id']); } print "\n"; } # trattazione (esiti, sedute e interventi) $tipi_commissione = array('primaria' => 'Primaria', 'consultiva' => 'Consultiva', 'assemblea' => 'Aula'); foreach ($tipi_commissione as $key => $tipo_commissione) { $trattazione_key = "trattazione_{$key}"; if (array_key_exists('trattazioni', $up_ddl)) { print "trattazione {$tipo_commissione}\n"; print "============" . str_repeat("=", strlen($tipo_commissione)) . "\n"; foreach ($up_ddl['trattazioni'][$trattazione_key] as $seduta_id => $details) { list($seduta, $id) = explode("_", $seduta_id); $es = new OppEsitoSeduta(); $es->setAttoId($opp_id); $es->setSedeId($details['comm_id']); $es->setData($details['date']); $es->setEsito($details['esito']); $es->setTipologia($details['comm_type']); $es->save(); print " seduta {$id}\n"; printf(" %s - %s: %s\n", $details['date'], $details['comm_type'], $details['comm_id']); printf(" esito: %s\n", $details['esito']); printf(" %d interventi\n", count($details['interventi'])); foreach ($details['interventi'] as $carica_id => $i_details) { try { $con->begin(); # cancella tutti i record con interventi di carica su atto, in sede e data $c = OppInterventoPeer::criterionByAttoCaricaSedeData($opp_id, $carica_id, $details['comm_id'], $details['date']); $deleted = OppInterventoPeer::doDelete($c, $con); printf(" trovati e rimossi %d record\n", $deleted); # riscrive un solo record, con tutte le url raggruppate $i = new OppIntervento(); $i->setAttoId($opp_id); $i->setCaricaId($carica_id); $i->setData($details['date']); $i->setSedeId($details['comm_id']); $i->setTipologia($details['comm_type']); $i->setUrl($i_details['urls']); $i->save($con); printf(" %s (%d) - %s\n", $i_details['cognome'], $carica_id, $i_details['urls']); $con->commit(); } catch (PropelException $e) { printf("problemi nell'aggiornamento interventi di %d su %d, sede %d, data %s\n%s\n", $carica_id, $opp_id, $details['comm_id'], $details['date'], $e->getMessage()); $con->rollback(); } } } print "\n"; } } $atto->setDataAgg(time()); $atto->save($con); # l'md5 viene ri-salvato dopo il salvataggio per evitare che atti inconsistenti siano # marcati come uguali $atto->setMd5($up_ddl['md5']); $atto->save(); unset($atto); $msg = sprintf("fine elaborazione atto\n"); echo pakeColor::colorize($msg, array('fg' => 'cyan', 'bold' => true)); $msg = sprintf(" [%4d sec] [%10d bytes]\n", time() - $start_time, memory_get_usage()); echo pakeColor::colorize($msg, array('fg' => 'red', 'bold' => false)); }
public function executeInterventi() { $this->limit = 2; $this->limit_count = 0; $i_fields = array('data', 'denominazione', 'ramo', 'nome', 'cognome', 'politico_id'); $this->interventi_count = count($this->interventi); # estende gli interventi, splittando le url quando necessario $interventi_singoli = array(); foreach ($this->interventi as $key => $intervento) { $i_obj = OppInterventoPeer::retrieveByPK($intervento['id']); $links = explode('@', $intervento['link']); foreach ($links as $link) { $i_singolo = array(); $i_singolo['obj'] = $i_obj; foreach ($i_fields as $field) { $i_singolo[$field] = $intervento[$field]; } if ($i_singolo['ramo'] == 'C') { if (!preg_match("#^http:#", $link)) { $i_singolo['url'] = sfConfig::get('app_url_sito_camera', 'http://www.camera.it/') . $link; } else { $i_singolo['url'] = $link; } } else { if (!preg_match("#^http:#", $link)) { $i_singolo['url'] = sfConfig::get('app_url_sito_senato', 'http://www.senato.it/') . $link; } else { $i_singolo['url'] = $link; } } array_push($interventi_singoli, $i_singolo); } } $this->interventi = $interventi_singoli; }
/** * torna il numero di sedute in cui è intervenuto (almeno una volta), fino a una certa data * una seduta è identificata da sede_id e data * * @param string $carica * @param string $data * @return integer * @author Guglielmo Celata */ public function getNSeduteConInterventi($data) { $n_int = OppInterventoPeer::getNSeduteConInterventiCarica($this, $data); return $n_int; }
define('SF_DEBUG', false); require_once SF_ROOT_DIR . DIRECTORY_SEPARATOR . 'apps' . DIRECTORY_SEPARATOR . SF_APP . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'config.php'; sfContext::getInstance(); echo "starting\n"; $con = Propel::getConnection(TagPeer::DATABASE_NAME); $c = new Criteria(TagPeer::DATABASE_NAME); $argomenti = TagPeer::doSelect($c, $con); $ninterventi_tot = 0; $ninterventi_max = 0; foreach ($argomenti as $a) { echo $a->getTripleValue() . ": "; $c = new Criteria(TagPeer::DATABASE_NAME); $c->addJoin(OppInterventoPeer::ATTO_ID, OppAttoPeer::ID); $c->addJoin(TaggingPeer::TAGGABLE_ID, OppAttoPeer::ID); $c->add(TaggingPeer::TAGGABLE_MODEL, 'OppAtto'); $c->add(TaggingPeer::TAG_ID, $a->getId()); $ninterventi = OppInterventoPeer::doCount($c, $con); $ninterventi_tot += $ninterventi; if ($ninterventi > $ninterventi_max) { $ninterventi_max = $ninterventi; } echo " {$ninterventi} ({$ninterventi_max})\n"; } $ninterventi_avg = $ninterventi_tot / count($argomenti); echo "found:\n"; printf("n_interventi_max: {$ninterventi_max}, n_interventi_tot: {$ninterventi_tot}, n_interventi_avg: {$ninterventi_avg}\n"); echo "storing in the supra storage\n"; sfSupra::setVariable('numero_interventi_max', $ninterventi_max); sfSupra::setVariable('numero_interventi_tot', $ninterventi_tot); sfSupra::setVariable('numero_interventi_avg', $ninterventi_avg); echo "done\n";
/** * calcola l'indice di rilevanza, per un atto, nel suo complesso * * @param integer $atto_id * @param integer $tipo_atto_id * @param date $data * @param SimpleXMLElement $xml_node * @param boolean $verbose * @return float * @author Guglielmo Celata */ public static function calcolaRilevanzaAtto($atto, $tipo_atto_id, $data, $xml_node, $verbose = false) { $atto_node = $xml_node->addChild('atto', null, self::$opp_ns); $atto_id = $atto->getId(); // calcolo gruppi e schieramenti che presentano list($schier_pres, $grup_pres) = OppCaricaHasAttoPeer::getSchierGrupPresAtto($atto_id, $data); if ($verbose) { printf("\n presentazione:\n"); printf(" schieramenti: %s\n", join(',', $schier_pres)); printf(" gruppi: %s\n", join(',', $grup_pres)); } // il peso di un atto non dipende mai da chi lo ha presentato // il coefficiente che si considera è sempre quello di maggioranza $di_maggioranza = true; // determina la priorità dell'atto $priorita = is_null($atto->getPriorityValue()) ? 1 : $atto->getPriorityValue(); $atto_is_ratifica = $atto->isRatifica(); // determina il tipo di atto (per quello che concerne il calcolo dell'indice) $tipo_atto = OppTipoAttoPeer::getTipoPerIndice($tipo_atto_id); if (is_null($tipo_atto)) { return 0; } $atto_node->addAttribute('tipo_atto', $tipo_atto); $atto_node->addAttribute('priorita', $priorita); $atto_node->addAttribute('id', $atto_id); $punteggio = 0.0; // punteggio dato all'atto per-se, a seconda del tipo if ($tipo_atto == 'SDDL') { $punteggio = 1.0; } else { $punteggio = 0.5; } $presentazione_node = $atto_node->addChild('presentazione', null, self::$opp_ns); $presentazione_node->addAttribute('totale', $punteggio); // --- consenso --- $consenso_node = $atto_node->addChild('consenso', null, self::$opp_ns); $firmeRS = OppCaricaHasAttoPeer::getFirmeAttoDataTipoRS($atto_id, $data, "'C'"); $n_firme = array('gruppo' => 0, 'altri' => 0, 'opp' => 0); while ($firmeRS->next()) { $row = $firmeRS->getRow(); if ($verbose) { printf(" %d firme per gruppo %d\n", $row['nf'], $row['gruppo_id']); } // gestione del caso in cui l'atto è presentato dai due schieramenti // tutte le firme sono assegnate a gruppo, altri e opp if (count($schier_pres) > 1) { $n_firme['gruppo'] += $row['nf']; $n_firme['altri'] += $row['nf']; $n_firme['opp'] += $row['nf']; continue; } // gestione del caso in cui l'atto è presentato da più di un gruppo // le firme dello schieramento di pres. sono assegnate a gruppo e altri if (count($grup_pres) > 1) { if ($row['maggioranza'] == $schier_pres[0]) { $n_firme['gruppo'] += $row['nf']; $n_firme['altri'] += $row['nf']; } else { $n_firme['opp'] += $row['nf']; } continue; } if (in_array($row['gruppo_id'], $grup_pres)) { if ($row['nf'] > 1) { $n_firme['gruppo'] += $row['nf']; } } else { if (count($schier_pres) > 0 && $row['maggioranza'] == $schier_pres[0]) { $n_firme['altri'] += $row['nf']; } else { $n_firme['gruppo'] += $row['nf']; } } } $d_punteggio = 0.0; foreach ($n_firme as $tipo => $value) { if (!$value) { continue; } $soglia = self::$soglia_cofirme; if ($tipo_atto == 'mozione') { $soglia = self::$soglia_cofirme_mozioni; } if ($value <= $soglia) { $d_punteggio += $dd_punteggio = self::getPunteggio($tipo_atto, "cofirme_{$tipo}_lo", $di_maggioranza); } else { $d_punteggio += $dd_punteggio = self::getPunteggio($tipo_atto, "cofirme_{$tipo}_hi", $di_maggioranza); } $firme_node = $consenso_node->addChild('firme_' . $tipo, null, self::$opp_ns); $firme_node->addAttribute('n_firme', $value); $firme_node->addAttribute('totale', $dd_punteggio); if ($verbose) { printf(" firme %s (%d) %7.2f\n", $tipo, $value, $dd_punteggio); } } $punteggio += $d_punteggio; if ($verbose) { printf(" totale firme %7.2f\n", $d_punteggio); } $consenso_node->addAttribute('n_firme', $n_firme['gruppo'] + $n_firme['altri'] + $n_firme['opp']); $consenso_node->addAttribute('totale', $d_punteggio); // --- iter --- // controlla se atti non assorbiti sono diventati legge dopo passaggi in altri rami // atti diventati legge non prendono il punteggio di approvazione $diventato_legge_in_altri_rami = false; if (!isset($passaggio) || $passaggio != 'assorbito') { $atto = OppAttoPeer::retrieveByPK($atto_id); $c = new Criteria(); $c->add(OppAttoHasIterPeer::ITER_ID, 16); $c->add(OppAttoHasIterPeer::DATA, $data, Criteria::LESS_EQUAL); while ($atto_succ_id = $atto->getSucc()) { $atto = OppAttoPeer::retrieveByPK($atto_succ_id); if ($atto->countOppAttoHasIters($c) > 0) { $diventato_legge_in_altri_rami = true; } } unset($c); unset($atto); } // determina se l'atto è parte di un Testo Unificato $is_unified = OppAttoPeer::isUnifiedText($atto_id); // determina se l'atto è stato assorbito $is_absorbed = OppAttoPeer::isAbsorbed($atto_id); // determina se l'atto unificato è principale o meno $is_unificato_non_main = is_array($is_unified) && !$is_unified['is_main_unified']; $is_unificato_main = is_array($is_unified) && $is_unified['is_main_unified']; $itinera_atto_rs = OppAttoHasIterPeer::getItineraAttoDataRS($atto_id, $data); $iter_node = $atto_node->addChild('iter', null, self::$opp_ns); $d_punteggio = 0.0; $n_passaggi = 0; while ($itinera_atto_rs->next()) { $iter_atto = $itinera_atto_rs->getRow(); $passaggio = OppIterPeer::getIterPerIndice($iter_atto['iter_id']); if (is_null($passaggio)) { continue; } // se l'atto è unificato e non-main, allora prende il punteggio come gli atti assorbiti if ($is_unificato_non_main && $passaggio == 'approvato') { $passaggio = 'assorbito'; } // se diventato legge in altri rami, non prende punteggio di approvazione if ($diventato_legge_in_altri_rami && $passaggio == 'approvato') { continue; } $n_passaggi++; $passaggio_node = $iter_node->addChild('passaggio', null, self::$opp_ns); if ($passaggio == 'assorbito' && $is_unificato_non_main) { $passaggio_node->addAttribute('tipo', 'assorbimento come unificato non principale'); } else { $passaggio_node->addAttribute('tipo', $passaggio); } $d_punteggio += $dd_punteggio = self::getPunteggio($tipo_atto, $passaggio, $di_maggioranza); if ($verbose) { if ($passaggio == 'assorbito' && $is_unificato_non_main) { printf(" iter %s %7.2f\n", 'assorbimento come unificato non principale', $dd_punteggio); } else { printf(" iter %s %7.2f\n", $passaggio, $dd_punteggio); } } $passaggio_node->addAttribute('totale', $dd_punteggio); // il break su atti assorbiti avviene dopo l'assegnazione del punteggio if ($passaggio == 'assorbito') { break; } // --- bonus maggioranza --- if ($passaggio == 'approvato') { if ($di_maggioranza && OppAttoPeer::isAttoVotatoDaOpposizione($atto_id, $data)) { $d_punteggio += $dd_punteggio = self::getPunteggio($tipo_atto, 'bonus_bi_partisan', true); $bonus_node = $iter_node->addChild('bonus_maggioranza', null, self::$opp_ns); $bonus_node->addAttribute('totale', $dd_punteggio); if ($verbose) { printf(" bonus di maggioranza! %7.2f\n", $dd_punteggio); } } } // break se mozione, risoluzione o odg approvato if (in_array($tipo_atto, array('mozione', 'risoluzione', 'odg')) && $passaggio == 'approvato') { break; } } // assegna punteggio se diventato legge in altri rami if ($diventato_legge_in_altri_rami && is_null($is_absorbed) && (is_null($is_unified) || $is_unificato_main)) { $d_punteggio += $dd_punteggio = self::getPunteggio($tipo_atto, 'diventato_legge', $di_maggioranza); $passaggio_node = $iter_node->addChild('passaggio', null, self::$opp_ns); $passaggio_node->addAttribute('tipo', "diventato legge in altri rami"); $passaggio_node->addAttribute('totale', $dd_punteggio); if ($verbose) { printf(" iter %s %7.2f\n", "diventato legge in altri rami", $dd_punteggio); } } $punteggio += $d_punteggio; if ($verbose) { printf(" totale iter %7.2f\n", $d_punteggio); } $iter_node->addAttribute('n_passaggi', $n_passaggi); $iter_node->addAttribute('totale', $d_punteggio); // --- componente emendamenti con funzione sigmoide --- $punteggio += $d_punteggio = self::calcolaComponenteEmendamentiPerAtto($atto_id, $data, $atto_node, $verbose); // --- sedute con interventi in commissione e assemblea --- $sedute_con_interventi_node = $atto_node->addChild('sedute_con_interventi', null, self::$opp_ns); $sedute_commissioni_node = $sedute_con_interventi_node->addChild('commissioni', null, self::$opp_ns); $n_sedute_commissioni = OppInterventoPeer::getNSeduteConInterventiAttoData($atto_id, 'C', $data); if ($n_sedute_commissioni) { $n_sedute_commissioni--; } if ($verbose) { printf(" n. sedute in commissione %d\n", $n_sedute_commissioni); } $d_punteggio_sedute_commissioni = $n_sedute_commissioni * parent::$punteggi['seduta_in_comm']; $sedute_commissioni_node->addAttribute('n_sedute', $n_sedute_commissioni); $sedute_commissioni_node->addAttribute('totale', $d_punteggio_sedute_commissioni); $sedute_assemblea_node = $sedute_con_interventi_node->addChild('assemblea', null, self::$opp_ns); $n_sedute_assemblea = OppInterventoPeer::getNSeduteConInterventiAttoData($atto_id, 'A', $data); if ($n_sedute_assemblea) { $n_sedute_assemblea--; } if ($verbose) { printf(" n. sedute in commissione %d\n", $n_sedute_assemblea); } $d_punteggio_sedute_assemblea = $n_sedute_assemblea * parent::$punteggi['seduta_in_ass']; $sedute_assemblea_node->addAttribute('n_sedute', $n_sedute_assemblea); $sedute_assemblea_node->addAttribute('totale', $d_punteggio_sedute_assemblea); $punteggio += $d_punteggio_sedute = $d_punteggio_sedute_commissioni + $d_punteggio_sedute_assemblea; if ($verbose) { printf(" totale sedute %7.2f\n", $d_punteggio_sedute); } $sedute_con_interventi_node->addAttribute('totale', $d_punteggio_sedute); if ($atto_is_ratifica) { $atto_node->addAttribute('totale_pre_decurtazione_ratifica', $punteggio); if ($verbose) { print "questo ATTO è una ratifica\n"; } $punteggio = $punteggio / self::$punteggi['fattore_diminuzione_ratifica']; } $punteggio = $priorita * $punteggio; $atto_node->addAttribute('totale', $punteggio); return $punteggio; }
public function executeLavoroCommissioni() { $c = new Criteria(); $c->add(OppSedePeer::RAMO, $this->ramo); $c->add(OppSedePeer::TIPOLOGIA, 'Commissione permanente'); $comms = OppSedePeer::doSelect($c); foreach ($comms as $comm) { $c = new Criteria(); $c->addJoin(OppAttoPeer::ID, OppAttoHasSedePeer::ATTO_ID); $c->add(OppAttoPeer::LEGISLATURA, $this->leg); $c->add(OppAttoPeer::TIPO_ATTO_ID, 1); $c->add(OppAttoHasSedePeer::SEDE_ID, $comm->getId()); $c->add(OppAttoHasSedePeer::TIPO, 'Referente'); $ref = OppAttoHasSedePeer::doCount($c); $c = new Criteria(); $c->addJoin(OppAttoPeer::ID, OppAttoHasSedePeer::ATTO_ID); $c->add(OppAttoPeer::LEGISLATURA, $this->leg); $c->add(OppAttoPeer::TIPO_ATTO_ID, 1); $c->add(OppAttoHasSedePeer::SEDE_ID, $comm->getId()); $c->add(OppAttoHasSedePeer::TIPO, 'Consultiva'); $con = OppAttoHasSedePeer::doCount($c); $c = new Criteria(); $c->addJoin(OppAttoPeer::ID, OppAttoHasSedePeer::ATTO_ID); $c->add(OppAttoPeer::LEGISLATURA, $this->leg); $c->add(OppAttoPeer::TIPO_ATTO_ID, 1, Criteria::NOT_EQUAL); $c->add(OppAttoHasSedePeer::SEDE_ID, $comm->getId()); $atti_non_leg = OppAttoHasSedePeer::doCount($c); $c = new Criteria(); $c->add(OppResocontoPeer::LEGISLATURA, $this->leg); $c->add(OppResocontoPeer::SEDE_ID, $comm->getId()); $sedute = OppResocontoPeer::doCount($c); $c = new Criteria(); $c->addJoin(OppAttoPeer::ID, OppInterventoPeer::ATTO_ID); $c->add(OppAttoPeer::LEGISLATURA, $this->leg); $c->add(OppInterventoPeer::SEDE_ID, $comm->getId()); $interventi = OppInterventoPeer::doCount($c); $compara_comm[$comm->getId()] = array($ref, $con, $atti_non_leg, $sedute, $interventi); } $this->compara_comm = $compara_comm; }
public function executeInterventi() { $response = sfContext::getInstance()->getResponse(); if ($this->getUser()->isAuthenticated() && ($this->getUser()->hasCredential('amministratore') || $this->getUser()->hasCredential('adhoc'))) { $response->addStylesheet('votazione_interventi', 'last'); $response->addJavascript('votazione_interventi', 'last'); } $this->_getAndCheckParlamentare(); if ($this->carica == NULL) { return; } $this->session = $this->getUser(); // reset dei filtri se richiesto esplicitamente if ($this->getRequestParameter('reset_filters', 'false') == 'true') { $this->getRequest()->getParameterHolder()->set('filter_ddls_collegati', '0'); } $this->processInterventiFilters(array('ddls_collegati')); // if all filters were reset, then restart if ($this->getRequestParameter('filter_ddls_collegati') == '0') { $this->redirect('@parlamentare_interventi?id=' . $this->getRequestParameter('id') . '&slug=' . $this->parlamentare->getSlug()); } if ($this->hasRequestParameter('itemsperpage')) { $this->getUser()->setAttribute('itemsperpage', $this->getRequestParameter('itemsperpage')); } $itemsperpage = $this->getUser()->getAttribute('itemsperpage', sfConfig::get('app_pagination_limit')); $this->pager = new sfPropelPager('OppIntervento', $itemsperpage); $c = new Criteria(); $c->add(OppInterventoPeer::CARICA_ID, $this->carica->getId()); $c->addDescendingOrderByColumn(OppInterventoPeer::CREATED_AT); $this->addInterventiFiltersCriteria($c); $this->pager->setCriteria($c); $this->pager->setPage($this->getRequestParameter('page', 1)); $this->pager->setPeerMethod('doSelectJoinAll'); $this->pager->init(); $cariche_ids = $this->parlamentare->getCaricheCorrentiIds(); $this->ddls_collegati = OppInterventoPeer::getDDLCollegatiCariche($cariche_ids); if ($this->carica->getTipoCaricaId() == 1) { $ramo = 'C'; } if ($this->carica->getTipoCaricaId() == 4 || $this->carica->getTipoCaricaId() == 5) { $ramo = 'S'; } $this->ramo = $ramo == 'C' ? 'camera' : 'senato'; $this->getResponse()->setTitle('Interventi in Parlamento ' . ($this->ramo == 'camera' ? 'On. ' : 'Sen. ') . $this->parlamentare->getNome() . ' ' . $this->parlamentare->getCognome() . ' - ' . sfConfig::get('app_main_title')); // if ($this->ramo=='camera') // $this->getResponse()->setTitle('On. '.$this->parlamentare->getNome().' '.$this->parlamentare->getCognome().' - interventi parlamentari - '.sfConfig::get('app_main_title')); // else // $this->getResponse()->setTitle('Sen. '.$this->parlamentare->getNome().' '.$this->parlamentare->getCognome().' - interventi parlamentari - '.sfConfig::get('app_main_title')); $this->response->addMeta('description', 'La lista aggiornata quotidianamente di tutti gli interventi in Parlamento, in aula e nelle commissioni, di ' . $this->parlamentare->getNome() . ' ' . $this->parlamentare->getCognome(), true); }