Same filename in other branches
  1. 5.0.x advagg.install
  2. 6.0.x advagg.install
  3. 7.x-1.x advagg.install
  4. 7.x-2.x advagg.install
  5. 8.x-3.x advagg.install
  6. 8.x-4.x advagg.install

Handles Advanced Aggregation installation and upgrade tasks.

Fichier

./advagg.install

View source
<?php


/**
 * @file
 * Handles Advanced Aggregation installation and upgrade tasks.
 */
use Drupal\Core\Url;

/**
 * Implements hook_install().
 */
function advagg_install() {
    // Make sure permissions for dirs are correct. Needed if installed via drush.
    $stat_public = stat('public://');
    // Check if this folder already exists - could be the case on re-install.
    if (!file_exists('public://css')) {
        \Drupal::service('file_system')->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() {
    \Drupal::service('state.advagg.files')->deleteAll();
}

/**
 * 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('<a href="!url">%name()</a> 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');
    $system_config = \Drupal::config('system.performance');
    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 <a href="@settings">settings page</a> and enable it.', [
                    '@settings' => Url::fromRoute('advagg.settings')->toString(),
                ]),
            ];
        }
        if (!$system_config->get('css.preprocess') || !$system_config->get('js.preprocess')) {
            $requirements['advagg_core_off'] = [
                'title' => $t('Adv CSS/JS Agg - Core Variables'),
                'severity' => REQUIREMENT_ERROR,
                'value' => $t('Cores CSS and/or JS aggregation is disabled.'),
                'description' => $t('"Aggregate CSS files" and "Aggregate JavaScript files" on the <a href="@performance">performance page</a> should be enabled.', [
                    '@performance' => Url::fromRoute('system.performance_settings')->toString(),
                ]),
            ];
        }
    }
    $description = '';
    if (!$config->get('enabled')) {
        $description .= ' ' . $t('Advanced CSS/JS aggregation is disabled. Go to the Advanced CSS/JS aggregation <a href="@settings">settings page</a> and enable it.', [
            '@settings' => Url::fromRoute('advagg.settings')->toString(),
        ]);
    }
    if (!$system_config->get('css.preprocess') || !$system_config->get('js.preprocess')) {
        $description .= ' ' . $t('Cores CSS and/or JS aggregation is disabled. "Aggregate CSS files" and "Aggregate JavaScript files" on the <a href="@performance">performance page</a> should be enabled.', [
            '@performance' => Url::fromRoute('system.performance_settings')->toString(),
        ]);
    }
    if ($config->get('cache_level') < 0) {
        $description .= ' ' . $t('Currently running in development mode.');
    }
    $requirements['advagg_ok'] = [
        '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;
}

/**
 * Implements hook_update_N().
 *
 * Updates all the stored file information.
 */
function advagg_update_8201() {
    $advagg_files = \Drupal::service('state.advagg.files');
    $files = $advagg_files->getAll();
    foreach ($files as $file => $cached) {
        $advagg_files->scanFile($file, $cached);
    }
}

/**
 * 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 depracated configuration.
 */
function advagg_update_8203() {
    \Drupal::configFactory()->getEditable('advagg.settings')
        ->clear('path.convert.absolute_to_relative')
        ->save();
}

Functions

Titre Deprecated Résumé
advagg_install Implements hook_install().
advagg_requirements Implements hook_requirements().
advagg_uninstall Implements hook_uninstall().
advagg_update_8201 Implements hook_update_N().
advagg_update_8202 Implements hook_update_N().
advagg_update_8203 Implements hook_update_N().