### Eclipse Workspace Patch 1.0 #P contributions Index: modules/buddylist/buddylist.module =================================================================== RCS file: /cvs/drupal/contributions/modules/buddylist/buddylist.module,v retrieving revision 1.88 diff -u -r1.88 buddylist.module --- modules/buddylist/buddylist.module 4 Feb 2007 15:52:28 -0000 1.88 +++ modules/buddylist/buddylist.module 27 Feb 2007 14:35:28 -0000 @@ -204,6 +204,24 @@ 'weight' => 0, 'callback arguments' => array('buddylist_pending_requests', $id) ); + + $items[] = array( + 'path' => 'buddylist/'. $id .'/buddies/requested/accept', + 'title' => t('Accept Invitation'), + 'access' => $editAccess, + 'type' => MENU_CALLBACK, + 'weight' => 1, + 'callback' => 'drupal_get_form', 'callback arguments' => array('buddylist_pending_requested_accept',$id), + ); + + $items[] = array( + 'path' => 'buddylist/'. $id .'/buddies/requested/deny', + 'title' => t('Deny Invitation'), + 'access' => $editAccess, + 'type' => MENU_CALLBACK, + 'weight' => 1, + 'callback' => 'drupal_get_form', 'callback arguments' => array('buddylist_pending_requested_deny',$id), + ); } // other callbacks @@ -227,6 +245,8 @@ 'type' => MENU_CALLBACK, 'callback arguments' => array($id), ); + + } return $items; @@ -453,6 +473,7 @@ $form['buddylist_settings']['buddylist_mail'] = array( '#type' => 'checkbox', '#title' => t('Receive @buddylist notification mails', buddylist_translation()), + '#default_value' => isset($edit['buddylist_mail']) ? $edit['buddylist_mail'] : 1, '#description' => t('If you check this, you will be notified about important actions regarding your @Buddylist.', buddylist_translation())); return $form; @@ -772,7 +793,9 @@ while ($row = db_fetch_object($result)) { $html_row = array(); $html_row[] = theme('username', $row); - $html_row[] = drupal_get_form('buddylist_approval_form', $account->uid, $row->uid, $row->name); + //echo "bla".$account->uid; + $html_row[] = theme('buddylist_accept_invitation_buddylist_link', $account->uid, $row->uid) . "|" . theme('buddylist_deny_invitation_buddylist_link', $account->uid, $row->uid); + // $html_row[] = drupal_get_form('buddylist_approval_form', $account->uid, $row->uid, $row->name); $html_rows[] = $html_row; } @@ -817,29 +840,24 @@ } -function buddylist_approval_form($requestee_uid, $requester_uid) { +function buddylist_approval_form($requestee_uid, $requester_uid, $requestee_account) { $form = array(); - + $form['requestee_uid'] = array( '#type' => 'hidden', '#value' => $requestee_uid, ); - + $form['requester_uid'] = array( '#type' => 'hidden', '#value' => $requester_uid ); - - $form['approve'] = array( - '#type' => 'submit', - '#value' => t('Approve') + + $form['requestee_account']=array( + '#type' => 'value', + '#value' => $requestee_account ); - - $form['deny'] = array( - '#type' => 'submit', - '#value' => t('Deny'), - ); - + return $form; } @@ -1133,6 +1151,14 @@ return $stats; } +function theme_buddylist_accept_invitation_buddylist_link($requester_uid, $requestee_uid) { + return l('Accept', 'buddylist/' . $requester_uid . '/buddies/requested/accept/' . $requestee_uid, array('title' => 'Accept'), drupal_get_destination(), NULL, FALSE, TRUE); +} + +function theme_buddylist_deny_invitation_buddylist_link($requester_uid, $requestee_uid) { + return l('Deny', 'buddylist/' . $requester_uid . '/buddies/requested/deny/' . $requestee_uid, array('title' => 'Deny'), drupal_get_destination(), NULL, FALSE, TRUE); +} + function buddylist_form_edit_groups_add_submit($form_id, $form_values) { global $user; $label_id = buddylist_buddygroup_new($user->uid, $form_values['add_group']); @@ -1550,4 +1576,81 @@ '@siteurl' => $GLOBALS["base_url"], '@adder_list_link' => url("buddylist/". $user->uid ."/buddies/list", NULL, NULL, TRUE), ); +} + +function buddylist_pending_requested_accept($requester_uid, $requestee_uid) { + $requestee_account = user_load(array('uid' => $requestee_uid)); + $output = confirm_form( + buddylist_approval_form($requester_uid, $requestee_uid, $requestee_account), + t('Accept invitation'), + 'buddylist/'.$requester_uid.'/buddies/requests', + t("Are you sure you want to accept the invitation from !name?", array('!name' => theme('username', $requestee_account))), + t('Yes'), t('No'), + 'buddylist_request_accept_confirm'); + + return $output; +} + +function buddylist_pending_requested_deny($requester_uid, $requestee_uid) { + $requestee_account = user_load(array('uid' => $requestee_uid)); + $output = confirm_form( + buddylist_approval_form($requester_uid, $requestee_uid, $requestee_account), + t('Accept invitation'), + 'buddylist/'.$requester_uid.'/buddies/requests', + t("Are you sure you want to deny the invitation from !name?", array('!name' => theme('username', $requestee_account))), + t('Yes'), t('No'), + 'buddylist_request_deny_confirm'); + + return $output; +} + +function buddylist_pending_requested_accept_submit($form_id, $form_values) { + $requestee_account = $form_values['requestee_account']; // most likely global user, unless admin looking + $requester_account = user_load(array('uid' => $form_values['requester_uid'])); + + + // Delete pending request from {buddylist_penging_requests} + $result = db_query('SELECT * FROM {buddylist_pending_requests} WHERE requestee_uid = %d AND requester_uid = %d', $form_values['requestee_uid'], $form_values['requester_uid']); + + if (db_num_rows($result) == 0) { + // The other user cancelled since viewing this page + drupal_set_message(t('!linktouser has cancelled the invitation to join their network.', array('!linktouser' => theme('username', $requester_account)) + buddylist_translation())); + drupal_goto(); + } + + db_query('DELETE FROM {buddylist_pending_requests} WHERE requestee_uid = %d AND requester_uid = %d', $form_values['requestee_uid'], $form_values['requester_uid']); + + // Make sure, for some weird reason, we don't already have these guys marked as buddies of each other in the database + $result = db_query('SELECT * FROM {buddylist} WHERE uid = %d AND buddy = %d', $form_values['requestee_uid'], $form_values['reqeuster_uid']); + + $time = time(); + + if (!db_num_rows($result)) { + db_query('INSERT INTO {buddylist} (uid, buddy, timestamp, received) VALUES (%d, %d, %d, %d)', $form_values['requestee_uid'], $form_values['requester_uid'], $time, 1); + } + + $result = db_query('SELECT * FROM {buddylist} WHERE uid = %d AND buddy = %d', $form_values['requester_uid'], $form_values['requestee_uid']); + if (!db_num_rows($result)) { + db_query('INSERT INTO {buddylist} (uid, buddy, timestamp, received) VALUES (%d, %d, %d, %d)', $form_values['requester_uid'], $form_values['requestee_uid'], $time, 1); + } + + if (variable_get('buddylist_send_approval', FALSE)) { + buddylist_mail_user('approval', $requester_account, $requestee_account); + } + + drupal_set_message(t('Congratulations! You and !linktouser have joined each other\'s network.', array('!linktouser' => theme('username', $requester_account)) + buddylist_translation())); + + return ''; +} + +function buddylist_pending_requested_deny_submit($form_id, $form_values) { + $requestee_account = $form_values['requestee_account']; // most likely global user, unless admin looking + $requester_account = user_load(array('uid' => $form_values['requester_uid'])); + + // Delete pending request from {buddylist_penging_requests} + db_query('DELETE FROM {buddylist_pending_requests} WHERE requestee_uid = %d AND requester_uid = %d', $form_values['requestee_uid'], $form_values['requester_uid']); + + drupal_set_message(t("You have denied the networking invitation from !user.", array('!user' => theme('username', $requester_account)) + buddylist_translation())); + + return ''; } \ No newline at end of file