/** * Generate the HTML code for the firewall settings panel. * * @param string $api_key The CloudProxy API key. * @return string The parsed-content of the firewall settings panel. */ function sucuriscan_firewall_settings($api_key = '') { $params = array('Firewall.APIKey' => '', 'Firewall.APIKeyVisibility' => 'hidden', 'Firewall.APIKeyFormVisibility' => 'visible', 'Firewall.SettingsVisibility' => 'hidden', 'Firewall.SettingOptions' => ''); if ($api_key && array_key_exists('string', $api_key)) { $settings = SucuriScanAPI::getCloudproxySettings($api_key); $params['Firewall.APIKeyVisibility'] = 'visible'; $params['Firewall.APIKeyFormVisibility'] = 'hidden'; $params['Firewall.APIKey'] = $api_key['string']; if ($settings) { $counter = 0; $params['Firewall.SettingsVisibility'] = 'visible'; $settings = sucuriscan_explain_firewall_settings($settings); foreach ($settings as $option_name => $option_value) { $css_class = $counter % 2 === 0 ? 'alternate' : ''; $option_title = ucwords(str_replace('_', " ", $option_name)); // Generate a HTML list when the option's value is an array. if (is_array($option_value)) { $css_scrollable = count($option_value) > 10 ? 'sucuriscan-list-as-table-scrollable' : ''; $html_list = '<ul class="sucuriscan-list-as-table ' . $css_scrollable . '">'; foreach ($option_value as $single_value) { $html_list .= '<li>' . SucuriScan::escape($single_value) . '</li>'; } $html_list .= '</ul>'; $option_value = $html_list; } else { $option_value = SucuriScan::escape($option_value); } // Parse the snippet template and replace the pseudo-variables. $params['Firewall.SettingOptions'] .= SucuriScanTemplate::getSnippet('firewall-settings', array('Firewall.OptionCssClass' => $css_class, 'Firewall.OptionName' => $option_title, 'Firewall.OptionValue' => $option_value)); $counter++; } } } return SucuriScanTemplate::getSection('firewall-settings', $params); }