$c->add(OppCaricaHasAttoPeer::CARICA_ID, $carica->getId());
    $res = OppCaricaHasAttoPeer::doSelectRS($c);
    $firme = array();
    while ($res->next()) {
        $firme[$res->getInt(1)] = $res->getString(2);
    }
    $politici[$i]['firme'] = $firme;
    unset($res);
    $nfirme = count($firme);
    echo " ({$nfirme} firme)\n";
}
// update dei valori delle firme
for ($i = 0; $i < $ncariche; $i++) {
    $dd = OppSimilaritaPeer::retrieveByPK($politici[$i]['id'], $politici[$i]['id']);
    if (is_null($dd)) {
        $dd = new OppSimilarita();
        $dd->setCaricaFromId($politici[$i]['id']);
        $dd->setCaricaToId($politici[$i]['id']);
    }
    for ($j = $i + 1; $j < $ncariche; $j++) {
        $d = OppSimilaritaPeer::retrieveByPK($politici[$i]['id'], $politici[$j]['id']);
        if (is_null($d)) {
            $d = new OppSimilarita();
            $d->setCaricaFromId($politici[$i]['id']);
            $d->setCaricaToId($politici[$j]['id']);
        }
        $d->setSigningSimilarity(OppSimilaritaPeer::similarityForSignatures($politici[$i], $politici[$j]) / $ncariche);
        $d->save();
        // scrittura elemento simmetrico
        $ds = OppSimilaritaPeer::retrieveByPK($politici[$j]['id'], $politici[$i]['id']);
        if (is_null($ds)) {
// scrittura completa della matrice simmetrica delle similarità
// tranne la diagonale che è nulla per default
for ($i = 0; $i < $ncariche; $i++) {
    $dd = OppSimilaritaPeer::retrieveByPK($politici[$i]['id'], $politici[$i]['id']);
    if (is_null($dd)) {
        $dd = new OppSimilarita();
        $dd->setCaricaFromId($politici[$i]['id']);
        $dd->setCaricaToId($politici[$i]['id']);
    }
    $dd->save();
    $dd = null;
    unset($dd);
    for ($j = $i + 1; $j < $ncariche; $j++) {
        $d = OppSimilaritaPeer::retrieveByPK($politici[$i]['id'], $politici[$j]['id']);
        if (is_null($d)) {
            $d = new OppSimilarita();
            $d->setCaricaFromId($politici[$i]['id']);
            $d->setCaricaToId($politici[$j]['id']);
        }
        $d->setVotingSimilarity(OppSimilaritaPeer::similarityForVotes($politici[$i], $politici[$j], $ramo) / $ncariche);
        $d->save();
        // scrittura elemento simmetrico
        $ds = OppSimilaritaPeer::retrieveByPK($politici[$j]['id'], $politici[$i]['id']);
        if (is_null($ds)) {
            $ds = new OppSimilarita();
            $ds->setCaricaFromId($d->getCaricaToId());
            $ds->setCaricaToId($d->getCaricaFromId());
        }
        $ds->setVotingSimilarity($d->getVotingSimilarity());
        $ds->save();
        $ds = null;