diff --git a/pandora_console/extras/mr/30.sql b/pandora_console/extras/mr/30.sql index 58abf6c562..84e5adfa3e 100644 --- a/pandora_console/extras/mr/30.sql +++ b/pandora_console/extras/mr/30.sql @@ -12,4 +12,40 @@ ALTER TABLE `tmodule_relationship` ADD COLUMN `type` ENUM('direct', 'failover') ALTER TABLE `treport_content` MODIFY COLUMN `name` varchar(300) NULL; -COMMIT; \ No newline at end of file +CREATE TABLE `tagent_repository` ( + `id` SERIAL, + `id_os` INT(10) UNSIGNED DEFAULT 0, + `arch` ENUM('x64', 'x86') DEFAULT 'x64', + `version` VARCHAR(10) DEFAULT '', + `path` text, + `uploaded_by` VARCHAR(100) DEFAULT '', + `uploaded` bigint(20) NOT NULL DEFAULT 0 COMMENT "When it was uploaded", + `last_err` text, + PRIMARY KEY (`id`), + FOREIGN KEY (`id_os`) REFERENCES `tconfig_os`(`id_os`) + ON UPDATE CASCADE ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `tdeployment_hosts` ( + `id` SERIAL, + `id_cs` VARCHAR(100), + `ip` VARCHAR(100) NOT NULL UNIQUE, + `id_os` INT(10) UNSIGNED DEFAULT 0, + `os_version` VARCHAR(100) DEFAULT '' COMMENT "OS version in STR format", + `arch` ENUM('x64', 'x86') DEFAULT 'x64', + `current_agent_version` VARCHAR(100) DEFAULT '' COMMENT "String latest installed agent", + `target_agent_version_id` BIGINT UNSIGNED, + `deployed` bigint(20) NOT NULL DEFAULT 0 COMMENT "When it was deployed", + `server_ip` varchar(100) default NULL COMMENT "Where to point target agent", + `last_err` text, + PRIMARY KEY (`id`), + FOREIGN KEY (`id_cs`) REFERENCES `tcredential_store`(`identifier`) + ON UPDATE CASCADE ON DELETE SET NULL, + FOREIGN KEY (`id_os`) REFERENCES `tconfig_os`(`id_os`) + ON UPDATE CASCADE ON DELETE CASCADE, + FOREIGN KEY (`target_agent_version_id`) REFERENCES `tagent_repository`(`id`) + ON UPDATE CASCADE ON DELETE SET NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +COMMIT; diff --git a/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql b/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql index b59a76dfd2..1f759afabd 100644 --- a/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql +++ b/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql @@ -2220,3 +2220,44 @@ CREATE TABLE IF NOT EXISTS `tcredential_store` ( -- Table `treport_content_sla_combined` -- --------------------------------------------------------------------- ALTER TABLE `treport_content_sla_combined` ADD `id_agent_module_failover` int(10) unsigned NOT NULL; + +-- --------------------------------------------------------------------- +-- Table `tagent_repository` +-- --------------------------------------------------------------------- +CREATE TABLE `tagent_repository` ( + `id` SERIAL, + `id_os` INT(10) UNSIGNED DEFAULT 0, + `arch` ENUM('x64', 'x86') DEFAULT 'x64', + `version` VARCHAR(10) DEFAULT '', + `path` text, + `uploaded_by` VARCHAR(100) DEFAULT '', + `uploaded` bigint(20) NOT NULL DEFAULT 0 COMMENT "When it was uploaded", + `last_err` text, + PRIMARY KEY (`id`), + FOREIGN KEY (`id_os`) REFERENCES `tconfig_os`(`id_os`) + ON UPDATE CASCADE ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- ---------------------------------------------------------------------- +-- Table `tdeployment_hosts` +-- ---------------------------------------------------------------------- +CREATE TABLE `tdeployment_hosts` ( + `id` SERIAL, + `id_cs` VARCHAR(100), + `ip` VARCHAR(100) NOT NULL UNIQUE, + `id_os` INT(10) UNSIGNED DEFAULT 0, + `os_version` VARCHAR(100) DEFAULT '' COMMENT "OS version in STR format", + `arch` ENUM('x64', 'x86') DEFAULT 'x64', + `current_agent_version` VARCHAR(100) DEFAULT '' COMMENT "String latest installed agent", + `target_agent_version_id` BIGINT UNSIGNED, + `deployed` bigint(20) NOT NULL DEFAULT 0 COMMENT "When it was deployed", + `server_ip` varchar(100) default NULL COMMENT "Where to point target agent", + `last_err` text, + PRIMARY KEY (`id`), + FOREIGN KEY (`id_cs`) REFERENCES `tcredential_store`(`identifier`) + ON UPDATE CASCADE ON DELETE SET NULL, + FOREIGN KEY (`id_os`) REFERENCES `tconfig_os`(`id_os`) + ON UPDATE CASCADE ON DELETE CASCADE, + FOREIGN KEY (`target_agent_version_id`) REFERENCES `tagent_repository`(`id`) + ON UPDATE CASCADE ON DELETE SET NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; diff --git a/pandora_console/godmode/agentes/agent_manager.php b/pandora_console/godmode/agentes/agent_manager.php index dd2e577fe3..c24478eeb6 100644 --- a/pandora_console/godmode/agentes/agent_manager.php +++ b/pandora_console/godmode/agentes/agent_manager.php @@ -524,8 +524,10 @@ if (enterprise_installed()) { ); $safe_mode_modules = []; $safe_mode_modules[0] = __('Any'); - foreach ($sql_modules as $m) { - $safe_mode_modules[$m['id_module']] = $m['name']; + if (is_array($sql_modules)) { + foreach ($sql_modules as $m) { + $safe_mode_modules[$m['id_module']] = $m['name']; + } } $table_adv_safe = '

'.__('Safe operation mode').': '.ui_print_help_tip( diff --git a/pandora_console/godmode/groups/credential_store.php b/pandora_console/godmode/groups/credential_store.php index 8c9540d581..3273e1c038 100644 --- a/pandora_console/godmode/groups/credential_store.php +++ b/pandora_console/godmode/groups/credential_store.php @@ -369,7 +369,7 @@ echo '

'; text = err.message; failed = 1; } - if (!failed && data['error']) { + if (!failed && data['error'] != undefined) { title = ""; text = data['error']; failed = 1; @@ -522,12 +522,10 @@ echo ''; function calculate_inputs() { if ($('#product :selected').val() == "CUSTOM") { - $('#div-username label').text(''); + $('#div-username label').text(''); $('#div-password label').text(''); - $('#div-extra_1 label').text(''); - $('#div-extra_2 label').text(''); - $('#div-extra_1').show(); - $('#div-extra_2').show(); + $('#div-extra_1').hide(); + $('#div-extra_2').hide(); } else if ($('#product :selected').val() == "AWS") { $('#div-username label').text(''); $('#div-password label').text(''); @@ -557,8 +555,8 @@ echo ''; success: function(data) { $('#form_new').html(data); $('#id_group').val(0); - // By default AWS. - $('#product').val('AWS'); + // By default CUSTOM. + $('#product').val('CUSTOM'); calculate_inputs(); $('#product').on('change', function() { @@ -590,9 +588,6 @@ echo ''; text: 'OK', click: function(e) { var values = {}; - - console.log($('#form_new')); - $('#form_new :input').each(function() { values[this.name] = btoa($(this).val()); }); diff --git a/pandora_console/godmode/menu.php b/pandora_console/godmode/menu.php index 09a2aff770..000a105257 100644 --- a/pandora_console/godmode/menu.php +++ b/pandora_console/godmode/menu.php @@ -24,23 +24,24 @@ $menu_godmode['class'] = 'godmode'; if (check_acl($config['id_user'], 0, 'PM')) { $sub = []; - $sub['godmode/servers/discovery&wiz=main']['text'] = __('Discovery Main'); + $sub['godmode/servers/discovery&wiz=main']['text'] = __('Main'); $sub['godmode/servers/discovery&wiz=main']['id'] = 'Discovery'; $sub['godmode/servers/discovery&wiz=tasklist']['text'] = __('Task list'); $sub['godmode/servers/discovery&wiz=tasklist']['id'] = 'tasklist'; - $sub['godmode/servers/discovery&wiz=app']['text'] = __('Applications'); - $sub['godmode/servers/discovery&wiz=app']['id'] = 'app'; - - $sub['godmode/servers/discovery&wiz=cloud']['text'] = __('Cloud'); - $sub['godmode/servers/discovery&wiz=cloud']['id'] = 'cloud'; - - $sub['godmode/servers/discovery&wiz=ctask']['text'] = __('Console task'); - $sub['godmode/servers/discovery&wiz=ctask']['id'] = 'ctask'; - + $sub2 = []; + $sub2['godmode/servers/discovery&wiz=hd&mode=netscan']['text'] = __('Network scan'); + enterprise_hook('hostdevices_submenu'); + $sub2['godmode/servers/discovery&wiz=hd&mode=customnetscan']['text'] = __('Custom network scan'); + $sub2['godmode/servers/discovery&wiz=hd&mode=managenetscanscripts']['text'] = __('Manage scan scripts'); $sub['godmode/servers/discovery&wiz=hd']['text'] = __('Host & devices'); $sub['godmode/servers/discovery&wiz=hd']['id'] = 'hd'; + $sub['godmode/servers/discovery&wiz=hd']['sub2'] = $sub2; + + enterprise_hook('applications_menu'); + enterprise_hook('cloud_menu'); + enterprise_hook('console_task_menu'); // Add to menu. $menu_godmode['discovery']['text'] = __('Discovery'); @@ -128,6 +129,7 @@ if (check_acl($config['id_user'], 0, 'PM')) { $sub['godmode/modules/manage_network_templates']['id'] = 'Module templates'; enterprise_hook('inventory_submenu'); enterprise_hook('autoconfiguration_menu'); + enterprise_hook('agent_repository_menu'); } if (check_acl($config['id_user'], 0, 'AW')) { diff --git a/pandora_console/godmode/servers/discovery.php b/pandora_console/godmode/servers/discovery.php index a2c0abd5d6..3f2166bb39 100755 --- a/pandora_console/godmode/servers/discovery.php +++ b/pandora_console/godmode/servers/discovery.php @@ -42,7 +42,19 @@ function get_wiz_class($str) return 'ConsoleTasks'; default: - // Ignore. + // Main, show header. + ui_print_page_header( + __('Discovery'), + '', + false, + '', + true, + '', + false, + '', + GENERIC_SIZE_TEXT, + '' + ); return null; } } @@ -81,7 +93,7 @@ function cl_load_cmp($a, $b) $classes = glob($config['homedir'].'/godmode/wizards/*.class.php'); if (enterprise_installed()) { $ent_classes = glob( - $config['homedir'].'/enterprise/godmode/wizards/*.class.php' + $config['homedir'].'/'.ENTERPRISE_DIR.'/godmode/wizards/*.class.php' ); if ($ent_classes === false) { $ent_classes = []; @@ -130,7 +142,7 @@ if ($classname_selected === null) { } } - // Show hints if there is no task + // Show hints if there is no task. if (get_parameter('discovery_hint', 0)) { ui_require_css_file('discovery-hint'); ui_print_info_message(__('You must create a task first')); diff --git a/pandora_console/godmode/wizards/DiscoveryTaskList.class.php b/pandora_console/godmode/wizards/DiscoveryTaskList.class.php index 586f24335b..ed7e1f3b10 100644 --- a/pandora_console/godmode/wizards/DiscoveryTaskList.class.php +++ b/pandora_console/godmode/wizards/DiscoveryTaskList.class.php @@ -418,6 +418,7 @@ class DiscoveryTaskList extends Wizard $table->align[9] = 'left'; foreach ($recon_tasks as $task) { + $no_operations = false; $data = []; $server_name = servers_get_name($task['id_recon_server']); @@ -552,6 +553,17 @@ class DiscoveryTaskList extends Wizard $data[6] .= __('Discovery.App.Oracle'); break; + case DISCOVERY_DEPLOY_AGENTS: + // Internal deployment task. + $no_operations = true; + $data[6] = html_print_image( + 'images/deploy.png', + true, + ['title' => __('Agent deployment')] + ).'  '; + $data[6] .= __('Discovery.Agent.Deployment'); + break; + case DISCOVERY_HOSTDEVICES: default: if ($task['id_recon_script'] == 0) { @@ -595,71 +607,75 @@ class DiscoveryTaskList extends Wizard $data[8] = __('Not executed yet'); } - if ($task['disabled'] != 2) { - $data[9] = ''; - $data[9] .= html_print_image( - 'images/eye.png', - true - ); - $data[9] .= ''; - } - - if ($task['disabled'] != 2 && $task['utimestamp'] > 0 - && $task['type'] != DISCOVERY_APP_MYSQL - && $task['type'] != DISCOVERY_APP_ORACLE - && $task['type'] != DISCOVERY_CLOUD_AWS_RDS - ) { - $data[9] .= ''; - $data[9] .= html_print_image( - 'images/dynamic_network_icon.png', - true - ); - $data[9] .= ''; - } - - if (check_acl( - $config['id_user'], - $task['id_group'], - 'PM' - ) - ) { - if ($ipam === true) { - $data[9] .= ''.html_print_image( - 'images/config.png', + if (!$no_operations) { + if ($task['disabled'] != 2) { + $data[9] = ''; + $data[9] .= html_print_image( + 'images/eye.png', true - ).''; - $data[9] .= ''.html_print_image( - 'images/cross.png', + ); + $data[9] .= ''; + } + + if ($task['disabled'] != 2 && $task['utimestamp'] > 0 + && $task['type'] != DISCOVERY_APP_MYSQL + && $task['type'] != DISCOVERY_APP_ORACLE + && $task['type'] != DISCOVERY_CLOUD_AWS_RDS + ) { + $data[9] .= ''; + $data[9] .= html_print_image( + 'images/dynamic_network_icon.png', true - ).''; + ); + $data[9] .= ''; + } + + if (check_acl( + $config['id_user'], + $task['id_group'], + 'PM' + ) + ) { + if ($ipam === true) { + $data[9] .= ''.html_print_image( + 'images/config.png', + true + ).''; + $data[9] .= ''.html_print_image( + 'images/cross.png', + true + ).''; + } else { + // Check if is a H&D, Cloud or Application or IPAM. + $data[9] .= ''.html_print_image( + 'images/config.png', + true + ).''; + $data[9] .= ''.html_print_image( + 'images/cross.png', + true + ).''; + } } else { - // Check if is a H&D, Cloud or Application or IPAM. - $data[9] .= ''.html_print_image( - 'images/config.png', - true - ).''; - $data[9] .= ''.html_print_image( - 'images/cross.png', - true - ).''; + $data[9] = ''; } } else { - $data[9] = ''; + $data[9] = '-'; } $table->cellclass[][9] = 'action_buttons'; diff --git a/pandora_console/godmode/wizards/HostDevices.class.php b/pandora_console/godmode/wizards/HostDevices.class.php index 3cc2e3f71d..fb9fba2cdd 100755 --- a/pandora_console/godmode/wizards/HostDevices.class.php +++ b/pandora_console/godmode/wizards/HostDevices.class.php @@ -32,6 +32,7 @@ require_once $config['homedir'].'/include/class/CustomNetScan.class.php'; require_once $config['homedir'].'/include/class/ManageNetScanScripts.class.php'; enterprise_include_once('include/class/CSVImportAgents.class.php'); +enterprise_include_once('include/class/DeploymentCenter.class.php'); enterprise_include_once('include/functions_hostdevices.php'); /** @@ -127,6 +128,12 @@ class HostDevices extends Wizard 'icon' => ENTERPRISE_DIR.'/images/wizard/csv.png', 'label' => __('Import CSV'), ]; + + $buttons[] = [ + 'url' => $this->url.'&mode=deploy', + 'icon' => ENTERPRISE_DIR.'/images/wizard/deployment.png', + 'label' => __('Agent deployment'), + ]; } $buttons[] = [ @@ -149,11 +156,30 @@ class HostDevices extends Wizard ), 'label' => __('Discovery'), ], + [ + 'link' => ui_get_full_url( + 'index.php?sec=gservers&sec2=godmode/servers/discovery&wiz=hd' + ), + 'label' => __('Host & Devices'), + 'selected' => true, + ], ], true ); - ui_print_page_header(__('Host & devices'), '', false, '', true, '', false, '', GENERIC_SIZE_TEXT, '', $this->printHeader(true)); + ui_print_page_header( + __('Host & devices'), + '', + false, + '', + true, + '', + false, + '', + GENERIC_SIZE_TEXT, + '', + $this->printHeader(true) + ); $this->printBigButtonsList($buttons); return; @@ -167,6 +193,14 @@ class HostDevices extends Wizard ); return $csv_importer->runCSV(); } + + if ($mode === 'deploy') { + $deployObject = new DeploymentCenter( + $this->page, + $this->breadcrum + ); + return $deployObject->run(); + } } if ($mode === 'customnetscan') { @@ -785,6 +819,7 @@ class HostDevices extends Wizard }).change();'; $this->printFormAsGrid($form); + $this->printGoBackButton($this->url.'&page='.($this->page - 1)); } } @@ -877,6 +912,7 @@ class HostDevices extends Wizard ]; $this->printFormAsList($form); + $this->printGoBackButton($this->url.'&mode=netscan&task='.$this->task['id_rt'].'&page='.($this->page - 1)); } if ($this->page == 2) { diff --git a/pandora_console/godmode/wizards/Wizard.main.php b/pandora_console/godmode/wizards/Wizard.main.php index 2524f6d93c..3a65560285 100644 --- a/pandora_console/godmode/wizards/Wizard.main.php +++ b/pandora_console/godmode/wizards/Wizard.main.php @@ -296,241 +296,20 @@ class Wizard */ public function printInput($data) { + global $config; + + include_once $config['homedir'].'/include/functions_html.php'; + if (is_array($data) === false) { return ''; } - switch ($data['type']) { - case 'text': - return html_print_input_text( - $data['name'], - $data['value'], - ((isset($data['alt']) === true) ? $data['alt'] : ''), - ((isset($data['size']) === true) ? $data['size'] : 50), - ((isset($data['maxlength']) === true) ? $data['maxlength'] : 255), - ((isset($data['return']) === true) ? $data['return'] : true), - ((isset($data['disabled']) === true) ? $data['disabled'] : false), - ((isset($data['required']) === true) ? $data['required'] : false), - ((isset($data['function']) === true) ? $data['function'] : ''), - ((isset($data['class']) === true) ? $data['class'] : ''), - ((isset($data['onChange']) === true) ? $data['onChange'] : ''), - ((isset($data['autocomplete']) === true) ? $data['autocomplete'] : '') - ); - - case 'image': - return html_print_input_image( - $data['name'], - $data['src'], - $data['value'], - ((isset($data['style']) === true) ? $data['style'] : ''), - ((isset($data['return']) === true) ? $data['return'] : false), - ((isset($data['options']) === true) ? $data['options'] : false) - ); - - case 'text_extended': - return html_print_input_text_extended( - $data['name'], - $data['value'], - $data['id'], - $data['alt'], - $data['size'], - $data['maxlength'], - $data['disabled'], - $data['script'], - $data['attributes'], - ((isset($data['return']) === true) ? $data['return'] : false), - ((isset($data['password']) === true) ? $data['password'] : false), - ((isset($data['function']) === true) ? $data['function'] : '') - ); - - case 'password': - return html_print_input_password( - $data['name'], - $data['value'], - ((isset($data['alt']) === true) ? $data['alt'] : ''), - ((isset($data['size']) === true) ? $data['size'] : 50), - ((isset($data['maxlength']) === true) ? $data['maxlength'] : 255), - ((isset($data['return']) === true) ? $data['return'] : false), - ((isset($data['disabled']) === true) ? $data['disabled'] : false), - ((isset($data['required']) === true) ? $data['required'] : false), - ((isset($data['class']) === true) ? $data['class'] : '') - ); - - case 'text': - return html_print_input_text( - $data['name'], - $data['value'], - ((isset($data['alt']) === true) ? $data['alt'] : ''), - ((isset($data['size']) === true) ? $data['size'] : 50), - ((isset($data['maxlength']) === true) ? $data['maxlength'] : 255), - ((isset($data['return']) === true) ? $data['return'] : false), - ((isset($data['disabled']) === true) ? $data['disabled'] : false), - ((isset($data['required']) === true) ? $data['required'] : false), - ((isset($data['function']) === true) ? $data['function'] : ''), - ((isset($data['class']) === true) ? $data['class'] : ''), - ((isset($data['onChange']) === true) ? $data['onChange'] : ''), - ((isset($data['autocomplete']) === true) ? $data['autocomplete'] : '') - ); - - case 'image': - return html_print_input_image( - $data['name'], - $data['src'], - $data['value'], - ((isset($data['style']) === true) ? $data['style'] : ''), - ((isset($data['return']) === true) ? $data['return'] : false), - ((isset($data['options']) === true) ? $data['options'] : false) - ); - - case 'hidden': - return html_print_input_hidden( - $data['name'], - $data['value'], - ((isset($data['return']) === true) ? $data['return'] : false), - ((isset($data['class']) === true) ? $data['class'] : false) - ); - - case 'hidden_extended': - return html_print_input_hidden_extended( - $data['name'], - $data['value'], - $data['id'], - ((isset($data['return']) === true) ? $data['return'] : false), - ((isset($data['class']) === true) ? $data['class'] : false) - ); - - case 'color': - return html_print_input_color( - $data['name'], - $data['value'], - ((isset($data['class']) === true) ? $data['class'] : false), - ((isset($data['return']) === true) ? $data['return'] : false) - ); - - case 'file': - return html_print_input_file( - $data['name'], - ((isset($data['return']) === true) ? $data['return'] : false), - ((isset($data['options']) === true) ? $data['options'] : false) - ); - - case 'select': - return html_print_select( - $data['fields'], - $data['name'], - ((isset($data['selected']) === true) ? $data['selected'] : ''), - ((isset($data['script']) === true) ? $data['script'] : ''), - ((isset($data['nothing']) === true) ? $data['nothing'] : ''), - ((isset($data['nothing_value']) === true) ? $data['nothing_value'] : 0), - ((isset($data['return']) === true) ? $data['return'] : false), - ((isset($data['multiple']) === true) ? $data['multiple'] : false), - ((isset($data['sort']) === true) ? $data['sort'] : true), - ((isset($data['class']) === true) ? $data['class'] : ''), - ((isset($data['disabled']) === true) ? $data['disabled'] : false), - ((isset($data['style']) === true) ? $data['style'] : false), - ((isset($data['option_style']) === true) ? $data['option_style'] : false), - ((isset($data['size']) === true) ? $data['size'] : false), - ((isset($data['modal']) === true) ? $data['modal'] : false), - ((isset($data['message']) === true) ? $data['message'] : ''), - ((isset($data['select_all']) === true) ? $data['select_all'] : false) - ); - - case 'select_from_sql': - return html_print_select_from_sql( - $data['sql'], - $data['name'], - ((isset($data['selected']) === true) ? $data['selected'] : ''), - ((isset($data['script']) === true) ? $data['script'] : ''), - ((isset($data['nothing']) === true) ? $data['nothing'] : ''), - ((isset($data['nothing_value']) === true) ? $data['nothing_value'] : '0'), - ((isset($data['return']) === true) ? $data['return'] : false), - ((isset($data['multiple']) === true) ? $data['multiple'] : false), - ((isset($data['sort']) === true) ? $data['sort'] : true), - ((isset($data['disabled']) === true) ? $data['disabled'] : false), - ((isset($data['style']) === true) ? $data['style'] : false), - ((isset($data['size']) === true) ? $data['size'] : false), - ((isset($data['trucate_size']) === true) ? $data['trucate_size'] : GENERIC_SIZE_TEXT) - ); - - case 'select_groups': - return html_print_select_groups( - ((isset($data['id_user']) === true) ? $data['id_user'] : false), - ((isset($data['privilege']) === true) ? $data['privilege'] : 'AR'), - ((isset($data['returnAllGroup']) === true) ? $data['returnAllGroup'] : true), - $data['name'], - ((isset($data['selected']) === true) ? $data['selected'] : ''), - ((isset($data['script']) === true) ? $data['script'] : ''), - ((isset($data['nothing']) === true) ? $data['nothing'] : ''), - ((isset($data['nothing_value']) === true) ? $data['nothing_value'] : 0), - ((isset($data['return']) === true) ? $data['return'] : false), - ((isset($data['multiple']) === true) ? $data['multiple'] : false), - ((isset($data['sort']) === true) ? $data['sort'] : true), - ((isset($data['class']) === true) ? $data['class'] : ''), - ((isset($data['disabled']) === true) ? $data['disabled'] : false), - ((isset($data['style']) === true) ? $data['style'] : false), - ((isset($data['option_style']) === true) ? $data['option_style'] : false), - ((isset($data['id_group']) === true) ? $data['id_group'] : false), - ((isset($data['keys_field']) === true) ? $data['keys_field'] : 'id_grupo'), - ((isset($data['strict_user']) === true) ? $data['strict_user'] : false), - ((isset($data['delete_groups']) === true) ? $data['delete_groups'] : false), - ((isset($data['include_groups']) === true) ? $data['include_groups'] : false), - ((isset($data['size']) === true) ? $data['size'] : false), - ((isset($data['simple_multiple_options']) === true) ? $data['simple_multiple_options'] : false) - ); - - case 'submit': - return '
'.html_print_submit_button( - ((isset($data['label']) === true) ? $data['label'] : 'OK'), - ((isset($data['name']) === true) ? $data['name'] : ''), - ((isset($data['disabled']) === true) ? $data['disabled'] : false), - ((isset($data['attributes']) === true) ? $data['attributes'] : ''), - ((isset($data['return']) === true) ? $data['return'] : false) - ).'
'; - - case 'checkbox': - return html_print_checkbox( - $data['name'], - $data['value'], - ((isset($data['checked']) === true) ? $data['checked'] : false), - ((isset($data['return']) === true) ? $data['return'] : false), - ((isset($data['disabled']) === true) ? $data['disabled'] : false), - ((isset($data['script']) === true) ? $data['script'] : ''), - ((isset($data['disabled_hidden']) === true) ? $data['disabled_hidden'] : false) - ); - - case 'switch': - return html_print_switch($data); - - case 'interval': - return html_print_extended_select_for_time( - $data['name'], - $data['value'], - ((isset($data['script']) === true) ? $data['script'] : ''), - ((isset($data['nothing']) === true) ? $data['nothing'] : ''), - ((isset($data['nothing_value']) === true) ? $data['nothing_value'] : 0), - ((isset($data['size']) === true) ? $data['size'] : false), - ((isset($data['return']) === true) ? $data['return'] : false), - ((isset($data['style']) === true) ? $data['selected'] : false), - ((isset($data['unique']) === true) ? $data['unique'] : false) - ); - - case 'textarea': - return html_print_textarea( - $data['name'], - $data['rows'], - $data['columns'], - ((isset($data['value']) === true) ? $data['value'] : ''), - ((isset($data['attributes']) === true) ? $data['attributes'] : ''), - ((isset($data['return']) === true) ? $data['return'] : false), - ((isset($data['class']) === true) ? $data['class'] : '') - ); - - default: - // Ignore. - break; + $input = html_print_input(($data + ['return' => true]), 'div', true); + if ($input === false) { + return ''; } - return ''; + return $input; } @@ -556,6 +335,7 @@ class Wizard ], 'inputs' => [ [ + 'class' => 'w100p', 'arguments' => [ 'name' => 'submit', 'label' => __('Go back'), @@ -594,13 +374,24 @@ class Wizard if (is_array($input['block_content']) === true) { // Print independent block of inputs. - $output .= '
  • '; - $output .= ''; + } else { + $output .= '
  • '; + } } else { if ($input['arguments']['type'] != 'hidden') { $output .= '
  • '; @@ -648,7 +439,7 @@ class Wizard if (is_array($input['block_content']) === true) { // Print independent block of inputs. $output .= '
  • '; - $output .= '