function fetchVocabularyService($task, $arg, $output = "xml") { $evalParam = evalServiceParam($task, $arg); //Verificar servicio habilitado if (CFG_SIMPLE_WEB_SERVICE !== "1" || !$task) { $service = new XMLvocabularyServices(); return array2xml($service->describeService()); // Controlar parametros } elseif (@$evalParam["error"]) { $service = new XMLvocabularyServices(); return array2xml($service->describeService($evalParam)); // Los param esta bien } else { $task = $evalParam["task"]; $arg = $evalParam["arg"]; $service = new XMLvocabularyServices(); switch ($task) { //array case 'fetch': $response = $service->fetchExactTerm($arg); break; //array //array case 'search': $response = $service->fetchTermsBySearch($arg); break; //array //array case 'searchNotes': $response = $service->fetchTermsBySearchNotes($arg); break; //array //array case 'suggest': $response = $service->fetchSuggested($arg); break; //array //array case 'suggestDetails': $response = $service->fetchSuggestedDetails($arg); break; //array (tema_id,tema) //array (tema_id,tema) case 'fetchSimilar': $response = $service->fetchSimilar($arg); break; case 'fetchRelated': // array (tema_id, tema,t_relacion_id) $response = $service->fetchRelatedTerms($arg); break; case 'fetchAlt': // array (tema_id, tema,t_relacion_id) $response = $service->fetchAltTerms($arg); break; case 'fetchDown': // Devuelve lista de temas especificos // array (tema_id, tema,t_relacion_id, hasMoreDown) $response = $service->fetchTermDown($arg); break; case 'fetchUp': // Devuelve arbol de temas genericos // array(tema_id,string,relation_type_id,order) $response = $service->fetchTermUp($arg); break; case 'fetchTermFull': // Devuelve detalles competos de un tema (tema + notas) // array(tema_id,string,hasMoreUp,term_type,date_create,date_mod,numNotes) break; case 'fetchTerm': // Devuelve detalles de un tema // array(tema_id,string) $response = $service->fetchTermDetailsBrief($arg); break; case 'fetchCode': // Devuelve detalles de un tema // array(tema_id,string) $response = $service->fetchCode($arg); break; case 'fetchNotes': // Devuelve notas de un tema // array(tema_id,string,note_id,note_type,note_lang,note_text) $response = $service->fetchTermNotes($arg); break; case 'fetchTopTerms': // Array de términos tope // array(tema_id,string) $response = $service->fetchTopTerms($arg); break; case 'fetchLast': // Array de últimos términos creados // array(tema_id,string) $response = $service->fetchLast(); break; case 'fetchDirectTerms': // Array de términos vinculados directamente con el termino (TG,TR,UF) // array(tema_id,string,relation_type_id) $response = $service->fetchDirectTerms($arg); break; case 'fetchTerms': // Devuelve lista de términos para una lista separada por comas de tema_id // array(tema_id,string) $response = $service->fetchTermsByIds($arg); break; case 'fetchRelatedTerms': // Devuelve lista de términos relacionados para una lista separada por comas de tema_id // array(tema_id,string) $response = $service->fetchRelatedTermsByIds($arg); break; case 'fetchTargetTerms': // Devuelve lista de términos mapeados para un tema_id // array(tema_id,string) $response = $service->fetchTargetTermsById($arg); break; case 'fetchURI': // Devuelve lista de enlaces linkeados para un tema_id // list of foreign links to term // array(type link,link) $response = $service->fetchURI($arg); break; //~ case 'fetchSourceTermsURI': //~ // Devuelve lista de términos propios que están mapeados para una URI provista por un término externo //~ // list of source terms who are mapped by URI provided by target vocabulary. //~ // array(tema_id,string,code,lang,date_create,date_mod) //~ $response = $service-> fetchSourceTermsByURI(rawurldecode($arg)); //~ break; //~ case 'fetchSourceTermsURI': //~ // Devuelve lista de términos propios que están mapeados para una URI provista por un término externo //~ // list of source terms who are mapped by URI provided by target vocabulary. //~ // array(tema_id,string,code,lang,date_create,date_mod) //~ $response = $service-> fetchSourceTermsByURI(rawurldecode($arg)); //~ break; case 'fetchSourceTerms': // Devuelve lista de términos propios que están mapeados para un determinado término // list of source terms who are mapped for a given term provided by ANY target vocabulary. // array(tema_id,string,code,lang,date_create,date_mod) $response = $service->fetchSourceTerms($arg); break; case 'letter': // Array de términos que comienzan con una letra // array(tema_id,string,no_term_string,relation_type_id) // sanitice $letter $arg = trim(urldecode($arg)); // comment this line for russian chars //$arg=secure_data($arg,"alnum"); $response = $service->fetchTermsByLetter($arg); break; case 'fetchVocabularyData': // Devuelve detalles del vocabularios //array(vocabulario_id,titulo,autor,idioma,cobertura,keywords,tipo,cuando,url_base) $response = $service->fetchVocabularyData("1"); break; default: $response = $service->describeService(); break; } global $CFG; $arrayResume['status'] = CFG_SIMPLE_WEB_SERVICE == '1' ? 'available' : 'disable'; $arrayResume['param'] = array("task" => $task, "arg" => $arg); $arrayResume['web_service_version'] = $CFG["VersionWebService"]; $arrayResume['version'] = $CFG["Version"]; $arrayResume["cant_result"] = count($response["result"]); $response["resume"] = $arrayResume; $xml_resume = array2xml($arrayResume, $name = 'resume', $standalone = FALSE, $beginning = FALSE); $xml_response = array2xml($response, $name = 'terms', $standalone = TRUE, $beginning = FALSE, $nodeChildName = 'term'); switch ($output) { case 'json': header('Content-type: application/json'); return array2json($response, 'vocabularyservices'); break; case 'skos': header('Content-Type: text/xml'); return $_SESSION[$_SESSION["CFGURL"]]["_PUBLISH_SKOS"] == '1' ? array2skos($response, 'vocabularyservices') : array2xml($response, 'vocabularyservices'); break; default: header('Content-Type: text/xml'); return array2xml($response, 'vocabularyservices'); } } }
function fetchVocabularyService($task, $arg, $output = "xml") { $evalParam = evalServiceParam($task, $arg); /* Prevents SQL injection */ $arg = secure_data($arg, "sql"); //Verificar servicio habilitado if (CFG_SIMPLE_WEB_SERVICE !== "1") { $service = new XMLvocabularyServices(); return array2xml($service->describeService()); // Controlar parametros } elseif (is_array(evalServiceParam($task, $arg))) { return array2xml($evalParam); // Los param esta bien } else { $service = new XMLvocabularyServices(); switch ($_GET[task]) { //array case 'search': $response = $service->fetchTermsBySearch($arg); break; //array (tema_id,tema) //array (tema_id,tema) case 'fetchSimilar': $response = $service->fetchSimilar($arg); break; case 'fetchRelated': // array (tema_id, tema,t_relacion_id) $response = $service->fetchRelatedTerms($arg); break; case 'fetchAlt': // array (tema_id, tema,t_relacion_id) $response = $service->fetchAltTerms($arg); break; case 'fetchDown': // Devuelve lista de temas especificos // array (tema_id, tema,t_relacion_id, hasMoreDown) $response = $service->fetchTermDown($arg); break; case 'fetchUp': // Devuelve arbol de temas genericos // array(tema_id,string,relation_type_id,order) $response = $service->fetchTermUp($arg); break; case 'fetchTermFull': // Devuelve detalles competos de un tema (tema + notas) // array(tema_id,string,hasMoreUp,term_type,date_create,date_mod,numNotes) break; case 'fetchTerm': // Devuelve detalles de un tema // array(tema_id,string) $response = $service->fetchTermDetailsBrief($arg); break; case 'fetchNotes': // Devuelve notas de un tema // array(tema_id,string,note_id,note_type,note_lang,note_text) $response = $service->fetchTermNotes($arg); break; case 'fetchTopTerms': // Array de términos tope // array(tema_id,string) $response = $service->fetchTopTerms($arg); break; case 'fetchDirectTerms': // Array de términos vinculados directamente con el termino (TG,TR,UF) // array(tema_id,string,relation_type_id) $response = $service->fetchDirectTerms($arg); break; case 'fetchTerms': // Devuelve lista de términos para una lista separada por comas de tema_id // array(tema_id,string) $response = $service->fetchTermsByIds($arg); break; case 'fetchRelatedTerms': // Devuelve lista de términos relacionados para una lista separada por comas de tema_id // array(tema_id,string) $response = $service->fetchRelatedTermsByIds($arg); break; case 'letter': // Array de términos que comienzan con una letra // array(tema_id,string,no_term_string,relation_type_id) $response = $service->fetchTermsByLetter($arg); break; case 'fetchVocabularyData': // Devuelve detalles del vocabularios //array(vocabulario_id,titulo,autor,idioma,cobertura,keywords,tipo,cuando,url_base) $response = $service->fetchVocabularyData("1"); break; default: $response = $service->describeService(); break; } global $CFG; $arrayResume['status'] = CFG_SIMPLE_WEB_SERVICE == '1' ? 'available' : 'disable'; $arrayResume['param'] = array("task" => $task, "arg" => $arg); $arrayResume['web_service_version'] = $CFG["VersionWebService"]; $arrayResume['version'] = $CFG["Version"]; $arrayResume["cant_result"] = count($response["result"]); $response["resume"] = $arrayResume; $xml_resume = array2xml($arrayResume, $name = 'resume', $standalone = FALSE, $beginning = FALSE); $xml_response = array2xml($response, $name = 'terms', $standalone = TRUE, $beginning = FALSE, $nodeChildName = 'term'); if ($output == 'json') { return array2json($response, 'vocabularyservices'); } elseif ($output == 'jsonp') { // Just allowed chars in javascript callback function name return preg_replace('/[^-a-zA-Z0-9_]/', '', $_GET['callback']) . '(' . array2json($response, 'vocabularyservices') . ');'; } else { return array2xml($response, 'vocabularyservices'); } } }