mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-01-21 11:35:35 +01: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:
parent
7656f345cd
commit
892b9a815c
@ -5,6 +5,14 @@ include_once __DIR__.'/../core.php';
|
||||
// Disabilta la sessione per l'API
|
||||
session_write_close();
|
||||
|
||||
function serverError()
|
||||
{
|
||||
die(API::error('serverError'));
|
||||
}
|
||||
|
||||
// Gestione degli errori
|
||||
set_error_handler('serverError');
|
||||
|
||||
// Permesso di accesso all'API da ogni dispositivo
|
||||
header('Access-Control-Allow-Origin: *');
|
||||
|
||||
@ -15,10 +23,25 @@ try {
|
||||
$api = new API(filter('token'));
|
||||
|
||||
$resource = filter('resource');
|
||||
if (!empty($resource)) {
|
||||
$result = $api->retrieve($resource);
|
||||
} else {
|
||||
$result = API::response(API::getResources()['retrieve']);
|
||||
|
||||
$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)) {
|
||||
$result = $api->retrieve($resource);
|
||||
} else {
|
||||
$result = API::response(API::getResources()['retrieve']);
|
||||
}
|
||||
break;
|
||||
case 'DELETE':
|
||||
$result = $api->delete($resource);
|
||||
break;
|
||||
}
|
||||
} catch (InvalidArgumentException $e) {
|
||||
$result = API::error('unauthorized');
|
||||
|
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);
|
||||
|
||||
// Impostazioni di debug
|
||||
if (!empty($debug)) {
|
||||
if (!empty($debug) && !API::isAPIRequest()) {
|
||||
// Ignoramento degli avvertimenti e delle informazioni relative alla deprecazione di componenti
|
||||
if (empty($strict)) {
|
||||
error_reporting(E_ALL & ~E_NOTICE & ~E_USER_DEPRECATED);
|
||||
@ -79,7 +79,7 @@ if (!empty($debug)) {
|
||||
$whoops->pushHandler($prettyPageHandler);
|
||||
|
||||
// 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());
|
||||
}
|
||||
|
||||
|
@ -136,7 +136,7 @@ class API extends \Util\Singleton
|
||||
|
||||
public function update($resource)
|
||||
{
|
||||
return $this->fileRequest($resource, 'generate');
|
||||
return $this->fileRequest($resource, 'update');
|
||||
}
|
||||
|
||||
public function delete($resource)
|
||||
@ -148,15 +148,24 @@ class API extends \Util\Singleton
|
||||
{
|
||||
$resources = self::getResources()[$kind];
|
||||
|
||||
if (!in_array($resource, $resources)) {
|
||||
if (!in_array($resource, array_keys($resources))) {
|
||||
return self::error('notFound');
|
||||
}
|
||||
|
||||
// Database
|
||||
$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';
|
||||
include $filename;
|
||||
|
||||
$dbo->query('COMMIT');
|
||||
|
||||
return self::response($results);
|
||||
}
|
||||
|
||||
@ -182,11 +191,13 @@ class API extends \Util\Singleton
|
||||
$module = basename(dirname(dirname($operation)));
|
||||
$kind = basename($operation, '.php');
|
||||
|
||||
$resources[$kind] = (array) $resources[$kind];
|
||||
|
||||
$temp = str_replace('/api/', '/custom/api/', $operation);
|
||||
$operation = file_exists($temp) ? $temp : $operation;
|
||||
|
||||
$api = include $operation;
|
||||
$api = array_unique($api);
|
||||
$api = is_array($api) ? array_unique($api) : [];
|
||||
|
||||
$keys = array_keys($resources[$kind]);
|
||||
|
||||
@ -196,7 +207,7 @@ class API extends \Util\Singleton
|
||||
$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',
|
||||
];
|
Loading…
Reference in New Issue
Block a user