mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-06-05 22:09:38 +02:00
Aggiornamento dell'API
Aggiornamento dell'API, con introduzione del supporto completo alla creazione di nuovi valori e miglioramento della gestione delle eccezioni.
This commit is contained in:
@@ -5,6 +5,14 @@ include_once __DIR__.'/../core.php';
|
|||||||
// Disabilta la sessione per l'API
|
// Disabilta la sessione per l'API
|
||||||
session_write_close();
|
session_write_close();
|
||||||
|
|
||||||
|
function serverError()
|
||||||
|
{
|
||||||
|
die(API::error('serverError'));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gestione degli errori
|
||||||
|
set_error_handler('serverError');
|
||||||
|
|
||||||
// Permesso di accesso all'API da ogni dispositivo
|
// Permesso di accesso all'API da ogni dispositivo
|
||||||
header('Access-Control-Allow-Origin: *');
|
header('Access-Control-Allow-Origin: *');
|
||||||
|
|
||||||
@@ -15,11 +23,26 @@ try {
|
|||||||
$api = new API(filter('token'));
|
$api = new API(filter('token'));
|
||||||
|
|
||||||
$resource = filter('resource');
|
$resource = filter('resource');
|
||||||
|
|
||||||
|
$method = $_SERVER['REQUEST_METHOD'];
|
||||||
|
switch ($method) {
|
||||||
|
case 'PUT':
|
||||||
|
$result = $api->update($resource);
|
||||||
|
break;
|
||||||
|
case 'POST':
|
||||||
|
$result = $api->create($resource);
|
||||||
|
break;
|
||||||
|
case 'GET':
|
||||||
if (!empty($resource)) {
|
if (!empty($resource)) {
|
||||||
$result = $api->retrieve($resource);
|
$result = $api->retrieve($resource);
|
||||||
} else {
|
} else {
|
||||||
$result = API::response(API::getResources()['retrieve']);
|
$result = API::response(API::getResources()['retrieve']);
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
case 'DELETE':
|
||||||
|
$result = $api->delete($resource);
|
||||||
|
break;
|
||||||
|
}
|
||||||
} catch (InvalidArgumentException $e) {
|
} catch (InvalidArgumentException $e) {
|
||||||
$result = API::error('unauthorized');
|
$result = API::error('unauthorized');
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
|
4
core.php
4
core.php
@@ -61,7 +61,7 @@ $handlers[] = new StreamHandler(__DIR__.'/logs/error.log', Monolog\Logger::ERROR
|
|||||||
$handlers[] = new StreamHandler(__DIR__.'/logs/setup.log', Monolog\Logger::EMERGENCY);
|
$handlers[] = new StreamHandler(__DIR__.'/logs/setup.log', Monolog\Logger::EMERGENCY);
|
||||||
|
|
||||||
// Impostazioni di debug
|
// Impostazioni di debug
|
||||||
if (!empty($debug)) {
|
if (!empty($debug) && !API::isAPIRequest()) {
|
||||||
// Ignoramento degli avvertimenti e delle informazioni relative alla deprecazione di componenti
|
// Ignoramento degli avvertimenti e delle informazioni relative alla deprecazione di componenti
|
||||||
if (empty($strict)) {
|
if (empty($strict)) {
|
||||||
error_reporting(E_ALL & ~E_NOTICE & ~E_USER_DEPRECATED);
|
error_reporting(E_ALL & ~E_NOTICE & ~E_USER_DEPRECATED);
|
||||||
@@ -79,7 +79,7 @@ if (!empty($debug)) {
|
|||||||
$whoops->pushHandler($prettyPageHandler);
|
$whoops->pushHandler($prettyPageHandler);
|
||||||
|
|
||||||
// Abilita la gestione degli errori nel caso la richiesta sia di tipo AJAX
|
// Abilita la gestione degli errori nel caso la richiesta sia di tipo AJAX
|
||||||
if (\Whoops\Util\Misc::isAjaxRequest()) {
|
if (Whoops\Util\Misc::isAjaxRequest()) {
|
||||||
$whoops->pushHandler(new Whoops\Handler\JsonResponseHandler());
|
$whoops->pushHandler(new Whoops\Handler\JsonResponseHandler());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -136,7 +136,7 @@ class API extends \Util\Singleton
|
|||||||
|
|
||||||
public function update($resource)
|
public function update($resource)
|
||||||
{
|
{
|
||||||
return $this->fileRequest($resource, 'generate');
|
return $this->fileRequest($resource, 'update');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function delete($resource)
|
public function delete($resource)
|
||||||
@@ -148,15 +148,24 @@ class API extends \Util\Singleton
|
|||||||
{
|
{
|
||||||
$resources = self::getResources()[$kind];
|
$resources = self::getResources()[$kind];
|
||||||
|
|
||||||
if (!in_array($resource, $resources)) {
|
if (!in_array($resource, array_keys($resources))) {
|
||||||
return self::error('notFound');
|
return self::error('notFound');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Database
|
||||||
$dbo = Database::getConnection();
|
$dbo = Database::getConnection();
|
||||||
|
|
||||||
|
$dbo->query('START TRANSACTION');
|
||||||
|
|
||||||
|
// Variabili GET e POST
|
||||||
|
$post = Filter::getPOST();
|
||||||
|
$get = Filter::getGET();
|
||||||
|
|
||||||
$filename = DOCROOT.'/modules/'.$resources[$resource].'/api/'.$kind.'.php';
|
$filename = DOCROOT.'/modules/'.$resources[$resource].'/api/'.$kind.'.php';
|
||||||
include $filename;
|
include $filename;
|
||||||
|
|
||||||
|
$dbo->query('COMMIT');
|
||||||
|
|
||||||
return self::response($results);
|
return self::response($results);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -182,11 +191,13 @@ class API extends \Util\Singleton
|
|||||||
$module = basename(dirname(dirname($operation)));
|
$module = basename(dirname(dirname($operation)));
|
||||||
$kind = basename($operation, '.php');
|
$kind = basename($operation, '.php');
|
||||||
|
|
||||||
|
$resources[$kind] = (array) $resources[$kind];
|
||||||
|
|
||||||
$temp = str_replace('/api/', '/custom/api/', $operation);
|
$temp = str_replace('/api/', '/custom/api/', $operation);
|
||||||
$operation = file_exists($temp) ? $temp : $operation;
|
$operation = file_exists($temp) ? $temp : $operation;
|
||||||
|
|
||||||
$api = include $operation;
|
$api = include $operation;
|
||||||
$api = array_unique($api);
|
$api = is_array($api) ? array_unique($api) : [];
|
||||||
|
|
||||||
$keys = array_keys($resources[$kind]);
|
$keys = array_keys($resources[$kind]);
|
||||||
|
|
||||||
@@ -196,7 +207,7 @@ class API extends \Util\Singleton
|
|||||||
$results[$value] = $module;
|
$results[$value] = $module;
|
||||||
}
|
}
|
||||||
|
|
||||||
$resources[$kind] = array_merge((array) $resources[$kind], $results);
|
$resources[$kind] = array_merge($resources[$kind], $results);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
22
modules/anagrafiche/api/create.php
Normal file
22
modules/anagrafiche/api/create.php
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
switch ($resource) {
|
||||||
|
case 'add_anagrafica':
|
||||||
|
$rs = $dbo->fetchArray('SELECT codice FROM an_anagrafiche ORDER BY CAST(codice AS SIGNED) DESC LIMIT 0, 1');
|
||||||
|
$codice = get_next_code($rs[0]['codice'], 1, get_var('Formato codice anagrafica'));
|
||||||
|
|
||||||
|
// Inserisco l'anagrafica
|
||||||
|
$dbo->insert('an_anagrafiche', [
|
||||||
|
'ragione_sociale' => $post['data']['ragione_sociale'],
|
||||||
|
'codice' => $codice,
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Inserisco il rapporto dell'anagrafica (cliente, tecnico, ecc)
|
||||||
|
$dbo->sync('an_tipianagrafiche_anagrafiche', ['idanagrafica' => $dbo->lastInsertedID()], ['idtipoanagrafica' => (array) $post['data']['tipi']]);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
'add_anagrafica',
|
||||||
|
];
|
Reference in New Issue
Block a user