2017-08-04 16:28:16 +02:00
< ? php
/*
* Creazione dei campi per l ' API ( created_at e updated_at )
*/
2017-08-29 16:34:02 +02:00
// I record precedenti vengono impostati a NULL
2017-08-04 16:28:16 +02:00
$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 ) {
2017-08-28 15:01:02 +02:00
$database -> query ( 'ALTER TABLE `' . $table . '` ADD (`created_at` timestamp DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)' );
2017-08-04 16:28:16 +02:00
} else {
2017-08-28 15:01:02 +02:00
$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
2017-08-04 16:28:16 +02:00
$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 ) . " ), '`', ' \" ') " );
2017-08-30 14:43:38 +02:00
// 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` " );
}
2017-08-30 15:24:26 +02:00
$database -> query ( " ALTER TABLE `in_interventi` DROP PRIMARY KEY, CHANGE `idintervento` `codice` varchar(25) NOT NULL UNIQUE, ADD PRIMARY KEY (`id`) " );
$database -> query ( " DROP INDEX primary_key ON `in_interventi` " );
2017-08-30 14:43:38 +02:00
2017-08-28 15:01:02 +02:00
// 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`' );
2017-08-04 16:28:16 +02:00
$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 );
}
}