/**
  * restituisce i componenti del Governo (PresDelCons e Ministri) che appartengono ad un gruppo, se data_fine è zero (default, restituisce i componenti attuali, se 1 quelli di tutta la legislatura)
  *
  * @param integer $gruppo_id 
  * @return void
  * @author Ettore Di Cesare
  */
 public static function getCaricheGovernoPerGruppo($gruppo_id, $data_fine = 0, $leg = 16)
 {
     $c = new Criteria();
     $c->add(OppCaricaPeer::LEGISLATURA, $leg, Criteria::EQUAL);
     $c->add(OppCaricaPeer::TIPO_CARICA_ID, array(2, 3), Criteria::IN);
     $ministri = OppCaricaPeer::doSelect($c);
     foreach ($ministri as $ministro) {
         $c = new Criteria();
         $c->add(OppCaricaPeer::POLITICO_ID, $ministro->getPoliticoId());
         $c->add(OppCaricaPeer::LEGISLATURA, $leg);
         $c->add(OppCaricaPeer::TIPO_CARICA_ID, array(1, 4, 5), Criteria::IN);
         $deputato = OppCaricaPeer::doSelectOne($c);
         if ($deputato) {
             $gruppi = self::doSelectTuttiGruppiPerCarica($deputato->getId());
             foreach ($gruppi as $gruppo) {
                 if ($gruppo['gruppo_id'] == $gruppo_id) {
                     $rs[] = $ministro->getId();
                     break;
                 }
             }
         }
     }
     if (count($rs) > 0) {
         return $rs;
     } else {
         return NULL;
     }
 }
 public static function getActiveMPs($ramo, $limit = 0, $leg = 16)
 {
     if (!in_array($ramo, array('C', 'S'))) {
         throw new Exception("Ramo must be 'C' or 'S'");
     }
     $c = new Criteria();
     if ($ramo == 'C') {
         $c->add(self::TIPO_CARICA_ID, 1);
         $c->add(OppCaricaPeer::TIPO_CARICA_ID, '1', Criteria::EQUAL);
     } else {
         $c->add(self::TIPO_CARICA_ID, array(4, 5), Criteria::IN);
         $cton = $c->getNewCriterion(OppCaricaPeer::TIPO_CARICA_ID, '4', Criteria::EQUAL);
         $cton1 = $c->getNewCriterion(OppCaricaPeer::TIPO_CARICA_ID, '5', Criteria::EQUAL);
         $cton->addOr($cton1);
         $c->add($cton);
     }
     $c->add(OppCaricaPeer::LEGISLATURA, $leg, Criteria::EQUAL);
     $c->add(self::DATA_FINE, null, Criteria::ISNULL);
     $c->addJoin(OppCaricaPeer::POLITICO_ID, OppPoliticoPeer::ID, Criteria::INNER_JOIN);
     if ($limit > 0) {
         $c->setLimit($limit);
     }
     return OppCaricaPeer::doSelect($c);
 }
<?php

define('SF_ROOT_DIR', realpath(dirname(__FILE__) . '/..'));
define('SF_APP', 'fe');
define('SF_ENVIRONMENT', 'dev');
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();
print "Fetching data... \n";
$c = new Criteria();
$c->add(OppCaricaPeer::DATA_FINE, NULL, Criteria::EQUAL);
$c->add(OppCaricaPeer::LEGISLATURA, 16, Criteria::EQUAL);
$cariche = OppCaricaPeer::doSelect($c);
foreach ($cariche as $carica) {
    $parlamentare = OppPoliticoPeer::RetrieveByPk($carica->getPoliticoId());
    $report = $carica->getReport();
    $presenze = $report['Astenuto'] + $report['Contrario'] + $report['Favorevole'] + $report['Partecipante votazione non valida'] + $report['Presidente di turno'] + $report['Richiedente la votazione e non votante'] + $report['Voto segreto'];
    $numero_votazioni = $report['Astenuto'] + $report['Contrario'] + $report['Favorevole'] + $report['Partecipante votazione non valida'] + $report['Presidente di turno'] + $report['Richiedente la votazione e non votante'] + $report['Voto segreto'] + $report['Assente'] + $report['In missione'];
    $gruppi = OppCaricaHasGruppoPeer::doSelectGruppiPerCarica($carica->getId());
    foreach ($gruppi as $nome => $gruppo) {
        $data_inizio = split("/", $gruppo['data_inizio']);
        $di = "20" . $data_inizio[2] . "-" . $data_inizio[0] . "-" . $data_inizio[1];
        if ($data_fine != '') {
            $data_fine = split("/", $gruppo['data_fine']);
            $df = "20" . $data_fine[2] . "-" . $data_fine[0] . "-" . $data_fine[1];
        } else {
            $df = '';
        }
        $ribelle_count = $parlamentare->getRibelleReport($carica->getId(), $report['carica'] == 'Deputato' ? 'C' : 'S', $nome, $di, $df);
    }
    print "id carica:" . $carica->getId() . " presenze:" . $presenze . " assenze:" . $report['Assente'] . " missioni:" . $report['In missione'] . "\n";
 public function executeGetParlamentoIdParlamentariInCarica()
 {
     $ramo = $this->getRequestParameter('ramo');
     $resp_node = new SimpleXMLExtended('<opp xmlns="' . $this->opp_ns . '" ' . ' xmlns:opp="' . $this->op_ns . '" ' . ' xmlns:xlink="' . $this->xlink_ns . '" >' . '</opp>');
     // start producing xml
     $content_node = $resp_node->addChild('opp:content', null, $this->op_ns);
     $c = new Criteria();
     if ($ramo == 'C') {
         $arr_tipo_id = array(1);
     } else {
         $arr_tipo_id = array(4, 5);
     }
     $c->add(OppCaricaPeer::TIPO_CARICA_ID, $arr_tipo_id, Criteria::IN);
     $c->add(OppCaricaPeer::DATA_FINE, NULL, Criteria::ISNULL);
     $parlamentari = OppCaricaPeer::doSelect($c);
     foreach ($parlamentari as $p) {
         $p_node = $content_node->addChild('parlamentare', $p->getId());
         $p_node->addAttribute('parlamento_id', $p->getParliamentId());
     }
     $xmlContent = $resp_node->asXML();
     $this->_send_output($xmlContent);
     return sfView::NONE;
 }
<?php

define('SF_ROOT_DIR', realpath(dirname(__FILE__) . '/..'));
define('SF_APP', 'fe');
define('SF_ENVIRONMENT', 'dev');
define('SF_DEBUG', true);
require_once SF_ROOT_DIR . DIRECTORY_SEPARATOR . 'apps' . DIRECTORY_SEPARATOR . SF_APP . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'config.php';
sfContext::getInstance();
print "Fetching data... \n";
$cariche = OppCaricaPeer::doSelect(new Criteria());
foreach ($cariche as $carica) {
    $c = new Criteria();
    $c->add(OppGruppoPeer::NOME, $carica->getGruppo(), Criteria::EQUAL);
    $gruppo = OppGruppoPeer::doSelectOne($c);
    if ($gruppo != null) {
        $carica_gruppo = new OppCaricaHasGruppo();
        $carica_gruppo->setCaricaId($carica->getId());
        $carica_gruppo->setGruppoId($gruppo->getId());
        $carica_gruppo->setDataInizio($carica->getDataInizio());
        $carica_gruppo->setDataFine($carica->getDataFine());
        $carica_gruppo->save();
    } else {
        echo "carica {$carica->getId}() gruppo non trovato\n";
    }
}
print "done.\n";
<?php

define('SF_ROOT_DIR', realpath(dirname(__FILE__) . '/..'));
define('SF_APP', 'fe');
define('SF_ENVIRONMENT', 'dev');
define('SF_DEBUG', true);
require_once SF_ROOT_DIR . DIRECTORY_SEPARATOR . 'apps' . DIRECTORY_SEPARATOR . SF_APP . DIRECTORY_SEPARATOR . 'config' . DIRECTORY_SEPARATOR . 'config.php';
sfContext::getInstance();
$c = new Criteria();
$c->add(OppCaricaPeer::LEGISLATURA, 16);
$c->add(OppCaricaPeer::TIPO_CARICA_ID, 1);
$c->add(OppCaricaPeer::DATA_INIZIO, '2008-04-29');
$c->add(OppCaricaPeer::DATA_FINE, NULL, Criteria::EQUAL);
$deps = OppCaricaPeer::doSelect($c);
foreach ($deps as $dep) {
    $c = new Criteria();
    $c->add(OppVotazioneHasCaricaPeer::CARICA_ID, $dep->getId());
    //$c->add(OppVotazioneHasCaricaPeer::VOTO,'Votazione annullata',Criteria::NOT_EQUAL);
    $count = OppVotazioneHasCaricaPeer::doCount($c);
    if ($count != 4825) {
        echo $dep->getId() . " " . $count . "\n";
    }
}
verifica l'esattezza del numero delle firme nei ddl di ogni singolo parlamentare
Prende in input 
- il numero della legislatura
*/
define('SF_ROOT_DIR', realpath(dirname(__FILE__) . '/../..'));
define('SF_APP', 'fe');
define('SF_ENVIRONMENT', 'dev');
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();
include "../parser/simple_html_dom.php";
//Controllo per i senatori
$c = new Criteria();
$c->add(OppCaricaPeer::TIPO_CARICA_ID, array(1, 4), Criteria::IN);
$c->add(OppCaricaPeer::LEGISLATURA, $argv[1]);
$results = OppCaricaPeer::doSelect($c);
foreach ($results as $result) {
    if ($result->getTipoCaricaId() == 1) {
        $c = new Criteria();
        $c->add(OppAppoggioPeer::CARICA_ID, $result->getId());
        $c->add(OppAppoggioPeer::TIPOLOGIA, 2);
        $c->add(OppAppoggioPeer::LEGISLATURA, $argv[1]);
        $aka = OppAppoggioPeer::doSelectOne($c);
        if ($aka) {
            $url = "http://www.senato.it/ricerche/sDDLa/risultati.ricerca?searchID=null&parms.output=&parms.statoDiv=0%2C0%2C0%2C1%2C0%2C0%2C0&parms.statoIcone=0%2C0%2C0%2C1%2C0%2C0%2C0&parms.sel=&parms.des=&parms.selmode=&parms.legislatura=" . $argv[1] . "&parms.ramo=+&parms.numeroFase=&parms.specification=&parms.testoScheda=&parms.natura=+&parms.lettura=+&parms.presentatoDal=&parms.presentatoAl=&parms.numeroDecretoLegge=&parms.decretoLeggeDel=&parms.numeroGazzettaDecreto=&parms.gazzettaDecretoDel=&parms.numeroLegge=&parms.leggeDel=&parms.numeroGazzettaLegge=&parms.gazzettaLeggeDel=&parms.statoDal=&parms.statoAl=&parms.tuttiTermini=T&parms.teseo=&parms.livelloTeseo=+&parms.naturaParlamentare=on&parms.deputatoIniziativa=" . $aka->getAka() . "&parms.iniziativa=&parms.tipoFirmatari=+&parms.assegnazione=&parms.ultimaAssegnazione=on&parms.assegnatoDal=&parms.assegnatoAl=&parms.pareri=&parms.criterioPareriAssegnazione=OR&parms.trattazione=&parms.trattatoDal=&parms.trattatoAl=&parms.fattoProprio=&parms.relatori=&parms.options.resultsPerPage=10&parms.ordinamento=DESC&parms.ordinaPerData=true&button-cerca=Cerca";
        } else {
            echo "??? non trovo AKA per " . $result->getId() . "\n";
            $url = "";
        }
    } else {
        $parl_id = $result->getParliamentId();
 public function executeUserVsSinglePolitician()
 {
     $user_id = $this->user->getId();
     $pol_id = $this->politico->getId();
     $leg = $this->legislatura;
     $arr = array();
     $come = array();
     $contro = array();
     $indice = 0;
     $c = new Criteria();
     $c->add(OppCaricaPeer::POLITICO_ID, $pol_id);
     $c->add(OppCaricaPeer::LEGISLATURA, $leg);
     $cariche = OppCaricaPeer::doSelect($c);
     foreach ($cariche as $carica) {
         $arr[] = $carica->getId();
     }
     $c = new Criteria();
     $c->add(sfVotingPeer::USER_ID, $user_id);
     $voting_objects = sfVotingPeer::doSelect($c);
     foreach ($voting_objects as $voting_object) {
         $c = new Criteria();
         $c->addJoin(OppAttoPeer::ID, OppCaricaHasAttoPeer::ATTO_ID);
         $c->add(OppCaricaHasAttoPeer::CARICA_ID, $arr, Criteria::IN);
         $c->add(OppAttoPeer::ID, $voting_object->getVotableID());
         $c->add(OppAttoPeer::LEGISLATURA, $leg);
         $c->add(OppCaricaHasAttoPeer::TIPO, 'R', Criteria::NOT_EQUAL);
         $firme = OppCaricaHasAttoPeer::doSelect($c);
         foreach ($firme as $firma) {
             $value = $this->calcolaIndice($firma->getOppAtto()->getTipoAttoId(), $firma->getTipo());
             $indice = $indice + $value * $voting_object->getVoting();
             if ($voting_object->getVoting() == 1) {
                 if (!in_array($firma->getAttoId(), $come)) {
                     $come[] = $firma->getAttoId();
                 }
             } else {
                 if (!in_array($firma->getAttoId(), $contro)) {
                     $contro[] = $firma->getAttoId();
                 }
             }
         }
     }
     $this->comes = $come;
     $this->contros = $contro;
     $this->indice = $indice;
 }