IMPROVEMENT: validation of the query to numeric fields and null values ​​are interpreted as 0.

This commit is contained in:
Roly Rudy Gutierrez Pinto
2014-05-05 16:36:14 -04:00
parent 68c2f9c347
commit 7e122cb0ae

View File

@@ -108,12 +108,12 @@ class AdditionalTables extends BaseAdditionalTables
$oDataset = FieldsPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
while ($oDataset->next()) {
$auxField = $oDataset->getRow();
if ($auxField['FLD_TYPE'] == 'TIMESTAMP') {
$auxField['FLD_TYPE'] = 'DATETIME';
}
$this->fields[] = $auxField;
while ($oDataset->next()) {
$auxField = $oDataset->getRow();
if ($auxField['FLD_TYPE'] == 'TIMESTAMP') {
$auxField['FLD_TYPE'] = 'DATETIME';
}
$this->fields[] = $auxField;
}
return $this->fields;
@@ -396,30 +396,26 @@ class AdditionalTables extends BaseAdditionalTables
eval('$count = ' . $sClassPeerName . '::doCount($oCriteria);');
if ($filter != '' && is_string($filter)) {
$stringOr = '$oCriteria->add(';
$stringOr = '';
$closure = '';
$compare = '';
$types = array('INTEGER', 'BIGINT', 'SMALLINT', 'TINYINT', 'DECIMAL', 'DOUBLE', 'FLOAT', 'REAL');
foreach ($aData['FIELDS'] as $aField) {
if ($aField['FLD_NAME'] != 'APP_UID') {
$compare = '"%' . $filter . '%", Criteria::LIKE';
if (in_array($aField['FLD_TYPE'], $types)) {
if (is_numeric($filter)) {
$compare = '"' . $filter . '", Criteria::EQUAL';
} else {
$compare = 'null, Criteria::ISNULL';
$stringOr = $stringOr . '$a = $oCriteria->getNewCriterion(' . $sClassPeerName . '::' . $aField['FLD_NAME'] . ', "' . $filter . '", Criteria::EQUAL)' . $closure . ';';
$closure = '->addOr($a)';
}
} else {
$stringOr = $stringOr . '$a = $oCriteria->getNewCriterion(' . $sClassPeerName . '::' . $aField['FLD_NAME'] . ', "%' . $filter . '%", Criteria::LIKE)' . $closure . ';';
$closure = '->addOr($a)';
}
$stringOr = $stringOr . '$oCriteria->getNewCriterion(' . $sClassPeerName . '::' . $aField['FLD_NAME'] . ', ' . $compare . ')->addOr(';
$closure = $closure . ")";
}
}
$stringOr = rtrim($stringOr, '->addOr(') . $closure . ';';
$stringOr = $stringOr . '$oCriteria->add($a);';
eval($stringOr);
$oCriteriaCount = clone $oCriteria;
$oCriteriaCount = clone $oCriteria;
eval('$count = ' . $sClassPeerName . '::doCount($oCriteria);');
}