Mercurial > hg > rr-repo
annotate sites/all/modules/ctools/plugins/arguments/rid.inc @ 0:ff03f76ab3fe
initial version
author | danieleb <danielebarchiesi@me.com> |
---|---|
date | Wed, 21 Aug 2013 18:51:11 +0100 |
parents | |
children |
rev | line source |
---|---|
danielebarchiesi@0 | 1 <?php |
danielebarchiesi@0 | 2 |
danielebarchiesi@0 | 3 /** |
danielebarchiesi@0 | 4 * @file |
danielebarchiesi@0 | 5 * |
danielebarchiesi@0 | 6 * Plugin to provide an argument handler for a node revision id |
danielebarchiesi@0 | 7 */ |
danielebarchiesi@0 | 8 |
danielebarchiesi@0 | 9 /** |
danielebarchiesi@0 | 10 * Plugins are described by creating a $plugin array which will be used |
danielebarchiesi@0 | 11 * by the system that includes this file. |
danielebarchiesi@0 | 12 */ |
danielebarchiesi@0 | 13 $plugin = array( |
danielebarchiesi@0 | 14 'title' => t("Revision: ID"), |
danielebarchiesi@0 | 15 'keyword' => 'revision', |
danielebarchiesi@0 | 16 'description' => t('Creates a node context from a revision ID argument.'), |
danielebarchiesi@0 | 17 'context' => 'ctools_argument_rid_context', |
danielebarchiesi@0 | 18 'placeholder form' => array( |
danielebarchiesi@0 | 19 '#type' => 'textfield', |
danielebarchiesi@0 | 20 '#description' => t('Enter the revision ID of a node for this argument'), |
danielebarchiesi@0 | 21 ), |
danielebarchiesi@0 | 22 ); |
danielebarchiesi@0 | 23 |
danielebarchiesi@0 | 24 /** |
danielebarchiesi@0 | 25 * Discover if this argument gives us the node we crave. |
danielebarchiesi@0 | 26 */ |
danielebarchiesi@0 | 27 function ctools_argument_rid_context($arg = NULL, $conf = NULL, $empty = FALSE) { |
danielebarchiesi@0 | 28 // If unset it wants a generic, unfilled context. |
danielebarchiesi@0 | 29 if ($empty) { |
danielebarchiesi@0 | 30 return ctools_context_create_empty('node'); |
danielebarchiesi@0 | 31 } |
danielebarchiesi@0 | 32 |
danielebarchiesi@0 | 33 // We can accept either a node object or a pure nid. |
danielebarchiesi@0 | 34 if (is_object($arg)) { |
danielebarchiesi@0 | 35 return ctools_context_create('node', $arg); |
danielebarchiesi@0 | 36 } |
danielebarchiesi@0 | 37 |
danielebarchiesi@0 | 38 if (!is_numeric($arg)) { |
danielebarchiesi@0 | 39 return FALSE; |
danielebarchiesi@0 | 40 } |
danielebarchiesi@0 | 41 |
danielebarchiesi@0 | 42 $nid = db_query('SELECT nid FROM {node_revisions} WHERE vid = :vid', array(':vid' => $arg))->fetchField(); |
danielebarchiesi@0 | 43 $node = node_load($nid, $arg); |
danielebarchiesi@0 | 44 if (!$node) { |
danielebarchiesi@0 | 45 return FALSE; |
danielebarchiesi@0 | 46 } |
danielebarchiesi@0 | 47 |
danielebarchiesi@0 | 48 return ctools_context_create('node', $node); |
danielebarchiesi@0 | 49 } |
danielebarchiesi@0 | 50 |