diff --git a/.gitignore b/.gitignore index 63f65d5f0b3c3d5f65471ce1e149d9381e95482a..5e1185029e392f14f451c3432676b5eb528c3d24 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,8 @@ settings.inc.php *~ views/* models/* +components/* +static/* cache/* meta/* meta/db.sqlite diff --git a/classes/Utils.php b/classes/Utils.php index 95baf1c35b208228abf4d8d076ddb569719f05dd..005f875e3cd23cd5bef1414e385fdabc418f6dcd 100644 --- a/classes/Utils.php +++ b/classes/Utils.php @@ -208,7 +208,7 @@ class Utils{ $t = $parser->getTriples(); $triples = array_merge($triples, $t); } - if($lodspk['add_mirrored_uris']){ + if($lodspk['mirror_external_uris']){ global $uri; global $localUri; $t = array(); @@ -234,8 +234,14 @@ class Utils{ case 'rdf': $ser = ARC2::getRDFXMLSerializer(); break; + default: + $ser = null; } + if($ser != null){ $doc = $ser->getSerializedTriples($triples); + }else{ + $doc = var_export($data, true); + } return $doc; } @@ -288,29 +294,31 @@ class Utils{ $subDirs[]=$modelFile; } }else{ - $e = null; - if(!isset($endpoints[$strippedModelDir])){ - trigger_error("Creating endpoint for $strippedModelDir", E_USER_NOTICE); - if(!isset($conf['endpoint'][$strippedModelDir])){ - trigger_error("Couldn't find $strippedModelDir as a list of available endpoints. Will continue using local", E_USER_WARNING); - $e = $endpoints['local']; - }else{ - $endpoints[$strippedModelDir] = new Endpoint($conf['endpoint'][$strippedModelDir], $conf['endpoint']['config']); - $e = $endpoints[$strippedModelDir]; - } - }else{ - $e = $endpoints[$strippedModelDir]; - } - if($modelDir != $lodspk['type']){ - if(!isset($r[$strippedModelDir]) ){ - $r[$strippedModelDir] = array(); - $f[$strippedModelDir] = array(); - } - Utils::queryFile($modelFile, $e, $r[$strippedModelDir], $f); - }else{ - Utils::queryFile($modelFile, $e, $r, $f); + if(preg_match('/\.query$/', $modelFile)){ + $e = null; + if(!isset($endpoints[$strippedModelDir])){ + trigger_error("Creating endpoint for $strippedModelDir", E_USER_NOTICE); + if(!isset($conf['endpoint'][$strippedModelDir])){ + trigger_error("Couldn't find $strippedModelDir as a list of available endpoints. Will continue using local", E_USER_WARNING); + $e = $endpoints['local']; + }else{ + $endpoints[$strippedModelDir] = new Endpoint($conf['endpoint'][$strippedModelDir], $conf['endpoint']['config']); + $e = $endpoints[$strippedModelDir]; + } + }else{ + $e = $endpoints[$strippedModelDir]; + } + if($modelDir != $lodspk['type']){ + if(!isset($r[$strippedModelDir]) ){ + $r[$strippedModelDir] = array(); + $f[$strippedModelDir] = array(); + } + Utils::queryFile($modelFile, $e, $r[$strippedModelDir], $f); + }else{ + Utils::queryFile($modelFile, $e, $r, $f); + } } - } + } } } closedir($handle); @@ -435,7 +443,8 @@ class Utils{ } } if($conf['debug']){ - echo "$modelFile (against ".$e->getSparqlUrl().")\n-------------------------------------------------\n"; + echo "\n-------------------------------------------------\nIn ".getcwd()."\n"; + echo "$modelFile (against ".$e->getSparqlUrl().")\n-------------------------------------------------\n\n"; echo $query; } trigger_error("Running query from ".$modelFile." on endpoint ".$e->getSparqlURL(), E_USER_NOTICE); diff --git a/classes/modules/serviceModule.php b/classes/modules/serviceModule.php index 0e1a0200be752a8eb7c24d0af1616ddf6a0631a4..fc6879c471e61e08dba5ce71dda8492b44c38460 100644 --- a/classes/modules/serviceModule.php +++ b/classes/modules/serviceModule.php @@ -13,9 +13,22 @@ class ServiceModule extends abstractModule{ if(sizeof($qArr)==0){ return FALSE; } + + //Use .extension at the end of the service to force a particular content type + if(strpos($qArr[0], '.')>0){ + $aux = explode(".", $qArr[0]); + if(isset($aux[1])){ + $contentTypes = $conf['http_accept'][$aux[1]]; + if($contentTypes == null){ + Utils::send406("Content type not acceptable\n"); + } + $acceptContentType = $contentTypes[0]; + } + $qArr[0] = $aux[0]; + } + $extension = Utils::getExtension($acceptContentType); $viewFile = null; - $lodspk['model'] = $conf['model']['directory'].'/'.$conf['service']['prefix'].'/'.$qArr[0].'/'; $lodspk['view'] = $conf['view']['directory'].'/'.$conf['service']['prefix'].'/'.$qArr[0].'/'.$extension.'.template'; $modelFile = $lodspk['model'].$extension.'.queries'; @@ -59,7 +72,7 @@ class ServiceModule extends abstractModule{ $params = array(); $params = $this->getParams($localUri); //$params[] = $context; - $acceptContentType = Utils::getBestContentType($_SERVER['HTTP_ACCEPT']); + //$acceptContentType = Utils::getBestContentType($_SERVER['HTTP_ACCEPT']); $extension = Utils::getExtension($acceptContentType); $args = array(); list($modelFile, $viewFile) = $service; @@ -117,14 +130,16 @@ class ServiceModule extends abstractModule{ Utils::queryFile($modelFile, $endpoints['local'], $results, $firstResults); if(!$lodspk['resultRdf']){ $results = Utils::internalize($results); - $lodspk['firstResults'] = Utils::getfirstResults($results); + $firstAux = Utils::getfirstResults($results); // chdir($conf['home']); if(is_array($results)){ $resultsObj = Convert::array_to_object($results); + $results = $resultsObj; }else{ $resultsObj = $results; } + $lodspk['firstResults'] = Convert::array_to_object($firstAux); }else{ $resultsObj = $results; } diff --git a/classes/modules/typeModule.php b/classes/modules/typeModule.php index 0eeae4a9a061ee7c714ecec66ae5888646d60aeb..b745db20e01524d961f7185fae1839153cd26d59 100644 --- a/classes/modules/typeModule.php +++ b/classes/modules/typeModule.php @@ -89,14 +89,16 @@ class TypeModule extends abstractModule{ Utils::queryFile($modelFile, $endpoints['local'], $results, $firstResults); if(!$lodspk['resultRdf']){ $results = Utils::internalize($results); - $lodspk['firstResults'] = Utils::getfirstResults($results); + $firstAux = Utils::getfirstResults($results); //chdir($conf['home']); if(is_array($results)){ $resultsObj = Convert::array_to_object($results); + $results = $resultsObj; }else{ $resultsObj = $results; } + $lodspk['firstResults'] = Convert::array_to_object($firstAux); }else{ $resultsObj = $results; } diff --git a/classes/modules/uriModule.php b/classes/modules/uriModule.php index 67d834a99da7d1a41c1827bcea2133854412606f..182c9aab7ac6e63589fb6b2af2a9bda691e6ee9a 100644 --- a/classes/modules/uriModule.php +++ b/classes/modules/uriModule.php @@ -104,14 +104,16 @@ class UriModule extends abstractModule{ Utils::queryFile($modelFile, $endpoints['local'], $results, $firstResults); if(!$lodspk['resultRdf']){ $results = Utils::internalize($results); - $lodspk['firstResults'] = Utils::getfirstResults($results); + $firstAux = Utils::getfirstResults($results); chdir($conf['home']); if(is_array($results)){ $resultsObj = Convert::array_to_object($results); + $results = $resultsObj; }else{ $resultsObj = $results; } + $lodspk['firstResults'] = Convert::array_to_object($firstAux); }else{ $resultsObj = $results; } diff --git a/common.inc.php b/common.inc.php index 0c99dd1b4ff986e72c1c71867e2973383fb3b98b..db9883368320353dc71f4e10a0b937a4c66247ab 100644 --- a/common.inc.php +++ b/common.inc.php @@ -53,7 +53,7 @@ $conf['debug'] = false; $conf['modules'] = array(); $conf['modules']['directory'] = 'classes/modules/'; $conf['modules']['available'] = array('static','uri', 'type', 'service'); - +global $lodspk; include_once('settings.inc.php'); $conf['view']['standard']['baseUrl'] = $conf['basedir']; ?> diff --git a/install.sh b/install.sh index 08bdc17ee02e5ec432282b953edef50d3b35c918..e08428cf81c370cdd20d1b88f9fc0993596c2b67 100755 --- a/install.sh +++ b/install.sh @@ -1,6 +1,5 @@ #!/usr/bin/env bash # -# root_htaccess="root.htaccess" parent_htaccess="../.htaccess" @@ -117,9 +116,10 @@ echo "RewriteEngine on" > $parent_htaccess echo >> $parent_htaccess echo "RewriteRule ^\$ $1/index.php [L]" >> $parent_htaccess cat $root_htaccess >> $parent_htaccess -echo "RewriteRule ^(.+)\$ $lodspeakr_dir/index.php?q=\$1 [L]" >> $parent_htaccess +echo "RewriteRule ^(.+)\$ $1/index.php?q=\$1 [L]" >> $parent_htaccess mkdir cache + echo echo " *** ATTENTION ***" echo diff --git a/lib/Haanga/lib/Haanga/Extension/Filter/Date.php b/lib/Haanga/lib/Haanga/Extension/Filter/Date.php index b60b299e17a592dff1ca31d6dd9049961b53848b..b15bdc981df8815d764c2961081f4a638865ee7c 100644 --- a/lib/Haanga/lib/Haanga/Extension/Filter/Date.php +++ b/lib/Haanga/lib/Haanga/Extension/Filter/Date.php @@ -4,7 +4,8 @@ class Haanga_Extension_Filter_Date { static function generator($compiler, $args) { - return hexec('date', $args[1], $args[0]); +// return hexec( 'date', $args[1], hexec('strtotime', $args[1])); + return hexec('date', $args[1], hexec('strtotime', $args[0])); } } diff --git a/lib/Haanga/lib/Haanga/Extension/Filter/Urifragment.php b/lib/Haanga/lib/Haanga/Extension/Filter/Urifragment.php new file mode 100644 index 0000000000000000000000000000000000000000..72e5ffb13bb6db8a02ac086fa9bef2b43fcea8d9 --- /dev/null +++ b/lib/Haanga/lib/Haanga/Extension/Filter/Urifragment.php @@ -0,0 +1,13 @@ +<?php + +class Haanga_Extension_Filter_Urifragment +{ + static function generator($compiler, $args) + { + if (count($args) != 1) { + $compiler->Error("URIFragment only needs one parameter"); + } + + return hexec('array_pop', hexec('split', '#', $args[0])); + } +} diff --git a/lib/Haanga/lib/Haanga/Extension/Tag/Escape.php b/lib/Haanga/lib/Haanga/Extension/Tag/Escape.php new file mode 100644 index 0000000000000000000000000000000000000000..e4e4a0107114a8a25c7d6ab33abaa7fe5093fe4d --- /dev/null +++ b/lib/Haanga/lib/Haanga/Extension/Tag/Escape.php @@ -0,0 +1,7 @@ +<?php + +class Haanga_Extension_Tag_Escape +{ + public static $is_block = TRUE; + public $php_alias = "htmlspecialchars"; +} diff --git a/utils/create_db.sh b/utils/create_db.sh index 285062c2c4a538399e2bde10b7a66bf33006b6df..f0226b38b568f43b1f318d12676d945d028131b5 100755 --- a/utils/create_db.sh +++ b/utils/create_db.sh @@ -14,6 +14,9 @@ if [ ! -e $1 ]; then exit 1 fi $SQLITE3 $1 'CREATE TABLE document (uri varcharg(1000), doc varchar(1000), format varchar(50));' + $SQLITE3 $1 'CREATE INDEX IF NOT EXISTS document_uri ON document(uri);' + $SQLITE3 $1 'CREATE INDEX IF NOT EXISTS document_uri_format ON document(uri, format);' + $SQLITE3 $1 'CREATE INDEX IF NOT EXISTS document_doc ON document(doc);' else echo "WARNING: SQLite database already exists." fi diff --git a/utils/install b/utils/install index cd12408b6843c23d73ea9e2cc6b07cf7fe857671..c0bd38ef5aacbd057e281ab1498a23a9bdb404c8 100644 --- a/utils/install +++ b/utils/install @@ -8,7 +8,6 @@ # http://lodspeakr.org/install # 303 redirects to this script. -lodspeakr_dir="lodspeakr" lodspeakr_repository="git://github.com/alangrafu/lodspeakr.git" home=`basename $lodspeakr_repository | sed 's/.git//'` @@ -23,7 +22,7 @@ fi if [ ! -e "$home" ]; then $GIT clone $lodspeakr_repository cd $home - ./install.sh $lodspeakr_dir + ./install.sh $home else echo "There is already an existing directory called '$home'. Installation cancelled. Remove it first and try again." fi diff --git a/utils/modules/create-service.sh b/utils/modules/create-service.sh index fc40600107b8bbb04fcb9218040bc9b59e1769f8..8c52a9bbc8494f9cefdaa5489088627968b62433 100755 --- a/utils/modules/create-service.sh +++ b/utils/modules/create-service.sh @@ -46,7 +46,7 @@ else mkdir -p $mainDir/queries fi -echo $modelHtml > $mainDir/queries/main.query -echo $viewHtml > $mainDir/html.template +echo -e "$modelHtml" > $mainDir/queries/main.query +echo -e "$viewHtml" > $mainDir/html.template echo $initToken.$1 created/modified successfully! >&2 diff --git a/utils/modules/create-type.sh b/utils/modules/create-type.sh index 4e1b37708f490f0c71a98f182a178a7701edec7a..379e2fe048ca3880addab878db4180274e1bc42f 100755 --- a/utils/modules/create-type.sh +++ b/utils/modules/create-type.sh @@ -81,7 +81,8 @@ viewHtml=`cat <<VIEW <br/> </body> -</html>VIEW` +</html> +VIEW` #Check models @@ -94,8 +95,8 @@ else mkdir -p $mainDir/queries fi -echo "$modelHtmlSP" > $mainDir/queries/sp.query -echo "$modelHtmlPO" > $mainDir/queries/po.query -echo "$viewHtml" > $mainDir/html.template +echo -e "$modelHtmlSP" > $mainDir/queries/sp.query +echo -e "$modelHtmlPO" > $mainDir/queries/po.query +echo -e "$viewHtml" > $mainDir/html.template echo $1 created successfully! >&2 diff --git a/utils/modules/create-uri.sh b/utils/modules/create-uri.sh index f14405f3ad012b994094a41a6aedc0bfff94fce8..ae7380fb6334303ffd53a5ec2925d4270f9bde42 100755 --- a/utils/modules/create-uri.sh +++ b/utils/modules/create-uri.sh @@ -92,14 +92,14 @@ if [ -e "$mainDir" ] then echo "WARNING: At least one model for $1 exists." >&2 else - mkdir $mainDir + mkdir -p $mainDir fi #Create file structure mkdir $mainDir/queries -echo "$modelHtmlSP" > $mainDir/queries/sp.query -echo "$modelHtmlPO" > $mainDir/queries/po.query -echo "$viewHtml" > $mainDir/html.template +echo -e "$modelHtmlSP" > $mainDir/queries/sp.query +echo -e "$modelHtmlPO" > $mainDir/queries/po.query +echo -e "$viewHtml" > $mainDir/html.template echo $initToken.$1 created/modified successfully! >&2 diff --git a/utils/modules/delete-type.sh b/utils/modules/delete-type.sh index c934f7e7e41c6c403d48b3a819046409005e09e5..9cddaf897898a3b5d7eb095244fc5ee679da786f 100755 --- a/utils/modules/delete-type.sh +++ b/utils/modules/delete-type.sh @@ -2,67 +2,19 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -initToken='type' +initToken='types' #Check models -mainModelDir=$DIR/../../models/$initToken.$1 -mainViewDir=$DIR/../../views/$initToken.$1 +mainDir=$DIR/../../components/$initToken/$1 -if [ ! -e "$mainModelDir" ] +if [ ! -e "$mainDir" ] then - echo "ERROR: $initToken.$1 doesn't exist in models. Operation aborted" >&2 + echo "ERROR: $initToken/$1 doesn't exist in models. Operation aborted" >&2 exit 1 fi -obj=( ) -if [ "$2" == "all" ] -then - rm -rf $mainModelDir - rm -rf $mainViewDir - echo $initToken.$1 deleted >&2 - exit -else - obj=( $2 ) -fi - -for i in ${obj[@]} -do - if [ ! -e $mainModelDir/$i.queries ] - then - echo "WARNING: $initToken.$1/$i.query does not exists in models." >&2 - fi -done - - -#Check views - -if [ ! -e "$mainViewDir" ] -then - echo "ERROR: $initToken.$1 doesn't exist in views. Operation aborted." >&2 -fi - - -for i in ${obj[@]} -do - if [ ! -e $mainViewDir/$i.template ] - then - echo "WARNING: $mainViewDir/$i.template doesn't exist in views." >&2 - fi -done - - #Delete file structure -if [ "$2" == "all" ] -then - rm -rf $mainModelDir - rm -rf $mainViewDir -else - for i in ${obj[@]} - do - rm -rf $mainModelDir/$i.queries - rm -rf $mainViewDir/$i.template - done -fi +rm -rf $mainDir echo $initToken.$1 deleted successfully! >&2