Example #1
0
 public function leave_institution($institution)
 {
     parent::leave_institution($institution);
     $this->find_by_id($this->get('id'));
     $this->reset_institutions();
 }
Example #2
0
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);
}