diff options
Diffstat (limited to 'sites/all/modules/ctools/plugins/arguments/nid.inc')
-rw-r--r-- | sites/all/modules/ctools/plugins/arguments/nid.inc | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/sites/all/modules/ctools/plugins/arguments/nid.inc b/sites/all/modules/ctools/plugins/arguments/nid.inc new file mode 100644 index 000000000..9aaec0e1f --- /dev/null +++ b/sites/all/modules/ctools/plugins/arguments/nid.inc @@ -0,0 +1,50 @@ +<?php + +/** + * @file + * + * Plugin to provide an argument handler for a node id + */ + +/** + * Plugins are described by creating a $plugin array which will be used + * by the system that includes this file. + */ +$plugin = array( + 'title' => t("Node: ID"), + 'keyword' => 'node', + 'description' => t('Creates a node context from a node ID argument.'), + 'context' => 'ctools_argument_nid_context', + 'placeholder form' => array( + '#type' => 'textfield', + '#description' => t('Enter the node ID of a node for this argument'), + ), + 'no ui' => TRUE, +); + +/** + * Discover if this argument gives us the node we crave. + */ +function ctools_argument_nid_context($arg = NULL, $conf = NULL, $empty = FALSE) { + // If unset it wants a generic, unfilled context. + if ($empty) { + return ctools_context_create_empty('node'); + } + + // We can accept either a node object or a pure nid. + if (is_object($arg)) { + return ctools_context_create('node', $arg); + } + + if (!is_numeric($arg)) { + return FALSE; + } + + $node = node_load($arg); + if (!$node) { + return FALSE; + } + + return ctools_context_create('node', $node); +} + |