query($sql) as $row) { $first_name = $row["first_name"]; $last_name = $row["last_name"]; $username = $row["username"]; $email = $row["email"]; $state = $row["state"]; try { switch ($state) { case RegisterState::PendingEmailSend: $verify_url = $webroot . "/verify.php?t=" . $row["verify_token"]; $success = send_mail_pending_verification( $homeserver, $row["first_name"] . " " . $row["last_name"], $row["email"], $verify_url); if ($success) { $mx_db->setRegistrationStateById(RegisterState::PendingEmailVerify, $row["id"]); } else { throw new Exception("Could not send mail to ".$row["first_name"]." ".$row["last_name"]."(".$row["id"].")"); } break; case RegisterState::PendingAdminSend: require_once("MatrixConnection.php"); $adminUrl = $webroot . "/verify_admin.php?t=" . $row["admin_token"]; $mxConn = new MatrixConnection($homeserver, $access_token); $mxMsg = new MatrixMessage(); $mxMsg->set_body($first_name . ' ' . $last_name . " möchte sich registrieren und hat folgende Notiz hinterlassen:\r\n" . $row["note"] . "\r\n" . "Zum Bearbeiten hier klicken:\r\n" . $adminUrl); $mxMsg->set_formatted_body($first_name . ' ' . $last_name . " möchte sich registrieren und hat folgende Notiz hinterlassen:
" . $row["note"] . "
" . "Zum Bearbeiten hier klicken"); $mxMsg->set_type("m.text"); $response = $mxConn->send($register_room, $mxMsg); if ($response) { $mx_db->setRegistrationStateById(RegisterState::PendingAdminVerify, $row["id"]); send_mail_pending_approval($homeserver, $first_name . " " . $last_name, $email); } else { throw new Exception("Could not send notification for ".$row["first_name"]." ".$row["last_name"]."(".$row["id"].") to admins."); } break; case RegisterState::PendingRegistration: // Registration got accepted but registration failed $password = $mx_db->addUser($row["first_name"], $row["last_name"], $row["username"], $row["email"]); if ($password != NULL) { // send registration_success $res = send_mail_registration_success($homeserver, $first_name . " " . $last_name, $email, $username, $password, $howToURL); if ($res) { $mx_db->setRegistrationStateById(RegisterState::AllDone, $row["id"]); } else { $mx_db->setRegistrationStateById(RegisterState::PendingSendRegistrationMail, $row["id"]); } } else { send_mail_registration_allowed_but_failed($homeserver, $first_name . " " . $last_name, $email); $mxMsg = new MatrixMessage(); $mxMsg->set_type("m.text"); $mxMsg->set_body("Fehler beim Registrieren von " . $first_name . " " . $last_name . "."); $mxConn->send($register_room, $mxMsg); throw new Exception($language["REGISTRATION_FAILED"]); } break; case RegisterState::PendingSendRegistrationMail: print ("Error: Unhandled state: PendingSendRegistrationMail for " . $first_name . " " . $last_name . " (" . $username . ")\n"); break; case RegisterState::RegistrationDeclined: case RegisterState::AllDone: // do reqular cleanup break; } } catch (Exception $e) { print("Error while handling cron for " . $first_name . " " . $last_name . " (" . $username . ")\n"); print($e->getMessage()); } } ?>