From 4dc94f28ec128d152b1ffeafd3fc1beb47113302 Mon Sep 17 00:00:00 2001
From: git <git@1053618.no-reply.drupal.org>
Date: Sun, 16 Nov 2014 01:36:01 +0100
Subject: [PATCH] Pass arguments to views filter

---
 term_reference_tree.widget.inc | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/term_reference_tree.widget.inc b/term_reference_tree.widget.inc
index 1685a43..d51c859 100644
--- a/term_reference_tree.widget.inc
+++ b/term_reference_tree.widget.inc
@@ -16,6 +16,7 @@ function term_reference_tree_field_widget_info() {
         'start_minimized' => 0,
         'leaves_only' => 0,
         'filter_view' => '',
+        'filter_view_args' => '',
         'select_parents' => 0,
         'cascading_selection' => 0,
         'track_list' => 0,
@@ -89,6 +90,14 @@ function term_reference_tree_field_widget_settings_form($field, $instance) {
         '#default_value' => $settings['filter_view'],
         '#options' => $options,
       );
+      
+      $form['filter_view_args'] = array(
+        '#type' => 'textfield',
+        '#title' => 'Arguments passed to the view',
+        '#description' => t("Arguments that will be passed to the view. Multiple arguments must be seperated by a comma. ") . (module_exists("token") ? t("You can use global tokens from the list below. ") : ""),
+        '#default_value' => $settings['filter_view_args'],
+      );
+      
     }
     else {
       $form['filter_view'] = array(
@@ -274,7 +283,9 @@ function term_reference_tree_process_checkbox_tree($element, $form_state) {
     $allowed = '';
 
     if ($element['#filter_view'] != '') {
-      $allowed = _term_reference_tree_get_allowed_values($element['#filter_view']);
+      $args = (module_exists('token')) ? token_replace($element['#filter_view_args']) : $element['#filter_view_args'];
+      $args = explode(",", $args);
+      $allowed = _term_reference_tree_get_allowed_values($element['#filter_view'], $args);
     }
 
     $value = !empty($element['#default_value']) ? $element['#default_value'] : array();
@@ -511,6 +522,7 @@ function term_reference_tree_field_widget_form(&$form, &$form_state, $field, $in
       $element['#start_minimized'] = $settings['start_minimized'];
       $element['#leaves_only'] = $settings['leaves_only'];
       $element['#filter_view'] = module_exists('views') ? $settings['filter_view'] : '';
+      $element['#filter_view_args'] = module_exists('views') ? $settings['filter_view_args'] : '';
       $element['#select_parents'] = $settings['select_parents'];
       $element['#cascading_selection'] = $settings['cascading_selection'];
       $element['#track_list'] = $settings['track_list'];
@@ -595,7 +607,7 @@ function _term_reference_tree_widget_validate(&$element, &$form_state) {
  * @return
  *   An array of term IDs (tid => true) returned by the view.
  */
-function _term_reference_tree_get_allowed_values($filter) {
+function _term_reference_tree_get_allowed_values($filter, $args) {
   $viewname = "";
   $displayname = "";
   $allowed = array();
@@ -607,7 +619,7 @@ function _term_reference_tree_get_allowed_values($filter) {
       if ($view->access($displayname)) {
         // Save the page title first, since execute_display() will reset this to the display title.
         $title = drupal_get_title();
-        $view->execute_display($displayname);
+        $view->execute_display($displayname, $args);
         $title = drupal_set_title($title, PASS_THROUGH);
         foreach ($view->result as $item) {
           $allowed[$item->tid] = TRUE;
-- 
1.9.1

