$c = new Criteria();
$crit0 = $c->getNewCriterion(TownsdistancesPeer::TOWN_A, $sf_user->getTown()->getId());
$crit1 = $c->getNewCriterion(TownsdistancesPeer::TOWN_B, $town->getId());
// Perform AND at level 1 ($crit0 $crit1 )
$crit0->addAnd($crit1);
$crit2 = $c->getNewCriterion(TownsdistancesPeer::TOWN_A, $town->getId();
$crit3 = $c->getNewCriterion(TownsdistancesPeer::TOWN_B, $sf_user->getTown()->getId());
// Perform AND at level 1 ($crit2 $crit3 )
$crit2->addAnd($crit3);
// Perform OR at level 0 ($crit0 $crit2 )
$crit0->addOr($crit2);
$c->add($crit0);
$result = TownsdistancesPeer::doSelect($c);
// This loop will of course need to be edited to work
foreach ($result as $obj)
{
//$val = $obj->getValue();
}