summaryrefslogtreecommitdiff
path: root/framework/Data/ActiveRecord/Vendor/TIbmMetaData.php
diff options
context:
space:
mode:
authorwei <>2007-03-31 06:42:15 +0000
committerwei <>2007-03-31 06:42:15 +0000
commit54c90d0102515ad58a882a6b3f4ac623fc9d50ed (patch)
treef111d06ef5ab1771a723e9a4f807f39039ec3fae /framework/Data/ActiveRecord/Vendor/TIbmMetaData.php
parente54507780bbb25537735139fdf65637fbaa39542 (diff)
Add changes by ezar for IBM Db2 Active Record support.
Diffstat (limited to 'framework/Data/ActiveRecord/Vendor/TIbmMetaData.php')
-rw-r--r--framework/Data/ActiveRecord/Vendor/TIbmMetaData.php33
1 files changed, 33 insertions, 0 deletions
diff --git a/framework/Data/ActiveRecord/Vendor/TIbmMetaData.php b/framework/Data/ActiveRecord/Vendor/TIbmMetaData.php
index 4f923406..eeaea851 100644
--- a/framework/Data/ActiveRecord/Vendor/TIbmMetaData.php
+++ b/framework/Data/ActiveRecord/Vendor/TIbmMetaData.php
@@ -76,5 +76,38 @@ class TIbmMetaData extends TDbMetaDataCommon
$data[$k] = $this->postQueryRow($v);
return $data;
}
+
+ public function getSearchRegExpCriteria($fields, $keywords)
+ {
+ if(strlen(trim($keywords)) == 0) return '';
+ $words = array();
+ preg_match_all('/([a-zA-Z0-9-+]+)/', $keywords, $words);
+ $result = array();
+ foreach($fields as $field)
+ {
+ $column = $this->getColumn($field);
+ if($this->isSearchableColumn($column))
+ $result[] = $this->getLikeCriteriaStr($column->getName(), $words[0]);
+ }
+ $a = '('.implode(' OR ', $result).')';
+ error_log($a);
+ return '('.implode(' OR ', $result).')';
+ }
+
+ protected function isSearchableColumn($column)
+ {
+ $type = strtolower($column->getType());
+ return $type === 'char' || $type === 'varchar';
+ }
+
+ protected function getLikeCriteriaStr($column, $words)
+ {
+ $result=array();
+ foreach($words as $word)
+ $result[] = "{$column} LIKE '%{$word}%'";
+ return '('.implode(' AND ', $result).')';
+ }
+
+
}
?> \ No newline at end of file