You are here

protected function RulesState::save in Rules 7.2

Remembers to save the wrapper on cleanup or does it now.

2 calls to RulesState::save()
RulesState::mergeSaveVariables in includes/rules.state.inc
Merges info from the given state into the existing state.
RulesState::saveChanges in includes/rules.state.inc
Apply permanent changes provided the wrapper's data type is savable.

File

includes/rules.state.inc, line 198
Contains the state and data related stuff.

Class

RulesState
The rules evaluation state.

Code

protected function save($selector, EntityMetadataWrapper $wrapper, $immediate) {

  // Convert variable names and selectors to both use underscores.
  $selector = strtr($selector, '-', '_');
  if (isset($this->save[$selector])) {
    if ($this->save[$selector][0]
      ->getIdentifier() == $wrapper
      ->getIdentifier()) {

      // The entity is already remembered. So do a combined save.
      $this->save[$selector][1] += self::$blocked;
    }
    else {

      // The wrapper is already in there, but wraps another entity. So first
      // save the old one, then care about the new one.
      $this
        ->saveNow($selector);
    }
  }
  if (!isset($this->save[$selector])) {

    // In case of immediate saving don't clone the wrapper, so saving a new
    // entity immediately makes the identifier available afterwards.
    $this->save[$selector] = array(
      $immediate ? $wrapper : clone $wrapper,
      self::$blocked,
    );
  }
  if ($immediate) {
    $this
      ->saveNow($selector);
  }
}