t('Use HTTP 1.1 settings'),
2 => t('Use HTTP 2.0 settings'),
4 => t('Use customized settings'),
);
$form['advagg_bundler_admin_mode'] = array(
'#type' => 'radios',
'#title' => t('AdvAgg Settings'),
'#default_value' => variable_get('advagg_bundler_admin_mode', ADVAGG_BUNDLER_ADMIN_MODE),
'#options' => $options,
'#description' => t("Default settings will mirror core as closely as possible.
Recommended settings are optimized for speed."),
);
// Test http2.
$http2_support = 0;
$url = 'https://tools.keycdn.com/http2-query.php?url=' . url('', array('absolute' => TRUE));
if (filter_var($_SERVER['HTTP_HOST'], FILTER_VALIDATE_IP) === FALSE && $_SERVER['HTTP_HOST'] !== 'localhost') {
$response = drupal_http_request($url, array(
'timeout' => 3,
));
}
else {
$response = new stdClass();
$response->code = 0;
}
if ($response->code == 200 && !empty($response->data)) {
$http2_support = 1;
if (stripos($response->data, 'success') !== FALSE) {
$http2_support = 2;
}
}
if (stripos($_SERVER['SERVER_SOFTWARE'], 'apache') !== FALSE && is_callable('apache_get_modules')) {
$modules = apache_get_modules();
$key_a = array_search('mod_http2', $modules);
$key_b = array_search('mod_h2', $modules);
if ($key_a !== FALSE || $key_b !== FALSE) {
$http2_support += 4;
}
}
// Display http2 info.
if ($http2_support & 2) {
$description = t('This server supports HTTP 2.0; the test from @url came back ok.', array('@url' => $url));
}
else {
if ($http2_support == 0) {
$description = t('AdvAgg can not detect if this server supports HTTP 2.0. You can go here to learn how to enable it.', array('@url' => 'https://httpd.apache.org/docs/2.4/mod/mod_http2.html'));
}
elseif ($http2_support & 4) {
$description = t('It appears that this server could support HTTP 2.0 (apache mod_http2 found)', array(
'@url' => 'https://httpd.apache.org/docs/2.4/mod/mod_http2.html',
));
if ($http2_support & 1) {
$description .= t(', but it may not be configured to do so. The test from here was inconclusive.', array(
'@test' => $url,
));
}
else {
if (count($response) == 1) {
$description .= t(', but the test from here was not actually done due to the URL being an IP address or localhost.', array(
'@test' => $url,
));
}
else {
$description .= t(', but the test from here was inconclusive.', array(
'@test' => $url,
));
}
}
}
else {
$description = t('This server does not support HTTP 2.0.');
}
$description .= ' ' . t('This guide can help you get http2 enabled on your site.', array('@url' => 'https://geekflare.com/http2-implementation-apache-nginx/'));
}
if (!empty($description)) {
$form['advagg_http2'] = array(
'#markup' => "
{$description}
", ); } $form['global_container'] = array( '#type' => 'container', '#hidden' => TRUE, '#states' => array( 'visible' => array( ':input[name="advagg_bundler_admin_mode"]' => array('value' => '4'), ), ), ); $form['global_container']['advagg_bundler_active'] = array( '#type' => 'checkbox', '#title' => t('Bundler is Active (recommended)'), '#default_value' => variable_get('advagg_bundler_active', ADVAGG_BUNDLER_ACTIVE), '#description' => t('If not checked, the bundler will passively monitor your site, but it will not split up aggregates.'), ); $options = array( 0 => 0, 1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5, 6 => 6, 7 => 7, 8 => 8, 9 => 9, 10 => 10, 11 => 11, 12 => 12, 13 => 13, 14 => 14, 15 => 15, 16 => 16, 17 => 17, 18 => 18, 19 => 19, 20 => 20, 21 => 21, 22 => 22, 23 => 23, 24 => 24, 25 => 25, ); $form['global_container']['advagg_bundler_max_css'] = array( '#type' => 'select', '#title' => t('Target Number Of CSS Bundles Per Page'), '#default_value' => variable_get('advagg_bundler_max_css', ADVAGG_BUNDLER_MAX_CSS), '#options' => $options, '#description' => t('If 0 is selected then the bundler is disabled. 2 is recommended for HTTP 1.1 and 25 for HTTP 2.0.'), '#states' => array( 'disabled' => array( '#edit-advagg-bundler-active' => array('checked' => FALSE), ), ), '#recommended_value' => 25, ); $form['global_container']['advagg_bundler_max_js'] = array( '#type' => 'select', '#title' => t('Target Number Of JS Bundles Per Page'), '#default_value' => variable_get('advagg_bundler_max_js', ADVAGG_BUNDLER_MAX_JS), '#options' => $options, '#description' => t('If 0 is selected then the bundler is disabled. 5 is recommended for HTTP 1.1 and 25 for HTTP 2.0.'), '#states' => array( 'disabled' => array( '#edit-advagg-bundler-active' => array('checked' => FALSE), ), ), '#recommended_value' => 25, ); $form['global_container']['advagg_bundler_grouping_logic'] = array( '#type' => 'radios', '#title' => t('Grouping logic'), '#default_value' => variable_get('advagg_bundler_grouping_logic', ADVAGG_BUNDLER_GROUPING_LOGIC), '#options' => array( 0 => t('File count'), 1 => t('File size'), ), '#description' => t('If file count is selected then each bundle will try to have a similar number of original files aggregated inside of it. If file size is selected then each bundle will try to have a similar file size.'), '#states' => array( 'disabled' => array( '#edit-advagg-bundler-active' => array('checked' => FALSE), ), ), '#recommended_value' => 0, ); $form['global_container']['info'] = array( '#type' => 'fieldset', '#collapsible' => TRUE, '#collapsed' => TRUE, '#title' => t('Raw Grouping Info'), ); module_load_include('inc', 'advagg', 'advagg.admin'); $analysis = advagg_bundler_analysis('', TRUE); $rawtext = print_r($analysis, TRUE); $form['global_container']['info']['advagg_bundler_info'] = array( '#type' => 'textarea', '#title' => t('%count different groupings', array('%count' => count($analysis))), '#default_value' => $rawtext, '#rows' => 30, ); // Clear the cache bins on submit. Also remove advagg_bundler_info so it // doesn't get added to the variable table. $form['#submit'][] = 'advagg_bundler_admin_settings_form_submit'; return system_settings_form($form); } /** * Submit callback, clear out the advagg cache bin. * * @ingroup advagg_forms_callback */ function advagg_bundler_admin_settings_form_submit($form, &$form_state) { // Clear caches. advagg_cache_clear_admin_submit(); // Unset advagg_bundler_info. if (isset($form_state['values']['advagg_bundler_info'])) { unset($form_state['values']['advagg_bundler_info']); } // Reset this form to defaults or recommended values; also show what changed. advagg_set_admin_form_defaults_recommended($form_state, 'advagg_bundler_admin_mode'); }