name] = check_plain($user->name); } } drupal_json($matches); } /** * Form for adding existing members to a group. */ function atrium_members_addform($form_state, $group) { $form = array('#theme' => 'atrium_members_addform'); $form['messages'] = array('#type' => 'markup'); // Provide the page View for AJAX reload action. if ($display = views_get_page_view()) { if ($display->get_option('use_ajax')) { $form['view'] = array( '#type' => 'hidden', '#value' => "{$display->view->name}:{$display->view->current_display}", '#attributes' => array('class' => 'atrium-members-addform-view'), ); } } $form['group'] = array( '#type' => 'value', '#value' => $group, ); $form['username'] = array( '#type' => 'textfield', '#title' => t('Username'), '#default_value' => '', '#autocomplete_path' => 'members/add/autocomplete', '#description' => '', ); $form['add'] = array( '#type' => 'submit', '#value' => t('Add to group'), '#submit' => array('atrium_members_addform_submit'), '#ahah' => array( 'path' => 'members/add/ajax', 'wrapper' => 'atrium-members-addform-messages', 'method' => 'replace', 'effect' => 'none', ), ); return $form; } /** * Theme function for atrium_members_addform(). */ function theme_atrium_members_addform($form) { drupal_add_js(drupal_get_path('module', 'atrium_members') .'/atrium_members.js'); $output = "
"; $output .= drupal_render($form['messages']); $output .= "
"; $output .= drupal_render($form); return "
{$output}
"; } /** * Submit handler for member addform. */ function atrium_members_addform_submit(&$form, &$form_state) { if ($uid = db_result(db_query("SELECT uid FROM {users} WHERE name = '%s'", $form_state['values']['username']))) { if ($account = user_load($uid)) { og_save_subscription($form_state['values']['group']->nid, $account->uid, array('is_active' => 1)); drupal_set_message(t('Subscribed user %name to %group.', array('%name' => $account->name, '%group' => $form_state['values']['group']->title))); } } } /** * AJAX/AHAH callback for user addform submission. */ function atrium_members_addform_ajax() { if ($form = form_get_cache($_POST['form_build_id'], $form_state)) { // Build submitted values. $form_state = array('values' => $_POST); foreach (element_children($form) as $key) { if ($form[$key]['#type'] === 'value' && isset($form[$key]['#value'])) { $form_state['values'][$key] = $form[$key]['#value']; } } // Submit the form & retrieve messages. atrium_members_addform_submit($form, $form_state); $output = theme('status_messages'); $output = "
{$output}
"; drupal_json(array('status' => TRUE, 'data' => $output)); exit(); } drupal_json(array('status' => FALSE, 'data' => '')); exit(); } /** * Page callback for og users. */ function atrium_members_og_users() { menu_set_active_item('members'); return menu_execute_active_handler(); } /** * Form callback that generates only the portion of the user profile form that is requested. */ function atrium_members_user_profile_tab($form_state, $account, $tab) { module_load_include('inc', 'user', 'user.pages'); $form = user_profile_form($form_state, $account); $form['#submit'] = array('user_profile_form_submit'); foreach (element_children($form) as $k) { if ($k == $tab || $form[$k]['#type'] == 'submit') { $form[$k]['#access'] = TRUE; } else { $form[$k]['#access'] = FALSE; } } if (isset($form['delete'])) { $form['delete']['#access'] = FALSE; } return $form; }