function institutionusers_submit(Pieform $form, $values) { global $SESSION, $USER; $inst = $values['institution']; $url = '/admin/users/institutionusers.php?usertype=' . $values['usertype'] . (isset($values['lastinstitution']) ? '&lastinstitution=' . $values['lastinstitution'] : '') . '&institution=' . $inst; if (empty($inst) || !$USER->can_edit_institution($inst)) { $SESSION->add_error_msg(get_string('notadminforinstitution', 'admin')); redirect($url); } $dataerror = false; if (!in_array($values['usertype'], array('requesters', 'members', 'lastinstitution', 'nonmembers', 'invited')) || !is_array($values['users'])) { $dataerror = true; } else { foreach ($values['users'] as $id) { if (!is_numeric($id)) { $dataerror = true; break; } } } if ($dataerror) { $SESSION->add_error_msg(get_string('errorupdatinginstitutionusers', 'admin')); redirect($url); } else { if (empty($values['users'])) { $SESSION->add_ok_msg(get_string('nousersupdated', 'admin')); redirect($url); } } if ($values['usertype'] == 'members') { $action = 'removeMembers'; } else { if ($values['usertype'] == 'requesters') { $action = !empty($values['reject']) ? 'declineRequestFromUser' : 'addUserAsMember'; } else { if ($values['usertype'] == 'nonmembers') { $action = !empty($values['add']) && $USER->get('admin') ? 'addUserAsMember' : 'inviteUser'; } else { if ($values['usertype'] == 'lastinstitution') { $action = !empty($values['add']) && $USER->get('admin') ? 'addUserAsMember' : 'inviteUser'; } else { $action = 'uninvite_users'; } } } } $institution = new Institution($values['institution']); $maxusers = $institution->maxuseraccounts; if (!empty($maxusers)) { $members = $institution->countMembers(); if ($action == 'addUserAsMember' && $members + count($values['users']) > $maxusers) { $SESSION->add_error_msg(get_string('institutionuserserrortoomanyusers', 'admin')); redirect($url); } if ($action == 'inviteUser' && $members + $institution->countInvites() + count($values['users']) > $maxusers) { $SESSION->add_error_msg(get_string('institutionuserserrortoomanyinvites', 'admin')); redirect($url); } } if ($action == 'removeMembers') { $institution->removeMembers($values['users']); } else { if ($action == 'addUserAsMember') { $institution->add_members($values['users']); } else { if ($action == 'inviteUser') { $institution->invite_users($values['users']); } else { if ($action == 'declineRequestFromUser') { $institution->decline_requests($values['users']); } else { if ($action == 'uninvite_users') { $institution->uninvite_users($values['users']); } } } } } $SESSION->add_ok_msg(get_string('institutionusersupdated_' . $action, 'admin')); if (!$USER->get('admin') && !$USER->is_institutional_admin()) { redirect(get_config('wwwroot')); } redirect($url); }