From 7ad00a600333a66207480e83ef946e724faa4138 Mon Sep 17 00:00:00 2001
From: Thomas Gielfeldt <gielfeldt@reload.dk>
Date: Wed, 8 Apr 2015 20:29:53 +0200
Subject: [PATCH] Issue #2467801 by gielfeldt: Add support for tokens.

---
 nodequeue.tokens.inc | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 109 insertions(+)
 create mode 100644 nodequeue.tokens.inc

diff --git a/nodequeue.tokens.inc b/nodequeue.tokens.inc
new file mode 100644
index 0000000..aa0622a
--- /dev/null
+++ b/nodequeue.tokens.inc
@@ -0,0 +1,109 @@
+<?php
+
+/**
+ * @file
+ * Builds placeholder replacement tokens for nodequeues.
+ *
+ * This file handles tokens for nodequeues and subqueues.
+ */
+
+/**
+ * Implements hook_token_info().
+ */
+function nodequeue_token_info() {
+  $types = array();
+  $types['nodequeue'] = array(
+    'name' => t('Nodequeues'),
+    'description' => t('Tokens for nodequeues.'),
+    'needs-data' => 'nodequeue',
+  );
+  $types['subqueue'] = array(
+    'name' => t('Subqueues'),
+    'description' => t('Tokens for subqueues.'),
+    'needs-data' => 'subqueue',
+  );
+
+  $tokens = array();
+  $tokens['nodequeue']['name'] = array(
+    'name' => t('Nodequeue machine name'),
+    'description' => t('Nodequeue machine name'),
+  );
+  $tokens['nodequeue']['title'] = array(
+    'name' => t('Nodequeue title'),
+    'description' => t('Nodequeue title'),
+  );
+
+  $tokens['subqueue']['sqid'] = array(
+    'name' => t('Subqueue ID'),
+    'description' => t('Subqueue ID')
+  );
+  $tokens['subqueue']['title'] = array(
+    'name' => t('Subqueue title'),
+    'description' => t('Subqueue title'),
+  );
+  $tokens['subqueue']['nodequeue'] = array(
+    'name' => t('Nodequeue'),
+    'description' => t('Nodequeue'),
+    'type' => 'nodequeue',
+  );
+
+  return array(
+    'types' => $types,
+    'tokens' => $tokens,
+  );
+}
+
+/**
+ * Implements hook_tokens().
+ */
+function nodequeue_tokens($type, $tokens, array $data = array(), array $options = array()) {
+  $sanitize = !empty($options['sanitize']);
+
+  $replacements = array();
+
+  if ($type == 'nodequeue' && !empty($data['nodequeue'])) {
+    $nodequeue = $data['nodequeue'];
+
+    foreach ($tokens as $name => $original) {
+      switch ($name) {
+        case 'name':
+          $replacements[$original] = $nodequeue->name;
+          break;
+
+        case 'title':
+          $replacements[$original] = $sanitize ? check_plain($nodequeue->title) : $nodequeue->title;
+          break;
+
+        case 'owner':
+          $replacements[$original] = $nodequeue->owner;
+          break;
+      }
+    }
+  }
+  if ($type == 'subqueue' && !empty($data['subqueue'])) {
+    $subqueue = $data['subqueue'];
+
+    foreach ($tokens as $name => $original) {
+      switch ($name) {
+        case 'sqid':
+          $replacements[$original] = $subqueue->sqid;
+          break;
+
+        case 'title':
+          $replacements[$original] = $sanitize ? check_plain($subqueue->title) : $subqueue->title;
+          break;
+
+        case 'nodequeue':
+          $replacements[$original] = $subqueue->name;
+          break;
+      }
+    }
+
+    if ($nodequeue_tokens = token_find_with_prefix($tokens, 'nodequeue')) {
+      $nodequeue = nodequeue_load($subqueue->name);
+      $replacements += token_generate('nodequeue', $nodequeue_tokens, array('nodequeue' => $nodequeue), $options);
+    }
+  }
+
+  return $replacements;
+}
-- 
2.1.2

