diff --git a/README.md b/README.md index 9e3ce612cebe6dfc4b3b6a8679804588ccb29454..97dbcd3106763e6745a9343a9a8818c44b5aa2d8 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ LODSPeaKr author: Alvaro Graves (alvaro@graves.cl) -version: 20130212 +version: 20130215 [LODSPeaKr](http://lodspeakr.org) is a framework for creating Linked Data applications in a simple and easy way. You can see [several applications](http://alangrafu.github.com/lodspeakr/applications.html) created using LODSPeaKr. diff --git a/classes/Utils.php b/classes/Utils.php index 91afc41b8cfd4d578cf91b7f1961b6403a7817cc..dc80b4d45135559850133d5a2dff1899f882a77e 100644 --- a/classes/Utils.php +++ b/classes/Utils.php @@ -551,9 +551,10 @@ class Utils{ require_once($conf['home'].'lib/Haanga/lib/Haanga.php'); $viewAux = explode("/",$view); $viewFile = array_pop($viewAux); + //$viewFile = $view; $viewPath = join("/", $viewAux); Haanga::configure(array( - 'template_dir' => $conf['home'].$viewPath, + 'template_dir' => $viewPath, 'cache_dir' => $conf['home'].'cache/', )); $models = $data; @@ -567,7 +568,7 @@ class Utils{ } if(is_string($data)){ echo($data); - }elseif(is_file($conf['home'].$view)){ + }elseif(is_file($view)){ try{ Haanga::Load($viewFile, $vars); }catch(Exception $e){ diff --git a/classes/modules/serviceModule.php b/classes/modules/serviceModule.php index da60e38964c32f719eb844a836dcd7829258a223..0175ac3b26cdd7e3c46441f82bf75203cd474af3 100644 --- a/classes/modules/serviceModule.php +++ b/classes/modules/serviceModule.php @@ -9,6 +9,9 @@ class ServiceModule extends abstractModule{ global $acceptContentType; global $localUri; global $lodspk; + + $lodspk['model'] = null; + $lodspk['view'] = null; $q = preg_replace('|^'.$conf['basedir'].'|', '', $localUri); $qArr = explode('/', $q); if(sizeof($qArr)==0){ @@ -36,16 +39,40 @@ class ServiceModule extends abstractModule{ } $serviceName = join(".",$aux); } - + + //checking default components if(file_exists($conf['model']['directory'].'/'.$conf['service']['prefix'].'/'.$serviceName.'/scaffold.ttl')){ $subDir = $this->readScaffold($conf['model']['directory'].'/'.$conf['service']['prefix'].'/'.$serviceName.'/scaffold.ttl', join("/", $arguments)); $subDir.= '/'; - $lodspk['model'] = $conf['model']['directory'].'/'.$conf['service']['prefix'].'/'.$serviceName.'/'.$subDir; + $lodspk['model'] = $conf['home'].$conf['model']['directory'].'/'.$conf['service']['prefix'].'/'.$serviceName.'/'.$subDir; $lodspk['view'] = $conf['view']['directory'].'/'.$conf['service']['prefix'].'/'.$serviceName.'/'.$subDir.$extension.'.template'; - }else{ - $lodspk['model'] = $conf['model']['directory'].'/'.$conf['service']['prefix'].'/'.$serviceName.'/'; - $lodspk['view'] = $conf['view']['directory'].'/'.$conf['service']['prefix'].'/'.$serviceName.'/'.$extension.'.template'; + }elseif(file_exists($conf['home'].$conf['model']['directory'].'/'.$conf['service']['prefix'].'/'.$serviceName)){ + $lodspk['model'] = $conf['home'].$conf['model']['directory'].'/'.$conf['service']['prefix'].'/'.$serviceName.'/'; + $lodspk['view'] = $conf['home'].$conf['view']['directory'].'/'.$conf['service']['prefix'].'/'.$serviceName.'/'.$extension.'.template'; + }else{ + if($lodspk['model'] == null && $lodspk['view'] == null){ + //checking other components + foreach($conf['components']['services'] as $service){ + $serviceArray = explode("/", $service); + if($serviceName == end($serviceArray)){ + array_pop($serviceArray); + $conf['service']['prefix'] = array_pop($serviceArray); + $conf['model']['directory'] = join("/", $serviceArray); + $conf['view']['directory'] = $conf['model']['directory']; + if(file_exists($conf['model']['directory'].'/'.$conf['service']['prefix'].'/'.$serviceName.'/scaffold.ttl')){ + $subDir = $this->readScaffold($conf['model']['directory'].'/'.$conf['service']['prefix'].'/'.$serviceName.'/scaffold.ttl', join("/", $arguments)); + $subDir.= '/'; + $lodspk['model'] = $conf['model']['directory'].'/'.$conf['service']['prefix'].'/'.$serviceName.'/'.$subDir; + $lodspk['view'] = $conf['view']['directory'].'/'.$conf['service']['prefix'].'/'.$serviceName.'/'.$subDir.$extension.'.template'; + }elseif(file_exists($conf['model']['directory'].'/'.$conf['service']['prefix'].'/'.$serviceName)){ + $lodspk['model'] = $conf['model']['directory'].'/'.$conf['service']['prefix'].'/'.$serviceName.'/'; + $lodspk['view'] = $conf['view']['directory'].'/'.$conf['service']['prefix'].'/'.$serviceName.'/'.$extension.'.template'; + } + } + } + } } + $lodspk['serviceName'] = join("/", $tokens); $lodspk['componentName'] = $lodspk['serviceName']; $modelFile = $lodspk['model'].$extension.'.queries'; @@ -144,7 +171,6 @@ class ServiceModule extends abstractModule{ $lodspk['transform_select_query'] = true; } // chdir($lodspk['model']); - Utils::queryFile($modelFile, $endpoints['local'], $results, $firstResults); if(!$lodspk['resultRdf']){ $results = Utils::internalize($results); diff --git a/classes/modules/typeModule.php b/classes/modules/typeModule.php index 9482d69e83a7b1fd9d57b3de0f39600a54a22fa5..000671147b7925345ebb5b6d01087ba4240e30a5 100644 --- a/classes/modules/typeModule.php +++ b/classes/modules/typeModule.php @@ -119,7 +119,7 @@ class TypeModule extends abstractModule{ $curieType=""; //Get the firstResults type available $typesAndValues = array('rdfs:Resource' => -1); - if($conf['disableComponents'] != true){ + if(!isset($conf['disableComponents']) || $conf['disableComponents'] != true){ foreach($t as $v){ $curie = Utils::uri2curie($v); $typesAndValues[$curie] = 0; @@ -135,8 +135,8 @@ class TypeModule extends abstractModule{ $extensionModel = $extension.'.'; } foreach($typesAndValues as $v => $w){ - $auxViewFile = $conf['view']['directory'].'/'.$conf['type']['prefix'].'/'.$v.'/'.$extension.'.template'; - $auxModelFile = $conf['model']['directory'].'/'.$conf['type']['prefix'].'/'.$v.'/'.$extension.'.queries'; + $auxViewFile = $conf['home'].$conf['view']['directory'].'/'.$conf['type']['prefix'].'/'.$v.'/'.$extension.'.template'; + $auxModelFile = $conf['home'].$conf['model']['directory'].'/'.$conf['type']['prefix'].'/'.$v.'/'.$extension.'.queries'; if($v == null){continue;} $lodspk['componentName'] = $v; if(file_exists($auxModelFile)){ @@ -146,9 +146,9 @@ class TypeModule extends abstractModule{ }elseif($extension != 'html'){ //View doesn't exists (and is not HTML) $objResult['viewFile'] = null; } - return $objResult; - }elseif(file_exists($conf['model']['directory'].'/'.$conf['type']['prefix'].'/'.$v.'/queries')){ - $objResult['modelFile'] = $conf['model']['directory'].'/'.$conf['type']['prefix'].'/'.$v.'/queries'; + break;//return $objResult; + }elseif(file_exists($conf['home'].$conf['model']['directory'].'/'.$conf['type']['prefix'].'/'.$v.'/queries')){ + $objResult['modelFile'] = $conf['home'].$conf['model']['directory'].'/'.$conf['type']['prefix'].'/'.$v.'/queries'; if(file_exists($auxViewFile) ){ $objResult['viewFile'] = $auxViewFile; }else{ @@ -157,11 +157,30 @@ class TypeModule extends abstractModule{ } trigger_error("LODSPeaKr can't find the proper query. Using HTML query instead.", E_USER_NOTICE); break; + }else{ + $found = false; + foreach($conf['components']['types'] as $type){ + $typeArray = explode("/", $type); + $typeName = end($typeArray); + if($v == $typeName && file_exists($type)){ + array_pop($typeArray); + $conf['type']['prefix'] = array_pop($typeArray); + $conf['model']['directory'] = join("/", $typeArray); + $conf['view']['directory'] = $conf['model']['directory']; + $lodspk['model'] = $conf['model']['directory'].'/'.$conf['type']['prefix'].'/'.$typeName.'/queries'; + $lodspk['view'] = $conf['view']['directory'].'/'.$conf['type']['prefix'].'/'.$typeName.'/'.$extension.'.template'; + $objResult['viewFile'] = $lodspk['view']; + $objResult['modelFile'] = $lodspk['model']; + $found = true; + return $objResult; + } + } + if($found){break;} } - } - /*if($objResult['viewFile'] == null && $extensionView == 'html'){ + /*if($objResult['viewFile'] == null && $extensionView == 'html'){ $objResult['viewFile'] = 'html.template'; - }*/ + }*/ + } return $objResult; } diff --git a/common.inc.php b/common.inc.php index 560152e2779cdbf3aeaae62cb6eacf9abb9a0d64..cf5f82369bb820d8532ef4c0b55cd18528bea406 100644 --- a/common.inc.php +++ b/common.inc.php @@ -1,6 +1,6 @@ <?php -$conf['version'] = '20130212'; +$conf['version'] = '20130215'; $conf['output']['select'] = 'json'; $conf['output']['ask'] = 'json'; $conf['output']['describe'] = 'rdf';