1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
foreach($types as $key => $type){
// Recherche de loperateur
$operateur = 'addAnd';
if ($key > 0 && $operateurs[$key-1] == 'OU') {
$operateur = 'addOr';
}
$crit = 'EQUAL';
if($key > 0 && $criterias[$key]!=''){
if ($operateurs[$key-1] == 'SAUF') {
$crit = 'NOT_EQUAL';
}
}else{
if ($key > 0 && $operateurs[$key-1] == 'SAUF') {
$crit = 'ISNOTNULL';
}else{
$crit = 'ISNULL';
}
}
switch ($type) {
//en fonction des types je génére des critérias exemple:
case "adresse":
case "nom":
case "prenom":
$typeContante = constant ('IndividuPeer::'.strtoupper ($type));
if($key>0){
if($criterias[$key]=='' && $operateurs[$key-1] == 'SAUF')
$criterionTemp = $criteria->getNewCriterion ($typeContante, Criteria::ISNOTNULL);
else if($criterias[$key]=='' && $operateurs[$key-1] != 'SAUF')
$criterionTemp = $criteria->getNewCriterion ($typeContante, Criteria::ISNULL);
else if($criterias[$key]!='' && $operateurs[$key-1] == 'SAUF')
$criterionTemp = $criteria->getNewCriterion ($typeContante, '%'.$criterias[$key].'%', Criteria::NOT_LIKE);
else
$criterionTemp = $criteria->getNewCriterion ($typeContante, '%'.$criterias[$key].'%', Criteria::LIKE);
}else{
if($criterias[$key]=='')
$criterionTemp = $criteria->getNewCriterion ($typeContante, Criteria::ISNULL);
else
$criterionTemp = $criteria->getNewCriterion ($typeContante, '%'.$criterias[$key].'%', Criteria::LIKE);
}
if ($key == 0)
$criteria->addAscendingOrderByColumn($typeContante);
break;
}
if ($key > 0)
$criterion->$operateur($criterionTemp);
else{
$criterion = $criterionTemp;
}
} |
Partager