Beispiel #1
0
function listCategorias()
{
    $c = getConnection();
    $query = "SELECT * FROM categorias";
    $categorias = array();
    if ($resultado = $c->query($query)) {
        while ($fila = $resultado->fetch_assoc()) {
            $categorias[] = $fila;
        }
        $resultado->free();
        sendResult(array("categorias" => $categorias), "Ok");
    } else {
        sendError("No se encontraron resultados");
    }
}
Beispiel #2
0
function listProductosPorCategoria()
{
    $c = getConnection();
    $id = (int) $c->real_escape_string(request('categoria_id'));
    $query = "SELECT * FROM productos WHERE categoria_id = {$id}";
    $productos = array();
    if ($resultado = $c->query($query)) {
        while ($fila = $resultado->fetch_assoc()) {
            $productos[] = array_map('utf8_encode', $fila);
        }
        $resultado->free();
        sendResult(array("productos" => $productos), "Ok");
    } else {
        sendError("No se encontraron resultados");
    }
}
Beispiel #3
0
function queryDatabase($sql_query)
{
    $result = runQuery($sql_query);
    sendResult(null, $result->fetch_all(1));
}
Beispiel #4
0
function getData($code, $connection)
{
    if (!isTokenUser()) {
        $code = 4;
    }
    switch ($code) {
        //////////////////////CASE -1/////////////////////////////////////
        //Si entra aqui es porque ningun dato de S_POST coincide con una acción valida. Ya que el $dataCode por defecto es -1
        case -1:
            $response = array("error" => 1030, "description" => "Error no se ejecuto ninguna acción, verifica los parametros de entrada.");
            break;
            //////////////////////CASE 0/////////////////////////////////////
            //Obtenemos las opciones a mostrar de un pregunta y las devolvemos en un array en formato json
        //////////////////////CASE 0/////////////////////////////////////
        //Obtenemos las opciones a mostrar de un pregunta y las devolvemos en un array en formato json
        case 0:
            if ($connection) {
                $id_pregunta = $_POST["id_pregunta"];
                $dataOptions = $connection->query("SELECT * FROM " . TABLE_PREFIX . TABLE_OPCIONES . " where id_pregunta = " . $id_pregunta);
                $data;
                /*
                 * obtenemos los datos de la base de datos en un array asociativo.
                 */
                while ($fila = $dataOptions->fetch_assoc()) {
                    $data[] = $fila;
                }
                //dado que los valores de la base de datos vienen en codificacion utf-8, hay que transformar aquellas columnas con campos de texto.
                $dataResponse = codificationArray($data, "m_option");
                //para la variable m_option de la tabla n_opciones se codifica en utf-8
                $response = $dataResponse;
            } else {
                $response = array("error" => 1020, "description" => "Error conexión no establecida");
            }
            break;
            //////////////////////CASE 1/////////////////////////////////////
            //Devolvemos la pregunta dado una paginacion ( con un LIMIT en la select filtramos la paginación)			.
        //////////////////////CASE 1/////////////////////////////////////
        //Devolvemos la pregunta dado una paginacion ( con un LIMIT en la select filtramos la paginación)			.
        case 1:
            if (!isTokenTest()) {
                createTokenTest(getTokenUser());
            } else {
                if (isTokenTest() && isset($_POST["isFirstSelectedTest"]) && $_POST["isFirstSelectedTest"] == "true") {
                    //$response = array("error" => 1200, "Error token desincronizado");
                    $response = array("error" => 1200, "desError" => "Test desincronizado", "page" => getPage(), "category" => getCategory(), "token_test" => getTokenTest(), "token_user" => getTokenUser());
                    break;
                }
            }
            //sincronizamos el avanze de paginas
            if (!isPage()) {
                createPage(intval($_POST["pagination"]));
            } else {
                if (isset($_SESSION["is_page_refresh"]) && $_SESSION["is_page_refresh"] && getPage() < intval($_POST["pagination"])) {
                    createPage(intval(getPage()) + 1);
                } else {
                    if (isset($_SESSION["is_page_refresh"]) && $_SESSION["is_page_refresh"]) {
                        createPage(intval(getPage()));
                    } else {
                        createPage(intval(getPage()) + 1);
                    }
                }
            }
            if (!isCategory()) {
                //si no esta sincroniada la categoria se sincroniza
                createCategory(intval($_POST["id"]));
            }
            if ($connection) {
                $pagination = getPage();
                //numero de pagina.
                $id = $_POST["id"];
                //id categoria: 1- ingles, 2- aleman...
                $result = $connection->query("SELECT * FROM " . TABLE_PREFIX . TABLE_PREGUNTAS . " where id_title = " . $id . " LIMIT " . $pagination . ",1");
                $countLengthData = $connection->query("SELECT count(id) as count FROM " . TABLE_PREFIX . TABLE_PREGUNTAS . " where id_title = " . $id);
                $data = array();
                while ($fila = $result->fetch_assoc()) {
                    $data[] = $fila;
                }
                $dataResponse = codificationArray($data, "question");
                //para la variable question de la tabla n_preguntas se codifica en utf-8
                $dataLength = $countLengthData->fetch_assoc();
                $dataResponse[1] = $dataLength;
                //numero de preguntas para la categoria actual
                if (!isCountQuestion()) {
                    createCountQuestion($dataLength);
                }
                $dataResponse[2] = getTokenTest();
                $dataResponse[3] = getTokenUser();
                $response = $dataResponse;
            } else {
                $response = array("error" => 1020, "description" => "Error conexión no establecida");
            }
            break;
            //////////////////////CASE 2/////////////////////////////////////
            // Actualizamos el progresso del cliente.
        //////////////////////CASE 2/////////////////////////////////////
        // Actualizamos el progresso del cliente.
        case 2:
            if (isPage()) {
                $canContinue = false;
                if (isset($_POST["pageUpdate"]) && $_POST["pageUpdate"]) {
                    if (intval(getPage()) == intval($_POST["pageUpdate"])) {
                        $canContinue = true;
                    } else {
                        $canContinue = false;
                    }
                } else {
                    $canContinue = true;
                }
                if ($canContinue === true) {
                    if (isset($_SESSION["u_email"])) {
                        $emailClient = $_SESSION["u_email"];
                        $id_question = $_POST["id_question"];
                        $id_option = $_POST["id_option"];
                        if ($connection) {
                            if (!isset($_SESSION["id_cliente"])) {
                                $resultQueryClientes = $connection->query("select id from " . TABLE_PREFIX . TABLE_CLIENTES . " WHERE email = '{$emailClient}'");
                                $responseQueryClientes = $resultQueryClientes->fetch_assoc();
                                $_SESSION["id_cliente"] = $responseQueryClientes["id"];
                            }
                            $query = "SELECT count(o.id) as count\n\t\t\t\t\t\t\t\t\t\t  FROM " . TABLE_PREFIX . TABLE_PREGUNTAS . " p inner join " . TABLE_PREFIX . TABLE_OPCIONES . " o\n\t\t\t\t\t\t\t\t\t\t  on o.id_pregunta = p.id\n\t\t\t\t\t\t\t\t\t\t  where {$id_option}. = (select id_opcion from " . TABLE_PREFIX . TABLE_RESPUESTA . " where id_pregunta = {$id_question})";
                            $resultCountCorrect = $connection->query($query);
                            $countCorrectOption = $resultCountCorrect->fetch_assoc();
                            $codeTemp = getTokenTest();
                            $id_client = $_SESSION["id_cliente"];
                            $id_category = getCategory();
                            $date_update = date("Y-m-d H:i:s");
                            $insert = $connection->query("INSERT INTO " . TABLE_PREFIX . TABLE_HISTORY_TEST . " (id_client,id_option,id_question,id_title,code_validation,m_date) VALUES({$id_client},{$id_option},{$id_question},{$id_category},'{$codeTemp}','{$date_update}')");
                            //obtenemos el numero de preguntas de esta categoria.
                            $countQuestionResult = $connection->query("SELECT count(id) as count FROM " . TABLE_PREFIX . TABLE_PREGUNTAS . " where id_title = " . $id_category);
                            $countQuestionTemp = $countQuestionResult->fetch_assoc();
                            $countQuestion = $countQuestionTemp["count"];
                            if (intval($countCorrectOption["count"] > 0)) {
                                //si es mayor que cero significa que es la que tenemos marcada como buena en la base de datos.
                                if (!isset($_SESSION["correctCount"])) {
                                    //si el correctCount no está creado aún lo creamos con valor a 1 porque yá tenemos una respuesta correcta.
                                    $_SESSION["correctCount"] = 1;
                                } else {
                                    //si ya estaba activo, solo incrementamos su valor en 1.
                                    $_SESSION["correctCount"] = intval($_SESSION["correctCount"]) + 1;
                                }
                                $dataUpdate = array("check" => $_SESSION['correctCount']);
                            } else {
                                $dataUpdate = array("check" => -1);
                                //editamos el mensaje de respuesta.
                            }
                        } else {
                            $dataUpdate = array("error" => 1020, "description" => "Error conexión no establecida");
                        }
                    } else {
                        $dataUpdate = array("error" => 1050, "description" => "Error de session, la sessión ha expirado.");
                    }
                } else {
                    $dataUpdate = array("error" => 1200, "desError" => "Test desincronizado", "page" => getPage(), "category" => getCategory(), "token_test" => getTokenTest(), "token_user" => getTokenUser());
                }
                $response = $dataUpdate;
                break;
            } else {
                $response = array("error" => 1050, "description" => "Error de session, la sessión ha expirado.");
                break;
            }
        case 3:
            //aqui el cliente a finalizado el test y mostramos el detalle de los resultados.
            $id_client = $_SESSION["id_cliente"];
            $date_update = date("Y-m-d H:i:s");
            $id_category = getCategory();
            $puntuacion = $_SESSION["correctCount"];
            $token_test = getTokenTest();
            $result = $connection->query("INSERT INTO " . TABLE_PREFIX . TABLE_HISTORY . " (id_client,id_title,code_validation,m_date,points) VALUES ({$id_client},{$id_category},'{$token_test}','{$date_update}',{$puntuacion})");
            if ($result) {
                $response = array("check" => "register inserted.", "data" => array("num_question" => getCountQuestion(), "correctCount" => getCorrectCount()));
            } else {
                $response = array("error" => $connection->error);
            }
            $dataEndTest = isEndTest($id_category, $token_test, $connection);
            if ($dataEndTest) {
                $_SESSION["end_test"] = true;
                sendResult($_SESSION["u_email"], "Resultado del Test en GRUPOIOE", showResume($dataEndTest, $connection));
            }
            break;
        case 4:
            //aqui no existe el token de usuario, la sesion posiblemente haya expirado.
            $response = array("error" => 1100, "description" => "Error token expirado");
            break;
        case 5:
            //aqui devolvemos si hay un test activo o no.
            $response = array("isTestActive" => isTokenTest());
            break;
        case 6:
            //aqui estamos devolviendo los datos desde la cache de la sesion.
            if (isTestFinished()) {
                $response = array("cache" => "get data from cache.", "data" => array("num_question" => getCountQuestion(), "correctCount" => getCorrectCount()));
            } else {
                $response = array("page" => getPage(), "category" => getCategory(), "token_test" => getTokenTest(), "token_user" => getTokenUser());
            }
            break;
            //////////////////////DEFAULT/////////////////////////////////////
            //cualquier accion no contemplada entrara aqui.
        //////////////////////DEFAULT/////////////////////////////////////
        //cualquier accion no contemplada entrara aqui.
        default:
            $response = array("error" => 1040, "description" => "Error de PHP, error inesperado");
            break;
    }
    $connection->close();
    echo json_encode($response);
}
 */
ini_set('default_charset', 'UTF-8');
if (preg_match('/\\b(gzip|deflate)\\b/i', $_SERVER['HTTP_ACCEPT_ENCODING'], $matches)) {
    // 圧縮可能であれば圧縮する
    ini_set("zlib.output_compression", "On");
}
$outputData = array();
$searchWord = $_GET["q"];
if (strlen(trim($searchWord)) == 0) {
    return sendResult($outputData);
}
$searchWord = htmlspecialchars(trim($searchWord), ENT_QUOTES, 'UTF-8');
require "csis.php";
$dataSourceList = array("csisAddress" => new CSISAddressDataSource());
foreach ($dataSourceList as $key => $dataSource) {
    $result = $dataSource->search($searchWord);
    if ($result !== false) {
        $outputData = array_merge($outputData, $result);
    }
}
sendResult($outputData);
/**
 * JSONデータを送信
 */
function sendResult(&$result)
{
    header('Content-type: application/json; charset=utf-8');
    header('Access-Control-Allow-Origin: *');
    $jsonData = json_encode($result);
    echo $jsonData;
}
/**
 * 標高API
 */
function elevationAPI()
{
    if (preg_match('/\\b(gzip|deflate)\\b/i', $_SERVER['HTTP_ACCEPT_ENCODING'], $matches)) {
        // 圧縮可能であれば圧縮する
        ini_set("zlib.output_compression", "On");
    }
    $result = array("elevation" => "-----", "hsrc" => "-----");
    $status = "OK";
    if (isset($_GET['lon'])) {
        if (is_numeric($_GET['lon'])) {
            $lon = floatval($_GET['lon']);
        } else {
            $status = "ERROR";
        }
    }
    if (isset($_GET['lat'])) {
        if (is_numeric($_GET['lat'])) {
            $lat = floatval($_GET['lat']);
        } else {
            $status = "ERROR";
        }
    }
    $outtype = isset($_GET["outtype"]) ? $_GET["outtype"] : "";
    if ($outtype != "JSON") {
        $callback = isset($_GET["callback"]) ? $_GET["callback"] : "";
        if (!empty($callback)) {
            if (preg_match("/^([a-z]|[A-Z]|[_\$])([a-z]|[A-Z]|[_\$]|[0-9]){0,}\$/", $callback) === 0) {
                $status = "ERROR";
                sendResult($result, "");
                return;
            }
        }
    }
    if (isset($lon) && isset($lat)) {
        $lngRad = deg2rad($lon);
        $latRad = deg2rad($lat);
        $R = 128 / M_PI;
        $worldCoordX = $R * ($lngRad + M_PI);
        $worldCoordY = -1 * $R / 2 * log((1 + sin($latRad)) / (1 - sin($latRad))) + 128;
        $elevation = getElevation($worldCoordX, $worldCoordY, 15, 'dem5a', 1);
        $hsrc = "5m(レーザ)";
        if ($elevation == NULL) {
            $elevation = getElevation($worldCoordX, $worldCoordY, 15, 'dem5b', 1);
            $hsrc = "5m(写真測量)";
        }
        if ($elevation == NULL) {
            $elevation = getElevation($worldCoordX, $worldCoordY, 14, 'dem', 0);
            $hsrc = "10m";
        }
        if ($elevation == NULL) {
            $elevation = "-----";
            $hsrc = "-----";
            $status = "NOTFOUND";
        }
        $data = array("elevation" => $elevation, "hsrc" => $hsrc);
        $result = $data;
    } else {
        $status = "ERROR";
    }
    sendResult($result, $callback);
}
/**
 * カウンターAPI
 */
function counterAPI()
{
    if (preg_match('/\\b(gzip|deflate)\\b/i', $_SERVER['HTTP_ACCEPT_ENCODING'], $matches)) {
        // 圧縮可能であれば圧縮する
        ini_set("zlib.output_compression", "On");
    }
    if (defined("ACCEPTABLE_REFERER") && !isset($_SERVER["HTTP_REFERER"])) {
        // リファラーが設定されているのに、リクエストにリファラーが無い
        sendResult();
        return;
    }
    $referer = $_SERVER["HTTP_REFERER"];
    if (defined("ACCEPTABLE_REFERER") && strpos($referer, ACCEPTABLE_REFERER) === FALSE) {
        // 設定されているリファラーとリクエストのリファラーが一致しない
        sendResult();
        return;
    }
    if (!defined("COUNTER_LOG")) {
        // ログの出力先が設定されていない
        sendResult();
        return;
    }
    ini_set("date.timezone", "Asia/Tokyo");
    $outputData = array();
    $today = date("Ymd");
    $yesterday = date("Ymd", strtotime("-1 days"));
    $totalNum = 1;
    $todayNum = 1;
    $yesterdayNum = 0;
    if (!file_exists(COUNTER_LOG)) {
        // 初期状態
        $results = array("total" => $totalNum, $today => $todayNum, $yesterday => 0);
        if (file_put_contents(COUNTER_LOG, json_encode($results)) === FALSE) {
            // ログの出力が行えない
            sendResult();
            return;
        }
    } else {
        $fp = fopen(COUNTER_LOG, "r+");
        if ($fp && flock($fp, LOCK_EX)) {
            // ファイルからデータを読み込み
            $data = fread($fp, 1024);
            $results = json_decode($data, true);
            // データを更新して書き込み
            $totalNum = $results["total"] + 1;
            if (isset($results[$today])) {
                $todayNum = $results[$today] + 1;
            }
            if (isset($results[$yesterday])) {
                $yesterdayNum = $results[$yesterday];
            }
            $newRecord = array("total" => $totalNum, $today => $todayNum, $yesterday => $yesterdayNum);
            rewind($fp);
            $fileSize = fwrite($fp, json_encode($newRecord));
            ftruncate($fp, $fileSize);
            flock($fp, LOCK_UN);
        } else {
            // ログの出力が行えない
            sendResult();
        }
    }
    $results = array("total" => $totalNum, "today" => $todayNum, "yesterday" => $yesterdayNum);
    $outputData["results"] =& $results;
    sendResult($outputData);
}