From c8c8d1237d179b3f378a5a9258fe56b40a8e1334 Mon Sep 17 00:00:00 2001
From: kkuhnen <kkuhnen@highwire.org>
Date: Tue, 15 Nov 2011 11:09:55 -0800
Subject: [PATCH 1/2] Adding visibility rule

---
 plugins/access/in_nodequeue.inc |  113 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 113 insertions(+), 0 deletions(-)
 create mode 100644 plugins/access/in_nodequeue.inc

diff --git a/plugins/access/in_nodequeue.inc b/plugins/access/in_nodequeue.inc
new file mode 100644
index 0000000..49a1bdd
--- /dev/null
+++ b/plugins/access/in_nodequeue.inc
@@ -0,0 +1,113 @@
+<?php
+
+$plugin = array(
+	'title' => t("Within Nodequeue"),
+	'description' => t('Only show if present in node queue.'),
+	'callback' => 'nodequeue_in_nodequeue_access',
+	'default' => array('rids' => array()),
+	'settings form' => 'nodequeue_in_nodequeue_access_settings',
+	'summary' => 'nodequeue_in_nodequeue_access_summary',
+	'required context' => new ctools_context_required(t('Node'), 'node'),
+);
+
+function nodequeue_in_nodequeue_access_settings(&$form, &$form_state, $conf) {
+		$queues = nodequeue_get_all_qids();
+		$queues = nodequeue_load_queues($queues);
+		$options = array();
+		foreach($queues as $queue) {
+		  $subqueues = nodequeue_load_subqueues_by_queue(array($queue->qid));
+		  $options[$queue->qid] = $queue->title;
+		  foreach($subqueues as $subqueue) {
+			  $options['sub-'.$subqueue->sqid] = '-'.$subqueue->title;
+		  }
+		}
+		
+		$form['settings']['nodequeue'] = array(
+       '#type' => 'select',
+       '#title' => t('Nodequeue'),
+       '#options' => $options,
+       '#default_value' => $conf['nodequeue'],
+       '#description' => t('Select a Nodequeue.'),
+   );
+   return $form;
+		
+}
+
+function nodequeue_in_nodequeue_access($conf, $context){
+	$queue = nodequeue_in_nodequeue_get_queue($conf);
+	$node = $context->data;
+	$pos = strpos($conf['nodequeue'], 'sub-');
+	$nids = array();
+	
+	if($pos === FALSE){
+	  $subqueues = nodequeue_load_subqueues_by_queue(array($conf['nodequeue'])); 
+	  $query =  db_select('nodequeue_nodes', 'n')
+	  ->fields('n', array('nid'));
+	  
+	  $or = db_or(); 
+ 
+	  foreach($subqueues as $sub){
+	  	$or->condition('n.sqid', $sub->sqid, '=');
+	  }
+	  
+	  $query->condition($or);
+	  $result =  $query->execute();
+	  
+	  while($record = $result->fetchAssoc()) {
+       $nids[] = $record['nid'];
+    }
+    	 
+	} else {
+		$query =  db_select('nodequeue_nodes', 'n')
+	  ->fields('n', array('nid'));
+	  $query->condition('n.sqid', $queue->sqid, '=');
+	  
+	  $result =  $query->execute();
+	  
+	  while($record = $result->fetchAssoc()) {
+       $nids[] = $record['nid'];
+    }
+	
+	}
+	
+	foreach($nids as $nid){
+		if($nid == $node->nid){
+			return TRUE;
+		}
+	}
+	return FALSE;
+}
+
+/**
+ * Provide a summary description based upon the checked roles.
+ */
+function nodequeue_in_nodequeue_access_summary($conf, $context) {
+	$queue = nodequeue_in_nodequeue_get_queue($conf);
+	return $queue->title;
+}
+
+
+function nodequeue_in_nodequeue_get_queue($conf){
+	$pos = strpos($conf['nodequeue'], 'sub-');
+	$queues = nodequeue_get_all_qids();
+	if($pos !== FALSE){
+		$sqid = str_replace('sub-', '', $conf['nodequeue']);
+	  $queues = nodequeue_load_queues($queues);
+	  foreach($queues as $queue) {
+
+			$subqueues = nodequeue_load_subqueues_by_queue(array($queue->qid));
+			foreach($subqueues as $sub){
+				if($sub->sqid == $sqid){
+					return $sub;
+				}
+			}
+		}
+	}
+	
+	$queue = nodequeue_load_queues(array($conf['nodequeue']));
+	return array_pop($queue);
+}  
+//nodequeue_load_nodes
+  // $queues = nodequeue_load_queues_by_type($node->type, 'links');
+	// $subqueues = nodequeue_get_subqueues_by_node($queues, $node);  
+	//	nodequeue_get_qids($type, $account = NULL, $bypass_cache = FALSE)
\ No newline at end of file
-- 
1.7.5.4


From 3a9656547f040fae30b62abd645eb6d6b95b6d64 Mon Sep 17 00:00:00 2001
From: kkuhnen <kkuhnen@highwire.org>
Date: Tue, 15 Nov 2011 12:28:11 -0800
Subject: [PATCH 2/2] Add ctools hook

---
 nodequeue.module |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/nodequeue.module b/nodequeue.module
index 5f84cd5..3548808 100644
--- a/nodequeue.module
+++ b/nodequeue.module
@@ -2181,3 +2181,11 @@ function theme_nodequeue_subqueue_full_text() {
 function theme_nodequeue_subqueue_count_text($variables) {
   return t('@count in queue', array('@count' => $variables['count']));
 }
+
+/**
+ * Implementation of hook_ctools_plugin_dierctory() to let the system know
+ * we implement plugins.
+ */
+function nodequeue_ctools_plugin_directory($module, $plugin) {
+  return 'plugins/' . $plugin;
+}
-- 
1.7.5.4

