server/src/app/Libraries/Sparql/SparqlQueryAnalyser.php
changeset 387 7fba86fa8604
parent 386 c731ab9b934d
--- 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;
         }