| 
														
															@@ -7,7 +7,7 @@ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  * 
														 | 
														
														 | 
														
															  * 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  * @copyright 2008 Ouest Systemes Informatiques (OSInet) 
														 | 
														
														 | 
														
															  * @copyright 2008 Ouest Systemes Informatiques (OSInet) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  * @author Frederic G. MARAND 
														 | 
														
														 | 
														
															  * @author Frederic G. MARAND 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- * @version $Id: qbf.module,v 1.6 2008-08-28 09:53:54 marand Exp $ 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ * @version $Id: qbf.module,v 1.7 2008-08-28 17:06:04 marand Exp $ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  * @license CeCILL 2.0 
														 | 
														
														 | 
														
															  * @license CeCILL 2.0 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  * @package QBF 
														 | 
														
														 | 
														
															  * @package QBF 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  */ 
														 | 
														
														 | 
														
															  */ 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -90,6 +90,7 @@ function qbf_transform_form($form_id) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   $newForm['#multistep'] = TRUE; 
														 | 
														
														 | 
														
															   $newForm['#multistep'] = TRUE; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   $newForm['#redirect']  = FALSE; 
														 | 
														
														 | 
														
															   $newForm['#redirect']  = FALSE; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   $newForm['#after_build'][] = 'qbf_after_build'; 
														 | 
														
														 | 
														
															   $newForm['#after_build'][] = 'qbf_after_build'; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  $newForm['#submit'] = array('qbf_submit' => array()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 // dsm($newForm); 
														 | 
														
														 | 
														
															 // dsm($newForm); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   return $newForm; 
														 | 
														
														 | 
														
															   return $newForm; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   } 
														 | 
														
														 | 
														
															   } 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -99,16 +100,23 @@ function qbf_transform_form($form_id) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  * 
														 | 
														
														 | 
														
															  * 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  * QBF-specific properties are: 
														 | 
														
														 | 
														
															  * QBF-specific properties are: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  * - #qbf : array of properties 
														 | 
														
														 | 
														
															  * - #qbf : array of properties 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- * - #level: only within #qbf @see QBF_* constants 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ * - #level: only within #qbf 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  * 
														 | 
														
														 | 
														
															  * 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- * @param array &$element 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ * @see QBF_* constants 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ * 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ * @param string $key 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ * @param array $element 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  * @return void 
														 | 
														
														 | 
														
															  * @return void 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  */ 
														 | 
														
														 | 
														
															  */ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-function _qbf_transform_element($key, array $element) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+function _qbf_transform_element($key, $element) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   { 
														 | 
														
														 | 
														
															   { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   // dsm(array('key' => $key, 'element' => $element)); 
														 | 
														
														 | 
														
															   // dsm(array('key' => $key, 'element' => $element)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-  // Types without a default transformation are not transformed 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  /** 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+   * List default type transformations applied to widget by FAPI. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+   * 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+   * Types without a default transformation are not transformed 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+   */ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   static $arDefaultTypeTransformations = array 
														 | 
														
														 | 
														
															   static $arDefaultTypeTransformations = array 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     ( 
														 | 
														
														 | 
														
															     ( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     'button'         => NULL, 
														 | 
														
														 | 
														
															     'button'         => NULL, 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -122,7 +130,11 @@ function _qbf_transform_element($key, array $element) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     // 'value'          => 'value', 
														 | 
														
														 | 
														
															     // 'value'          => 'value', 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     ); 
														 | 
														
														 | 
														
															     ); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-  // Properties without a default transformation are not transformed 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  /** 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+   * List default property transformations applied to widget by FAPI property. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+   * 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+   * Properties without a default transformation are not transformed 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+   */ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   static $arDefaultPropertyTransformations = array 
														 | 
														
														 | 
														
															   static $arDefaultPropertyTransformations = array 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     ( 
														 | 
														
														 | 
														
															     ( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     // Standard properties 
														 | 
														
														 | 
														
															     // Standard properties 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -143,7 +155,11 @@ function _qbf_transform_element($key, array $element) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     '#validate'      => NULL, 
														 | 
														
														 | 
														
															     '#validate'      => NULL, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     ); 
														 | 
														
														 | 
														
															     ); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-  // Property values causing element removal 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  /** 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+   * List properties causing causing element removal. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+   * 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+   * The key is the property name, the value is the one causing removal. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+   */ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   static $arKillerProperties = array 
														 | 
														
														 | 
														
															   static $arKillerProperties = array 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     ( 
														 | 
														
														 | 
														
															     ( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     '#disabled'      => TRUE, 
														 | 
														
														 | 
														
															     '#disabled'      => TRUE, 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -371,4 +387,63 @@ function qbf_query_mapper($arQueryMap = array(), $arDefaults = array()) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   	$ret[$name] = $item; 
														 | 
														
														 | 
														
															   	$ret[$name] = $item; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   return $ret; 
														 | 
														
														 | 
														
															   return $ret; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+/** 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ * Load a form_values array into a form used by QBF. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ * 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ * This is typically useful when loading saved queries using qbf_load(). 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ * For other cases, the mechanisms built within FAPI should be used instead. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ * 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ * @see qbf_load() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ * 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ * @param array $form 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ * @param array $form_values 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ * @return array The modified form 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ */ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+function qbf_import_values($element, $form_values) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  foreach (element_children($element) as $childName) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  	if (!empty($form_values[$childName])) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  	  { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  	  $element[$childName]['#qbf']['#default_value'] = $form_values[$childName]; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  	  } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  	$element[$childName] = qbf_import_values($element[$childName], $form_values); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  return $element; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+/** 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ * Load a saved QBF query. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ * 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ * @see qbf_import_values() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ * 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ * @param int $qid 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ * @return array A form_values array usable by qbf_import_values 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ */ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+function qbf_load($qid) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  $sq = 'SELECT qq.qid, qq.uid, qq.query ' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      . 'FROM {qbf_queries} qq ' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      . 'WHERE qq.qid = %d '; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  // db_rewrite_sql does not apply here until we add more advanced support for access control 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  $q = db_query($sq, $qid); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  $ret = db_fetch_object($q); // 0 or 1 row: we are querying on the primary key 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  if ($ret === FALSE) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    $ret = NULL; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  else 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    $ret->query = unserialize($ret->query); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  return $ret; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+function qbf_submit($form_id, $form_values) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  dsm(func_num_args()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  dsm(array('QS' => $form_values)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  return url('goo'); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   } 
														 | 
														
														 | 
														
															   } 
														 |