/** * create a new member and let it become participant of the supplied ballot * * @param Period $period * @param mixed $ballot Ballot, true or null * @param integer $case * @param string $i */ function add_participant(Period $period, $ballot, $case, $i) { global $date, $password; Login::$member = new Member; Login::$member->invite = Login::generate_token(24); Login::$member->eligible = true; Login::$member->verified = true; Login::$member->create(); Login::$member->username = "******".$date."c".$case."p".(is_object($ballot)?$ballot->id:$ballot).$i; Login::$member->password = $password; $update_fields = array('username', 'password', 'eligible'); // Enable this only in local development environment, because it may lead to a lot if notification mails! //Login::$member->mail = ERROR_MAIL; //$update_fields[] = "mail"; Login::$member->update($update_fields, 'activated=now()'); Login::$member->update_ngroups([1]); if ($ballot) { if (is_object($ballot)) $period->select_ballot($ballot); else $period->select_postal(); } }
/** * called on log out and on pages, where being already logged in does not make sense */ public static function logout() { self::$member = false; self::$admin = false; unset($_SESSION['member'], $_SESSION['admin']); }
/** * create a member once * * @param string $username */ function create_member($username) { global $password, $ngroup; // make usernames unique $username .= " ".$ngroup->id; static $members = array(); if (isset($members[$username])) { Login::$member = $members[$username]; return; } Login::$member = new Member; Login::$member->invite = Login::generate_token(24); Login::$member->eligible = true; Login::$member->verified = true; Login::$member->create(); Login::$member->username = $username; Login::$member->password = $password; $update_fields = array('username', 'password', 'eligible'); // Enable this only in local development environment, because it will lead to extremely many notification mails! //Login::$member->mail = ERROR_MAIL; //$update_fields[] = "mail"; Login::$member->update($update_fields, 'activated=now()'); DB::insert("member_ngroup", array('member'=>Login::$member->id, 'ngroup'=>$ngroup->id)); // activate all notifications foreach ( Notification::$default_settings as $interest => $types ) { $fields_values = array('member'=>Login::$member->id, 'interest'=>$interest); foreach ( $types as $type => $value ) { $fields_values[$type] = true; } DB::insert_or_update("notify", $fields_values, array('member', 'interest')); } $members[$username] = Login::$member; }
if ($action) { switch ($action) { case "activate": action_required_parameters('username', 'password', 'password2', 'mail'); $username = trim($_POST['username']); $password = trim($_POST['password']); $password2 = trim($_POST['password2']); $mail = trim($_POST['mail']); if ( ! Login::check_username($username) ) break; if ( ! Login::check_password($password, $password2) ) break; if ( ! Login::check_mail($mail) ) break; Login::$member = $member; Login::$member->username = $username; Login::$member->password = crypt($password); if ( ! Login::$member->update(['username', 'password'], 'activated=now()') ) break; success(_("Your account has been activated.")); Login::$member->set_mail($mail); $_SESSION['member'] = Login::$member->id; redirect("settings.php"); default: warning(_("Unknown action")); redirect();