You are here

function advagg_requirements in Advanced CSS/JS Aggregation 7.2

Same name and namespace in other branches
  1. 8.4 advagg.install \advagg_requirements()
  2. 8.2 advagg.install \advagg_requirements()
  3. 8.3 advagg.install \advagg_requirements()
  4. 6 advagg.install \advagg_requirements()
  5. 7 advagg.install \advagg_requirements()

Implements hook_requirements().

File

./advagg.install, line 1259
Handles Advanced Aggregation installation and upgrade tasks.

Code

function advagg_requirements($phase) {
  $t = get_t();
  $requirements = advagg_install_fast_checks($phase);

  // If not at runtime, return here.
  if ($phase !== 'runtime') {
    return $requirements;
  }

  // Make sure outbound http requests will work.
  $request = drupal_http_request('https://www.google.com/robots.txt', array(
    'timeout' => 8,
  ));
  if (empty($request->data) || $request->code != 200) {
    $requirements['advagg_drupal_http_request_failure'] = array(
      'title' => $t('Adv CSS/JS Agg - drupal_http_request test'),
      'severity' => REQUIREMENT_WARNING,
      'value' => $t('An external request for https://www.google.com/robots.txt could not be fulfilled.'),
      'description' => $t('If drupal_http_request does not work, the tests that AdvAgg performs may not be accurate.'),
    );
  }

  // Make sure http requests to advagg will work.
  advagg_install_check_via_http($requirements);

  // Check that file writes happen without any errors.
  if (empty($requirements)) {
    module_load_include("missing.inc", "advagg");
    $current_hash = advagg_get_current_hooks_hash();
    $aggregate_settings = advagg_get_hash_settings($current_hash);
    $types = array(
      'css',
      'js',
    );
    foreach ($types as $type) {
      $filename = $type . ADVAGG_SPACE . 'test_write' . REQUEST_TIME . '.' . $type;
      $files = array(
        'misc/farbtastic/farbtastic.' . $type => array(),
      );
      list($files_to_save, $errors) = advagg_save_aggregate($filename, $files, $type, $aggregate_settings);
      foreach ($files_to_save as $uri => $data) {
        @unlink($uri);
      }
      if (!empty($errors)) {
        $requirements['advagg_file_write_error_' . $type] = array(
          'title' => $t('Adv CSS/JS Agg - File Write'),
          'severity' => REQUIREMENT_WARNING,
          'value' => $t('File write had some issues with %type files.', array(
            '%type' => $type,
          )),
          'description' => $t('Most likely there is an issue with file and/or directory premissions. Error: @error', array(
            '@error' => print_r($errors, TRUE),
          )),
        );
      }
    }
  }

  // If all requirements have been met, state advagg should be working.
  if (empty($requirements)) {
    $description = '';
    if (variable_get('advagg_cache_level', ADVAGG_CACHE_LEVEL) < 0) {
      $description .= ' ' . $t('Currently running in development mode.');
    }
    if (variable_get('advagg_cache_level', ADVAGG_CACHE_LEVEL) < 5) {
      $aggressive_cache_conflicts = advagg_aggressive_cache_conflicts();
      if (empty($aggressive_cache_conflicts)) {
        $description .= ' ' . $t('It appears that there are no incompatible modules, so you should be able to safely use the Aggressive cache. To adjust this setting, go to the <a href="@config">AdvAgg: configuration page</a> and under "AdvAgg Cache Settings" select Aggressive and then save.', array(
          '@config' => url('admin/config/development/performance/advagg', array(
            'fragment' => 'edit-advagg-cache-level',
          )),
        ));
      }
    }
    $requirements['advagg_ok'] = array(
      'title' => $t('Adv CSS/JS Agg'),
      'severity' => REQUIREMENT_OK,
      'value' => $t('OK'),
      'description' => $t('Advanced CSS/JS Aggregator should be working correctly.') . ' ' . $description,
    );
  }
  return $requirements;
}