public function leave_institution($institution) { parent::leave_institution($institution); $this->find_by_id($this->get('id')); $this->reset_institutions(); }
function edituser_institution_submit(Pieform $form, $values) { $user = new User(); if (!$user->find_by_id($values['id'])) { return false; } $userinstitutions = $user->get('institutions'); global $USER, $SESSION; foreach ($userinstitutions as $i) { if ($USER->can_edit_institution($i->institution)) { if (isset($values[$i->institution . '_submit'])) { $newuser = (object) array('usr' => $user->id, 'institution' => $i->institution, 'ctime' => db_format_timestamp($i->ctime), 'studentid' => $values[$i->institution . '_studentid'], 'staff' => (int) ($values[$i->institution . '_staff'] == 'on'), 'admin' => (int) ($values[$i->institution . '_admin'] == 'on')); if ($values[$i->institution . '_expiry']) { $newuser->expiry = db_format_timestamp($values[$i->institution . '_expiry']); } db_begin(); delete_records('usr_institution', 'usr', $user->id, 'institution', $i->institution); insert_record('usr_institution', $newuser); if ($newuser->admin) { activity_add_admin_defaults(array($user->id)); } handle_event('updateuser', $user->id); db_commit(); $SESSION->add_ok_msg(get_string('userinstitutionupdated', 'admin', $i->displayname)); break; } else { if (isset($values[$i->institution . '_remove'])) { if ($user->id == $USER->id) { $USER->leave_institution($i->institution); } else { $user->leave_institution($i->institution); } $SESSION->add_ok_msg(get_string('userinstitutionremoved', 'admin', $i->displayname)); // Institutional admins can no longer access this page // if they remove the user from the institution, so // send them back to user search. if (!$USER->get('admin')) { if (!$USER->is_institutional_admin()) { redirect(get_config('wwwroot')); } redirect('/admin/users/search.php'); } break; } } } } if (isset($values['add']) && $USER->get('admin') && (empty($userinstitutions) || get_config('usersallowedmultipleinstitutions'))) { if ($user->id == $USER->id) { $USER->join_institution($values['addinstitution']); $USER->commit(); $userinstitutions = $USER->get('institutions'); } else { $user->join_institution($values['addinstitution']); $userinstitutions = $user->get('institutions'); } $SESSION->add_ok_msg(get_string('userinstitutionjoined', 'admin', $userinstitutions[$values['addinstitution']]->displayname)); } redirect('/admin/users/edit.php?id=' . $user->id); }