| 
					
				 | 
			
			
				@@ -12,7 +12,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @package QBF 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-// $Id: qbf.module,v 1.9.4.6 2009-03-21 16:53:31 marand Exp $ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// $Id: qbf.module,v 1.9.4.7 2009-03-21 19:41:34 marand Exp $ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * Saved error reporting level. 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -257,12 +257,12 @@ function _qbf_query_delete($query) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @param array $element 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @return void 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-function _qbf_transform_element($key, $element) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function _qbf_transform_element($key, $element, $form_state, $query) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // dsm(array('key' => $key, 'element' => $element)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    * List default type transformations applied to widget by FAPI. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    * Types without a default transformation are not transformed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   static $ar_default_type_transformations = array 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -291,76 +291,78 @@ function _qbf_transform_element($key, $element) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 'weight'         => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   * List default property transformations applied to widget by FAPI property. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   * Properties without a default transformation are not transformed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  static $ar_default_property_transformations = array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // Standard properties 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#action'        => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#after_build'   => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // '#base'          => NULL, // gone in D6 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#button_type'   => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#built'         => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#description'   => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#method'        => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#parents'       => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#redirect'      => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#ref'           => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#required'      => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#rows'          => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#submit'        => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#tree'          => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#validate'      => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * List default property transformations applied to widget by FAPI property. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * Properties without a default transformation are not transformed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    static $ar_default_property_transformations = array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // Standard properties 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      '#action'        => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      '#after_build'   => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // '#base'          => NULL, // gone in D6 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      '#button_type'   => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      '#built'         => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      '#description'   => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      '#method'        => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      '#parents'       => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      '#redirect'      => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      '#ref'           => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      '#required'      => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      '#rows'          => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      '#submit'        => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      '#tree'          => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      '#validate'      => NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * List properties causing causing element removal. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * The key is the property name, the value is the one causing removal. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    static $ar_killer_properties = array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      '#disabled'      => TRUE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   * List properties causing causing element removal. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   * The key is the property name, the value is the one causing removal. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  static $ar_killer_properties = array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#disabled'      => TRUE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // Transform type 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $source_type = $element['#type']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // Transform type 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $source_type = $element['#type']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // .. Default transformation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $dest_type = array_key_exists($source_type, $ar_default_type_transformations) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    ? $ar_default_type_transformations[$source_type] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    : $source_type; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // .. Apply form-defined type override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if (isset($element['#qbf']['#type'])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    $dest_type = $element['#qbf']['#type']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // .. Default transformation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $dest_type = array_key_exists($source_type, $ar_default_type_transformations) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ? $ar_default_type_transformations[$source_type] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      : $source_type; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if (is_null($dest_type)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    $ret = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    $ret = $element; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    $ret['#type'] = $dest_type; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (!array_key_exists('#qbf', $element) || $element['#qbf']['#level'] == QBF_LEVEL_REMOVE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // .. Apply form-defined type override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (isset($element['#qbf']['#type'])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $dest_type = $element['#qbf']['#type']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (is_null($dest_type)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       $ret = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      foreach (element_properties($element) as $property_name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $ret = $element; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      $ret['#type'] = $dest_type; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (!array_key_exists('#qbf', $element) || $element['#qbf']['#level'] == QBF_LEVEL_REMOVE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // Apply killer properties first to avoid useless work 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (array_key_exists($property_name, $ar_killer_properties) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          && ($element[$property_name] = $ar_killer_properties[$property_name])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $ret = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        foreach (element_properties($element) as $property_name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          $ret = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          // Apply killer properties first to avoid useless work 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (array_key_exists($property_name, $ar_killer_properties) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          && ($element[$property_name] = $ar_killer_properties[$property_name])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            $ret = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // Now transform or copy remaining properties 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (array_key_exists($property_name, $ar_default_property_transformations)) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -376,16 +378,25 @@ function _qbf_transform_element($key, $element) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if ($property_name == '#qbf') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           foreach ($element[$property_name] as $override_name => $override_value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             $ret[$override_name] = $override_value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (isset($form_state['values'][$key])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $ret['#default_value'] = $form_state['values'][$key]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      elseif (isset($query->query[$key])) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $ret['#default_value'] = $query->query[$key]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       // Recursively transform children 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       foreach (element_children($element) as $child_name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        $child = _qbf_transform_element($child_name, $element[$child_name]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $child = _qbf_transform_element($child_name, $element[$child_name], $form_state, $query); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (is_null($child)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           unset($ret[$child_name]); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -474,7 +485,7 @@ function qbf_forms($qbf_form_id, $args) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       $forms['qbf_' . $query_info['form']] = array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         'callback'           => 'qbf_form', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        'callback arguments' => array($query_info, $qbf_form_id, $args), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'callback arguments' => array($query_info, $qbf_form_id), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -537,6 +548,14 @@ function qbf_menu() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'type'             => MENU_NORMAL_ITEM, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $items[QBF_PATH_MAIN . '/%qbf_query'] = array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'type'             => MENU_CALLBACK, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'access arguments' => array(QBF_PERM_QUERY), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'page callback'    => 'qbf_query_form', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    'page arguments'   => array(1), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $items[QBF_PATH_MAIN . '/%qbf_query/delete'] = array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     'type'             => MENU_CALLBACK, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -597,16 +616,28 @@ function qbf_perm() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @see qbf_import_values() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @link http://drupal.org/node/109153#load @endlink 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @param int $qid 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @return array A form_values array usable by qbf_import_values 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param int $us_qid 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @return array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   A form_values array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-function qbf_query_load($qid) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function qbf_query_load($us_qid) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   static $query = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // Only allow query loading by logged-in users 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (user_is_anonymous()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return FALSE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // Filter out visibly invalid values 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $qid = (is_numeric($us_qid) && ($us_qid > 0)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ? $us_qid 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    : 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (is_null($query)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    $sq = 'SELECT qq.qid, qq.uid, qq.query, qq.name ' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $sq = 'SELECT qq.qid, qq.uid, qq.type, qq.name, qq.query ' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         . 'FROM {%s} qq ' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         . 'WHERE qq.qid = %d '; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // db_rewrite_sql does not apply here: access control is further down 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -616,12 +647,12 @@ function qbf_query_load($qid) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if ($query !== NULL) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       $query->query = unserialize($query->query); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      //dsm($query); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // dsm($query); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   global $user; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $ret = (isset($query) && isset($query->uid) && (($query->uid == $user->uid) || user_access(QBF_PERM_ADMIN))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $ret = (isset($query) && (($query->uid == $user->uid) || user_access(QBF_PERM_ADMIN))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ? $query 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     : FALSE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -843,26 +874,27 @@ function _qbf_save($form_id, $form_state) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * The QBF form builder. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @param array $form_state 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @param string $form_id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   The original form to transform 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param array $query_info 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   The query structure array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @param string $qbf_form_id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   The QBF form itself 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * @param strign $save_type 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- *   Name of search type, to use when saving. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   The name of the QBF form 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param string $query 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ *   The saved query. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-function qbf_form($form_state, $query_info, $qbf_form_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function qbf_form(&$form_state, $query_info, $qbf_form_id, $query = NULL) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $form_id = $query_info['form']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // dsm(array("QBF_Form" => "Base = [$form_id], QBF ID = [$qbf_form_id]", 'save_type' => $save_type)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // dsm($form_state); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  dsm(array("QBF_Form" => "Base = [$form_id], QBF ID = [$qbf_form_id]", 'query' => $query)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  dsm($form_state); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // 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['#qbf_source_form_id'] = $form_id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  // On the form element itselfn only keep the QBF properties and the children 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // On the form element itself, only keep the QBF properties and the children 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (in_array('#qbf', element_properties($form))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $qbf_form += $form['#qbf']; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -870,8 +902,7 @@ function qbf_form($form_state, $query_info, $qbf_form_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   foreach (element_children($form) as $key) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // dsm("Transforming $key, type " . $form[$key]['#type']); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    $new_element = _qbf_transform_element($key, $form[$key], $form_state); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $new_element = _qbf_transform_element($key, $form[$key], $form_state, $query); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (!is_null($new_element)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       $qbf_form[$key] = $new_element; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -906,7 +937,7 @@ function qbf_form($form_state, $query_info, $qbf_form_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $qbf_form['qbf']['qbf_save_type'] = array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     '#type'          => 'hidden', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#value'         => $query_info['label'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#value'         => $query_info['form'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $qbf_form['qbf']['qbf_query'] = array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ( 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -919,7 +950,9 @@ function qbf_form($form_state, $query_info, $qbf_form_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     '#title'         => t('Name of query in your save list'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     '#type'          => 'textfield', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     '#required'      => TRUE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    '#default_value' => substr($form_id, 0, -5) . ' ' . format_date(time(), 'large'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    '#default_value' => empty($query->name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ? substr($form_id, 0, -5) . ' ' . format_date(time(), 'large') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      : $query->name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $qbf_form['qbf']['qbf_save'] = array 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ( 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -961,3 +994,10 @@ function qbf_form_perform_submit($form, &$form_state) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   $form_state['rebuild'] = TRUE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function qbf_query_form($query) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $qbf_form_id = 'qbf_' . $query->type; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $form = drupal_get_form($qbf_form_id, $query); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return $form; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 |