You are here

function rules_i18n_rules_config_update in Rules 7.2

Implements hook_rules_config_update().

2 calls to rules_i18n_rules_config_update()
hook_rules_config_defaults_rebuild in ./rules.api.php
Act after rebuilding default configurations.
rules_i18n_rules_config_defaults_rebuild in rules_i18n/rules_i18n.module
Implements hook_rules_config_defaults_rebuild().

File

rules_i18n/rules_i18n.module, line 73
Rules i18n integration.

Code

function rules_i18n_rules_config_update($rules_config, $original = NULL) {

  // Do nothing when rebuilding defaults to avoid multiple cache rebuilds.
  // @see rules_i18n_rules_config_defaults_rebuild()
  if (!empty($rules_config->is_rebuild)) {
    return;
  }
  $original = $original ? $original : $rules_config->original;

  // Account for name changes.
  if ($original->name != $rules_config->name) {
    i18n_string_update_context("rules:rules_config:{$original->name}:*", "rules:rules_config:{$rules_config->name}:*");
  }

  // We need to remove the strings of any disappeared properties, i.e. strings
  // from translatable parameters of deleted actions.
  // i18n_object() uses a static cache per config, so bypass it to wrap the
  // original entity.
  $object_key = i18n_object_key('rules_config', $original);
  $old_i18n_object = new RulesI18nStringObjectWrapper('rules_config', $object_key, $original);
  $old_strings = $old_i18n_object
    ->get_strings(array(
    'empty' => TRUE,
  ));

  // Note: For the strings to have updated values, the updated entity needs to
  // be handled last due to i18n's cache.
  $strings = i18n_object('rules_config', $rules_config)
    ->get_strings(array(
    'empty' => TRUE,
  ));
  foreach (array_diff_key($old_strings, $strings) as $name => $string) {
    $string
      ->remove(array(
      'empty' => TRUE,
    ));
  }

  // Now update the remaining strings.
  foreach ($strings as $string) {
    $string
      ->update(array(
      'empty' => TRUE,
      'update' => TRUE,
    ));
  }
}