You are here

function flag_node_save in Flag 7.3

Same name and namespace in other branches
  1. 7.2 flag.module \flag_node_save()

Shared saving routine between flag_node_insert() and flag_node_update().

2 calls to flag_node_save()
flag_node_insert in ./flag.module
Implements hook_node_insert().
flag_node_update in ./flag.module
Implements hook_node_update().

File

./flag.module, line 1024
The Flag module.

Code

function flag_node_save($node) {

  // Response to the flag checkboxes added to the form in flag_form_alter().
  $remembered = FALSE;
  if (isset($node->flag)) {
    foreach ($node->flag as $name => $state) {
      $flag = flag_get_flag($name);

      // Flagging may trigger actions. We want actions to get the current
      // node, not a stale database-loaded one:
      if (!$remembered) {
        $flag
          ->remember_entity($node->nid, $node);

        // Actions may modify a node, and we don't want to overwrite this
        // modification:
        $remembered = TRUE;
      }
      $action = $state ? 'flag' : 'unflag';

      // Pass TRUE for $skip_permission_check so that flags that have been
      // passed through as hidden form values are saved.
      $flag
        ->flag($action, $node->nid, NULL, TRUE);
    }
  }
}