|
@@ -2,6 +2,7 @@
|
|
|
|
|
|
|
|
Lib::loadClass('ACL');
|
|
Lib::loadClass('ACL');
|
|
|
Lib::loadClass('SqlQueryWhereBuilder');
|
|
Lib::loadClass('SqlQueryWhereBuilder');
|
|
|
|
|
+Lib::loadClass('ParseOgcFilter');
|
|
|
|
|
|
|
|
// usage: (Acl class)::buildQuery($params): return new AclQueryFeatures($this, $params);
|
|
// usage: (Acl class)::buildQuery($params): return new AclQueryFeatures($this, $params);
|
|
|
// (view): $queryFeatures = $acl->buildQuery($params);
|
|
// (view): $queryFeatures = $acl->buildQuery($params);
|
|
@@ -241,6 +242,13 @@ class AclQueryFeatures {
|
|
|
return (!empty($orWhere)) ? [null, 'or', $orWhere] : null;
|
|
return (!empty($orWhere)) ? [null, 'or', $orWhere] : null;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ public function parseOgcFilter($ogcFilter) {
|
|
|
|
|
+ $parser = new ParseOgcFilter();
|
|
|
|
|
+ $parser->loadOgcFilter($ogcFilter);
|
|
|
|
|
+ $queryWhereBuilder = $parser->convertToSqlQueryWhereBuilder();
|
|
|
|
|
+ return $queryWhereBuilder->getQueryWhere($this->_fromPrefix);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
public function getQuery() {
|
|
public function getQuery() {
|
|
|
if ($this->_query) return $this->_query;
|
|
if ($this->_query) return $this->_query;
|
|
|
// $ds = $this->_acl->getDataSource(); // TODO: only for TableAcl // TODO: move _parseSqlWhere to this class
|
|
// $ds = $this->_acl->getDataSource(); // TODO: only for TableAcl // TODO: move _parseSqlWhere to this class
|
|
@@ -269,7 +277,7 @@ class AclQueryFeatures {
|
|
|
default: throw new Exception("Not Implemented special filter '".substr($k, 3)."'");
|
|
default: throw new Exception("Not Implemented special filter '".substr($k, 3)."'");
|
|
|
}
|
|
}
|
|
|
} else if ('ogc:Filter' == $k) {
|
|
} else if ('ogc:Filter' == $k) {
|
|
|
- throw new Exception("Not Implemented ogc:Filter");
|
|
|
|
|
|
|
+ $this->_query->where($this->parseOgcFilter($v));
|
|
|
} else if ('primaryKey' == $k) {
|
|
} else if ('primaryKey' == $k) {
|
|
|
$fieldName = $this->_acl->getPrimaryKeyField();
|
|
$fieldName = $this->_acl->getPrimaryKeyField();
|
|
|
$fieldType = $this->_acl->getXsdFieldType($fieldName);
|
|
$fieldType = $this->_acl->getXsdFieldType($fieldName);
|