diff --git a/actions.php b/actions.php index 14c4ad86a..203383b34 100644 --- a/actions.php +++ b/actions.php @@ -268,43 +268,51 @@ if (Modules::getPermission($permesso) == 'r' || Modules::getPermission($permesso } // Operazioni generiche per i campi personalizzati - if (post('op') != null && post('op') != 'delete') { - $customs = $dbo->fetchArray('SELECT `id`, `name` FROM `zz_fields` WHERE `id_module` = '.prepare($id_module)); - - $values = []; - foreach ($customs as $custom) { - if (isset($post[$custom['name']])) { - $values[$custom['id']] = $post[$custom['name']]; - } + if (post('op') != null) { + $query = 'SELECT `id`, `name` FROM `zz_fields` WHERE '; + if (!empty($id_plugin)) { + $query .= '`id_plugin` = '.prepare($id_plugin); + } else { + $query .= '`id_module` = '.prepare($id_module); } + $customs = $dbo->fetchArray($query); - // Inserimento iniziale - if (post('op') == 'add') { - foreach ($values as $key => $value) { - $dbo->insert('zz_field_record', [ + if (!starts_with(post('op'), 'delete')) { + $values = []; + foreach ($customs as $custom) { + if (isset($post[$custom['name']])) { + $values[$custom['id']] = $post[$custom['name']]; + } + } + + // Inserimento iniziale + if (starts_with(post('op'), 'add')) { + foreach ($values as $key => $value) { + $dbo->insert('zz_field_record', [ 'id_record' => $id_record, 'id_field' => $key, 'value' => $value, ]); + } } - } - // Aggiornamento - elseif (post('op') == 'update') { - foreach ($values as $key => $value) { - $dbo->update('zz_field_record', [ + // Aggiornamento + elseif (starts_with(post('op'), 'update')) { + foreach ($values as $key => $value) { + $dbo->update('zz_field_record', [ 'value' => $value, ], [ 'id_record' => $id_record, 'id_field' => $key, ]); + } } } - } - // Eliminazione - elseif (post('op') == 'delete') { - $dbo->query('DELETE FROM `zz_field_record` WHERE `id_record` = '.prepare($id_record).' AND `id_field` IN (SELECT `id` FROM `zz_fields` WHERE `id_module` = '.prepare($id_module).')'); + // Eliminazione + elseif (!empty($customs)) { + $dbo->query('DELETE FROM `zz_field_record` WHERE `id_record` = '.prepare($id_record).' AND `id_field` IN ('.implode(array_column($customs, 'id')).')'); + } } } } diff --git a/add.php b/add.php index ddb5094d8..23aba0e22 100644 --- a/add.php +++ b/add.php @@ -38,18 +38,27 @@ echo ' echo '
- {( "name": "custom_fields", "id_module": "'.$id_module.'", "position": "top", "place": "add" )} + {( "name": "custom_fields", "id_module": "'.$id_module.'", "id_plugin": "'.$id_plugin.'", "position": "top", "place": "add" )}
- {( "name": "custom_fields", "id_module": "'.$id_module.'", "position": "bottom", "place": "add" )} + {( "name": "custom_fields", "id_module": "'.$id_module.'", "id_plugin": "'.$id_plugin.'", "position": "bottom", "place": "add" )}
'; diff --git a/editor.php b/editor.php index 780c4a551..526fef135 100755 --- a/editor.php +++ b/editor.php @@ -105,19 +105,28 @@ if (empty($records)) { // Campi personalizzati echo ' -
+
{( "name": "custom_fields", "id_module": "'.$id_module.'", "id_record": "'.$id_record.'", "position": "top" )}
-
+
{( "name": "custom_fields", "id_module": "'.$id_module.'", "id_record": "'.$id_record.'" )}
'; diff --git a/plugin_editor.php b/plugin_editor.php index 62b1716aa..99c0fe325 100644 --- a/plugin_editor.php +++ b/plugin_editor.php @@ -19,32 +19,28 @@ if (!empty($info['script'])) { return; } else { - // Caricamento helper modulo (verifico se ci sono helper personalizzati) + // Caricamento helper plugin (verifico se ci sono helper personalizzati) if (file_exists($docroot.'/plugins/'.$info['directory'].'/custom/modutil.php')) { include_once $docroot.'/plugins/'.$info['directory'].'/custom/modutil.php'; } elseif (file_exists($docroot.'/plugins/'.$info['directory'].'/modutil.php')) { include_once $docroot.'/plugins/'.$info['directory'].'/modutil.php'; } - // Lettura risultato query del modulo + // Lettura risultato query del plugin if (file_exists($docroot.'/plugins/'.$info['directory'].'/custom/init.php')) { include $docroot.'/plugins/'.$info['directory'].'/custom/init.php'; } elseif (file_exists($docroot.'/plugins/'.$info['directory'].'/init.php')) { include $docroot.'/plugins/'.$info['directory'].'/init.php'; } - // Esecuzione delle operazioni del modulo - if (file_exists($docroot.'/plugins/'.$info['directory'].'/custom/actions.php')) { - include $docroot.'/plugins/'.$info['directory'].'/custom/actions.php'; - } elseif (file_exists($docroot.'/plugins/'.$info['directory'].'/actions.php')) { - include $docroot.'/plugins/'.$info['directory'].'/actions.php'; - } + // Esecuzione delle operazioni del plugin + include $docroot.'/actions.php'; if (empty($records)) { echo '

'.tr('Record non trovato').'.

'; } else { - // Lettura template modulo (verifico se ci sono template personalizzati, altrimenti uso quello base) + // Lettura template plugin (verifico se ci sono template personalizzati, altrimenti uso quello base) if (file_exists($docroot.'/plugins/'.$info['directory'].'/custom/edit.php')) { include $docroot.'/plugins/'.$info['directory'].'/custom/edit.php'; } elseif (file_exists($docroot.'/plugins/'.$info['directory'].'/custom/edit.html')) { @@ -54,6 +50,34 @@ if (!empty($info['script'])) { } elseif (file_exists($docroot.'/plugins/'.$info['directory'].'/edit.html')) { include $docroot.'/plugins/'.$info['directory'].'/edit.html'; } + + // Campi personalizzati + echo ' + +
+ {( "name": "custom_fields", "id_plugin": "'.$id_plugin.'", "id_record": "'.$id_record.'", "position": "top" )} +
+ +
+ {( "name": "custom_fields", "id_plugin": "'.$id_plugin.'", "id_record": "'.$id_record.'" )} +
+ + '; } redirectOperation($id_module, $id_parent); @@ -73,7 +97,6 @@ if (!empty($info['script'])) { insert('an_referenti', [ + 'idanagrafica' => $id_parent, + 'nome' => $post['nome'], + 'mansione' => $post['mansione'], + 'telefono' => $post['telefono'], + 'email' => $post['email'], + 'idsede' => $post['idsede'], + ]); + $id_record = $dbo->lastInsertedID(); - if (isset($nome) && isset($idsede)) { - $query = 'INSERT INTO `an_referenti` (`nome`, `mansione`, `telefono`, `email`, `idanagrafica`, `idsede`) VALUES ('.prepare($nome).', '.prepare($mansione).', '.prepare($telefono).', '.prepare($email).', '.prepare($id_parent).', '.prepare($idsede).')'; - - $dbo->query($query); - $_SESSION['infos'][] = tr('Aggiunto nuovo referente!'); - } + $_SESSION['infos'][] = tr('Aggiunto nuovo referente!'); break; case 'updatereferente': - $query = 'UPDATE `an_referenti` SET `nome`='.prepare($post['nome']).', `mansione`='.prepare($post['mansione']).', `telefono`='.prepare($post['telefono']).', `email`='.prepare($post['email']).', `idsede`='.prepare($post['idsede']).' WHERE `id`='.prepare($id_record); - $dbo->query($query); + $dbo->update('an_referenti', [ + 'idanagrafica' => $id_parent, + 'nome' => $post['nome'], + 'mansione' => $post['mansione'], + 'telefono' => $post['telefono'], + 'email' => $post['email'], + 'idsede' => $post['idsede'], + ], ['id' => $id_record]); $_SESSION['infos'][] = tr('Salvataggio completato!'); break; case 'deletereferente': - $dbo->query("DELETE FROM `an_referenti` WHERE `id`=".prepare($id_record)); + $dbo->query('DELETE FROM `an_referenti` WHERE `id`='.prepare($id_record)); $_SESSION['infos'][] = tr('Referente eliminato!'); diff --git a/plugins/sedi/actions.php b/plugins/sedi/actions.php index 9649654be..509d91a69 100644 --- a/plugins/sedi/actions.php +++ b/plugins/sedi/actions.php @@ -6,7 +6,7 @@ $operazione = filter('op'); switch ($operazione) { case 'addsede': - $array = [ + $dbo->insert('an_sedi', [ 'idanagrafica' => $id_parent, 'nomesede' => $post['nomesede'], 'indirizzo' => $post['indirizzo'], @@ -18,9 +18,8 @@ switch ($operazione) { 'telefono' => $post['telefono'], 'email' => $post['email'], 'idzona' => $post['idzona'], - ]; - - $dbo->insert('an_sedi', $array); + ]); + $id_record = $dbo->lastInsertedID(); $_SESSION['infos'][] = tr('Aggiunta una nuova sede!'); @@ -55,7 +54,7 @@ switch ($operazione) { break; case 'deletesede': - $dbo->query("DELETE FROM `an_sedi` WHERE `id`=".prepare($id_record)); + $dbo->query('DELETE FROM `an_sedi` WHERE `id`='.prepare($id_record)); $_SESSION['infos'][] = tr('Sede eliminata!'); diff --git a/src/HTMLBuilder/Manager/FieldManager.php b/src/HTMLBuilder/Manager/FieldManager.php index 97a377954..9e09eec4a 100644 --- a/src/HTMLBuilder/Manager/FieldManager.php +++ b/src/HTMLBuilder/Manager/FieldManager.php @@ -21,19 +21,15 @@ class FieldManager implements ManagerInterface $query = 'SELECT `zz_fields`.*'.(isset($options['id_record']) ? ', `zz_field_record`.`value`' : '').' FROM `zz_fields`'; if (isset($options['id_record'])) { - $query .= ' LEFT JOIN `zz_field_record` ON `zz_fields`.`id` = `zz_field_record`.`id_field`'; + $query .= ' LEFT JOIN `zz_field_record` ON `zz_fields`.`id` = `zz_field_record`.`id_field` AND `zz_field_record`.`id_record` = '.prepare($options['id_record']); } $query .= ' WHERE '; - if (isset($options['id_plugin'])) { - $query .= ' `id_plugin` = '.prepare($options['id_plugin']); + if (!empty($options['id_plugin'])) { + $query .= '`id_plugin` = '.prepare($options['id_plugin']); } else { - $query .= ' `id_module` = '.prepare($options['id_module']); - } - - if (isset($options['id_record'])) { - $query .= ' AND `id_record` = '.prepare($options['id_record']); + $query .= '`id_module` = '.prepare($options['id_module']); } if (isset($options['place']) && $options['place'] == 'add') { @@ -52,49 +48,53 @@ class FieldManager implements ManagerInterface // Spazio per evitare problemi con la sostituzione del tag $result = ' '; - // Costruzione dei campi - foreach ($fields as $key => $field) { - if ($key % 3 == 0) { - $result .= ' + if (!empty($fields)) { + $result .= '

'.tr('Campi aggiuntivi').'

-
+
'; + + // Costruzione dei campi + foreach ($fields as $key => $field) { + if ($key % 3 == 0) { + $result .= '
'; - } + } - $field['value'] = isset($field['value']) ? $field['value'] : ''; + $field['value'] = isset($field['value']) ? $field['value'] : ''; - $replace = [ + $replace = [ 'value' => $field['value'], 'label' => $field['name'], 'name' => $field['html_name'], ]; - foreach ($replace as $key => $value) { - $field['content'] = str_replace('|'.$key.'|', $value, $field['content']); - } + foreach ($replace as $key => $value) { + $field['content'] = str_replace('|'.$key.'|', $value, $field['content']); + } - $result .= ' + $result .= '
'.$field['content'].'
'; - if (($key + 1) % 3 == 0) { + if (($key + 1) % 3 == 0) { + $result .= ' +
'; + } + } + + if (($key + 1) % 3 != 0) { $result .= '
'; } - } - if (!empty($fields) && ($key + 1) % 3 != 0) { $result .= ' -
'; - } - - $result .= '
'; + } return $result; }