Moved the filtering split to a virtual function.

git-svn-id: file:///svn-source/pmgr/branches/yafr_20090716@429 97e9348a-65ac-dc4b-aefc-98561f571b83
This commit is contained in:
abijah
2009-07-30 19:07:21 +00:00
parent 1e7557de71
commit 07232c77d5

View File

@@ -307,22 +307,13 @@ class AppController extends Controller {
return $query;
foreach ($params['post']['filter'] AS $filter => $value) {
if (preg_match("/\./", $filter)) {
list($tbl, $id) = explode(".", $filter);
}
elseif (preg_match('/^(.*)_(id)$/', $filter, $matches)) {
list($tbl, $id) = array_slice($matches, 1);
}
else {
$tbl = $filter;
$id = null;
}
$split = $this->gridDataFilterSplit($params, $model, $filter);
$table = $this->gridDataFilterTablesTable($params, $model, $tbl);
$table = $this->gridDataFilterTablesTable($params, $model, $split['table']);
if (!$table)
continue;
$config = $this->gridDataFilterTablesConfig($params, $model, $tbl);
$config = $this->gridDataFilterTablesConfig($params, $model, $split['table']);
/* pr(array('pre-filter-table-config' => */
/* array('query[link]' => $query[$link], */
@@ -383,27 +374,18 @@ class AppController extends Controller {
return $conditions;
foreach ($params['post']['filter'] AS $filter => $value) {
if (preg_match("/\./", $filter)) {
list($tbl, $id) = explode(".", $filter);
}
elseif (preg_match('/^(.*)_(id)$/', $filter, $matches)) {
list($tbl, $id) = array_slice($matches, 1);
}
else {
$tbl = $filter;
$id = null;
}
$split = $this->gridDataFilterSplit($params, $model, $filter);
$table = $this->gridDataFilterConditionsTable($params, $model, $tbl);
$table = $this->gridDataFilterConditionsTable($params, $model, $split['table']);
if (!$table)
continue;
$key = $this->gridDataFilterConditionsKey($params, $model, $tbl, $id);
$key = $this->gridDataFilterConditionsKey($params, $model, $split['table'], $split['field']);
if (!$key)
continue;
$conditions[]
= $this->gridDataFilterConditionsStatement($params, $model, $tbl, $key, $value);
= $this->gridDataFilterConditionsStatement($params, $model, $split['table'], $key, $value);
}
return $conditions;
@@ -426,6 +408,22 @@ class AppController extends Controller {
return array("{$table}.{$key}" => $value);
}
function gridDataFilterSplit(&$params, &$model, $filter) {
$table = $field = null;
if (preg_match("/\./", $filter)) {
list($table, $field) = explode(".", $filter);
}
elseif (preg_match('/^(.*)_(id)$/', $filter, $matches)) {
list($table, $field) = array_slice($matches, 1);
}
else {
$table = $filter;
$field = null;
}
return array('table' => $table, 'field' => $field);
}
function gridDataFilterTableName(&$params, &$model, $table) {
return Inflector::camelize($table);
}