forked from a64f7bb4-7358-4778-9fbe-3b882c34cc1d/v1
68 lines
2.0 KiB
PHP
68 lines
2.0 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file
|
|
* Post update functions for Flag.
|
|
*/
|
|
|
|
use Drupal\system\Entity\Action;
|
|
|
|
/**
|
|
* Implements hook_post_update_NAME().
|
|
*
|
|
* Updates the dependency information in views that depend on flag.
|
|
*/
|
|
function flag_post_update_flag_relationship_dependencies(&$sandbox) {
|
|
// Load all views.
|
|
$views = \Drupal::entityTypeManager()->getStorage('view')->loadMultiple();
|
|
|
|
/* @var \Drupal\views\Entity\View[] $views */
|
|
foreach ($views as $view) {
|
|
// Views that use the flag_relationship plugin will depend on the Flag
|
|
// module already.
|
|
if (in_array('flag', $view->getDependencies()['module'], TRUE)) {
|
|
$old_dependencies = $view->getDependencies();
|
|
// If we've changed the dependencies, for example, to add a dependency on
|
|
// the flag used in the relationship, then re-save the view.
|
|
if ($old_dependencies !== $view->calculateDependencies()->getDependencies()) {
|
|
$view->save();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Implements hook_post_update_NAME().
|
|
*
|
|
* Update the flag and unflag actions for existing flags.
|
|
*/
|
|
function flag_post_update_flag_actions() {
|
|
/** @var \Drupal\system\Entity\Action[] $actions */
|
|
$flags = \Drupal::entityTypeManager()->getStorage('flag')->loadMultiple();
|
|
$action_names = [];
|
|
foreach ($flags as $flag) {
|
|
$action_names[] = 'flag_action.' . $flag->id() . '.flag';
|
|
$action_names[] = 'flag_action.' . $flag->id() . '.unflag';
|
|
}
|
|
$actions = Drupal\system\Entity\Action::loadMultiple($action_names);
|
|
foreach ($actions as $old_id => $action) {
|
|
if (preg_match('/\.(un)?flag$/', $old_id)) {
|
|
// Update the plugin ID and the action ID.
|
|
$new_id = preg_replace('/\.((un)?flag)$/', '_\\1', $old_id);
|
|
$new_plugin_id = preg_replace('/^flag_action\./', 'flag_action:', $new_id);
|
|
$action->setPlugin($new_plugin_id);
|
|
$action->set('id', $new_id);
|
|
$action->save();
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Implements hook_post_update_NAME().
|
|
*
|
|
* Rebuild container for updated twig service.
|
|
*/
|
|
function flag_post_update_flag_count_twig() {
|
|
// No-operation.
|
|
}
|