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');
        }
    }
}
Esempio n. 2
0
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');
        }
    }
}