diff --git a/classes/Utils.php b/classes/Utils.php index 41c5f1058326b9baab11369a594663b5d99cb395..1988d10893391d599996d277fd20185406e4f6fc 100644 --- a/classes/Utils.php +++ b/classes/Utils.php @@ -302,7 +302,7 @@ class Utils{ $r[$modelDir] = array(); $f[$modelDir] = array(); } - Utils::queryFile($modelFile, $e, $r[$modelDir], $f[$modelDir]); + Utils::queryFile($modelFile, $e, $r[$modelDir], $f); }else{ Utils::queryFile($modelFile, $e, $r, $f); } @@ -317,9 +317,9 @@ class Utils{ $r[$modelDir] = array(); } if($modelDir != $lodspk['type']){ - Utils::queryDir($v, $r[$modelDir]); + Utils::queryDir($v, $r[$modelDir], $f[$modelDir]); }else{ - Utils::queryDir($v, $r); + Utils::queryDir($v, $r, $f); } } } @@ -332,8 +332,8 @@ class Utils{ global $conf; global $lodspk; global $results; - global $first; - $uri = $lodspk['this']['value']; + global $firstResults; + $uri = $lodspk['this']['value']; $data = array(); $strippedModelFile = str_replace('.query', '',$modelFile); if(!is_dir($modelFile)){ @@ -350,8 +350,9 @@ class Utils{ } $r2 = Convert::array_copy($results); $models = Convert::array_to_object($r2); - $f = Convert::array_to_object($first); - $vars = compact('uri', 'lodspk', 'models', 'f'); + $f2 = Convert::array_copy($firstResults); + $first = Convert::array_to_object($f2); + $vars = compact('uri', 'lodspk', 'models', 'first'); $q = file_get_contents($modelFile); if($q == false){ Utils::send500("I can't load ".$modelFile." in ".getcwd()); @@ -438,13 +439,13 @@ class Utils{ if($modelFile != $lodspk['type']){ if(!isset($rPointer[$strippedModelFile])){ $rPointer[$strippedModelFile] = array(); - $first[$strippedModelFile] = array(); + $firstResults[$strippedModelFile] = array(); } if(Utils::getResultsType($query) == $conf['output']['select']){ $rPointer[$strippedModelFile] = Utils::sparqlResult2Obj($aux); $fPointer[$strippedModelFile] = $rPointer[$strippedModelFile][0]; /*if(sizeof($rPointer)>0){ - $rPointer[$modelFile]['first'] = $rPointer[$modelFile][0]; + $rPointer[$modelFile]['firstResults'] = $rPointer[$modelFile][0]; }*/ }else{ $lodspk['resultRdf'] = true; @@ -455,7 +456,7 @@ class Utils{ $rPointer = Utils::sparqlResult2Obj($aux); $fPointer[$strippedModelFile] = $rPointer[0]; /*if(sizeof($rPointer)>0){ - $rPointer['first'] = $rPointer[0]; + $rPointer['firstResults'] = $rPointer[0]; }*/ }else{ $lodspk['resultRdf'] = true; @@ -477,13 +478,13 @@ class Utils{ public static function internalize($array){ global $conf; - $firstKeyAppearance = true; + $firstResultsKeyAppearance = true; foreach($array as $key => $value){ if(!isset($value['value'])){ $array[$key] = Utils::internalize($value); - /*if($firstKeyAppearance){ - $firstKeyAppearance = false; - $array['_first']=$array[$key]; + /*if($firstResultsKeyAppearance){ + $firstResultsKeyAppearance = false; + $array['_firstResults']=$array[$key]; }*/ }else{ if(isset($value['uri']) && $value['uri'] == 1){ @@ -507,12 +508,12 @@ class Utils{ return $array; } - public static function getFirsts($array){ + public static function getfirstResultss($array){ global $conf; - $firstKeyAppearance = true; + $firstResultsKeyAppearance = true; foreach($array as $key => $value){ if(!isset($value['value'])){ - $aux = Utils::getFirsts($value); + $aux = Utils::getfirstResultss($value); if(isset($aux['0'])){ $array[$key] = $aux['0']; }else{ @@ -539,8 +540,8 @@ class Utils{ 'cache_dir' => $conf['home'].'cache/', )); $models = $data; - $first = $lodspk['first']; - unset($lodspk['first']); + $first = $lodspk['firstResults']; + unset($lodspk['firstResults']); $lodspk = $lodspk; //unset($lodspk); $vars = compact('uri','lodspk', 'models', 'first'); diff --git a/classes/modules/serviceModule.php b/classes/modules/serviceModule.php index 261930b75af94eba44bbd3870ac512c32a6ba6b5..d2cb174a5249916bda6b718a85739843a37cee83 100644 --- a/classes/modules/serviceModule.php +++ b/classes/modules/serviceModule.php @@ -45,7 +45,7 @@ class ServiceModule extends abstractModule{ global $acceptContentType; global $endpoints; global $lodspk; - global $first; + global $firstResults; $context = array(); $context['contentType'] = $acceptContentType; $context['endpoints'] = $endpoints; @@ -111,10 +111,10 @@ class ServiceModule extends abstractModule{ } chdir($lodspk['model']); - Utils::queryFile($modelFile, $endpoints['local'], $results, $first); + Utils::queryFile($modelFile, $endpoints['local'], $results, $firstResults); if(!$lodspk['resultRdf']){ $results = Utils::internalize($results); - $lodspk['first'] = Utils::getFirsts($results); + $lodspk['firstResults'] = Utils::getfirstResultss($results); chdir($conf['home']); if(is_array($results)){ diff --git a/classes/modules/typeModule.php b/classes/modules/typeModule.php index fd13cc9e2ec0b297edf4e9ac0dd63221bbb80b06..2f5b3f48d666bbe7a85a168561e43947ab4a2054 100644 --- a/classes/modules/typeModule.php +++ b/classes/modules/typeModule.php @@ -39,7 +39,7 @@ class TypeModule extends abstractModule{ global $endpoints; global $lodspk; global $results; - global $first; + global $firstResults; list($res, $page, $format) = $pair; //If resource is not the page, send a 303 to the document if($res == $localUri){ @@ -85,10 +85,10 @@ class TypeModule extends abstractModule{ $lodspk['this']['local'] = $localUri; $lodspk['this']['extension'] = $extension; chdir($conf['home'].$conf['model']['directory']); - Utils::queryFile($modelFile, $endpoints['local'], $results, $first); + Utils::queryFile($modelFile, $endpoints['local'], $results, $firstResults); if(!$lodspk['resultRdf']){ $results = Utils::internalize($results); - $lodspk['first'] = Utils::getFirsts($results); + $lodspk['firstResults'] = Utils::getfirstResultss($results); chdir($conf['home']); if(is_array($results)){ @@ -117,13 +117,15 @@ class TypeModule extends abstractModule{ $objResult['modelDir'] = $conf['model']['directory'].'type.rdfs:Resource/html.queries/'; $objResult['viewDir'] = $conf['view']['directory'].'type.rdfs:Resource/'; */ - //Get the first type available + //Get the firstResults type available $typesAndValues = array('rdfs:Resource' => -1); - foreach($t as $v){ - $curie = Utils::uri2curie($v); - $typesAndValues[$curie] = 0; - if(isset($conf['type']['priorities'][$curie]) && $conf['type']['priorities'][$curie] >= 0){ - $typesAndValues[$curie] = $conf['type']['priorities'][$curie]; + if($conf['disableComponents'] != true){ + foreach($t as $v){ + $curie = Utils::uri2curie($v); + $typesAndValues[$curie] = 0; + if(isset($conf['type']['priorities'][$curie]) && $conf['type']['priorities'][$curie] >= 0){ + $typesAndValues[$curie] = $conf['type']['priorities'][$curie]; + } } } arsort($typesAndValues); diff --git a/classes/modules/uriModule.php b/classes/modules/uriModule.php index e9c222555154bec014f10ee19e16e5ab03e68b6c..73d55aa5d752c085f89fda5cd1ab0ab2e806aaa9 100644 --- a/classes/modules/uriModule.php +++ b/classes/modules/uriModule.php @@ -11,6 +11,9 @@ class UriModule extends abstractModule{ global $endpoints; global $lodspk; + if($conf['disableComponents'] == true){ + return FALSE; + } require_once('classes/MetaDb.php'); $metaDb = new MetaDb($conf['metadata']['db']['location']); @@ -52,7 +55,7 @@ class UriModule extends abstractModule{ global $endpoints; global $lodspk; global $results; - global $first; + global $firstResults; $res = $p['res']; $page = $p['page']; $format = $p['format']; @@ -100,10 +103,10 @@ class UriModule extends abstractModule{ chdir($conf['home'].$conf['model']['directory']); - Utils::queryFile($modelFile, $endpoints['local'], $results, $first); + Utils::queryFile($modelFile, $endpoints['local'], $results, $firstResults); if(!$lodspk['resultRdf']){ $results = Utils::internalize($results); - $lodspk['first'] = Utils::getFirsts($results); + $lodspk['firstResults'] = Utils::getfirstResultss($results); chdir($conf['home']); if(is_array($results)){ diff --git a/index.php b/index.php index e710d64fb061c4616cf6fcf3c9a8d55c16940696..087d7a1ce7202dafe441ee6fb9e754c116f2d43d 100755 --- a/index.php +++ b/index.php @@ -9,7 +9,7 @@ if($_GET['q'] == 'import'){ //Test if LODSPeaKr is configured if(!file_exists('settings.inc.php')){ - echo 'Need to configure lodspeakr first. Please run "install.sh" first. Alternatively, you can <a href="import">import an existing application</a>'; + echo 'Need to configure lodspeakr firstResults. Please run "install.sh" firstResults. Alternatively, you can <a href="import">import an existing application</a>'; exit(0); } @@ -27,7 +27,7 @@ include_once('classes/Queries.php'); include_once('classes/Endpoint.php'); include_once('classes/Convert.php'); $results = array(); -$first = array(); +$firstResults = array(); $endpoints = array(); $endpoints['local'] = new Endpoint($conf['endpoint']['local'], $conf['endpointParams']['config']); diff --git a/models/type.rdfs:Resource/html.queries/main.query b/models/type.rdfs:Resource/html.queries/main.query deleted file mode 100644 index 2f315c7c5e89f64ea6ed61f19505e523b64b03d0..0000000000000000000000000000000000000000 --- a/models/type.rdfs:Resource/html.queries/main.query +++ /dev/null @@ -1,18 +0,0 @@ -SELECT ?s2 ?p2 ?s1 ?p1 WHERE { -{ -GRAPH ?g{ - { - <{{uri}}> ?s1 ?p1 . - }UNION{ - ?s2 ?p2 <{{uri}}> . - - } -} -}UNION{ { - <{{uri}}> ?s1 ?p1 . - }UNION{ - ?s2 ?p2 <{{uri}}> . - - } -} -} diff --git a/models/type.rdfs:Resource/html.queries/po.query b/models/type.rdfs:Resource/html.queries/po.query new file mode 100644 index 0000000000000000000000000000000000000000..f573aab3fcafc3c5e00ee35cea1f50dcb8bb1598 --- /dev/null +++ b/models/type.rdfs:Resource/html.queries/po.query @@ -0,0 +1,9 @@ +SELECT ?p ?o WHERE { + { + GRAPH ?g{ + <{{uri}}> ?p ?o. + } + }UNION{ + <{{uri}}> ?p ?o . + } +} diff --git a/models/type.rdfs:Resource/html.queries/sp.query b/models/type.rdfs:Resource/html.queries/sp.query new file mode 100644 index 0000000000000000000000000000000000000000..3b5b69fb13293b740abd2407957cad96b2f9866f --- /dev/null +++ b/models/type.rdfs:Resource/html.queries/sp.query @@ -0,0 +1,9 @@ +SELECT ?s ?p WHERE { + { + GRAPH ?g{ + ?s ?p <{{uri}}> . + } + }UNION{ + ?s ?p <{{uri}}> . + } +} diff --git a/static/css/basic.css b/static/css/basic.css index b44283a4e162b4c1cd7e190715db34c01af35cd9..026c093d6f5b396860efdec8793a74949a6d0f1f 100644 --- a/static/css/basic.css +++ b/static/css/basic.css @@ -3,7 +3,7 @@ body { } h1{ - font-size: 45px; + font-size: 24px; } h1,h2,body { @@ -29,9 +29,7 @@ a:hover{ table tr td { - border-width: thin; padding: 2px; - border-style: dotted; border-color: gray; background-color: white; } diff --git a/utils/lodspk.sh b/utils/lodspk.sh index b97a987691bd9e3dac5d8e86ec2255e2f17b7be8..81be7a79d2a90dfb7f554bb2b9cb2e1318b6ba7b 100755 --- a/utils/lodspk.sh +++ b/utils/lodspk.sh @@ -1,33 +1,41 @@ #!/bin/bash # # https://github.com/alangrafu/lodspeakr/blob/master/utils/ldspk.sh -USAGE="Usage: $0 create|delete uri|type|service foo [html|rdf|ttl|nt|json]" +USAGE="Usage:\n" +USAGE=$USAGE" Create component:\t\t\t\t\t$0 create uri|type|service foo [html|rdf|ttl|nt|json]\n" +USAGE=$USAGE" Delete component:\t\t\t\t\t$0 delete uri|type|service foo [html|rdf|ttl|nt|json]\n" +USAGE=$USAGE" Turn debug:\t\t\t\t\t\t$0 debug on|off\n" +USAGE=$USAGE" Switch to standard view/models temporaly:\t\t$0 disable on|off\n" +USAGE=$USAGE" Backup current installation:\t\t\t\t$0 backup\n" +USAGE=$USAGE" Restore previous instllation:\t\t\t\t$0 restore\n" USAGEDEBUG="Usage: $0 debug on|off" if [[ $# -eq 0 || "$1" == "--help" ]]; then - echo $USAGE + echo -e $USAGE exit 1 fi DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -operations=( create delete debug backup restore ) +operations=( create delete debug backup restore disable ) currentOperation= if [[ ${operations[@]} =~ $1 ]]; then currentOperation=$1 else echo "Operation \"$1\" not valid" - echo $USAGE + echo -e $USAGE exit 1 fi ## Backup if [[ $currentOperation == "backup" ]]; then $DIR/modules/backup.sh + exit fi ## Restore if [[ $currentOperation == "restore" ]]; then $DIR/modules/restore.sh + exit fi ## Create/delete @@ -40,7 +48,7 @@ if [[ $currentOperation == "create" || $currentOperation == "delete" ]]; then currentModule=$2 else echo "Module \"$2\" not valid" - echo $USAGE + echo -e $USAGE exit 1 fi @@ -51,7 +59,7 @@ if [[ $currentOperation == "create" || $currentOperation == "delete" ]]; then currentFormat=$4 else echo "Format \"$4\" not valid" - echo $USAGE + echo -e $USAGE exit 1 fi else @@ -71,8 +79,25 @@ if [[ $currentOperation == "debug" ]]; then debugOperation=$2 else echo "Debug option not supported. Operation aborted" >&2 - echo $USAGEDEBUG + echo -e $USAGE exit 1 fi php $DIR/modules/debug.php "$debugOperation" + exit fi + +## Backup +if [[ $currentOperation == "disable" ]]; then + defaultOptions=( on off 0 1 ) + defaultOperation= + if [[ ${defaultOptions[@]} =~ $2 ]] + then + defaultOperation=$2 + else + echo "Disable option not supported. Operation aborted" >&2 + echo -e $USAGE + exit 1 + fi + php $DIR/modules/default.php "$defaultOperation" + exit +fi diff --git a/utils/modules/default.php b/utils/modules/default.php new file mode 100644 index 0000000000000000000000000000000000000000..585721387ea5362f10f5ae54bc7685e2bb95dfe8 --- /dev/null +++ b/utils/modules/default.php @@ -0,0 +1,27 @@ +<? +error_reporting(E_ERROR); +$s = 'settings.inc.php'; +$c = file_get_contents($s); +$optionarray = Array('on' => 'true', '1' => 'true', 'off' => 'false', '0' =>'false'); +$antiarray = Array('on' => 'false', '1' => 'false', 'off' => 'true', '0' =>'true'); +$option = $optionarray[$argv[1]]; +if($option == "" || $option == null){ + echo "Option not recognized. Aborting\n"; + exit(1); +} +if(preg_match('/disableComponents(.+)'.$optionarray[$argv[1]].'/', $c)){ + echo "Default already turned ".$option."\n"; + exit(0); +} +$newC = preg_replace('/disableComponents(.+)'.$antiarray[$argv[1]].'/', "disableComponents'] = ".$option, $c); +if($newC == $c){ + echo "WARNING: Variable 'disableComponents' does not exist. Adding it.\n"; + $newC = preg_replace("/\?>/", "\n\$conf['disableComponents'] = ".$option.";\n?>", $c); +} +if(file_put_contents($s, $newC) === FALSE){ + echo "An error ocurred"; + exit(1); +}else{ + echo "Default mode turned ".$option."\n"; +} +?> diff --git a/utils/modules/restore.sh b/utils/modules/restore.sh index cc330da8fd1f75f6ba2dc30ff58c5a3fdecd345a..dd18187a8a2309bd5cb131667d66b05dcd847536 100755 --- a/utils/modules/restore.sh +++ b/utils/modules/restore.sh @@ -12,8 +12,12 @@ if [[ ! -d $BACKUPDIR ]]; then exit 1 fi -LIST=( `ls $BACKUPDIR/$NAME-backup*` ) +LIST=( `ls $BACKUPDIR/$NAME-backup* 2>/dev/null` ) CHOSEN=-1 +if [ "${#LIST[@]}" -eq 0 ];then + echo "No backups available"; + exit +fi while [[ "$CHOSEN" -lt 0 || "$CHOSEN" -ge "${#LIST[@]}" ]] ;do j=0 echo diff --git a/views/type.rdfs:Resource/html.template b/views/type.rdfs:Resource/html.template index 6b5a78bde0888e15c32443f3933f6808e61c4e76..7639943f31c1db95cf503b5e278368513c8e0142 100644 --- a/views/type.rdfs:Resource/html.template +++ b/views/type.rdfs:Resource/html.template @@ -12,40 +12,43 @@ <link rel="alternate" type="application/json" title="RDFJSON Version" href="{{lodspk.this.value}}.json" /> </head> <body about="{{lodspk.this.value}}"> - <h1>Page about <a href='{{lodspk.this.value}}'>{{lodspk.this.curie}}</a></h1> - {{lodspk.endpoint.local}} - <div> - <h2>Information from {{lodspk.this.curie}}</h2> + <h1>Default view</h1> + + <div style='margin-top: 40px'> <table> - {% for row in models.main %} + <tr><th>Subject</th><th>Predicate</th><th>Object</th></tr> + {% for row in models.po %} + <tr> +<td>{%if forloop.first%}<a href='{{lodspk.this.value}}'>{{lodspk.this.curie}}</a>{%endif%}</td> + <td style='background-color:#c9f9c9'><a href='{{row.p.value}}'>{{row.p.curie}}</a></td> + + <td style='background-color:#c9f9c9'> + {%if row.o.uri == 1%} + <a rev='[{{row.p.curie}}]' href='{{row.o.value}}'>{{row.o.curie}}</a> + {%else%} + {{row.o.value}} + {%endif%} + </td> - {% if row.s1%} - <tr> - <td><a href='{{row.s1.value}}'>{{row.s1.curie}}</a></td> + </tr> + {% endfor %} +<tr><td></td><td><a href='{{lodspk.this.value}}'>{{lodspk.this.curie}}</a></td><td></td></tr> - {% if row.p1.uri == 1 %} - <td><a rel='{{row.s1.curie}}' href='{{row.p1.value}}'>{{row.p1.curie}}</a></td> - {% else %} - <td><span property='{{row.s1.curie}}'>{{row.p1.value}}</span></td> - {% endif %} + {% for row in models.sp %} + <tr> + <td style='background-color:#c9f9c9'><a href='{{row.s.value}}'>{{row.s.curie}}</a></td> + <td style='background-color:#c9f9c9'><a rel='{{row.s.curie}}' href='{{row.p.value}}'>{{row.p.curie}}</a></td> +<td>{%if forloop.first%}<a href='{{lodspk.this.value}}'>{{lodspk.this.curie}}</a>{%endif%}</td> </tr> - {% endif %} {% endfor %} - </table> + <tr><th>Subject</th><th>Predicate</th><th>Object</th></tr> - <br/><br/> - <h2>Information pointing to {{lodspk.this.curie}}</h2> - <table> - {% for row in models.main %} - {% if row.s2%} - <tr> - <td><a href='{{row.s2.value}}'>{{row.s2.curie}}</a></td> - <td><a rev='[{{row.p2.curie}}]' href='{{row.s2.value}}'>{{row.p2.curie}}</a></td> - </tr> - {%endif %} - {% endfor %} </table> </div> + </div> + + + <br/> </body> </html>