|
@@ -4,6 +4,7 @@ Lib::loadClass('Core_AclBase');
|
|
|
Lib::loadClass('User');
|
|
Lib::loadClass('User');
|
|
|
Lib::loadClass('UsersHelper');
|
|
Lib::loadClass('UsersHelper');
|
|
|
Lib::loadClass('ParseOgcFilter');
|
|
Lib::loadClass('ParseOgcFilter');
|
|
|
|
|
+Lib::loadClass('SqlQueryWhereBuilder');
|
|
|
|
|
|
|
|
class Schema_AccessGroupStorageAcl extends Core_AclBase {// Read only class
|
|
class Schema_AccessGroupStorageAcl extends Core_AclBase {// Read only class
|
|
|
|
|
|
|
@@ -41,6 +42,7 @@ class Schema_AccessGroupStorageAcl extends Core_AclBase {// Read only class
|
|
|
}
|
|
}
|
|
|
public function getItems($params = array()) {
|
|
public function getItems($params = array()) {
|
|
|
$DBG = V::get('DBG_DS', 0, $_GET, 'int');
|
|
$DBG = V::get('DBG_DS', 0, $_GET, 'int');
|
|
|
|
|
+ if($DBG>2){echo'<pre>';}
|
|
|
if($DBG>2){echo 'C.'.get_class($this).' L.' . __LINE__ . " getItems \$params:";print_r($params);echo "\n";}
|
|
if($DBG>2){echo 'C.'.get_class($this).' L.' . __LINE__ . " getItems \$params:";print_r($params);echo "\n";}
|
|
|
$items = array();
|
|
$items = array();
|
|
|
// TODO: fetch groups connectes with current user
|
|
// TODO: fetch groups connectes with current user
|
|
@@ -77,6 +79,42 @@ class Schema_AccessGroupStorageAcl extends Core_AclBase {// Read only class
|
|
|
if($DBG>2){echo 'C.'.get_class($this).' L.' . __LINE__ . " getItems \$items:";print_r($items);echo "\n";}
|
|
if($DBG>2){echo 'C.'.get_class($this).' L.' . __LINE__ . " getItems \$items:";print_r($items);echo "\n";}
|
|
|
$items = array_filter($items, array($queryWhereBuilder, 'filterRawArray'));
|
|
$items = array_filter($items, array($queryWhereBuilder, 'filterRawArray'));
|
|
|
}
|
|
}
|
|
|
|
|
+ $filterId = trim(V::get('f_id', '', $params));
|
|
|
|
|
+ if (strlen($filterId)) {// allow '0'
|
|
|
|
|
+ $queryWhereBuilder = new SqlQueryWhereBuilder();
|
|
|
|
|
+ if (is_numeric($filterId)) {
|
|
|
|
|
+ $queryWhereBuilder->addComparisonFieldToValue('id', '=', $filterId);
|
|
|
|
|
+ } else if (false !== strpos($filterId, '%') && is_numeric(trim($filterId, '%'))) {
|
|
|
|
|
+ $queryWhereBuilder->addComparisonFieldToValue('id', 'like', $filterId);
|
|
|
|
|
+ } else if ('>=' == substr($filterId, 0, 2) && is_numeric(substr($filterId, 2))) {
|
|
|
|
|
+ $queryWhereBuilder->addComparisonFieldToValue('id', 'GreaterThenOrEqualTo', substr($filterId, 2));
|
|
|
|
|
+ } else if ('<=' == substr($filterId, 0, 2) && is_numeric(substr($filterId, 2))) {
|
|
|
|
|
+ $queryWhereBuilder->addComparisonFieldToValue('id', 'LessThenOrEqualTo', substr($filterId, 2));
|
|
|
|
|
+ } else if ('>' == substr($filterId, 0, 1) && is_numeric(substr($filterId, 1))) {
|
|
|
|
|
+ $queryWhereBuilder->addComparisonFieldToValue('id', 'GreaterThen', substr($filterId, 1));
|
|
|
|
|
+ } else if ('<' == substr($filterId, 0, 1) && is_numeric(substr($filterId, 1))) {
|
|
|
|
|
+ $queryWhereBuilder->addComparisonFieldToValue('id', 'LessThen', substr($filterId, 1));
|
|
|
|
|
+ } else {
|
|
|
|
|
+ $filterId = null;// TODO: BUG uniimplemented comparison sign
|
|
|
|
|
+ }
|
|
|
|
|
+ if ($filterId) $items = array_filter($items, array($queryWhereBuilder, 'filterRawArray'));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ foreach (['name', 'uid'] as $fieldName) {
|
|
|
|
|
+ $filterValue = trim(V::get("f_{$fieldName}", '', $params));
|
|
|
|
|
+ if (strlen($filterValue)) {// allow '0'
|
|
|
|
|
+ $queryWhereBuilder = new SqlQueryWhereBuilder();
|
|
|
|
|
+ if (!is_scalar($filterValue)) {
|
|
|
|
|
+ } else if ('=' == substr($filterValue, 0, 1)) {
|
|
|
|
|
+ $queryWhereBuilder->addComparisonFieldToValue($fieldName, '=', substr($filterValue, 1));
|
|
|
|
|
+ } else {
|
|
|
|
|
+ if ('%' != substr($filterValue, 0, 1)) $filterValue = "%{$filterValue}";
|
|
|
|
|
+ if ('%' != substr($filterValue, -1)) $filterValue = "{$filterValue}%";
|
|
|
|
|
+ $queryWhereBuilder->addComparisonFieldToValue($fieldName, 'like', $filterValue);
|
|
|
|
|
+ }
|
|
|
|
|
+ $items = array_filter($items, array($queryWhereBuilder, 'filterRawArray'));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
if($DBG>2){echo 'C.'.get_class($this).' L.' . __LINE__ . " getItems \$items:";print_r($items);echo "\n";}
|
|
if($DBG>2){echo 'C.'.get_class($this).' L.' . __LINE__ . " getItems \$items:";print_r($items);echo "\n";}
|
|
|
return $items;
|
|
return $items;
|