$jquery, 'ui' => $ui); jquery_update_library_alter($libraries, 'system'); $versions['admin_theme']['jquery'] = $libraries['jquery']['version']; $versions['admin_theme']['ui'] = $libraries['ui']['version']; } catch (\Exception $e) { watchdog_exception('jquery_update', $e); $requirements['jquery_update_error'] = array( 'title' => t('An error occurred when checking jQuery versions'), 'severity' => REQUIREMENT_ERROR, 'description' => t('See the logs for more information.'), ); $GLOBALS['theme_key'] = $backup_theme_key; return $requirements; } $GLOBALS['theme_key'] = $backup_theme_key; } // Try to retrieve versions for the default theme too. This seems a hacky // way to do it, but we cannot rely on theme_get_setting() to reflect what // the alter hook will actually set for the jquery libraries. $default_theme = variable_get('theme_default', NULL); if (!is_null($default_theme)) { $backup_theme_key = $GLOBALS['theme_key']; $GLOBALS['theme_key'] = $default_theme; try { $libraries = array('jquery' => $jquery, 'ui' => $ui); jquery_update_library_alter($libraries, 'system'); $versions['theme_default']['jquery'] = $libraries['jquery']['version']; $versions['theme_default']['ui'] = $libraries['ui']['version']; } catch (\Exception $e) { watchdog_exception('jquery_update', $e); $requirements['jquery_update_error'] = array( 'title' => t('An error occurred when checking jQuery versions'), 'severity' => REQUIREMENT_ERROR, 'description' => t('See the logs for more information.'), ); $GLOBALS['theme_key'] = $backup_theme_key; return $requirements; } $GLOBALS['theme_key'] = $backup_theme_key; } foreach ($versions as $theme => $library_version) { if (!$theme_key = variable_get($theme, FALSE)) { $theme_key = $default_theme; } $theme_name = $themes[$theme_key]->info['name']; $requirements['jquery_update_' . $theme] = array( 'title' => t('jQuery Update (@theme: %theme_name)', array( '@theme' => $theme, '%theme_name' => $theme_name, )), 'severity' => REQUIREMENT_OK, 'value' => t('jQuery %jquery (configure) and jQuery UI %ui', array( '%jquery' => $library_version['jquery'], '%ui' => $library_version['ui'], '@link' => url('admin/config/development/jquery_update'), )), ); } $updates_available = _jquery_update_check_available_updates(); if (!empty($updates_available)) { $requirements['jquery_update_library_updates_available'] = array( 'title' => t('jQuery Update library updates available'), 'severity' => variable_get('jquery_update_warning_available_update', TRUE) ? REQUIREMENT_WARNING : REQUIREMENT_INFO, 'value' => format_string('%libraries', array( '@link' => url('admin/config/development/jquery_update', array('fragment' => 'edit-jquery-latest-versions')), '%libraries' => implode(', ', $updates_available), )), 'description' => t('Updates are available for at least one library managed by jQuery Update.'), ); } } return $requirements; } /** * Helper function for setting a theme jQuery version during install or update. * * @param string $theme_key * The machine name of the theme to set. * @param string $version * The MAJOR.MINOR jQuery version to set. */ function _jquery_update_set_theme_version($theme_key, $version) { // Retrieve the cached theme settings. theme_get_setting('jquery_update_jquery_version', $theme_key); $theme_settings = drupal_static('theme_get_setting', array()); // Set the jQuery version. $theme_settings[$theme_key]['jquery_update_jquery_version'] = $version; variable_set('theme_' . $theme_key . '_settings', $theme_settings[$theme_key]); } /** * Implements hook_install(). */ function jquery_update_install() { // Use core's default jQuery version for the "seven" admin theme. _jquery_update_set_theme_version('seven', 'default'); } /** * Implements hook_uninstall(). */ function jquery_update_uninstall() { variable_del('jquery_update_compression_type'); variable_del('jquery_update_jquery_version'); variable_del('jquery_update_jquery_cdn'); variable_del('jquery_update_custom_version_jquery'); variable_del('jquery_update_jquery_migrate_enable'); variable_del('jquery_update_jquery_migrate_cdn'); variable_del('jquery_update_jquery_migrate_warnings'); variable_del('jquery_update_jquery_migrate_trace'); variable_del('jquery_update_custom_path_jquery'); variable_del('jquery_update_custom_version_jquery'); variable_del('jquery_update_custom_path_jqueryui'); variable_del('jquery_update_custom_version_jqueryui'); variable_del('jquery_update_custom_path_cookie'); variable_del('jquery_update_custom_version_jquery_cookie'); variable_del('jquery_update_custom_path_form'); variable_del('jquery_update_custom_version_jquery_form'); variable_del('jquery_update_custom_path_migrate'); variable_del('jquery_update_custom_version_jquery_migrate'); variable_del('jquery_update_check_latest_versions'); variable_del('jquery_update_latest_versions_checked'); variable_del('jquery_update_latest_version_jquery'); variable_del('jquery_update_latest_version_jqueryui'); variable_del('jquery_update_latest_version_jquery_cookie'); variable_del('jquery_update_latest_version_jquery_form'); variable_del('jquery_update_latest_version_jquery_migrate'); variable_del('jquery_update_warning_available_update'); } /** * Update from Drupal 6. */ function jquery_update_update_7000() { if (variable_get('jquery_update_compression_type', 'min') == 'pack') { variable_set('jquery_update_compression_type', 'min'); } variable_del('jquery_update_replace'); // Restore the default version of jQuery. variable_del('jquery_update_jquery_version'); } /** * Convert jquery_update_jquery_admin_version to an admin theme setting. */ function jquery_update_update_7001() { // Detect if the previous feature of the "admin version" variable is set. // @see https://www.drupal.org/node/1969244 $admin_theme = variable_get('admin_theme', FALSE); $admin_version = variable_get('jquery_update_jquery_admin_version', 'default'); // Ensure that if "seven" is set as the admin theme and no "admin version" // is present, the version used on the admin theme is the "default" core // provides to ensure major compatibility with contrib modules. if (!$admin_version && $admin_theme === 'seven') { $admin_version = 'default'; } // Skip this update if the "admin version" was never set and the admin theme // is not set as "seven". elseif (!$admin_version) { return; } // Continue setting the admin theme jQuery version. _jquery_update_set_theme_version($admin_theme, $admin_version); // Remove the admin version variable. variable_del('jquery_update_jquery_admin_version'); } /** * Convert all jQuery version settings to be one of the two supported versions. */ function jquery_update_update_7002() { module_load_include('module', 'jquery_update'); _jquery_update_convert_settings_to_supported_versions(); }