diff -r c731ab9b934d -r 7fba86fa8604 server/src/app/Libraries/Sparql/SparqlQueryAnalyser.php --- 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; }