$c = new Criteria();
 $c->clearSelectColumns();
 $c->addSelectColumn(OppVotazioneHasCaricaPeer::VOTAZIONE_ID);
 $c->addSelectColumn(OppVotazioneHasCaricaPeer::VOTO);
 $c->addJoin(OppVotazioneHasCaricaPeer::VOTAZIONE_ID, OppVotazionePeer::ID, Criteria::LEFT_JOIN);
 $c->addJoin(OppVotazionePeer::SEDUTA_ID, OppSedutaPeer::ID, Criteria::LEFT_JOIN);
 $c->add(OppVotazioneHasCaricaPeer::CARICA_ID, $argv[1], Criteria::EQUAL);
 if ($df != '') {
     $cton1 = $c->getNewCriterion(OppSedutaPeer::DATA, $di, Criteria::GREATER_EQUAL);
     $cton2 = $c->getNewCriterion(OppSedutaPeer::DATA, $df, Criteria::LESS_EQUAL);
     $cton1->addAnd($cton2);
     $c->add($cton1);
 } else {
     $c->add(OppSedutaPeer::DATA, $di, Criteria::GREATER_EQUAL);
 }
 $rs = OppVotazioneHasCaricaPeer::doSelectRS($c);
 $voto_carica = array();
 while ($rs->next()) {
     $voto_carica[$rs->getInt(1)] = $rs->getString(2);
 }
 $cont = 0;
 foreach ($voto_gruppo as $indice => $voto) {
     if (isset($voto_carica[$indice]) && ($voto == 'Favorevole' || $voto == 'Astenuto' || $voto == 'Contrario') && $voto != $voto_carica[$indice]) {
         if ($voto_carica[$indice] == 'Favorevole' || $voto_carica[$indice] == 'Astenuto' || $voto_carica[$indice] == 'Contrario') {
             $cont = $cont + 1;
             echo "votazione: " . $indice . " voto gruppo: " . $voto . " voto carica: " . $voto_carica[$indice] . "\n";
         }
     }
 }
 /*
 $c = new Criteria();
 /**
  * torna array contenente il dettaglio del comportamento dei gruppi
  * - Gruppo Misto
  *   - favorevole  => N
  *   - contrario   => N
  *   - astenuto    => N
  *   - assente     => N
  *   - in missione => N
  *
  * @param integer $votazione_id 
  * @return complex hash
  * @author Guglielmo Celata
  */
 public static function doSelectGroupByGruppo($votazione_id, $data = null)
 {
     if (is_null($data)) {
         $votazione = OppVotazionePeer::retrieveByPK($votazione_id);
         $data = $votazione->getOppSeduta()->getData('Y-m-d');
     }
     $risultato = array();
     $c = new Criteria();
     $c->clearSelectColumns();
     $c->addSelectColumn(OppGruppoPeer::NOME);
     $c->addSelectColumn(OppVotazioneHasCaricaPeer::VOTO);
     $c->addSelectColumn(OppGruppoPeer::ID);
     $c->addAsColumn('CONT', 'COUNT(*)');
     $c->addJoin(OppVotazioneHasCaricaPeer::CARICA_ID, OppCaricaPeer::ID, Criteria::INNER_JOIN);
     $c->addJoin(OppVotazioneHasCaricaPeer::CARICA_ID, OppCaricaHasGruppoPeer::CARICA_ID, Criteria::INNER_JOIN);
     $c->addJoin(OppCaricaHasGruppoPeer::GRUPPO_ID, OppGruppoPeer::ID, Criteria::INNER_JOIN);
     $c->add(OppVotazioneHasCaricaPeer::VOTAZIONE_ID, $votazione_id);
     $c->add(OppCaricaHasGruppoPeer::DATA_INIZIO, $data, Criteria::LESS_EQUAL);
     $cton1 = $c->getNewCriterion(OppCaricaHasGruppoPeer::DATA_FINE, $data, Criteria::GREATER_EQUAL);
     $cton2 = $c->getNewCriterion(OppCaricaHasGruppoPeer::DATA_FINE, null, Criteria::ISNULL);
     $cton1->addOr($cton2);
     $c->add($cton1);
     $c->addGroupByColumn(OppGruppoPeer::NOME);
     $c->addGroupByColumn(OppVotazioneHasCaricaPeer::VOTO);
     $rs = OppVotazioneHasCaricaPeer::doSelectRS($c);
     while ($rs->next()) {
         if (!isset($risultato[$rs->getString(1)])) {
             $risultato[$rs->getString(1)] = array('id' => $rs->getInt(3), 'Favorevole' => 0, 'Contrario' => 0, 'Astenuto' => 0, 'Assente' => 0, 'In missione' => 0);
         }
         if (isset($risultato[$rs->getString(1)][$rs->getString(2)])) {
             $risultato[$rs->getString(1)][$rs->getString(2)] = $rs->getInt(4);
         }
     }
     return $risultato;
 }
 public function getVoti($page = 1)
 {
     $voti = array();
     $c = new Criteria();
     $c->clearSelectColumns();
     $c->addSelectColumn(OppVotazionePeer::ID);
     $c->addSelectColumn(OppSedutaPeer::RAMO);
     $c->addSelectColumn(OppSedutaPeer::LEGISLATURA);
     $c->addSelectColumn(OppSedutaPeer::DATA);
     $c->addSelectColumn(OppVotazionePeer::TITOLO);
     $c->addSelectColumn(OppVotazioneHasCaricaPeer::VOTO);
     $c->addSelectColumn(OppVotazionePeer::ESITO);
     $c->addSelectColumn(OppGruppoPeer::NOME);
     $c->addSelectColumn(OppVotazioneHasGruppoPeer::VOTO);
     $c->addJoin(OppCaricaPeer::ID, OppVotazioneHasCaricaPeer::CARICA_ID, Criteria::INNER_JOIN);
     $c->addJoin(OppVotazioneHasCaricaPeer::VOTAZIONE_ID, OppVotazionePeer::ID, Criteria::INNER_JOIN);
     $c->addJoin(OppVotazionePeer::SEDUTA_ID, OppSedutaPeer::ID, Criteria::INNER_JOIN);
     $c->addJoin(OppVotazioneHasCaricaPeer::CARICA_ID, OppCaricaHasGruppoPeer::CARICA_ID, Criteria::INNER_JOIN);
     $c->addJoin(OppCaricaHasGruppoPeer::GRUPPO_ID, OppGruppoPeer::ID, Criteria::INNER_JOIN);
     $c->addJoin(OppVotazioneHasCaricaPeer::VOTAZIONE_ID, OppVotazioneHasGruppoPeer::VOTAZIONE_ID, Criteria::INNER_JOIN);
     $c->add(OppCaricaPeer::POLITICO_ID, $this->getId(), Criteria::EQUAL);
     $c->add(OppCaricaHasGruppoPeer::DATA_INIZIO, OppSedutaPeer::DATA, Criteria::LESS_EQUAL);
     $cton1 = $c->getNewCriterion(OppCaricaHasGruppoPeer::DATA_FINE, OppSedutaPeer::DATA, Criteria::GREATER_EQUAL);
     $cton2 = $c->getNewCriterion(OppCaricaHasGruppoPeer::DATA_FINE, null, Criteria::ISNULL);
     $cton1->addOr($cton2);
     $c->add($cton1);
     $c->add(OppVotazioneHasGruppoPeer::GRUPPO_ID, OppVotazioneHasGruppoPeer::GRUPPO_ID . '=' . OppGruppoPeer::ID, Criteria::CUSTOM);
     $c->addDescendingOrderByColumn(OppSedutaPeer::DATA);
     if ($page != 1) {
         $c->setOffset(sfConfig::get('app_pagination_limit') * $page);
     }
     $c->setLimit(sfConfig::get('app_pagination_limit'));
     $rs = OppVotazioneHasCaricaPeer::doSelectRS($c);
     while ($rs->next()) {
         //$voto_gruppo = OppVotazionePeer::doSelectVotoGruppo($rs->getInt(1), $rs->getString(8));
         $voti[$rs->getInt(1)] = array('ramo' => $rs->getString(2) == 'C' ? 'Camera' : 'Senato', 'legislatura' => $rs->getString(3), 'data' => $rs->getDate(4, 'Y-m-d'), 'titolo' => str_replace(';NULL', '', $rs->getString(5)), 'voto' => $rs->getString(6), 'voto_gruppo' => $rs->getString(9), 'esito' => Text::decodeEsito($rs->getString(7)));
     }
     return $voti;
 }