Skip to content

Commit 6b63035

Browse files
committed
feat: flag dei moduli spostati in zz_modules_flags
1 parent 76debe8 commit 6b63035

5 files changed

Lines changed: 102 additions & 11 deletions

File tree

modules/otp_tokens/ajax/select.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@
2323

2424
switch ($resource) {
2525
case 'moduli_token':
26-
$query = 'SELECT zz_modules.id AS id, title AS descrizione FROM zz_modules INNER JOIN zz_modules_lang ON zz_modules.id = zz_modules_lang.id_record AND zz_modules_lang.id_lang = '.prepare(Models\Locale::getDefault()->id).' |where| ORDER BY title';
26+
$query = 'SELECT zz_modules.id AS id, title AS descrizione FROM zz_modules INNER JOIN zz_modules_lang ON zz_modules.id = zz_modules_lang.id_record AND zz_modules_lang.id_lang = '.prepare(Models\Locale::getDefault()->id).' INNER JOIN zz_modules_flags ON zz_modules.id = zz_modules_flags.id_module |where| ORDER BY title';
2727

2828
$where[] = 'enabled = 1';
29-
$where[] = "name IN('Anagrafiche', 'Gestione documentale', 'Impianti')";
29+
$where[] = "zz_modules_flags.name = 'enable_otp'";
3030
$where[] = "IF(options2 != '', options2!='menu', options!='menu')";
3131

3232
foreach ($elements as $element) {
@@ -73,7 +73,7 @@
7373
}
7474
}
7575

76-
if ($module->name == 'Impianti') {
76+
if ($module->name == 'MyImpianti') {
7777
$query = 'SELECT id, nome AS descrizione FROM my_impianti |where| ORDER BY nome';
7878

7979
foreach ($elements as $element) {

modules/viste/actions.php

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@
5050
'parent' => null,
5151
'default' => $module->default,
5252
'enabled' => $module->enabled,
53-
'use_notes' => $module->use_notes,
54-
'use_checklists' => $module->use_checklists,
53+
'use_notes' => $module->hasFlag('use_notes'),
54+
'use_checklists' => $module->hasFlag('use_checklists'),
5555
];
5656

5757
// Se c'è un modulo parent, usa il nome come riferimento
@@ -209,9 +209,20 @@
209209
'order' => $module_data['order'],
210210
'default' => $module_data['default'],
211211
'enabled' => $module_data['enabled'],
212-
'use_notes' => $module_data['use_notes'],
213-
'use_checklists' => $module_data['use_checklists'],
214212
], ['id' => $module_id]);
213+
214+
// Gestione dei flag use_notes e use_checklists nel nuovo sistema
215+
if ($module_data['use_notes']) {
216+
$dbo->query('INSERT IGNORE INTO `zz_modules_flags` (`id_module`, `name`) VALUES ('.prepare($module_id).', \'use_notes\')');
217+
} else {
218+
$dbo->query('DELETE FROM `zz_modules_flags` WHERE `id_module` = '.prepare($module_id).' AND `name` = \'use_notes\'');
219+
}
220+
221+
if ($module_data['use_checklists']) {
222+
$dbo->query('INSERT IGNORE INTO `zz_modules_flags` (`id_module`, `name`) VALUES ('.prepare($module_id).', \'use_checklists\')');
223+
} else {
224+
$dbo->query('DELETE FROM `zz_modules_flags` WHERE `id_module` = '.prepare($module_id).' AND `name` = \'use_checklists\'');
225+
}
215226
} else {
216227
// Crea un nuovo modulo
217228
$dbo->insert('zz_modules', [
@@ -225,11 +236,18 @@
225236
'order' => $module_data['order'],
226237
'default' => $module_data['default'],
227238
'enabled' => $module_data['enabled'],
228-
'use_notes' => $module_data['use_notes'],
229-
'use_checklists' => $module_data['use_checklists'],
230239
]);
231240

232241
$module_id = $dbo->lastInsertedID();
242+
243+
// Gestione dei flag use_notes e use_checklists nel nuovo sistema
244+
if ($module_data['use_notes']) {
245+
$dbo->query('INSERT INTO `zz_modules_flags` (`id_module`, `name`) VALUES ('.prepare($module_id).', \'use_notes\')');
246+
}
247+
248+
if ($module_data['use_checklists']) {
249+
$dbo->query('INSERT INTO `zz_modules_flags` (`id_module`, `name`) VALUES ('.prepare($module_id).', \'use_checklists\')');
250+
}
233251
}
234252

235253
// Aggiorna il parent se specificato

shared_editor.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@
187187
<button type="button" class="btn btn-success dropdown-toggle dropdown-icon" data-toggle="dropdown" aria-expanded="false">
188188
<span class="sr-only">Toggle Dropdown</span>
189189
</button>
190-
<div class="dropdown-menu dropdown-menu-right" role="menu">
190+
<div class="dropdown-menu dropdown-menu-right p-3" role="menu">
191191
<a class="btn dropdown-item" href="#" id="save-close">
192192
<i class="fa fa-check-square-o"></i>
193193
'.tr('Salva e chiudi').'

src/Models/Module.php

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ class Module extends Model
5555
protected $appends = [
5656
'permission',
5757
'option',
58+
'use_notes',
59+
'use_checklists',
5860
];
5961

6062
protected $hidden = [
@@ -143,6 +145,26 @@ public function getOptionAttribute()
143145
return !empty($this->options2) ? $this->options2 : $this->options;
144146
}
145147

148+
/**
149+
* Attributo calcolato per use_notes per compatibilità.
150+
*
151+
* @return bool
152+
*/
153+
public function getUseNotesAttribute()
154+
{
155+
return $this->hasFlag('use_notes');
156+
}
157+
158+
/**
159+
* Attributo calcolato per use_checklists per compatibilità.
160+
*
161+
* @return bool
162+
*/
163+
public function getUseChecklistsAttribute()
164+
{
165+
return $this->hasFlag('use_checklists');
166+
}
167+
146168
/* Relazioni Eloquent */
147169

148170
public function plugins()
@@ -223,6 +245,25 @@ public function getModuleAttribute()
223245
return '';
224246
}
225247

248+
/**
249+
* Verifica se il modulo ha un flag specifico attivo.
250+
*
251+
* @param string $flag_name Nome del flag da verificare
252+
* @return bool True se il flag è presente, false altrimenti
253+
*/
254+
public function hasFlag($flag_name)
255+
{
256+
static $flags_cache = [];
257+
258+
// Cache per evitare query ripetute
259+
if (!isset($flags_cache[$this->id])) {
260+
$flags = database()->fetchArray('SELECT `name` FROM `zz_modules_flags` WHERE `id_module` = '.prepare($this->id));
261+
$flags_cache[$this->id] = array_column($flags, 'name');
262+
}
263+
264+
return in_array($flag_name, $flags_cache[$this->id]);
265+
}
266+
226267
public static function getTranslatedFields()
227268
{
228269
return self::$translated_fields;

update/2_10.sql

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,4 +165,36 @@ ALTER TABLE `co_stampecontabili` ADD `idmastrino` INT NULL;
165165
INSERT INTO `zz_settings` (`nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `is_user_setting`) VALUES ('Descrizione aggiuntiva personalizzata in fatturazione', '', 'textarea', '1', 'Fatturazione', NULL, '0');
166166
INSERT INTO `zz_settings_lang` (`id_lang`, `id_record`, `title`, `help`) VALUES
167167
(1, (SELECT MAX(`id`) FROM `zz_settings`), 'Descrizione aggiuntiva personalizzata in fatturazione', ''),
168-
(2, (SELECT MAX(`id`) FROM `zz_settings`), 'Additional custom description in invoices', '');
168+
(2, (SELECT MAX(`id`) FROM `zz_settings`), 'Additional custom description in invoices', '');
169+
170+
-- Creazione tabella per i flag dei moduli
171+
CREATE TABLE IF NOT EXISTS `zz_modules_flags` (
172+
`id` int(11) NOT NULL AUTO_INCREMENT,
173+
`id_module` int(11) NOT NULL,
174+
`name` enum('use_checklists', 'use_notes', 'enable_otp') NOT NULL,
175+
PRIMARY KEY (`id`),
176+
UNIQUE KEY `unique_module_flag` (`id_module`, `name`),
177+
FOREIGN KEY (`id_module`) REFERENCES `zz_modules`(`id`) ON DELETE CASCADE
178+
) ENGINE=InnoDB;
179+
180+
-- Migrazione dei flag esistenti use_notes dalla tabella zz_modules
181+
INSERT INTO `zz_modules_flags` (`id_module`, `name`)
182+
SELECT `id`, 'use_notes'
183+
FROM `zz_modules`
184+
WHERE `use_notes` = 1;
185+
186+
-- Migrazione dei flag esistenti use_checklists dalla tabella zz_modules
187+
INSERT INTO `zz_modules_flags` (`id_module`, `name`)
188+
SELECT `id`, 'use_checklists'
189+
FROM `zz_modules`
190+
WHERE `use_checklists` = 1;
191+
192+
-- Aggiunta flag enable_otp per i moduli specificati
193+
INSERT INTO `zz_modules_flags` (`id_module`, `name`)
194+
SELECT `id`, 'enable_otp'
195+
FROM `zz_modules`
196+
WHERE `name` IN ('Anagrafiche', 'Impianti', 'Gestione documentale');
197+
198+
-- Rimozione dei campi obsoleti dalla tabella zz_modules
199+
ALTER TABLE `zz_modules` DROP COLUMN `use_notes`;
200+
ALTER TABLE `zz_modules` DROP COLUMN `use_checklists`;

0 commit comments

Comments
 (0)