From 470e0b66b609e51aec4989b137a442d48f2802fa Mon Sep 17 00:00:00 2001
From: alvaro <alvaro@alia.(none)>
Date: Thu, 20 Sep 2012 15:16:44 -0700
Subject: [PATCH] Adding lodspk.source that contains URLs for the queries used
 in a service or type

---
 classes/Convert.php               | 36 +++++++++++++++++++++++++++++++
 classes/Utils.php                 |  2 +-
 classes/modules/serviceModule.php |  1 +
 classes/modules/typeModule.php    |  1 +
 4 files changed, 39 insertions(+), 1 deletion(-)

diff --git a/classes/Convert.php b/classes/Convert.php
index 9fbffab1..cfba76c1 100644
--- a/classes/Convert.php
+++ b/classes/Convert.php
@@ -69,5 +69,41 @@ final class Convert {
   	
   	return $aRetAr;
   }
+  
+  
+  static public function getPaths ($r, $path, $results) {
+    global $lodspk;
+    global $conf;
+    $arr = array();
+    foreach($r as $k => $v){
+      if($k == "params" ){
+        continue;
+      }
+      if($k == "0"){//if query
+        return NULL;
+      }
+      $next = self::getPaths($r->$k, $path."endpoint.".$k."/", $arr);
+      if($next == NULL){
+         $aux = $path.$k;
+         $root = array();
+         $pointer = &$root;
+         $aux2 = explode("/", $aux);
+         $key = str_ireplace("endpoint.", "", array_shift($aux2));
+         foreach($aux2 as $w){
+           $x = str_ireplace("endpoint.", "", $w);
+           $pointer[$x] = array();
+           $pointer = &$pointer[$x];
+         }
+         $pointer = $lodspk['baseUrl'].'lodspeakr/components/'.$conf[$lodspk['module']]['prefix']."/".$lodspk['componentName']."/queries/".$aux.".query";
+         if(isset($lodspk['source'][$key])){
+          $lodspk['source'][$key] = array_merge($lodspk['source'][$key], $root);
+         }else{
+           $lodspk['source'][$key] = $root;
+         }
+      }
+    }
+    return 1;
+  }
+
 }
 ?>
diff --git a/classes/Utils.php b/classes/Utils.php
index 860a8309..2321ea25 100644
--- a/classes/Utils.php
+++ b/classes/Utils.php
@@ -540,9 +540,9 @@ class Utils{
   	  'cache_dir' => $conf['home'].'cache/',
   	  ));
   	$models = $data;
+  	Convert::getPaths($models, "");
   	$first = $lodspk['firstResults'];
   	unset($lodspk['firstResults']);
-  	$lodspk = $lodspk;
   	//unset($lodspk);
   	$vars = compact('uri','lodspk', 'models', 'first');
  	if($conf['debug']){
diff --git a/classes/modules/serviceModule.php b/classes/modules/serviceModule.php
index 738fc7cf..adbf2f19 100644
--- a/classes/modules/serviceModule.php
+++ b/classes/modules/serviceModule.php
@@ -33,6 +33,7 @@ class ServiceModule extends abstractModule{
   	$lodspk['model'] = $conf['model']['directory'].'/'.$conf['service']['prefix'].'/'.$qArr[0].'/';
   	$lodspk['view'] = $conf['view']['directory'].'/'.$conf['service']['prefix'].'/'.$qArr[0].'/'.$extension.'.template';
   	$lodspk['serviceName'] = $qArr[0];
+  	$lodspk['componentName'] = $qArr[0];
   	$modelFile = $lodspk['model'].$extension.'.queries';
   	if(file_exists($lodspk['model'].$extension.'.queries')){
   	  if(!file_exists($lodspk['view'])){
diff --git a/classes/modules/typeModule.php b/classes/modules/typeModule.php
index 71cb91a9..bc673f4f 100644
--- a/classes/modules/typeModule.php
+++ b/classes/modules/typeModule.php
@@ -138,6 +138,7 @@ class TypeModule extends abstractModule{
   	  $auxViewFile  = $conf['view']['directory'].'/'.$conf['type']['prefix'].'/'.$v.'/'.$extension.'.template';
   	  $auxModelFile = $conf['model']['directory'].'/'.$conf['type']['prefix'].'/'.$v.'/'.$extension.'.queries';
   	  if($v == null){continue;}
+  	  $lodspk['componentName'] = $v;
   	  if(file_exists($auxModelFile)){
   	  	$objResult['modelFile'] = $auxModelFile;//$conf['type']['prefix'].'/'.$v.'/'.$extensionModel.'queries';
   	  	if(file_exists($auxViewFile)){
-- 
GitLab