| 
					
				 | 
			
			
				@@ -12,7 +12,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @package QBF 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// $Id: qbf.module,v 1.9.4.13 2009-03-22 19:40:29 marand Exp $ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// $Id: qbf.module,v 1.9.4.14 2009-03-24 10:55:27 marand Exp $ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * Saved error reporting level. 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -287,11 +287,10 @@ function _qbf_extract_query($element_id, $form, $form_values) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @param array $form 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @param array $form_state 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @return void 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function _qbf_form_perform_submit($form, &$form_state) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // dsm($form); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // dsm($form_state); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $callback = $form_state['values']['qbf_query']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (function_exists(($callback))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -306,21 +305,25 @@ function _qbf_form_perform_submit($form, &$form_state) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @param array $form 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @param array $form_state 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   Can be passed by reference if changes are needed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @return void 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//function _qbf_form_perform_validate($form, &$form_state) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//  // @todo validate searches: checkboxes sets needs at least one value checked, otherwise there won't be any result 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function _qbf_form_perform_validate($form, $form_state) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // @todo validate searches: checkboxes sets needs at least one value checked, otherwise there won't be any result 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * Submit handler for qbf_form, Save search button. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @param array $form 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @param array $form_state 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   Can be passed by reference if changes are needed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @return integer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  *   The id of the saved query. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-function _qbf_form_save_submit($form, &$form_state) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function _qbf_form_save_submit($form, $form_state) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $qid = _qbf_save($form_state['values']['form_id'], $form_state); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   drupal_set_message(t('Your query was saved as "@name".', 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -335,6 +338,7 @@ function _qbf_form_save_submit($form, &$form_state) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @param array $form 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @param array $form_state 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @return void 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //function _qbf_form_save_validate($form, &$form_state) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //  { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -537,9 +541,12 @@ function _qbf_save($form_id, $form_state) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * See QBF_* constants 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @ingroup forms 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @param string $key 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @param array $element 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @return void 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param array $form_state 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param object $query 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @return array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function _qbf_transform($key, $element, $form_state, $query) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -595,9 +602,9 @@ function _qbf_transform($key, $element, $form_state, $query) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       '#ref'           => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       '#required'      => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       '#rows'          => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      '#submit'        => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // '#submit'        => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       '#tree'          => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      '#validate'      => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // '#validate'      => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -775,18 +782,22 @@ function qbf_form(&$form_state, $query_info, $qbf_form_id, $query = NULL) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Fetch the basic form and rename it, passing it the previous values 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $node = new stdClass(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $form = $form_id($node, $form_state); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $qbf_form = array(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $qbf_form['#id'] = $qbf_form_id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $qbf_form['#qbf_source_form_id'] = $form_id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // On the form element itself, only keep the QBF properties and the children 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if (in_array('#qbf', element_properties($form))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // On the form element itself, only keep the QBF properties, the handlers, and the children 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  foreach (element_properties($form) as $key) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    $qbf_form += $form['#qbf']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (in_array($key, array('#qbf', '#validate', '#submit'))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $qbf_form[$key] = $form[$key]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // Transform the children tree 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   foreach (element_children($form) as $key) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $new_element = _qbf_transform($key, $form[$key], $form_state, $query); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -796,8 +807,6 @@ function qbf_form(&$form_state, $query_info, $qbf_form_id, $query = NULL) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $qbf_form['#id'] = $qbf_form_id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $qbf_form['qbf'] = array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     '#type'   => 'fieldset', 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -818,11 +827,66 @@ function qbf_form(&$form_state, $query_info, $qbf_form_id, $query = NULL) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $qbf_form['qbf']['qbf_save_type'] = array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#type'          => 'hidden', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#value'         => $query_info['form'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * Offer query save feature only to logged-in users with query permission. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * We know they have QBF_PERM_QUERY since it is needed to access this form, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * from qbf_menu(). 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (user_is_anonymous()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $qbf_form['qbf']['save'] = array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      '#type'  => 'markup', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      '#value' => t('<p>You need to be logged in order to save a query.</p>'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    global $user; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $ar_queries = qbf_get_queries_by_user($user->uid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $max_queries = variable_get(QBF_VAR_MAX_QUERIES, QBF_DEF_MAX_QUERIES); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (count($ar_queries) >= $max_queries) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $qbf_form['qbf']['save'] = array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '#type'  => 'markup', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '#value' => t('<p>You already have reached the maximum number of saved queries (@max). To save this query, first <a href="!queries">remove</a> at least one saved query.</p>', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            '@max'         => $max_queries, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            '!queries'     => url("user/$user->uid/edit/qbf"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $qbf_form['qbf']['qbf_save_type'] = array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '#type'          => 'hidden', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '#value'         => $query_info['form'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $qbf_form['qbf']['qbf_save_name'] = array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '#title'         => t('Name of query in your save list'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '#type'          => 'textfield', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '#required'      => TRUE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '#default_value' => empty($query->name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ? t('@label - @time', array('@label' => $query_info['label'], '@time' => format_date(time(), 'large'))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          : $query->name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $qbf_form['qbf']['qbf_save'] = array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '#submit'        => array('_qbf_form_save_submit'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '#validate'      => array('_qbf_form_save_validate'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '#type'          => 'submit', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '#value'         => t('Save query'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        '#weight'        => 2, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $qbf_form['qbf']['qbf_query'] = array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ( 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -830,30 +894,13 @@ function qbf_form(&$form_state, $query_info, $qbf_form_id, $query = NULL) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     '#value'         => $query_info['callback'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $qbf_form['qbf']['qbf_save_name'] = array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#title'         => t('Name of query in your save list'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#type'          => 'textfield', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#required'      => TRUE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#default_value' => empty($query->name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      ? t('@label - @time', array('@label' => $query_info['label'], '@time' => format_date(time(), 'large'))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      : $query->name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $qbf_form['qbf']['qbf_perform'] = array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     '#submit'        => array('_qbf_form_perform_submit'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     '#validate'      => array('_qbf_form_perform_validate'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     '#type'          => 'submit', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     '#value'         => t('Perform query'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $qbf_form['qbf']['qbf_save'] = array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#submit'        => array('_qbf_form_save_submit'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#validate'      => array('_qbf_form_save_validate'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#type'          => 'submit', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#value'         => t('Save query'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#weight'        => 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return $qbf_form; 
			 |