2024-02-19 22:53:14 +01:00
|
|
|
<?php
|
|
|
|
declare(strict_types = 1);
|
|
|
|
namespace Kimendisch\Sbgg_Jetzt;
|
|
|
|
use Flake\Csrf;
|
|
|
|
|
2024-02-20 18:25:34 +01:00
|
|
|
// HANDLE AUTHENTICATION //
|
|
|
|
require("./page/admin/auth_handler.php");
|
|
|
|
|
|
|
|
|
2024-02-19 22:53:14 +01:00
|
|
|
// DECODE REQUEST //
|
|
|
|
// get json string
|
|
|
|
$json_body = file_get_contents("php://input");
|
|
|
|
if(strlen($json_body) <= 0){
|
|
|
|
http_response_code(400);
|
|
|
|
echo("malformed request body");
|
|
|
|
die();
|
|
|
|
}
|
|
|
|
|
|
|
|
// try decoding json
|
|
|
|
$request = json_decode($json_body, true);
|
|
|
|
if(json_last_error() != JSON_ERROR_NONE){
|
|
|
|
http_response_code(400);
|
|
|
|
echo("malformed request body");
|
|
|
|
die();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// VALIDATE VALUES //
|
|
|
|
// csrf token
|
|
|
|
Csrf::check(token: $request["csrf_token"] ?? "");
|
|
|
|
|
|
|
|
// content name
|
|
|
|
$content_name = $request["content_name"] ?? "";
|
|
|
|
if(!is_string($content_name)){
|
|
|
|
http_response_code(400);
|
|
|
|
echo("invalid content name");
|
|
|
|
die();
|
|
|
|
}
|
|
|
|
if(!preg_match("/^\d{4}-\d{2}-\d{2}(-[a-z0-9]+)+$/", $content_name)){
|
|
|
|
http_response_code(400);
|
|
|
|
echo("invalid content name");
|
|
|
|
die();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// TRY SENDING //
|
|
|
|
// make sure session isn't locked
|
|
|
|
if(extension_loaded("session")) session_write_close();
|
|
|
|
|
2024-02-20 18:22:13 +01:00
|
|
|
// add jobs to queue
|
|
|
|
Newsletter::send_all(content_name: $content_name);
|
2024-02-19 22:53:14 +01:00
|
|
|
|
2024-02-20 18:22:13 +01:00
|
|
|
// positive response
|
2024-02-19 22:53:14 +01:00
|
|
|
http_response_code(200);
|
|
|
|
echo(json_encode([
|
|
|
|
"success" => true
|
|
|
|
]));
|
2024-02-20 18:22:13 +01:00
|
|
|
|
|
|
|
|
|
|
|
// EXECUTE WORK //
|
|
|
|
// close connection
|
|
|
|
Newsletter::api_helper_http_close_connection();
|
|
|
|
|
|
|
|
// execute queued work
|
|
|
|
Newsletter::queue_work();
|
2024-02-19 22:53:14 +01:00
|
|
|
?>
|