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