139 lines
4.5 KiB
PHP
139 lines
4.5 KiB
PHP
|
<?php
|
||
|
// Possibile ulteriore implementazione: eseguire un controllo sui permessi dell'utente per limitare lo scaricamento dei dati.
|
||
|
header("Access-Control-Allow-Origin: *");
|
||
|
include_once (__DIR__ . "/../core.php");
|
||
|
include ("./lib/modutil.php");
|
||
|
|
||
|
$key = filter("key");
|
||
|
if (! isset($key) || ! user_check($key)) {
|
||
|
echo "-1";
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
$id = filter('id');
|
||
|
$search = filter('search');
|
||
|
$reduced = filter('reduced');
|
||
|
$last_updated = filter('upd');
|
||
|
$operation = filter('op');
|
||
|
|
||
|
$campi = filter('campi');
|
||
|
$value = filter('values');
|
||
|
$table = filter('table');
|
||
|
$str_update = filter('str_update');
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
$select = "*";
|
||
|
$where = "";
|
||
|
$order = "";
|
||
|
|
||
|
|
||
|
// c0e024d9200b5705bc4804722636378a
|
||
|
|
||
|
|
||
|
// http://localhost/ges360v2/api/?key=c0e024d9200b5705bc4804722636378a&table=in_mail&campi=oggetto,contenuto&values='testoggetto','test contenuto'&op=insert
|
||
|
|
||
|
$results = array();
|
||
|
|
||
|
switch ($operation) {
|
||
|
case 'updates' :
|
||
|
if (isset($last_updated)) $where = " WHERE updated_at >= " . prepare($last_updated);
|
||
|
|
||
|
$excluded = explode(",", get_var("API_excluded_tables"));
|
||
|
|
||
|
// Attenzione: query specifica per MySQL
|
||
|
$datas = $dbo->fetchArray("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA=" . prepare($db_name));
|
||
|
if ($datas != null) {
|
||
|
foreach ($datas as $data) {
|
||
|
if (! in_array($data["TABLE_NAME"], $excluded)) $results[$data["TABLE_NAME"]] = $dbo->fetchArray("SELECT * FROM " . $data["TABLE_NAME"] . $where);
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case 'update' :
|
||
|
|
||
|
$results = $dbo->query("update ".$table." " . $str_update . ")");
|
||
|
|
||
|
break;
|
||
|
|
||
|
|
||
|
case 'insert' :
|
||
|
|
||
|
$results = $dbo->query("insert into ".$table." (" . $campi . ") VALUES (" . $value . ")");
|
||
|
|
||
|
break;
|
||
|
case 'deleted':
|
||
|
if (isset($last_updated)) $where = "AND updated_at >= " . prepare($last_updated);
|
||
|
|
||
|
$excluded = explode(",", get_var("API_excluded_tables"));
|
||
|
|
||
|
// Attenzione: query specifica per MySQL
|
||
|
$datas = $dbo->fetchArray("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA=" . prepare($db_name));
|
||
|
if ($datas != null) {
|
||
|
foreach ($datas as $data) {
|
||
|
$id = $dbo->fetchArray("SELECT `id` FROM `zz_tables` WHERE `name`=".prepare($data["TABLE_NAME"]));
|
||
|
if (! in_array($data["TABLE_NAME"], $excluded) && $id != null){
|
||
|
$id = $id[0]['id'];
|
||
|
|
||
|
$deleted = $dbo->fetchArray("SELECT SQL_CALC_FOUND_ROWS `id` FROM `zz_deleted` WHERE `id_table`=".prepare($id)." ORDER BY `id` ASC");
|
||
|
$cont_del = $dbo->fetchArray("SELECT FOUND_ROWS()")[0]['FOUND_ROWS()'];
|
||
|
|
||
|
$column = $dbo->fetchArray("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ".prepare($data["TABLE_NAME"])." AND EXTRA LIKE '%AUTO_INCREMENT%' AND TABLE_SCHEMA = ".prepare($db_name))[0]['COLUMN_NAME'];
|
||
|
|
||
|
$temps = $dbo->fetchArray("SELECT SQL_CALC_FOUND_ROWS `".$column."` FROM `".$data["TABLE_NAME"]."` ORDER BY `".$column."` ASC");
|
||
|
$cont = $dbo->fetchArray("SELECT FOUND_ROWS()")[0]['FOUND_ROWS()'];
|
||
|
|
||
|
$result = $dbo->fetchArray("SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = ".prepare($data["TABLE_NAME"])." AND TABLE_SCHEMA = ".prepare($db_name));
|
||
|
for($i = 1; $i<$result[0]['AUTO_INCREMENT']; $i++){
|
||
|
if(ricerca($temps, $i, $cont, $column) == -1 && ricerca($deleted, $i, $cont_del) == -1) {
|
||
|
$dbo->query("INSERT INTO `zz_deleted` (`id`, `id_table`) VALUES (".prepare($i).", ".prepare($id).")");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$results[$data["TABLE_NAME"]] = $dbo->fetchArray("SELECT `id` FROM `zz_deleted` WHERE `id_table`=".prepare($id)." ".$where." ORDER BY `id` ASC");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
break;
|
||
|
|
||
|
case 'interventi' :
|
||
|
$order = "ORDER BY idintervento";
|
||
|
|
||
|
if (isset($id)) $where = "WHERE `idintervento`=" . prepare($id);
|
||
|
else {
|
||
|
if (isset($reduced)) $select = "`idintervento`";
|
||
|
}
|
||
|
|
||
|
$results = $dbo->fetchArray("SELECT " . $select . " FROM `in_interventi` " . $where . " " . $order);
|
||
|
|
||
|
break;
|
||
|
|
||
|
case 'anagrafiche' :
|
||
|
$order = "ORDER BY `idanagrafica`";
|
||
|
|
||
|
if (isset($id)) $where = "WHERE `idanagrafica`=" . prepare($id);
|
||
|
else {
|
||
|
if (isset($search)) $where = "WHERE `ragione_sociale` LIKE " . prepare("%" . $search . "%");
|
||
|
if (isset($reduced)) $select = "`idanagrafica`";
|
||
|
}
|
||
|
|
||
|
$results = $dbo->fetchArray("SELECT " . $select . " FROM `an_anagrafiche` " . $where . " " . $order);
|
||
|
|
||
|
break;
|
||
|
case 'import' :
|
||
|
|
||
|
|
||
|
$results = $dbo->fetchArray("SELECT * FROM ".$table);
|
||
|
|
||
|
break;
|
||
|
|
||
|
default :
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
echo json_encode($results, JSON_PRETTY_PRINT); // JSON_FORCE_OBJECTJSON_PRETTY_PRINT
|
||
|
?>
|