mkdir('public://css');
  }
  $stat_css = stat('public://css');
  // Check if this folder already exists - could be the case on re-install.
  if (!file_exists('public://js')) {
    \Drupal::service('file_system')->mkdir('public://js');
  }
  $stat_js = stat('public://js');
  if (isset($stat_public['uid'])) {
    if (isset($stat_css['uid']) && $stat_public['uid'] != $stat_css['uid']) {
      @chown($stat_css[0], $stat_public['uid']);
    }
    if (isset($stat_js['uid']) && $stat_public['uid'] != $stat_js['uid']) {
      @chown($stat_js[0], $stat_public['uid']);
    }
  }
  if (isset($stat_public['gid'])) {
    if (isset($stat_css['gid']) && $stat_public['gid'] != $stat_css['gid']) {
      @chgrp($stat_css[0], $stat_public['gid']);
    }
    if (isset($stat_js['uid']) && $stat_public['gid'] != $stat_js['gid']) {
      @chgrp($stat_js[0], $stat_public['gid']);
    }
  }
}
/**
 * Implements hook_uninstall().
 */
function advagg_uninstall() {
  $form = OperationsForm::create(Drupal::getContainer());
  $form->clearAggregates();
}
/**
 * Implements hook_requirements().
 */
function advagg_requirements($phase) {
  $requirements = [];
  // Ensure translations don't break at install time.
  $t = 't';
  // Always check these, independent of the current phase.
  $function_list = [
    'rename',
  ];
  // Check each function to make sure it exists.
  foreach ($function_list as $function_name) {
    if (!function_exists($function_name)) {
      $requirements['advagg_function_' . $function_name] = [
        'title' => $t('Adv CSS/JS Agg - Function Disabled'),
        'value' => $phase === 'install' ? FALSE : $function_name,
        'severity' => REQUIREMENT_ERROR,
        'description' => $t('%name() is disabled on this server. Please contact your hosting provider or server administrator and see if they can re-enable this function for you.', [
          '!url' => 'http://php.net/' . str_replace('_', '-', $function_name),
          '%name' => $function_name,
        ]),
      ];
    }
  }
  // If not at runtime, return here.
  if ($phase !== 'runtime') {
    return $requirements;
  }
  $config = \Drupal::config('advagg.settings');
  if (!$config->get('skip_enabled_preprocess_check')) {
    // Make sure variables are set correctly.
    if (!$config->get('enabled')) {
      $requirements['advagg_not_on'] = [
        'title' => $t('Adv CSS/JS Agg - Enabled'),
        'severity' => REQUIREMENT_WARNING,
        'value' => $t('Advanced CSS/JS aggregation is disabled.'),
        'description' => $t('Go to the Advanced CSS/JS aggregation settings page and enable it.', ['@settings' => Url::fromRoute('advagg.settings')->toString()]),
      ];
    }
  }
  $advaggMessages = [];
  if (!$config->get('enabled')) {
    $advaggMessages[] = $t('Advanced CSS/JS aggregation is disabled. Go to the Advanced CSS/JS aggregation settings page and enable it.', ['@settings' => Url::fromRoute('advagg.settings')->toString()]);
  }
  if ($config->get('cache_level') === 0) {
    $advaggMessages[] = $t('Currently running in development mode.');
  }
  $requirements['advagg_ok'] = [
    'title' => $t('Adv CSS/JS Agg'),
    'severity' => REQUIREMENT_OK,
    'value' => $t('Advanced CSS/JS Aggregator should be working correctly.'),
    'description' => [
      '#theme' => 'item_list',
      '#items' => $advaggMessages,
      '#title' => '',
      '#list_type' => 'ul',
      '#attributes' => [],
    ],
  ];
  return $requirements;
}
/**
 * Implements hook_update_N().
 *
 * Remove unused configuration keys.
 */
function advagg_update_8202() {
  \Drupal::configFactory()->getEditable('advagg.settings')
    ->clear('separator')
    ->clear('advagg_clear_scripts')
    ->save();
}
/**
 * Implements hook_update_N().
 *
 * Remove deprecated configuration.
 */
function advagg_update_8203() {
  \Drupal::configFactory()->getEditable('advagg.settings')
    ->clear('path.convert.absolute_to_relative')
    ->save();
}
/**
 * Implements hook_update_N().
 *
 * Update Configuration options for 8.x-3.x.
 */
function advagg_update_8301() {
  /** @var \Drupal\Core\Config\Config $config */
  $config = \Drupal::configFactory()->getEditable('advagg.settings');
  $config
    ->clear('serializer')
    ->clear('css.ie')
    ->set('cache_level', 2)
    ->clear('debug')
    ->clear('include_base_url')
    ->clear('css.via_js')
    ->clear('root_dir_prefix')
    ->clear('core_groups')
    ->set('js.fix_type', $config->get('js_fix_type'))
    ->set('js.preserve_external', $config->get('js_preserve_external'))
    ->clear('js_preserve_external')
    ->clear('js_fix_type')
    ->set('css.brotli', TRUE)
    ->set('js.brotli', TRUE)
    ->set('immutable', TRUE)
    ->save();
  AssetOptimizer::generateHtaccess('css');
  AssetOptimizer::generateHtaccess('js');
}
/**
 * Implements hook_update_N().
 *
 * Remove advagg_bundler module from system schema.
 */
function advagg_update_8302() {
  \Drupal::database()->delete('key_value')
    ->condition('collection', 'system.schema')
    ->condition('name', 'advagg_bundler')
    ->execute();
}
/**
 * Ensure old advagg_old_ie_compatibility module is uninstalled.
 */
function advagg_update_10001() {
    /** @var \Drupal\Core\Extension\ModuleInstallerInterface $installer */
    $installer = \Drupal::service('module_installer');
    $installer->uninstall(['advagg_old_ie_compatibility']);
}
/**
 * Uninstall Advagg CDN module.
 */
function advagg_update_10002() {
  /** @var \Drupal\Core\Extension\ModuleInstallerInterface $installer */
  $installer = \Drupal::service('module_installer');
  $installer->uninstall(['advagg_cdn']);
}