diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8db9e1787..c70f21b0d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -16,53 +16,72 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k
### Aggiunto (Added)
+- Creazione di sistemi centralizzati per la gestione della funzioni principali del progetto (secondo una logica ad oggetti)
+ - Connessione al database (tramite PDO, con possibile ampliamento dei DMBS supportati)
+ - Autenticazione degli utenti
+ - Gestione e controllo dei permessi
+ - Gestione degli input degli utenti
+ - Personalizzazione delle impostazioni
+ - Traduzione e conversione dei formati (date e numeri)
+ - Gestione degli aggiornamenti
- Creazione della documentazione ufficiale per sviluppatori (disponibile nel Wiki e in `docs/`)
- Creazione di un sistema API ufficiale
-- Creazione di sistemi centralizzati per la gestione della connessione al database, dell'autenticazione, degli input degli utenti, dei permessi, delle impostazioni, delle traduzioni e degli aggiornamenti (secondo una logica ad oggetti)
-- Nuova gestione delle operazioni di debugging e logging
-- Nuovi plugins e widgets
-- Nuovi moduli _Viste_, _Utenti e permessi_, _Opzioni_, con ulteriori moduli per la gestione di tabelle secondarie (_IVA_, _Pagamenti_, ...)
-- Possibilità di vedere se ci sono altri utenti che stanno visualizzando lo stesso record (opzione "Sessione avanzata" nel modulo _Opzioni_)
+- Creazione di cartelle di default per i backup (`backup/`) e i log (`logs/`)
+- Completo supporto alla traduzione del progetto
+- Possibilità di vedere se ci sono altri utenti che stanno visualizzando lo stesso record (opzione "Attiva notifica di presenza utenti sul record" nel modulo **Impostazioni**)
- Possibilità di creare nuovi elementi dei moduli all'interno del record (oltre che dalla visualizzazione generale del modulo)
- Nuova struttura per permettere il richiamo via AJAX delle procedure per la creazione di nuovi elementi all'esterno del modulo specifico (tramite il file `add.php`)
-- Miglioramento della documentazione integrata delle funzioni PHP in `lib/functions.php`
-- Nuovo file `lib/init.js` per permettere una rapida inizializzazione dei componenti JS
-- Creazione di cartelle di default per i backup (`backup/`) e i log (`logs/`)
+- Nuovo sistema di gestione delle operazioni di debugging e logging
+- Nuovi plugins e widgets
+- Introduzione di nuovi moduli primari e secondari
+ - **Viste**
+ - **Utenti e permessi** (convertito)
+ - **Impostazioni** (convertito)
+ - **IVA**
+ - **Pagamenti**
+ - **Porto**
+ - **Unità di misura**
+ - **Aspetto beni**
+ - **Causali**
+ - **Categorie**
+ - **Ritenute acconto**
+ - **Movimenti**
+- Nuovo modulo per gestire i file `.ini` dei componenti degli impianti (**Gestione componenti**)
- Nuovo pulsante per resettare i filtri di ricerca (nella sezione generica dei moduli)
-- Nuovo modulo per gestire i file `.ini` dei componenti degli impianti
- Nuova gestione generalizzata degli upload
+- Nuova sistema di gestione delle operazioni _bulk_ degli upload
+- Nuova documentazione integrata delle funzioni PHP in `lib/functions.php`
+- Nuovo file `lib/init.js` per permettere una rapida inizializzazione dei componenti JS
- Nuove funzioni relative ai diversi moduli
- - Possibilità di individuare i componenti dell'impianto su cui l'intervento viene effettuato
- - Possibilità di gestire le ritenute d'acconto
- - Firma degli interventi
- - Selezione della tipologia di attività per ogni sessione di lavoro
- - Tabella riepilogativa più completa dei costi
- - Sconto globale in _Interventi_, _Fatture_, _DDT_, _Ordini_, _Preventivi_
+ - Introduzione della numerazione univoca per gli impianti (**MyImpianti**)
+ - Possibilità di individuare i componenti dell'impianto su cui l'intervento viene effettuato (**Interventi**)
+ - Possibilità di firmare degli interventi (**Interventi**)
+ - Possibilità di selezionare della tipologia di attività per ogni sessione di lavoro (**Interventi**)
+ - Introduzione di una tabella riepilogativa più completa dei costi (**Interventi**)
+ - Introduzione di sconti globali e specifici (unitari e percentuali) in **Contratti**, **DDT**, **Fatture**, **Interventi**, **Preventivi**, **Ordini**
### Modificato (Changed)
- Gestione delle librerie e dipendenze PHP tramite _Composer_
-- Gestione degli assets tramite Yarn e Gulp
-- Miglioramenti grafici
-- Miglioramento della procedura di installazione
-- Miglioramenti delle informazioni disponibili sul progetto e della procedura di segnalazione dei bug
-- Impianti ora identificati tramite numerazione univoca (non più tramite matricola)
-- Sostituzione di Chosen con Select2
-- Miglioramento dell'interpretazione del template per la generazione degli input, ora disponibile ovunque all'interno del progetto
-- Miglioramento generale sull'identificazione del modulo attualmente in uso e sull'inclusione dei file necessari per il funzionamento
-- Miglioramento della gestione dei permessi
-- Gestione della connessione al database tramite PDO (con possibile futuro ampliamento dei DMBS supportati)
-- Gestione delle tabelle ora completamente basata su Datatables
-- Ottimizzazione della schermata per aggiunta dell'intervento
-- Miglioramento dei riquadri delle spese aggiuntive e degli articoli
-- La prima anagrafica di tipo Azienda caricata viene impostata come Azienda predefinita
-- Passaggio completo all'estensione `.php` per tutti i file dei moduli
-- Miglioramento dei permessi di visione per il modulo _MyImpianti_ (ora ogni cliente vede solo i propri impianti)
-- Miglioramento della procedura di aggiornamento del gestionale
+- Gestione degli assets tramite _Yarn_ e _Gulp_
+ - Miglioramenti grafici
+ - Sostituzione di _Chosen_ con _Select2_
+ - Gestione delle tabelle ora completamente basata su _Datatables_
+- Miglioramento della procedura di installazione e aggiornamento del gestionale
- Aggiunto sistema di ripresa dell'aggiornamento (se questi è stato bloccato in una fase intermedia tra i singoli aggiornamenti)
- Aggiunto sistema di bloccaggio dell'aggiornamento, per evitare problemi nel caso molteplici richieste di update
- - Semplificazione della procedura manuale, che ora non richiede nessuna modifica dei file VERSION da parte dell'utente (la versione dell'aggiornamento viene memorizzata nel file VERSION.new)
+ - Semplificazione della procedura manuale, che ora non richiede nessuna modifica dei file VERSION da parte dell'utente
- Modificata la struttura della tabella `updates`
+- Passaggio completo all'estensione `.php` per tutti i file dei moduli
+- Miglioramento dell'interpretazione del template per la generazione degli input, ora disponibile ovunque all'interno del progetto
+- Miglioramento della gestione dei permessi
+- Miglioramento delle stampe principali
+- Miglioramento delle informazioni disponibili sul progetto e della procedura di segnalazione dei bug
+- Miglioramento generale sull'identificazione del modulo attualmente in uso e sull'inclusione dei file necessari per il funzionamento
+- La prima anagrafica di tipo Azienda caricata viene impostata come "Azienda predefinita"
+- Ottimizzazione della schermata per aggiunta dell'intervento
+- Miglioramento dei riquadri delle spese aggiuntive e degli articoli
+- Miglioramento dei permessi di visione per il modulo **MyImpianti** (ogni cliente vede solo i propri impianti)
### Deprecato (Deprecated)
@@ -72,30 +91,29 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k
### Rimosso (Removed)
- Funzioni PHP non utilizzate (`lib/functions.php`)
- - is\_id\_ok
- - write\_error
- - write\_ok
+ - is_id_ok
+ - write_error
+ - write_ok
- getAvailableModules
- - read\_file
+ - read_file
- dateadd
- - show\_info\_messages
- - show\_error\_messages
- - get\_module\_name
+ - show_info_messages
+ - show_error_messages
+ - get_module_name
- mytruncate
- - get\_user\_browser
+ - get_user_browser
- RemoveNonASCIICharacters
- - full\_html\_entity\_decode
- - data\_italiana
- - gestione\_sessioni
- - get\_text\_around
+ - full_html_entity_decode
+ - data_italiana
+ - gestione_sessioni
+ - get_text_around
- coolDate
- - get\_module\_name\_by\_id
- - cut\_text
+ - get_module_name_by_id
+ - cut_text
- getLastPathSegment
- - cut\_text
+ - cut_text
- Funzioni JS non utilizzate (`lib/functionsjs.php`)
-- Cartelle non più utilizzate (`lib/jscripts/`, `lib/html2pdf/`, `widgets`, `share`, ...)
-- File non più utilizzati (`lib/dbo.class.php`, `lib/widgets.class.php`, ...)
+- Cartelle e file non più utilizzati (`lib/jscripts`, `widgets`, `share`, `lib/dbo.class.php`, `lib/widgets.class.php`, ...)
### Fixed
@@ -106,6 +124,7 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k
- Aggiunta protezione contro attacchi di tipo XSS
- Aggiunta base per contrastare l'SQL Injection
- Aggiunta protezione (temporaneamente disabilitata) contro attacchi CSRF
+- Aggiunto sistema basilare contro attacchi brute-force all'accesso
- Passaggio della codifica della password con algoritmo di hashing BCrypt
## 2.2 (2016-11-10)
diff --git a/locale/catalog.pot b/locale/catalog.pot
index 284b448ad..565acb8e7 100644
--- a/locale/catalog.pot
+++ b/locale/catalog.pot
@@ -2,7 +2,7 @@
msgid ""
msgstr ""
"Project-Id-Version: OpenSTAManager\n"
-"POT-Creation-Date: 2017-09-11 18:22+0200\n"
+"POT-Creation-Date: 2017-09-12 10:41+0200\n"
"PO-Revision-Date: 2017-09-06 09:35+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -1112,7 +1112,8 @@ msgstr ""
msgid "Carica"
msgstr ""
-#: lib/functions.php:132 modules/backup/edit.php:10
+#: lib/functions.php:132 modules/aggiornamenti/upload_modules.php:16
+#: modules/backup/edit.php:10
msgid "Estensione zip non supportata!"
msgstr ""
@@ -1387,22 +1388,18 @@ msgid "Cambiare la posizione di questo widget?"
msgstr ""
#: modules/aggiornamenti/upload_modules.php:16
-msgid "Estensione php_zip non caricata!"
+msgid "Verifica e attivala sul tuo file _FILE_"
msgstr ""
-#: modules/aggiornamenti/upload_modules.php:16
-msgid "Verifica e attivala sul tuo php.ini"
-msgstr ""
-
-#: modules/aggiornamenti/upload_modules.php:18
+#: modules/aggiornamenti/upload_modules.php:20
msgid "Il file non è un archivio zip!"
msgstr ""
-#: modules/aggiornamenti/upload_modules.php:65
+#: modules/aggiornamenti/upload_modules.php:63
msgid "File di aggiornamento non riconosciuto!"
msgstr ""
-#: modules/aggiornamenti/upload_modules.php:120
+#: modules/aggiornamenti/upload_modules.php:116
msgid "File di installazione non valido!"
msgstr ""
diff --git a/modules/aggiornamenti/upload_modules.php b/modules/aggiornamenti/upload_modules.php
index e22f0278d..a1ff26d91 100644
--- a/modules/aggiornamenti/upload_modules.php
+++ b/modules/aggiornamenti/upload_modules.php
@@ -13,19 +13,21 @@ $size = $_FILES['blob']['size'];
$type = $_POST['type'];
if (!extension_loaded('zip')) {
- $_SESSION['errors'][] = tr('Estensione php_zip non caricata!').'
'.tr('Verifica e attivala sul tuo php.ini');
+ $_SESSION['errors'][] = tr('Estensione zip non supportata!').'
'.tr('Verifica e attivala sul tuo file _FILE_', [
+ '_FILE_' => 'php.ini'
+ ]);
} elseif (!ends_with($filename, '.zip')) {
$_SESSION['errors'][] = tr('Il file non è un archivio zip!');
} elseif (!empty($tmp) && is_file($tmp)) {
$zip = new ZipArchive();
if ($zip->open($tmp)) {
- $tmpdir = 'tmp/';
+ $tmp_dir = $docroot.'/tmp';
// Controllo sulla cartella
- directory($docroot.'/'.$tmpdir);
+ directory($tmp_dir);
- $zip->extractTo($docroot.'/'.$tmpdir);
+ $zip->extractTo($tmp_dir);
// AGGIORNAMENTO
if ($type == 'update') {
@@ -33,34 +35,30 @@ if (!extension_loaded('zip')) {
$old_config = file_get_contents($docroot.'/config.inc.php');
// Aggiornamento del CORE
- if (file_exists($docroot.'/'.$tmpdir.'/VERSION')) {
+ if (file_exists($tmp_dir.'/VERSION')) {
//rename($docroot.'/VERSION', $docroot.'/VERSION.old');
// Copia i file dalla cartella temporanea alla root
- copyr($docroot.'/'.$tmpdir, $docroot);
+ copyr($tmp_dir, $docroot);
// Scollego l'utente per eventuali aggiornamenti del db
Auth::logout();
-
- redirect($rootdir, 'php');
}
// Aggiornamento di un MODULO
- elseif (file_exists($docroot.'/'.$tmpdir.'/MODULE')) {
- $module_info = parse_ini_file($docroot.'/'.$tmpdir.'/MODULE', true);
+ elseif (file_exists($tmp_dir.'/MODULE')) {
+ $module_info = parse_ini_file($tmp_dir.'/MODULE', true);
$module_name = $module_info['module_name'];
$module_dir = $module_info['module_directory'];
// Copio i file nella cartella "modules//"
- copyr($docroot.'/'.$tmpdir, $docroot.'/modules/'.$module_dir.'/');
+ copyr($tmp_dir, $docroot.'/modules/'.$module_dir.'/');
// Rinomino il file di versione per forzare l'aggiornamento
//rename($docroot.'/VERSION_'.$module, $docroot.'/VERSION_'.$module.'.old');
// Scollego l'utente per eventuali aggiornamenti del db
Auth::logout();
-
- redirect($rootdir, 'php');
} else {
$_SESSION['errors'][] = tr('File di aggiornamento non riconosciuto!');
}
@@ -72,15 +70,15 @@ if (!extension_loaded('zip')) {
// NUOVO MODULO
elseif ($type == 'new') {
// Se non c'è il file MODULE non é un modulo
- if (is_file($docroot.'/'.$tmpdir.'/MODULE')) {
+ if (is_file($tmp_dir.'/MODULE')) {
// Leggo le info dal file di configurazione del modulo
- $module_info = parse_ini_file($docroot.'/'.$tmpdir.'/MODULE', true);
+ $module_info = parse_ini_file($tmp_dir.'/MODULE', true);
$module_name = $module_info['module_name'];
$module_version = $module_info['module_version'];
$module_dir = $module_info['module_directory'];
// Copio i file nella cartella "modules//"
- copyr($docroot.'/'.$tmpdir, $docroot.'/modules/'.$module_dir.'/');
+ copyr($tmp_dir, $docroot.'/modules/'.$module_dir.'/');
// Scollego l'utente per eventuali aggiornamenti del db
Auth::logout();
@@ -111,8 +109,6 @@ if (!extension_loaded('zip')) {
$query = 'INSERT INTO zz_modules(`name`, `title`, `directory`, `options`, `icon`, `version`, `compatibility`, `order`, `parent`, `default`, `enabled`) VALUES('.prepare($module_name).', '.prepare($module_name).', '.prepare($module_dir).', '.prepare($module_info['module_options']).', '.prepare($module_info['module_icon']).', '.prepare($module_version).', '.prepare($module_info['module_compatibility']).', "100", '.prepare($module_info['module_parent']).', 0, 1)';
$dbo->query($query);
}
-
- redirect($rootdir, 'php');
}
// File zip non contiene il file MODULE
@@ -121,7 +117,8 @@ if (!extension_loaded('zip')) {
}
}
- delete($docroot.'/'.$tmpdir);
+ delete($tmp_dir);
+ redirect($rootdir);
} else {
$_SESSION['errors'][] = checkZip($tmp);
}