|
@@ -10,9 +10,11 @@
|
|
|
* @author Frederic G. MARAND
|
|
|
* @license Licensed under the CeCILL 2.0 and the General Public Licence version 2 or later
|
|
|
* @package QBF
|
|
|
+ *
|
|
|
+ * @todo validate searches: checkboxes sets needs at least one value checked, otherwise there won't be any result
|
|
|
*/
|
|
|
|
|
|
-// $Id: qbf.module,v 1.9.4.7 2009-03-21 19:41:34 marand Exp $
|
|
|
+// $Id: qbf.module,v 1.9.4.8 2009-03-21 20:15:30 marand Exp $
|
|
|
|
|
|
/**
|
|
|
* Saved error reporting level.
|
|
@@ -81,13 +83,37 @@ define('QBF_TABLE_NAME', 'qbf_queries');
|
|
|
|
|
|
/**
|
|
|
* Notify owner about saved query deletions, variable name.
|
|
|
+ *
|
|
|
+ * @ingroup vars
|
|
|
*/
|
|
|
define('QBF_VAR_NOTIFY_DELETE', 'qbf_notify_delete');
|
|
|
+
|
|
|
+/**
|
|
|
+ * Name of the profile category under which the list of saved queries will be
|
|
|
+ * displayed.
|
|
|
+ *
|
|
|
+ * @ingroup vars
|
|
|
+ *
|
|
|
+ * @see qbf_admin_settings(), qbf_profile_alter()
|
|
|
+ */
|
|
|
+define('QBF_VAR_PROFILE_CATEGORY', 'qbf_profile_category');
|
|
|
+
|
|
|
/**
|
|
|
* Notify owner about saved query deletions, default value.
|
|
|
+ *
|
|
|
+ * @ingroup vars
|
|
|
*/
|
|
|
define('QBF_DEF_NOTIFY_DELETE', FALSE);
|
|
|
|
|
|
+/**
|
|
|
+ * Default value for the profile category
|
|
|
+ *
|
|
|
+ * @ingroup vars
|
|
|
+ *
|
|
|
+ * See QBF_VAR_PROFILE_CATEGORY
|
|
|
+ */
|
|
|
+define('QBF_DEF_PROFILE_CATEGORY', 'Saved queries');
|
|
|
+
|
|
|
/**
|
|
|
* A class wrapper for saved QBF queries
|
|
|
*/
|
|
@@ -444,7 +470,7 @@ function qbf_form_save_submit($form, &$form_state)
|
|
|
drupal_set_message(t('Your query was saved as "@name".',
|
|
|
array('@name' => $form_state['values']['qbf_save_name'])));
|
|
|
global $user;
|
|
|
- $form_state['redirect'] = "user/$user->uid/qbf";
|
|
|
+ $form_state['redirect'] = "user/$user->uid/edit/qbf";
|
|
|
return $qid;
|
|
|
}
|
|
|
|
|
@@ -884,8 +910,8 @@ function _qbf_save($form_id, $form_state)
|
|
|
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]", 'query' => $query));
|
|
|
- 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();
|
|
@@ -1000,4 +1026,61 @@ function qbf_query_form($query)
|
|
|
$qbf_form_id = 'qbf_' . $query->type;
|
|
|
$form = drupal_get_form($qbf_form_id, $query);
|
|
|
return $form;
|
|
|
- }
|
|
|
+ }
|
|
|
+
|
|
|
+/**
|
|
|
+ * Implement hook_profile_alter().
|
|
|
+ *
|
|
|
+ * Add saved queries to the profile rendering
|
|
|
+ *
|
|
|
+ * @ingroup hooks
|
|
|
+ * @param object $account
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+function qbf_profile_alter(&$account)
|
|
|
+ {
|
|
|
+ // @TODO D6 use $account->content instead of $fields: check whether this is sufficient
|
|
|
+ global $user;
|
|
|
+
|
|
|
+ // Only allow field to QBF admins and own user
|
|
|
+ if ($user->uid != $account->uid && !user_access(QBF_PERM_ADMIN))
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ $ar_queries = qbf_get_queries_by_user($account->uid);
|
|
|
+ $count = count($ar_queries);
|
|
|
+ // @todo Create New link needs to use hook_qbf_register info
|
|
|
+ $new_query_link = l(t('Create new query'), JOB_PATH_MAIN);
|
|
|
+ $none_message = ($account->uid == $user->uid)
|
|
|
+ ? t('None yet. !newQuery', array('!newQuery' => $new_query_link))
|
|
|
+ : t('None yet.');
|
|
|
+
|
|
|
+ $saved = ($count > 0)
|
|
|
+ ? format_plural($count, 'One saved query. ', '@count saved queries. ')
|
|
|
+ . l(t('View/edit'), "user/$account->uid/edit/qbf")
|
|
|
+ : $none_message;
|
|
|
+
|
|
|
+ // @todo Support per-application/per-node profile categories
|
|
|
+ $cat_name = variable_get(QBF_VAR_PROFILE_CATEGORY, QBF_DEF_PROFILE_CATEGORY);
|
|
|
+ /*
|
|
|
+ * Due to the way profile.module works, existing categories are never empty,
|
|
|
+ * so any existing category name points to a non-empty array
|
|
|
+ */
|
|
|
+ if (!array_key_exists($cat_name, $account->content))
|
|
|
+ {
|
|
|
+ $account->content[$cat_name] = array();
|
|
|
+ }
|
|
|
+
|
|
|
+ // @FIXME: breaks drupal_render()
|
|
|
+// $account->content[$cat_name] += array
|
|
|
+// (
|
|
|
+// 'job-saved' => array
|
|
|
+// (
|
|
|
+// 'title' => t('Saved queries'),
|
|
|
+// 'value' => $saved,
|
|
|
+// 'class' => 'job-saved-queries',
|
|
|
+// ),
|
|
|
+// );
|
|
|
+ // dsm(array("jpa fields" => $account->content));
|
|
|
+ }
|