Parcourir la source

- Now handle save query requests (but saving isn't actually implemented)
- Added function to list a user's saved queries

Frederic G. Marand il y a 15 ans
Parent
commit
c5061c9b2f
1 fichiers modifiés avec 41 ajouts et 6 suppressions
  1. 41 6
      qbf.module

+ 41 - 6
qbf.module

@@ -7,7 +7,7 @@
  *
  * @copyright 2008 Ouest Systemes Informatiques (OSInet)
  * @author Frederic G. MARAND
- * @version $Id: qbf.module,v 1.7 2008-08-28 17:06:04 marand Exp $
+ * @version $Id: qbf.module,v 1.8 2008-08-31 10:45:05 marand Exp $
  * @license CeCILL 2.0
  * @package QBF
  */
@@ -35,7 +35,7 @@ define('QBF_LEVEL_REQUIRED',         3);
 /**
  * The main QBF path
  */
-define('QBF_PATH_QUERY',             'qbf/query');
+define('QBF_PATH_MAIN',             'qbf');
 
 /**
  * Authorize use of QBF searches
@@ -46,6 +46,10 @@ define('QBF_PERM_QUERY',             'use QBF search functions');
  */
 define('QBF_PERM_ADMIN',             'administer QBF');
 
+/**
+ * The name of the table used to store queries
+ */
+define('QBF_TABLE_NAME',             'qbf_queries');
 
 /**
  * Transform a form array for QBF.
@@ -88,7 +92,8 @@ function qbf_transform_form($form_id)
 
   $newForm['#id'] = $newFormId;
   $newForm['#multistep'] = TRUE;
-  $newForm['#redirect']  = FALSE;
+  // Do not set #redirect, even to FALSE (submit handlers)
+  // $newForm['#redirect']  = FALSE;
   $newForm['#after_build'][] = 'qbf_after_build';
   $newForm['#submit'] = array('qbf_submit' => array());
 // dsm($newForm);
@@ -425,10 +430,10 @@ function qbf_import_values($element, $form_values)
 function qbf_load($qid)
   {
   $sq = 'SELECT qq.qid, qq.uid, qq.query '
-      . 'FROM {qbf_queries} qq '
+      . 'FROM {%s} 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);
+  $q = db_query($sq, QBF_TABLE_NAME, $qid);
   $ret = db_fetch_object($q); // 0 or 1 row: we are querying on the primary key
   if ($ret === FALSE)
     {
@@ -443,7 +448,37 @@ function qbf_load($qid)
 
 function qbf_submit($form_id, $form_values)
   {
+  switch ($form_values['op'])
+    {
+    case t('Search'):
+      $ret = FALSE;
+      break;
+    case t('Save query'):
+      $ret = url('goo');
+      break;
+    }
   dsm(func_num_args());
   dsm(array('QS' => $form_values));
-  return url('goo');
+  return $ret;
+  }
+
+/**
+ * List queries owned by a given user.
+ *
+ * @param int $uid > 0
+ * @return array
+ */
+function qbf_get_queries_by_user($uid)
+  {
+  $sq = 'SELECT qq.qid, qq.uid, qq.name, qq.query '
+      . 'FROM {%s} qq '
+      . 'WHERE qq.uid = %d '
+      . 'ORDER BY qq.name ';
+  $q = db_query($sq, QBF_TABLE_NAME, $uid);
+  $ret = array();
+  while ($o = db_fetch_object($q))
+    {
+    $ret[$o->qid] = $o; // qid is the PK, so it is present and unique
+    }
+  return $ret;
   }