240 lines
7.0 KiB
PHP
240 lines
7.0 KiB
PHP
<?php
|
|
|
|
/*
|
|
* Creazione dei campi per l'API (created_at e updated_at)
|
|
*/
|
|
|
|
// I record precedenti vengono impostati a NULL
|
|
$tables = [
|
|
'an_anagrafiche',
|
|
'an_anagrafiche_agenti',
|
|
'an_nazioni',
|
|
'an_referenti',
|
|
'an_relazioni',
|
|
'an_sedi',
|
|
'an_tipianagrafiche',
|
|
'an_tipianagrafiche_anagrafiche',
|
|
'an_zone',
|
|
'co_contratti',
|
|
'co_contratti_tipiintervento',
|
|
'co_documenti',
|
|
'co_iva',
|
|
'co_movimenti',
|
|
'co_ordiniservizio',
|
|
'co_ordiniservizio_pianificazionefatture',
|
|
'co_ordiniservizio_vociservizio',
|
|
'co_pagamenti',
|
|
'co_pianodeiconti1',
|
|
'co_pianodeiconti2',
|
|
'co_pianodeiconti3',
|
|
'co_preventivi',
|
|
'co_preventivi_interventi',
|
|
'co_righe2_contratti',
|
|
'co_righe_contratti',
|
|
'co_righe_documenti',
|
|
'co_righe_preventivi',
|
|
'co_ritenutaacconto',
|
|
'co_rivalsainps',
|
|
'co_scadenziario',
|
|
'co_staticontratti',
|
|
'co_statidocumento',
|
|
'co_statipreventivi',
|
|
'co_tipidocumento',
|
|
'dt_aspettobeni',
|
|
'dt_automezzi',
|
|
'dt_automezzi_tecnici',
|
|
'dt_causalet',
|
|
'dt_ddt',
|
|
'dt_porto',
|
|
'dt_righe_ddt',
|
|
'dt_spedizione',
|
|
'dt_statiddt',
|
|
'dt_tipiddt',
|
|
'in_interventi',
|
|
'in_interventi_tecnici',
|
|
'in_righe_interventi',
|
|
'in_statiintervento',
|
|
'in_tariffe',
|
|
'in_tipiintervento',
|
|
'in_vociservizio',
|
|
'mg_articoli',
|
|
'mg_articoli_automezzi',
|
|
'mg_articoli_interventi',
|
|
'mg_categorie',
|
|
'mg_listini',
|
|
'mg_movimenti',
|
|
'mg_prodotti',
|
|
'mg_unitamisura',
|
|
'my_componenti_interventi',
|
|
'my_impianti',
|
|
'my_impianti_contratti',
|
|
'my_impianti_interventi',
|
|
'my_impianto_componenti',
|
|
'or_ordini',
|
|
'or_righe_ordini',
|
|
'or_statiordine',
|
|
'or_tipiordine',
|
|
'zz_tokens',
|
|
'zz_files',
|
|
'zz_groups',
|
|
'zz_group_module',
|
|
'zz_settings',
|
|
'zz_logs',
|
|
'zz_modules',
|
|
'zz_plugins',
|
|
'zz_permissions',
|
|
'zz_users',
|
|
'zz_widgets',
|
|
'zz_views',
|
|
'zz_group_view',
|
|
'zz_semaphores',
|
|
];
|
|
|
|
// created_at e updated_at
|
|
$latest_ver = version_compare($mysql_ver, '5.6.5') >= 0;
|
|
foreach ($tables as $table) {
|
|
if ($latest_ver) {
|
|
$database->query('ALTER TABLE `'.$table.'` ADD (`created_at` timestamp DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)');
|
|
} else {
|
|
$database->query('ALTER TABLE `'.$table.'` ADD (`created_at` timestamp DEFAULT NULL, `updated_at` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)');
|
|
$database->query('UPDATE '.$table.' SET created_at = updated_at');
|
|
|
|
// Trigger per l'inizializzazione automatica di created_at
|
|
$database->query('CREATE TRIGGER '.$table.'_creation BEFORE INSERT ON '.$table.' FOR EACH ROW SET NEW.created_at = CURRENT_TIMESTAMP');
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Inserimento valori di default
|
|
*/
|
|
|
|
// Permessi di default delle viste
|
|
$gruppi = $database->fetchArray('SELECT `id` FROM `zz_groups`');
|
|
$results = $database->fetchArray('SELECT `id` FROM `zz_views` WHERE `id` NOT IN (SELECT `id_vista` FROM `zz_group_view`)');
|
|
|
|
$array = [];
|
|
foreach ($results as $result) {
|
|
foreach ($gruppi as $gruppo) {
|
|
$array[] = [
|
|
'id_gruppo' => $gruppo['id'],
|
|
'id_vista' => $result['id'],
|
|
];
|
|
}
|
|
}
|
|
if (!empty($array)) {
|
|
$database->insert('zz_group_view', $array);
|
|
}
|
|
|
|
// Generazione delle chiavi di default per gli utenti
|
|
$utenti = $database->fetchArray('SELECT `idutente` FROM `zz_users`');
|
|
|
|
$array = [];
|
|
foreach ($utenti as $utente) {
|
|
$array[] = [
|
|
'id_utente' => $utente['idutente'],
|
|
'token' => secure_random_string(),
|
|
];
|
|
}
|
|
if (!empty($array)) {
|
|
$database->insert('zz_tokens', $array);
|
|
}
|
|
|
|
/*
|
|
* Fix
|
|
*/
|
|
|
|
// Fix per i contenuti ini inseriti all'interno del database
|
|
$database->query("UPDATE mg_articoli SET contenuto = REPLACE(REPLACE(REPLACE(contenuto, '"', '\"'), '\n', ".prepare(PHP_EOL)."), '`', '\"')");
|
|
$database->query("UPDATE my_impianto_componenti SET contenuto = REPLACE(REPLACE(REPLACE(contenuto, '"', '\"'), '\n', ".prepare(PHP_EOL)."), '`', '\"')");
|
|
|
|
// Fix per la presenza della Foreign Key in in_interventi_tecnici
|
|
$fk = $database->fetchArray('SELECT TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_SCHEMA = '.prepare($database->getDatabaseName())." AND REFERENCED_TABLE_NAME = 'in_interventi' AND CONSTRAINT_NAME = 'in_interventi_tecnici_ibfk_1'");
|
|
if(!empty($fk)){
|
|
$database->query("ALTER TABLE `in_interventi_tecnici` DROP FOREIGN KEY `in_interventi_tecnici_ibfk_1`");
|
|
}
|
|
|
|
$database->query("ALTER TABLE `in_interventi` CHANGE `idintervento` `codice` varchar(25) NOT NULL UNIQUE");
|
|
|
|
// Fix dei timestamp delle tabelle mg_prodotti, mg_movimenti, zz_logs e zz_files
|
|
$database->query('UPDATE `mg_prodotti` SET `created_at` = `data`, `updated_at` = `data`');
|
|
$database->query('ALTER TABLE `mg_prodotti` DROP `data`');
|
|
|
|
$database->query('UPDATE `mg_movimenti` SET `created_at` = `data`, `updated_at` = `data`');
|
|
$database->query('ALTER TABLE `mg_movimenti` DROP `data`');
|
|
|
|
$database->query('UPDATE `zz_logs` SET `created_at` = `timestamp`, `updated_at` = `timestamp`');
|
|
$database->query('ALTER TABLE `zz_logs` DROP `timestamp`');
|
|
|
|
$database->query('UPDATE `zz_files` SET `created_at` = `data`, `updated_at` = `data`');
|
|
$database->query('ALTER TABLE `zz_files` DROP `data`');
|
|
|
|
/*
|
|
* Rimozione file e cartelle deprecati
|
|
*/
|
|
|
|
// Cartelle deprecate
|
|
$dirs = [
|
|
'lib/jscripts',
|
|
'lib/html2pdf',
|
|
'widgets',
|
|
'share',
|
|
];
|
|
|
|
foreach ($dirs as $dir) {
|
|
$dir = realpath($docroot.'/'.$dir);
|
|
if (is_dir($dir)) {
|
|
deltree($dir);
|
|
}
|
|
}
|
|
|
|
// File deprecati
|
|
$files = [
|
|
'lib/class.phpmailer.php',
|
|
'lib/class.pop3.php',
|
|
'lib/class.smtp.php',
|
|
'lib/PHPMailerAutoload.php',
|
|
'lib/dbo.class.php',
|
|
'lib/html-helpers.class.php',
|
|
'lib/photo.class.php',
|
|
'lib/widgets.class.php',
|
|
'templates/pdfgen.php',
|
|
'update/install_2.0.sql',
|
|
'update/update_2.1.sql',
|
|
'update/update_2.1.php',
|
|
'update/update_2.2.sql',
|
|
'update/update_2.2.php',
|
|
'update/update_checker.php',
|
|
'permissions.php',
|
|
'settings.php',
|
|
'addgroup.php',
|
|
'adduser.php',
|
|
'change_pwd.php',
|
|
'README',
|
|
];
|
|
|
|
foreach ($files as $file) {
|
|
$file = realpath($docroot.'/'.$file);
|
|
if (file_exists($file)) {
|
|
unlink($file);
|
|
}
|
|
}
|
|
|
|
// File .html dei moduli di default
|
|
// Per un problema sulla lunghezza massima del path su glob è necessario dividere le cartelle dei moduli di default da pulire
|
|
$dirs = [
|
|
'aggiornamenti,anagrafiche,articoli,automezzi,backup',
|
|
'beni,categorie,causali,contratti,dashboard',
|
|
'ddt,fatture,gestione_componenti,interventi,iva',
|
|
'listini,misure,my_impianti,opzioni,ordini,pagamenti',
|
|
'partitario,porti,preventivi,primanota,scadenzario',
|
|
'stati_intervento,tecnici_tariffe,tipi_anagrafiche,tipi_intervento',
|
|
'utenti,viste,voci_servizio,zone',
|
|
];
|
|
|
|
foreach ($dirs as $dir) {
|
|
$files = glob($docroot.'/modules/{'.$dir.'}/*.html', GLOB_BRACE);
|
|
foreach ($files as $file) {
|
|
unlink($file);
|
|
}
|
|
}
|