예제 #1
0
 public function execute($par = null)
 {
     global $wgOut, $wgScriptPath;
     $queryWithoutPrefix = isset($_REQUEST["queryWithoutPrefix"]) ? stripslashes($_REQUEST["queryWithoutPrefix"]) : "";
     $query = isset($_REQUEST["query"]) ? stripslashes($_REQUEST["query"]) : "";
     $endpoint = isset($_REQUEST["endpoint"]) ? stripslashes(trim($_REQUEST["endpoint"])) : "http://dbpedia.org/sparql";
     $output = isset($_REQUEST["output"]) ? stripslashes($_REQUEST["output"]) : "";
     $titleRequest = isset($_REQUEST["titleRequest"]) ? stripslashes($_REQUEST["titleRequest"]) : "";
     $description = isset($_REQUEST["description"]) ? stripslashes($_REQUEST["description"]) : "";
     // $wgOut->addHTML( isset($_REQUEST["query"])?stripslashes($_REQUEST["query"]):"Vide");
     // $wgOut->addHTML(print_r($_REQUEST,true));
     // $wgOut->addHTML(print_r($queryWithoutPrefix,true));
     // $wgOut->addHTML(print_r($query,true));
     // $wgOut->addHTML(print_r($output,true));
     if ($query != "" && $output == "save" && $titleRequest != "") {
         if ($this->pageExists($titleRequest)) {
             $wgOut->addHTML("<h2>" . wfMsg('specialsparqlquery_error_title_exists_yet') . "</h2> \n");
             $wgOut->addHTML();
         } else {
             $this->savePage($titleRequest, $this->template($query, $description));
             $wgOut->addWikiText(wfMsg('specialsparqlquery_your_query_saved_here') . "[[{$titleRequest}]]");
         }
     }
     if ($query == "" || $output == "save" || $output == "wiki") {
         $wgOut->addWikiText(wfMsg('specialsparqlquery_mainpage'));
         $wgOut->addHTML("<pre>" . htmlentities($this->prefix(), ENT_QUOTES, 'UTF-8') . "</pre>");
         $wgOut->addHTML("<form method='post' name='formQuery'>");
         $wgOut->addHTML("<input type='hidden' name='output' value='wiki'>");
         $wgOut->addHTML("<input type='hidden' name='prefix' value='" . htmlentities($this->prefix(), ENT_QUOTES, 'UTF-8') . " '>");
         $wgOut->addHTML("<input type='hidden' name='query' >");
         $wgOut->addHTML(wfMsg('specialsparqlquery_endpointsparql') . " : <input type='text' name='endpoint' size='50' value='" . $endpoint . " '>");
         $wgOut->addHTML("<textarea name='queryWithoutPrefix' cols='25' rows='15'>");
         $strQuery = $queryWithoutPrefix != "" ? $queryWithoutPrefix : $this->exampleSparql(0);
         $wgOut->addHTML($strQuery);
         $wgOut->addHTML("</textarea>");
         $wgOut->addHTML("<br/>");
         $wgOut->addHTML("<script language='javascript' type='text/javascript' src='" . $wgScriptPath . "/extensions/LinkedWiki/js/bordercloud.js'></script>");
         $wgOut->addHTML("<SCRIPT>\r\n<!-- \r\nfunction validAndSendQuery(){\r\n\tvar query = document.formQuery.prefix.value + ' ' + document.formQuery.queryWithoutPrefix.value;\r\n\tif(! document.formQuery.toXML.checked){\r\n\t\tdocument.formQuery.query.value= query;\r\n\t\tdocument.formQuery.submit();\r\n\t}else{\t\t\r\n\t\twindow.open('" . $endpoint . "?query=' + escape(query.replace('\\n','')));\r\n\t}\r\n}\r\nfunction validWithJS(){\r\n\tvar query = document.formQuery.prefix.value + ' ' + document.formQuery.queryWithoutPrefix.value;\r\n\r\n\tbcValidateSPARQL('" . $endpoint . "',query);\r\n}\r\n//-->\r\n</SCRIPT>");
         $wgOut->addHTML("<input type='button' value='" . wfMsg('specialsparqlquery_sendquery') . "'  onClick='validAndSendQuery();' />");
         $wgOut->addHTML("<input type='button' value='(R&D) Validation (js)'  onClick='validWithJS();' />");
         $wgOut->addHTML("   Xml : <input type='checkbox'  name='toXML' />");
         $wgOut->addHTML(" </form>");
         $wgOut->addHTML("<div  id='bc_div'></div>");
         $wgOut->addHTML("<div style='display: none;'>");
         $wgOut->addHTML("<img id='canvas-image-wait' src='" . $wgScriptPath . "/extensions/LinkedWiki/js/wait.png'></img>");
         $wgOut->addHTML("</div>");
         if ($queryWithoutPrefix != "") {
             $sp = new Endpoint($endpoint);
             $rs = $sp->query($query);
             $errs = $sp->getErrors();
             if ($errs) {
                 $wgOut->addHTML("<h1>ERROR(s)</h1>\n");
                 foreach ($errs as $err) {
                     if (is_array($err)) {
                         foreach ($err as $suberr) {
                             $wgOut->addHTML("<pre>{$suberr}.</pre> \n");
                         }
                     } else {
                         if (preg_match("/bcjeton/i", $err) && (preg_match("/insert/i", $strQuery) || preg_match("/delete/i", $strQuery))) {
                             $wgOut->addHTML("<pre>You have not the right to write in the dataset.</pre> \n");
                         } else {
                             $wgOut->addHTML("<pre>{$err}.</pre> \n");
                         }
                     }
                 }
             } else {
                 //						//efSparqlParserFunction_simple( $querySparqlWiki,$endpoint ,$classHeaders = '',$headers = '', $debug = null)
                 $arr = efSparqlParserFunction_simple($query, $endpoint, '', '', null);
                 $wgOut->addWikiText($arr[0]);
                 $wgOut->addWikiText("==" . wfMsg('specialsparqlquery_usethisquery') . "==");
                 $wgOut->addWikiText(wfMsg('specialsparqlquery_usethisquery_tutorial'));
                 $wgOut->addHTML("<pre>{{#sparql:" . htmlentities($query, ENT_QUOTES, 'UTF-8') . "\n|endpoint=" . htmlentities($endpoint, ENT_QUOTES, 'UTF-8') . "}}</pre>");
             }
             //$wgOut->addWikiText("==".wfMsg('specialsparqlquery_linkxml')."==");
             //$queryurl= $endpoint."?query=".urlencode( str_replace('\n','',$query));
             //$wgOut->addHTML("<a href='$queryurl'>".htmlentities( $queryurl, ENT_QUOTES, 'UTF-8')."</a>");
         }
     }
     $this->setHeaders();
 }
예제 #2
0
function efSparqlParserFunction_Render($parser)
{
    //global $wgLinkedWikiLocalEndPoint,$wgLinkedWikiEndPoint,$wgLinkedWikiGraphWiki;
    $args = func_get_args();
    // $parser, $param1 = '', $param2 = ''
    $countArgs = count($args);
    $query = isset($args[1]) ? urldecode($args[1]) : "";
    $vars = array();
    for ($i = 2; $i < $countArgs; $i++) {
        if (preg_match_all('#^([^= ]+) *= *(.*)$#i', $args[$i], $match)) {
            $vars[$match[1][0]] = $match[2][0];
        }
    }
    if ($query != "") {
        $query = efWsparqlParserFunction_parserquery($query, $parser);
        // which endpoint?
        $endpoint = isset($vars["endpoint"]) ? $vars["endpoint"] : 'http://dbpedia.org/sparql';
        $classHeaders = isset($vars["classHeaders"]) ? $vars["classHeaders"] : '';
        $headers = isset($vars["headers"]) ? $vars["headers"] : '';
        $templates = isset($vars["templates"]) ? $vars["templates"] : '';
        $debug = isset($vars["debug"]) ? $vars["debug"] : null;
        $cache = isset($vars["cache"]) ? $vars["cache"] : "yes";
        $templateBare = isset($vars["templateBare"]) ? $vars["templateBare"] : '';
        $footer = isset($vars["footer"]) ? $vars["footer"] : '';
        if ($cache == "no") {
            $parser->disableCache();
        }
        if ($templateBare == "tableCell") {
            return efSparqlParserFunction_tableCell($query, $endpoint, $debug);
        } else {
            if ($templates != "") {
                return efSparqlParserFunction_array($query, $endpoint, $classHeaders, $headers, $templates, $footer, $debug);
            } else {
                return efSparqlParserFunction_simple($query, $endpoint, $classHeaders, $headers, $footer, $debug);
            }
        }
    } else {
        $parser->disableCache();
        return "'''Error #sparql : Argument incorrect (usage : #sparql: SELECT * WHERE {?a ?b ?c .} )'''";
    }
}