function viewUsersForTeam($form, &$form_state) { global $user; $params = drupal_get_query_parameters(); if (isset($params['TID'])) { $TID = $params['TID']; } else { $TID = getCurrentTeam()['TID']; } if (teamIsIneligible($TID) || !isMyTeam($TID)) { drupal_set_message('You do not have permission to access that page.', 'error'); drupal_goto($_SERVER['HTTP_REFERER']); } $form_state['TID'] = $TID; $canManageTeamMembers = hasPermissionForTeam('manageTeamMembers', $TID); $canManageTeamOwners = hasPermissionForTeam('manageTeamOwners', $TID); $markup = '<table><tr><td colspan="3">'; if (isset($params['query'])) { $persons = dbSearchUsersFromTeam($TID, $params['query']); } else { $type = isset($params['type']) ? $params['type'] : ''; // filter by type (student vs mentor vs alumni) $persons = dbGetUsersFromTeam($TID, $type); } if (empty($persons)) { drupal_set_message('No users found.', 'error'); drupal_goto($_SERVER['HTTP_REFERER']); } else { if (isset($params['query'])) { $markup .= '<h1>Search Results (' . count($persons) . ' matches)</h1></td>'; } else { $markup .= '<h1>' . count($persons) . ' users on Team ' . dbGetTeamNumber($TID) . '</h1></td>'; } } // create page header, table, and pending users/view all button $markup .= '<td colspan="3" style="text-align:right">'; if ($canManageTeamMembers) { if (!empty(dbGetUsersAwaitingApproval($TID))) { $markup .= '<a href="?q=viewUsersToBeApproved&TID=' . $TID; $markup .= '"><button type="button">View Pending Users</button></a>'; } else { $markup .= '<button type="button" disabled>No Pending Users</button>'; } $markup .= '<a href="?q=addTeamMember&TID=' . $TID; $markup .= '&destination=' . current_path(); $markup .= '"><button type="button">Add User</button></a>'; } if (isset($params['type'])) { $markup .= '<a href="?q=showUsersForTeam&TID=' . $TID; $markup .= '"><button type="button">View All</button></a>'; } $markup .= '</td></tr></table>'; // sets up the table to display name, role, and grade of every user on the certain team $markup .= '<table class="infoTable"><th>Name</th>'; $markup .= '<th>Email</td></th>'; $markup .= '<th>Team Role</td></th>'; $markup .= '<th>CROMA Role</th>'; // if user is an admin, they see a new column where they can change the role of other team members if ($canManageTeamMembers) { $markup .= '<th>Admin Functions</th>'; } else { $markup .= '<th></th>'; } $form['tableHeader'] = array('#markup' => $markup); $i = 0; foreach ($persons as $person) { $form_state["UID-{$i}"] = $person['UID']; $markup = '<tr><td><a href="?q=viewUser&UID=' . $person["UID"] . ' ">'; // hyperlinks the name so every name is linked to its user profile $markup .= $person["firstName"] . " " . $person["lastName"] . '</a></td>'; $form["name-{$i}"] = array('#markup' => $markup); $email = dbGetUserPrimaryEmail($person['UID']); $markup = "<td><a href=\"mailto:{$email}\" target=\"_top\">{$email}</a></td>"; $form["email-{$i}"] = array('#markup' => $markup); $markup = '<td>' . ucfirst(dbGetUserProfile($person['UID'])['type']) . '</td>'; $form["isStudent-{$i}"] = array('#markup' => $markup); $RID = dbGetRIDForTeam($person['UID'], $TID); $teamOwnerRID = dbGetRID('teamOwner'); $personIsTeamOwner = $RID == $teamOwnerRID; // allow current user to change roles (but not change the role of the team owner) if ($canManageTeamMembers && !$personIsTeamOwner) { // if the person in question doesn't have a role if (!$RID) { $RID = 0; } $roles = dbGetAllRoles(); $roles[0] = 'Team Member'; // if current user can't create team owners if (!$canManageTeamOwners) { unset($roles[$teamOwnerRID]); } // make sure the roles are still in order ksort($roles); $form["RID-{$i}"] = array('#prefix' => '<td class="roleSelector">', '#type' => 'select', '#default_value' => $RID, '#options' => $roles, '#suffix' => '</td>', '#ajax' => array('event' => 'change', 'callback' => 'callback', 'wrapper' => 'confirm-div', 'method' => 'replace')); } else { // if the current user can't change the role if ($RID == 0) { $role = 'Member'; } else { $role = dbGetRoleName($RID); } $form["role-{$i}"] = array('#prefix' => '<td>', '#markup' => $role, '#suffix' => '</td>'); } // if the person in question is the current user if ($person['UID'] == $user->uid) { // if the person is the team owner -- transfer ownership if ($personIsTeamOwner) { $markup = "<td><a href=\"?q=transferTeamOwnership&TID={$TID}\">"; $markup .= "<button type=\"button\">Transfer Ownership</button></a></td>"; } else { // allow user to leave team $markup = "<td><a href=\"?q=leaveTeam/{$TID}\">"; $markup .= "<button type=\"button\">Leave Team</button></a></td>"; } // if the current user can remove users } else { if ($canManageTeamMembers && !$personIsTeamOwner) { $markup = "<td><a href=\"?q=kickUserFromTeam/{$person['UID']}/{$TID}\">"; $markup .= "<button type=\"button\" onclick=\"if(!confirm('Are you sure you want to remove this user from your team?')){return false;}\">Kick User</button></a></td>"; } else { // or just some random person $markup = '<td></td>'; } } $form["adminFunctions-{$i}"] = array('#markup' => $markup); $form["rowFooter-{$i}"] = array('#markup' => '</tr>'); $i++; } // end of foreach $form_state['numUsers'] = $i; $form['tableFooter'] = array('#markup' => '</table>'); if ($canManageTeamMembers) { $form['buttons'] = array('#prefix' => '<div id="confirm-div" style="visibility:hidden">', '#suffix' => '</div>'); $form['buttons']['confirm'] = array('#type' => 'submit', '#value' => 'Confirm'); } return $form; }
function transferTeamOwnershipForm_submit($form, $form_state) { global $user; // update the team and the new owner's role $newOwnerUID = $form_state['values']['newOwner']; $TID = $form_state['TID']; dbUpdateTeam($TID, array('UID' => $newOwnerUID)); dbUpdateUserRole($newOwnerUID, $TID, dbGetRID('teamOwner')); dbUpdateUserRole($user->uid, $TID, dbGetRID('teamAdmin')); // set a message to notify the old owner on-screen $newOwnerName = dbGetUserName($newOwnerUID); $teamName = dbGetTeamName($TID); drupal_set_message("{$newOwnerName} is now the owner of {$teamName}!"); // notify new owner through CROMA $notification = array('UID' => $newOwnerUID, 'TID' => $TID, 'dateTargeted' => dbDatePHP2SQL(time()), 'dateCreated' => dbDatePHP2SQL(time())); $notification['message'] = "You are now the owner of {$teamName}!"; $notification['bttnTitle'] = 'View'; $notification['bttnLink'] = "?q=viewTeam&TID=" . $TID; dbAddNotification($notification); // notify new owner through email $oldOwnerName = dbGetUserName($user->uid); $oldOwnerEmail = $user->mail; drupal_mail('teams', 'becameOwner', dbGetUserPrimaryEmail($newOwnerUID), variable_get('language_default'), $params = array('teamName' => $teamName, 'newOwnerName' => $newOwnerName, 'oldOwnerName' => $oldOwnerName, 'oldOwnerEmail' => $oldOwnerEmail, 'TID' => $TID), $from = NULL, $send = TRUE); drupal_goto('showUsersForTeam', array('query' => array('TID' => $TID))); }