Ottimizzazzione Database

This commit is contained in:
Thomas Zilio 2018-07-03 15:05:27 +02:00
parent 8f11a2b264
commit bb47682f03
8 changed files with 33 additions and 30 deletions

View File

@ -31,11 +31,7 @@ $results['summable'] = [];
if (!empty($result_query) && $result_query != 'menu' && $result_query != 'custom') { if (!empty($result_query) && $result_query != 'menu' && $result_query != 'custom') {
// Conteggio totale // Conteggio totale
$count_query = 'SELECT COUNT(*) as `tot` FROM ('.$result_query.') AS `count`'; $results['recordsTotal'] = $dbo->fetchNum($result_query);
$count = $dbo->fetchArray($count_query);
if (!empty($count)) {
$results['recordsTotal'] = $count[0]['tot'];
}
// Filtri di ricerica // Filtri di ricerica
$search_filters = []; $search_filters = [];

View File

@ -2,6 +2,11 @@
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
$id_azienda = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Azienda'")[0]['idtipoanagrafica'];
$id_cliente = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Cliente'")[0]['idtipoanagrafica'];
$id_fornitore = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Fornitore'")[0]['idtipoanagrafica'];
$id_tecnico = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Tecnico'")[0]['idtipoanagrafica'];
switch (post('op')) { switch (post('op')) {
case 'update': case 'update':
$post['piva'] = trim(strtoupper($post['piva'])); $post['piva'] = trim(strtoupper($post['piva']));
@ -183,8 +188,9 @@ switch (post('op')) {
// Inserisco il rapporto dell'anagrafica (cliente, tecnico, ecc) // Inserisco il rapporto dell'anagrafica (cliente, tecnico, ecc)
$dbo->sync('an_tipianagrafiche_anagrafiche', ['idanagrafica' => $new_id], ['idtipoanagrafica' => (array) $idtipoanagrafica]); $dbo->sync('an_tipianagrafiche_anagrafiche', ['idanagrafica' => $new_id], ['idtipoanagrafica' => (array) $idtipoanagrafica]);
if (in_array($id_azienda, $post['idtipoanagrafica'])) { if (in_array($id_azienda, $idtipoanagrafica)) {
$dbo->query('UPDATE zz_settings SET valore='.prepare($new_id)." WHERE nome='Azienda predefinita'"); Settings::set('Azienda predefinita', $new_id);
$_SESSION['infos'][] = tr('Anagrafica Azienda impostata come predefinita. Per ulteriori informazionioni, visitare "Strumenti -> Impostazioni -> Generali".'); $_SESSION['infos'][] = tr('Anagrafica Azienda impostata come predefinita. Per ulteriori informazionioni, visitare "Strumenti -> Impostazioni -> Generali".');
} }
@ -266,19 +272,13 @@ switch (post('op')) {
// Operazioni aggiuntive per il logo // Operazioni aggiuntive per il logo
if (filter('op') == 'link_file') { if (filter('op') == 'link_file') {
$nome = 'Logo stampe'; if (Settings::get('Azienda predefinita') == $id_record && filter('nome_allegato') == 'Logo stampe') {
if (Settings::get('Azienda predefinita') == $id_record && filter('nome_allegato') == $nome) {
$file = $dbo->selectOne('zz_files', ['filename'], [ $file = $dbo->selectOne('zz_files', ['filename'], [
'nome' => $nome, 'nome' => $nome,
'id_module' => $id_module, 'id_module' => $id_module,
'id_record' => $id_record, 'id_record' => $id_record,
]); ]);
$dbo->update('zz_settings', [ Settings::set('Logo stampe', $nome);
'valore' => $file['filename'],
], [
'nome' => $nome,
]);
} }
} }

View File

@ -2,11 +2,6 @@
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
$id_azienda = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Azienda'")[0]['idtipoanagrafica'];
$id_cliente = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Cliente'")[0]['idtipoanagrafica'];
$id_fornitore = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Fornitore'")[0]['idtipoanagrafica'];
$id_tecnico = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Tecnico'")[0]['idtipoanagrafica'];
if (isset($id_record)) { if (isset($id_record)) {
$records = $dbo->fetchArray('SELECT *, (SELECT GROUP_CONCAT(an_tipianagrafiche.idtipoanagrafica) FROM an_tipianagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche.idtipoanagrafica=an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE idanagrafica=an_anagrafiche.idanagrafica) AS idtipianagrafica, (SELECT GROUP_CONCAT(idagente) FROM an_anagrafiche_agenti WHERE idanagrafica=an_anagrafiche.idanagrafica) AS idagenti, (SELECT GROUP_CONCAT(descrizione) FROM an_tipianagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche.idtipoanagrafica=an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE idanagrafica=an_anagrafiche.idanagrafica) AS tipianagrafica FROM an_anagrafiche GROUP BY idanagrafica HAVING idanagrafica='.prepare($id_record).' '.Modules::getAdditionalsQuery($id_module)); $records = $dbo->fetchArray('SELECT *, (SELECT GROUP_CONCAT(an_tipianagrafiche.idtipoanagrafica) FROM an_tipianagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche.idtipoanagrafica=an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE idanagrafica=an_anagrafiche.idanagrafica) AS idtipianagrafica, (SELECT GROUP_CONCAT(idagente) FROM an_anagrafiche_agenti WHERE idanagrafica=an_anagrafiche.idanagrafica) AS idagenti, (SELECT GROUP_CONCAT(descrizione) FROM an_tipianagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche.idtipoanagrafica=an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE idanagrafica=an_anagrafiche.idanagrafica) AS tipianagrafica FROM an_anagrafiche GROUP BY idanagrafica HAVING idanagrafica='.prepare($id_record).' '.Modules::getAdditionalsQuery($id_module));

View File

@ -111,7 +111,7 @@ class API extends \Util\Singleton
include $filename; include $filename;
} elseif ( } elseif (
!in_array($resource, explode(',', Settings::get('Tabelle escluse per la sincronizzazione API automatica'))) !in_array($resource, explode(',', Settings::get('Tabelle escluse per la sincronizzazione API automatica')))
&& $database->fetchNum('SHOW TABLES WHERE `Tables_in_'.$database->getDatabaseName().'` = '.prepare($resource)) && $database->tableExists($resource)
) { ) {
$table = $resource; $table = $resource;

View File

@ -411,7 +411,7 @@ class Auth extends \Util\Singleton
{ {
$database = Database::getConnection(); $database = Database::getConnection();
if (!$database->isInstalled() || !$database->fetchNum("SHOW TABLES LIKE 'zz_logs'") || Update::isUpdateAvailable()) { if (!$database->isInstalled() || !$database->tableExists('zz_logs') || Update::isUpdateAvailable()) {
return false; return false;
} }

View File

@ -174,7 +174,7 @@ class Database extends Util\Singleton
public function isInstalled() public function isInstalled()
{ {
if (empty($this->is_installed)) { if (empty($this->is_installed)) {
$this->is_installed = $this->isConnected() && $this->fetchNum("SHOW TABLES LIKE 'zz_modules'"); $this->is_installed = $this->tableExists('zz_modules');
} }
return $this->is_installed; return $this->is_installed;
@ -321,16 +321,28 @@ class Database extends Util\Singleton
* *
* @param string $query Query da eseguire * @param string $query Query da eseguire
* *
* @return array * @return int
*/ */
public function fetchNum($query) public function fetchNum($query)
{ {
$result = $this->fetchArray($query); $result = $this->fetchArray('SELECT COUNT(*) as `tot` FROM ('.$query.') AS `count`');
if (is_array($result)) {
return count($result); if (!empty($result)) {
return $result[0]['tot'];
} }
return $result; return 0;
}
public function tableExists($table)
{
$results = null;
if ($this->isConnected()) {
$results = $this->fetchArray("SHOW TABLES LIKE '".$table."'");
}
return !empty($results);
} }
/** /**

View File

@ -17,7 +17,7 @@ class Update
{ {
$database = Database::getConnection(); $database = Database::getConnection();
$database_ready = $database->isConnected() && $database->fetchNum("SHOW TABLES LIKE 'updates'"); $database_ready = $database->isConnected() && $database->tableExists('updates');
// Individuazione di tutti gli aggiornamenti fisicamente presenti // Individuazione di tutti gli aggiornamenti fisicamente presenti
// Aggiornamenti del gestionale // Aggiornamenti del gestionale

View File

@ -91,7 +91,7 @@ $tables = [
]; ];
foreach ($tables as $table) { foreach ($tables as $table) {
if ($database->fetchNum('SHOW TABLES WHERE `Tables_in_'.$database->getDatabaseName().'` = '.prepare($table))) { if ($database->tableExists($table)) {
$query = 'SHOW COLUMNS FROM `'.$table.'` IN `'.$database->getDatabaseName()."` WHERE Field='|field|'"; $query = 'SHOW COLUMNS FROM `'.$table.'` IN `'.$database->getDatabaseName()."` WHERE Field='|field|'";
$created_at = $database->fetchArray(str_replace('|field|', 'created_at', $query)); $created_at = $database->fetchArray(str_replace('|field|', 'created_at', $query));