system_message_action

6 system.module system_message_action(&$object, $context = array())
7 system.module system_message_action(&$entity, $context = array())
8 system.module system_message_action(&$entity, $context = array())

A configurable Drupal action. Sends a message to the current user's screen.

1 string reference to 'system_message_action'

File

modules/system/system.module, line 1857
Configuration system that lets administrators modify the workings of the site.

Code

function system_message_action(&$object, $context = array()) {
  global $user;
  $variables = array(
    '%site_name' => variable_get('site_name', 'Drupal'), 
    '%username' => $user->name ? $user->name : variable_get('anonymous', t('Anonymous')),
  );

  // This action can be called in any context, but if placeholders
  // are used a node object must be present to be the source
  // of substituted text.
  switch ($context['hook']) {
    case 'nodeapi':
      // Because this is not an action of type 'node' the node
      // will not be passed as $object, but it will still be available
      // in $context.
      $node = $context['node'];
      break;
      // The comment hook also provides the node, in context.
    case 'comment':
      $comment = $context['comment'];
      $node = node_load($comment->nid);
      break;
    case 'taxonomy':
      $vocabulary = taxonomy_vocabulary_load($object->vid);
      $variables = array_merge($variables, array(
        '%term_name' => check_plain($object->name), 
        '%term_description' => filter_xss_admin($object->description), 
        '%term_id' => $object->tid, 
        '%vocabulary_name' => check_plain($vocabulary->name), 
        '%vocabulary_description' => filter_xss_admin($vocabulary->description), 
        '%vocabulary_id' => $vocabulary->vid,
      )
      );
      break;
    default:
      // We are being called directly.
      $node = $object;
  }

  if (isset($node) && is_object($node)) {
    $variables = array_merge($variables, array(
      '%uid' => $node->uid, 
      '%node_url' => url('node/' . $node->nid, array('absolute' => TRUE)), 
      '%node_type' => check_plain(node_get_types('name', $node)), 
      '%title' => check_plain($node->title), 
      '%teaser' => check_markup($node->teaser, $node->format, FALSE), 
      '%body' => check_markup($node->body, $node->format, FALSE),
    )
    );
  }
  $context['message'] = strtr(filter_xss_admin($context['message']), $variables);
  drupal_set_message($context['message']);
}
Login or register to post comments