From 6f70484c41957ac6f81d7e224140bd361863e2fa Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Fri, 10 Aug 2018 17:14:09 +0200 Subject: [PATCH] Modelli Eloquent di base Aggiunti i modelli Eloquent per la gestione delle strutture di base del database. Utilizzi da implementare. --- call.php | 4 +- core.php | 41 +++++---- editor.php | 14 +-- log.php | 2 +- modules/aggiornamenti/edit.php | 2 +- modules/aggiornamenti/modutil.php | 2 +- modules/anagrafiche/bulk.php | 2 +- modules/ddt/bulk.php | 2 +- modules/fatture/bulk.php | 2 +- modules/utenti/actions.php | 32 ++++--- modules/utenti/api/create.php | 4 +- modules/utenti/edit.php | 4 + modules/utenti/modutil.php | 2 +- src/AJAX.php | 9 +- src/API.php | 7 +- src/App.php | 4 + src/Auth.php | 39 ++++---- src/Mail.php | 3 +- src/Models/Clause.php | 28 ++++++ src/Models/Group.php | 32 +++++++ src/Models/Log.php | 17 ++++ src/Models/Module.php | 148 ++++++++++++++++++++++++++++++ src/Models/Plugin.php | 61 ++++++++++++ src/Models/PrintTemplate.php | 17 ++++ src/Models/Setting.php | 56 +++++++++++ src/Models/User.php | 71 ++++++++++++++ src/Models/View.php | 28 ++++++ src/Modules.php | 141 ++++++---------------------- src/Prints.php | 10 +- src/Update.php | 3 +- update/2_4_2.sql | 3 + 31 files changed, 585 insertions(+), 205 deletions(-) create mode 100644 src/Models/Clause.php create mode 100644 src/Models/Group.php create mode 100644 src/Models/Log.php create mode 100644 src/Models/Module.php create mode 100644 src/Models/Plugin.php create mode 100644 src/Models/PrintTemplate.php create mode 100644 src/Models/Setting.php create mode 100644 src/Models/User.php create mode 100644 src/Models/View.php diff --git a/call.php b/call.php index 9db3b75f5..ea93f917f 100644 --- a/call.php +++ b/call.php @@ -7,10 +7,10 @@ if (isset($id_record)) { $posizione .= ', '.$id_record; } -$dbo->query('UPDATE zz_semaphores SET updated = NOW() WHERE id_utente = '.prepare(Auth::user()['id_utente']).' AND posizione = '.prepare($posizione)); +$dbo->query('UPDATE zz_semaphores SET updated = NOW() WHERE id_utente = '.prepare(Auth::user()['id']).' AND posizione = '.prepare($posizione)); $dbo->query('DELETE FROM zz_semaphores WHERE DATE_ADD(updated, INTERVAL '.(setting('Timeout notifica di presenza (minuti)') * 2).' SECOND) <= NOW()'); -$datas = $dbo->fetchArray('SELECT DISTINCT username FROM zz_semaphores INNER JOIN zz_users ON zz_semaphores.id_utente=zz_users.id WHERE zz_semaphores.id_utente != '.prepare(Auth::user()['id_utente']).' AND posizione = '.prepare($posizione)); +$datas = $dbo->fetchArray('SELECT DISTINCT username FROM zz_semaphores INNER JOIN zz_users ON zz_semaphores.id_utente=zz_users.id WHERE zz_semaphores.id_utente != '.prepare(Auth::user()['id']).' AND posizione = '.prepare($posizione)); $result = []; foreach ($datas as $data) { diff --git a/core.php b/core.php index 17d7a8ff5..a605c82de 100644 --- a/core.php +++ b/core.php @@ -60,7 +60,7 @@ if (!API::isAPIRequest()) { $handlers[] = new StreamHandler($docroot.'/logs/setup.log', Monolog\Logger::EMERGENCY); // Impostazioni di debug - if (!empty($debug)) { + if (App::debug()) { // Ignora gli avvertimenti e le informazioni relative alla deprecazione di componenti error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE & ~E_USER_DEPRECATED); @@ -86,20 +86,20 @@ if (!API::isAPIRequest()) { } // Disabilita la segnalazione degli errori (se il debug è disabilitato) -if (empty($debug)) { +if (!App::debug()) { error_reporting(0); } // Imposta il formato di salvataggio dei log $pattern = '[%datetime%] %channel%.%level_name%: %message%'; -if (!empty($debug)) { +if (App::debug()) { $pattern .= ' %context%'; } $pattern .= PHP_EOL.'%extra% '.PHP_EOL; $monologFormatter = new Monolog\Formatter\LineFormatter($pattern); -if (!empty($debug)) { +if (App::debug()) { $monologFormatter->includeStacktraces(true); } @@ -111,6 +111,9 @@ foreach ($handlers as $handler) { // Imposta Monolog come gestore degli errori Monolog\ErrorHandler::register($logger); +// Database +$dbo = $database = Database::getConnection(); + // Inizializzazione della sessione if (!API::isAPIRequest()) { // Sicurezza della sessioni @@ -119,6 +122,20 @@ if (!API::isAPIRequest()) { session_set_cookie_params(0, $rootdir, null, isHTTPS(true)); session_start(); + + // Barra di debug (necessario per loggare tutte le query) + if (App::debug()) { + $debugbar = new DebugBar\DebugBar(); + + $debugbar->addCollector(new DebugBar\DataCollector\MemoryCollector()); + $debugbar->addCollector(new DebugBar\DataCollector\PhpInfoCollector()); + + $debugbar->addCollector(new DebugBar\DataCollector\RequestDataCollector()); + $debugbar->addCollector(new DebugBar\DataCollector\TimeDataCollector()); + + $debugbar->addCollector(new DebugBar\Bridge\MonologCollector($logger)); + $debugbar->addCollector(new Extension\EloquentCollector($dbo->getCapsule())); + } } // Istanziamento del gestore delle traduzioni del progetto @@ -133,8 +150,6 @@ $translator->setLocale($lang, $formatter); $version = Update::getVersion(); $revision = Update::getRevision(); -$dbo = Database::getConnection(); - // Controllo sulla presenza dei permessi di accesso basilari $continue = $dbo->isInstalled() && !Update::isUpdateAvailable() && (Auth::check() || API::isAPIRequest()); @@ -156,20 +171,6 @@ if (!API::isAPIRequest()) { // Impostazioni di Content-Type e Charset Header header('Content-Type: text/html; charset=UTF-8'); - // Barra di debug - if (App::debug()) { - $debugbar = new DebugBar\DebugBar(); - - $debugbar->addCollector(new DebugBar\DataCollector\MemoryCollector()); - $debugbar->addCollector(new DebugBar\DataCollector\PhpInfoCollector()); - - $debugbar->addCollector(new DebugBar\DataCollector\RequestDataCollector()); - $debugbar->addCollector(new DebugBar\DataCollector\TimeDataCollector()); - - $debugbar->addCollector(new DebugBar\Bridge\MonologCollector($logger)); - $debugbar->addCollector(new Extension\EloquentCollector($dbo->getCapsule())); - } - // Controllo CSRF csrfProtector::init(); diff --git a/editor.php b/editor.php index bd1d4c05c..e6d4cf1b6 100755 --- a/editor.php +++ b/editor.php @@ -18,9 +18,9 @@ echo '{( "name": "widgets", "id_module": "'.$id_module.'", "id_record": "'.$id_r $advanced_sessions = setting('Attiva notifica di presenza utenti sul record'); if ($advanced_sessions) { - $dbo->query('DELETE FROM zz_semaphores WHERE id_utente='.prepare(Auth::user()['id_utente']).' AND posizione='.prepare($id_module.', '.$id_record)); + $dbo->query('DELETE FROM zz_semaphores WHERE id_utente='.prepare(Auth::user()['id']).' AND posizione='.prepare($id_module.', '.$id_record)); - $dbo->query('INSERT INTO zz_semaphores (id_utente, posizione, updated) VALUES ('.prepare(Auth::user()['id_utente']).', '.prepare($id_module.', '.$id_record).', NOW())'); + $dbo->query('INSERT INTO zz_semaphores (id_utente, posizione, updated) VALUES ('.prepare(Auth::user()['id']).', '.prepare($id_module.', '.$id_record).', NOW())'); echo '
@@ -325,7 +325,7 @@ if ($read_only || !empty($block_edit)) { $(".btn-success, button[type=submit]").bind("click", function() { content_was_modified = false; }); - + $( "form" ).bind( "submit", function() { content_was_modified = false; }) @@ -339,14 +339,14 @@ if ($read_only || !empty($block_edit)) { return dialogText; } }; - + window.addEventListener("unload", function(e) { //console.log(e); $("#main_loading").show(); }); - - - + + + fetchArray($q); $n = sizeof($rs); diff --git a/modules/aggiornamenti/edit.php b/modules/aggiornamenti/edit.php index 5ce59aef3..fc8090a51 100644 --- a/modules/aggiornamenti/edit.php +++ b/modules/aggiornamenti/edit.php @@ -137,7 +137,7 @@ foreach ($modules as $module) { '; // Prima di cambiare modulo verifico se ci sono sottomoduli - echo submodules($module['children']); + echo submodules($module['all_children']); } echo ' diff --git a/modules/aggiornamenti/modutil.php b/modules/aggiornamenti/modutil.php index dfd071375..fddd26ffb 100644 --- a/modules/aggiornamenti/modutil.php +++ b/modules/aggiornamenti/modutil.php @@ -72,7 +72,7 @@ function submodules($list, $depth = 1) '; - $result .= submodules($sub['children'], $depth + 1); + $result .= submodules($sub['all_children'], $depth + 1); } return $result; diff --git a/modules/anagrafiche/bulk.php b/modules/anagrafiche/bulk.php index 81057e372..5a6a0c8a5 100644 --- a/modules/anagrafiche/bulk.php +++ b/modules/anagrafiche/bulk.php @@ -5,7 +5,7 @@ include_once __DIR__.'/../../core.php'; switch (post('op')) { case 'delete-bulk': - if ($debug) { + if (App::debug()) { $id_azienda = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Azienda'")[0]['idtipoanagrafica']; foreach ($id_records as $id) { diff --git a/modules/ddt/bulk.php b/modules/ddt/bulk.php index 556b52fee..81c913530 100644 --- a/modules/ddt/bulk.php +++ b/modules/ddt/bulk.php @@ -128,7 +128,7 @@ switch (post('op')) { case 'delete-bulk': - if ($debug) { + if (App::debug()) { foreach ($id_records as $id) { $dbo->query('DELETE FROM dt_ddt WHERE id = '.prepare($id).Modules::getAdditionalsQuery($id_module)); $dbo->query('DELETE FROM dt_righe_ddt WHERE idddt='.prepare($id).Modules::getAdditionalsQuery($id_module)); diff --git a/modules/fatture/bulk.php b/modules/fatture/bulk.php index 1405c8639..1f6be9829 100644 --- a/modules/fatture/bulk.php +++ b/modules/fatture/bulk.php @@ -49,7 +49,7 @@ switch (post('op')) { case 'delete-bulk': - if ($debug) { + if (App::debug()) { foreach ($id_records as $id) { $dbo->query('DELETE FROM co_documenti WHERE id = '.prepare($id).Modules::getAdditionalsQuery($id_module)); $dbo->query('DELETE FROM co_righe_documenti WHERE iddocumento='.prepare($id).Modules::getAdditionalsQuery($id_module)); diff --git a/modules/utenti/actions.php b/modules/utenti/actions.php index b1f412cd2..db9c4b9c5 100644 --- a/modules/utenti/actions.php +++ b/modules/utenti/actions.php @@ -155,20 +155,26 @@ switch (filter('op')) { $idmodulo = filter('idmodulo'); // Verifico che ci sia il permesso per questo gruppo - $rs = $dbo->fetchArray('SELECT * FROM zz_permissions WHERE idgruppo='.prepare($id_record).' AND idmodule='.prepare($idmodulo)); - if (count($rs) == 0) { - $query = 'INSERT INTO zz_permissions(idgruppo, idmodule, permessi) VALUES('.prepare($id_record).', '.prepare($idmodulo).', '.prepare($permessi).')'; - } else { - $query = 'UPDATE zz_permissions SET permessi='.prepare($permessi).' WHERE id='.prepare($rs[0]['id']); - } - - // Aggiunta dei permessi relativi alle viste - $count = $dbo->fetchArray('SELECT COUNT(*) AS count FROM `zz_group_view` WHERE `id_gruppo` = '.prepare($id_record).' AND `id_vista` IN (SELECT `id` FROM `zz_views` WHERE `id_module`='.prepare($idmodulo).')'); - if (empty($count[0]['count'])) { - $results = $dbo->fetchArray('SELECT `id_vista` FROM `zz_group_view` WHERE `id_vista` IN (SELECT `id` FROM `zz_views` WHERE `id_module`='.prepare($idmodulo).')'); - foreach ($results as $result) { - $dbo->attach('zz_group_view', ['id_vista' => $result['id_vista']], ['id_gruppo' => $id_record]); + if ($permessi != '-') { + $rs = $dbo->fetchArray('SELECT * FROM zz_permissions WHERE idgruppo='.prepare($id_record).' AND idmodule='.prepare($idmodulo)); + if (empty($rs)) { + $query = 'INSERT INTO zz_permissions(idgruppo, idmodule, permessi) VALUES('.prepare($id_record).', '.prepare($idmodulo).', '.prepare($permessi).')'; + } else { + $query = 'UPDATE zz_permissions SET permessi='.prepare($permessi).' WHERE id='.prepare($rs[0]['id']); } + + // Aggiunta dei permessi relativi alle viste + $count = $dbo->fetchNum('SELECT * FROM `zz_group_view` WHERE `id_gruppo` = '.prepare($id_record).' AND `id_vista` IN (SELECT `id` FROM `zz_views` WHERE `id_module`='.prepare($idmodulo).')'); + + if (empty($count)) { + $results = $dbo->fetchArray('SELECT `id_vista` FROM `zz_group_view` WHERE `id_vista` IN (SELECT `id` FROM `zz_views` WHERE `id_module`='.prepare($idmodulo).')'); + + foreach ($results as $result) { + $dbo->attach('zz_group_view', ['id_vista' => $result['id_vista']], ['id_gruppo' => $id_record]); + } + } + } else { + $query = 'DELETE FROM zz_permissions WHERE idgruppo='.prepare($id_record).' AND idmodule='.prepare($idmodulo); } $dbo->query($query); diff --git a/modules/utenti/api/create.php b/modules/utenti/api/create.php index 1faeb5919..c3c8d4d3d 100644 --- a/modules/utenti/api/create.php +++ b/modules/utenti/api/create.php @@ -8,7 +8,7 @@ switch ($resource) { $token = Auth::getInstance()->getToken(); // Informazioni da restituire tramite l'API - $response['user'] = $dbo->fetchArray('SELECT `ragione_sociale`, `codice`, `piva`, `codice_fiscale`, `indirizzo`, `citta`, `provincia`, (SELECT `nome` FROM `an_nazioni` WHERE `an_nazioni`.`id` = `an_anagrafiche`.`id_nazione`) AS nazione, `telefono`, `fax`, `cellulare`, `an_anagrafiche`.`email` FROM `zz_users` LEFT JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `zz_users`.`idanagrafica` WHERE `id` = '.prepare($user['id_utente']))[0]; + $response['user'] = $dbo->fetchArray('SELECT `ragione_sociale`, `codice`, `piva`, `codice_fiscale`, `indirizzo`, `citta`, `provincia`, (SELECT `nome` FROM `an_nazioni` WHERE `an_nazioni`.`id` = `an_anagrafiche`.`id_nazione`) AS nazione, `telefono`, `fax`, `cellulare`, `an_anagrafiche`.`email` FROM `zz_users` LEFT JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `zz_users`.`idanagrafica` WHERE `id` = '.prepare($user['id']))[0]; $response['token'] = $token; @@ -30,7 +30,7 @@ switch ($resource) { case 'logout': if (!empty($request['token']) && !empty($user)) { // Cancellazione della chiave - $database->query('DELETE FROM `zz_tokens` WHERE `token` = '.prepare($request['token']).' AND `id_utente` = '.prepare($user['id_utente'])); + $database->query('DELETE FROM `zz_tokens` WHERE `token` = '.prepare($request['token']).' AND `id_utente` = '.prepare($user['id'])); } else { $response = [ 'status' => API::getStatus()['unauthorized']['code'], diff --git a/modules/utenti/edit.php b/modules/utenti/edit.php index 9ee815fd0..7c26b17c1 100644 --- a/modules/utenti/edit.php +++ b/modules/utenti/edit.php @@ -162,6 +162,10 @@ if ($record['editable'] == 1) { echo '