You are here

function privatemsg_filter_form_privatemsg_list_alter in Privatemsg 6

Same name and namespace in other branches
  1. 6.2 privatemsg_filter/privatemsg_filter.module \privatemsg_filter_form_privatemsg_list_alter()
  2. 7.2 privatemsg_filter/privatemsg_filter.module \privatemsg_filter_form_privatemsg_list_alter()
  3. 7 privatemsg_filter/privatemsg_filter.module \privatemsg_filter_form_privatemsg_list_alter()

Implements hook_form_FORM_ID_alter().

Adds a filter widget to the message listing pages.

File

privatemsg_filter/privatemsg_filter.module, line 480
Allows users to tag private messages and to filter based upon those tags.

Code

function privatemsg_filter_form_privatemsg_list_alter(&$form, $form_state) {
  global $user;
  if (privatemsg_user_access('filter private messages') && !empty($form['#data'])) {
    $form += privatemsg_filter_dropdown($form_state, $form['#account']);
  }
  $fields = array_filter(variable_get('privatemsg_display_fields', array(
    'participants',
  )));
  if (in_array('tags', $fields)) {

    // Load thread id's of the current list.
    $threads = array_keys($form['#data']);

    // Fetch all tags of those threads.
    $query = _privatemsg_assemble_query(array(
      'tags',
      'privatemsg_filter',
    ), $user, $threads, 3);

    // Add them to #data
    $result = db_query($query['query']);
    while ($tag = db_fetch_array($result)) {
      $form['#data'][$tag['thread_id']]['tags'][$tag['tag_id']] = $tag['tag'];
    }
  }
  $tags = privatemsg_filter_get_tags_data($user);
  if (privatemsg_user_access('tag private messages') && !empty($tags) && !empty($form['#data'])) {
    $options = array();
    $options[] = t('Apply tag...');
    foreach ($tags as $tag_id => $tag) {
      $options[$tag_id] = $tag;
    }
    $form['actions']['tag-add'] = array(
      '#type' => 'select',
      '#options' => $options,
      '#default_value' => 0,
    );
    $form['actions']['tag-add-submit'] = array(
      '#prefix' => '<div class="privatemsg-tag-add-submit">',
      '#suffix' => '</div>',
      '#type' => 'submit',
      '#value' => t('Apply Tag'),
      '#submit' => array(
        'privatemsg_filter_add_tag_submit',
      ),
      '#attributes' => array(
        'class' => 'privatemsg-action-button',
      ),
    );
    $options[0] = t('Remove Tag...');
    $form['actions']['tag-remove'] = array(
      '#type' => 'select',
      '#options' => $options,
      '#default_value' => 0,
    );
    $form['actions']['tag-remove-submit'] = array(
      '#prefix' => '<div class="privatemsg-tag-remove-submit">',
      '#suffix' => '</div>',
      '#type' => 'submit',
      '#value' => t('Remove Tag'),
      '#submit' => array(
        'privatemsg_filter_remove_tag_submit',
      ),
      '#attributes' => array(
        'class' => 'privatemsg-action-button',
      ),
    );

    // JS for hiding the submit buttons.
    drupal_add_js(drupal_get_path('module', 'privatemsg_filter') . '/privatemsg-filter-list.js');
  }
}