Example #1
0
/**
 * 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);
}