--- a/server/src/app/Libraries/Sparql/SparqlQueryAnalyser.php Mon Oct 31 14:24:23 2016 +0100
+++ b/server/src/app/Libraries/Sparql/SparqlQueryAnalyser.php Thu Nov 03 01:52:26 2016 +0100
@@ -47,35 +47,44 @@
return $this->queryType;
}
- private function extractPrefix() {
- $prefixes = [];
- $rawPrefixes = [];
- $res = preg_replace_callback("%".self::SPARQL_PREFIX_BASE_REGEXP."%iu", function($m) use (&$prefixes, &$rawPrefixes) {
- $rawPrefixes[] = trim($m[0]);
- $prefixes[$m[3]?$m[3]:""] = $m[4];
+ private function extractPrefixLimit() {
+ $this->prefixes = [];
+ $this->rawPrefixes = [];
+ $res = preg_replace_callback("%".self::SPARQL_PREFIX_BASE_REGEXP."%iu", function($m) {
+ $this->rawPrefixes[] = trim($m[0]);
+ $this->prefixes[$m[3]?$m[3]:""] = $m[4];
return "";
}, $this->query);
+ $res = preg_replace_callback("%".self::SPARQL_LIMIT_OFFSET_QUERY_REGEXP."%iu", function($m) {
+ for($i=0;$i<(count($m)-1)/2;$i++) {
+ if(Utils::startsWith(strtolower($m[2*$i+1]), "limit")) {
+ $this->limit = intval($m[$i*2+2]);
+ } elseif (Utils::startsWith(strtolower($m[2*$i+1]), "offset")) {
+ $this->offset = intval($m[$i*2+2]);
+ }
+ }
+ }, $res);
- return [$rawPrefixes, $prefixes, trim($res)];
+ $this->rawQuery = trim($res);
}
public function getRawPrefixes() {
if($this->rawPrefixes === false) {
- list($this->rawPrefixes, $this->prefixes, $this->rawQuery) = $this->extractPrefix();
+ $this->extractPrefixLimit();
}
return $this->rawPrefixes;
}
public function getPrefixes() {
if($this->prefixes === false) {
- list($this->rawPrefixes, $this->prefixes, $this->rawQuery) = $this->extractPrefix();
+ $this->extractPrefixLimit();
}
return $this->prefixes;
}
public function getRawQuery() {
if($this->rawQuery === false) {
- list($this->rawPrefixes, $this->prefixes, $this->rawQuery) = $this->extractPrefix();
+ $this->extractPrefixLimit();
}
return $this->rawQuery;
}
@@ -92,15 +101,7 @@
}
private function setLimitOffset() {
- if(preg_match("%".self::SPARQL_LIMIT_OFFSET_QUERY_REGEXP."%iu", $this->query, $m) === 1) {
- for($i=0;$i<(count($m)-1)/2;$i++) {
- if(Utils::startsWith(strtolower($m[2*$i+1]), "limit")) {
- $this->limit = intval($m[$i*2+2]);
- } elseif (Utils::startsWith(strtolower($m[2*$i+1]), "offset")) {
- $this->offset = intval($m[$i*2+2]);
- }
- }
- }
+ $this->extractPrefixLimit();
if($this->limit === false) {
$this->limit = null;
}