Issue #2223249 by alexpott: Remove hook_language_insert/update/delete/presave in favour of entity hooks.
parent
fa84283f78
commit
e1dd5a1efd
|
@ -7,6 +7,7 @@
|
|||
|
||||
use Drupal\block\BlockInterface;
|
||||
use Drupal\Component\Plugin\Exception\PluginException;
|
||||
use Drupal\language\Entity\Language;
|
||||
use Symfony\Cmf\Component\Routing\RouteObjectInterface;
|
||||
|
||||
/**
|
||||
|
@ -444,16 +445,16 @@ function block_menu_delete($menu) {
|
|||
}
|
||||
|
||||
/**
|
||||
* Implements hook_language_delete().
|
||||
* Implements hook_ENTITY_TYPE_delete() for 'language_entity'.
|
||||
*
|
||||
* Delete the potential block visibility settings of the deleted language.
|
||||
*/
|
||||
function block_language_delete($language) {
|
||||
function block_language_entity_delete(Language $language) {
|
||||
// Remove the block visibility settings for the deleted language.
|
||||
foreach (entity_load_multiple('block') as $block) {
|
||||
$visibility = $block->get('visibility');
|
||||
if (isset($visibility['language']['langcodes'][$language->id])) {
|
||||
unset($visibility['language']['langcodes'][$language->id]);
|
||||
if (isset($visibility['language']['langcodes'][$language->id()])) {
|
||||
unset($visibility['language']['langcodes'][$language->id()]);
|
||||
$block->set('visibility', $visibility);
|
||||
$block->save();
|
||||
}
|
||||
|
|
|
@ -77,53 +77,6 @@ function hook_language_negotiation_info_alter(array &$negotiation_info) {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* React to a language about to be added or updated in the system.
|
||||
*
|
||||
* @param $language
|
||||
* A language object.
|
||||
*/
|
||||
function hook_language_presave($language) {
|
||||
if ($language->default) {
|
||||
// React to a new default language.
|
||||
example_new_default_language($language);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* React to a language that was just added to the system.
|
||||
*
|
||||
* @param $language
|
||||
* A language object.
|
||||
*/
|
||||
function hook_language_insert($language) {
|
||||
example_refresh_permissions();
|
||||
}
|
||||
|
||||
/**
|
||||
* React to a language that was just updated in the system.
|
||||
*
|
||||
* @param $language
|
||||
* A language object.
|
||||
*/
|
||||
function hook_language_update($language) {
|
||||
example_refresh_permissions();
|
||||
}
|
||||
|
||||
/**
|
||||
* Allow modules to react before the deletion of a language.
|
||||
*
|
||||
* @param $language
|
||||
* The language object of the language that is about to be deleted.
|
||||
*/
|
||||
function hook_language_delete($language) {
|
||||
// On nodes with this language, unset the language
|
||||
db_update('node')
|
||||
->fields(array('language' => ''))
|
||||
->condition('language', $language->id)
|
||||
->execute();
|
||||
}
|
||||
|
||||
/**
|
||||
* Allow modules to alter the language fallback candidates.
|
||||
*
|
||||
|
|
|
@ -9,6 +9,7 @@ use Drupal\Component\PhpStorage\PhpStorageFactory;
|
|||
use Drupal\Core\Language\Language;
|
||||
use Drupal\language\ConfigurableLanguageManager;
|
||||
use Drupal\language\ConfigurableLanguageManagerInterface;
|
||||
use Drupal\language\Entity\Language as LanguageEntity;
|
||||
use Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUI;
|
||||
use Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUrl;
|
||||
use Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUrlFallback;
|
||||
|
@ -448,9 +449,6 @@ function language_save($language) {
|
|||
}
|
||||
$language->is_new = $language_entity->isNew();
|
||||
|
||||
// Let other modules modify $language before saved.
|
||||
\Drupal::moduleHandler()->invokeAll('language_presave', array($language));
|
||||
|
||||
// Assign language properties to language entity.
|
||||
$language_entity->label = isset($language->name) ? $language->name : '';
|
||||
$language_entity->direction = isset($language->direction) ? $language->direction : '0';
|
||||
|
@ -462,11 +460,9 @@ function language_save($language) {
|
|||
$language_entity->save();
|
||||
$t_args = array('%language' => $language->name, '%langcode' => $language->id);
|
||||
if ($language->is_new) {
|
||||
\Drupal::moduleHandler()->invokeAll('language_insert', array($language));
|
||||
watchdog('language', 'The %language (%langcode) language has been created.', $t_args);
|
||||
}
|
||||
else {
|
||||
\Drupal::moduleHandler()->invokeAll('language_update', array($language));
|
||||
watchdog('language', 'The %language (%langcode) language has been updated.', $t_args);
|
||||
}
|
||||
|
||||
|
@ -510,8 +506,6 @@ function language_delete($langcode) {
|
|||
if (isset($languages[$langcode]) && !$languages[$langcode]->locked) {
|
||||
$language = $languages[$langcode];
|
||||
|
||||
\Drupal::moduleHandler()->invokeAll('language_delete', array($language));
|
||||
|
||||
// Remove the language.
|
||||
entity_delete_multiple('language_entity', array($language->id));
|
||||
|
||||
|
@ -637,31 +631,31 @@ function language_modules_uninstalled($modules) {
|
|||
}
|
||||
|
||||
/**
|
||||
* Implements hook_language_insert().
|
||||
* Implements hook_ENTITY_TYPE_insert() for 'language_entity'.
|
||||
*/
|
||||
function language_language_insert($language) {
|
||||
function language_language_entity_insert(LanguageEntity $language) {
|
||||
if (!empty($language->locked)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Add language to the list of language domains.
|
||||
$domains = language_negotiation_url_domains();
|
||||
$domains[$language->id] = '';
|
||||
$domains[$language->id()] = '';
|
||||
language_negotiation_url_domains_save($domains);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements hook_language_delete().
|
||||
* Implements hook_ENTITY_TYPE_delete() for 'language_entity'.
|
||||
*/
|
||||
function language_language_delete($language) {
|
||||
function language_language_entity_delete(LanguageEntity $language) {
|
||||
// Remove language from language prefix list.
|
||||
$prefixes = language_negotiation_url_prefixes();
|
||||
unset($prefixes[$language->id]);
|
||||
unset($prefixes[$language->id()]);
|
||||
language_negotiation_url_prefixes_save($prefixes);
|
||||
|
||||
// Remove language from language domain list.
|
||||
$domains = language_negotiation_url_domains();
|
||||
unset($domains[$language->id]);
|
||||
unset($domains[$language->id()]);
|
||||
language_negotiation_url_domains_save($domains);
|
||||
}
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
use Drupal\Component\Utility\Json;
|
||||
use Drupal\Core\Cache\Cache;
|
||||
use Drupal\Core\Language\Language;
|
||||
use Drupal\language\Entity\Language as LanguageEntity;
|
||||
use Drupal\Component\Utility\Crypt;
|
||||
|
||||
/**
|
||||
|
@ -240,48 +241,48 @@ function locale_stream_wrappers() {
|
|||
}
|
||||
|
||||
/**
|
||||
* Implements hook_language_insert().
|
||||
* Implements hook_ENTITY_TYPE_insert() for 'language_entity'.
|
||||
*/
|
||||
function locale_language_insert($language) {
|
||||
function locale_language_entity_insert(LanguageEntity $language) {
|
||||
// @todo move these two cache clears out. See http://drupal.org/node/1293252
|
||||
// Changing the language settings impacts the interface.
|
||||
\Drupal::cache('page')->deleteAll();
|
||||
// Force JavaScript translation file re-creation for the new language.
|
||||
_locale_invalidate_js($language->id);
|
||||
_locale_invalidate_js($language->id());
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements hook_language_update().
|
||||
* Implements hook_ENTITY_TYPE_update() for 'language_entity'.
|
||||
*/
|
||||
function locale_language_update($language) {
|
||||
function locale_language_entity_update(LanguageEntity $language) {
|
||||
// @todo move these two cache clears out. See http://drupal.org/node/1293252
|
||||
// Changing the language settings impacts the interface.
|
||||
\Drupal::cache('page')->deleteAll();
|
||||
// Force JavaScript translation file re-creation for the modified language.
|
||||
_locale_invalidate_js($language->id);
|
||||
_locale_invalidate_js($language->id());
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements hook_language_delete().
|
||||
* Implements hook_ENTITY_TYPE_delete() for 'language_entity'.
|
||||
*/
|
||||
function locale_language_delete($language) {
|
||||
function locale_language_entity_delete(LanguageEntity $language) {
|
||||
// Remove translations.
|
||||
\Drupal::service('locale.storage')->deleteTranslations(array('language' => $language->id));
|
||||
\Drupal::service('locale.storage')->deleteTranslations(array('language' => $language->id()));
|
||||
|
||||
// Remove interface translation files.
|
||||
module_load_include('inc', 'locale', 'locale.bulk');
|
||||
locale_translate_delete_translation_files(array(), array($language->id));
|
||||
locale_translate_delete_translation_files(array(), array($language->id()));
|
||||
|
||||
// Remove translated configuration objects.
|
||||
\Drupal\locale\Locale::config()->deleteLanguageTranslations($language->id);
|
||||
\Drupal\locale\Locale::config()->deleteLanguageTranslations($language->id());
|
||||
|
||||
// Changing the language settings impacts the interface:
|
||||
_locale_invalidate_js($language->id);
|
||||
_locale_invalidate_js($language->id());
|
||||
\Drupal::cache('page')->deleteAll();
|
||||
|
||||
// Clear locale translation caches.
|
||||
locale_translation_status_delete_languages(array($language->id));
|
||||
\Drupal::cache()->delete('locale:' . $language->id);
|
||||
locale_translation_status_delete_languages(array($language->id()));
|
||||
\Drupal::cache()->delete('locale:' . $language->id());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -21,6 +21,7 @@ use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
|
|||
use Drupal\Core\Entity\Display\EntityFormDisplayInterface;
|
||||
use Drupal\Core\Template\Attribute;
|
||||
use Drupal\file\Entity\File;
|
||||
use Drupal\language\Entity\Language as LanguageEntity;
|
||||
use Symfony\Cmf\Component\Routing\RouteObjectInterface;
|
||||
|
||||
/**
|
||||
|
@ -1810,13 +1811,13 @@ function node_file_download_access($field, EntityInterface $entity, File $file)
|
|||
}
|
||||
|
||||
/**
|
||||
* Implements hook_language_delete().
|
||||
* Implements hook_ENTITY_TYPE_delete() for 'language_entity'.
|
||||
*/
|
||||
function node_language_delete($language) {
|
||||
function node_language_entity_delete(LanguageEntity $language) {
|
||||
// On nodes with this language, unset the language.
|
||||
db_update('node_revision')
|
||||
->fields(array('langcode' => ''))
|
||||
->condition('langcode', $language->id)
|
||||
->condition('langcode', $language->id())
|
||||
->execute();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue