This repository has been archived on 2024-09-05. You can view files and clone it, but cannot push or open issues or pull requests.
shimmie2/ext/user/events.php

88 lines
1.7 KiB
PHP
Raw Normal View History

2021-12-14 18:32:47 +00:00
<?php
declare(strict_types=1);
namespace Shimmie2;
2023-07-03 15:03:34 +00:00
use MicroHTML\HTMLElement;
/**
* @extends PartListBuildingEvent<array{name: string|HTMLElement, link: string}>
*/
class UserBlockBuildingEvent extends PartListBuildingEvent
{
2023-11-11 21:49:12 +00:00
public function add_link(string|HTMLElement $name, string $link, int $position = 50): void
{
$this->add_part(["name" => $name, "link" => $link], $position);
}
}
/**
* @extends PartListBuildingEvent<HTMLElement>
*/
class UserOperationsBuildingEvent extends PartListBuildingEvent
{
public function __construct(
public User $user,
public Config $user_config,
) {
parent::__construct();
}
}
/**
* @extends PartListBuildingEvent<string>
*/
class UserPageBuildingEvent extends PartListBuildingEvent
{
public function __construct(
public User $display_user,
) {
2020-01-26 13:19:35 +00:00
parent::__construct();
}
}
class UserCreationEvent extends Event
{
private ?User $user;
2023-02-24 21:08:05 +00:00
public function __construct(
public string $username,
public string $password,
public string $password2,
public string $email,
public bool $login
) {
2020-01-26 13:19:35 +00:00
parent::__construct();
}
public function set_user(User $user): void
{
$this->user = $user;
}
public function get_user(): User
{
if (is_null($this->user)) {
throw new \Exception("User not created");
}
return $this->user;
}
}
class UserLoginEvent extends Event
{
2023-02-24 21:08:05 +00:00
public function __construct(public User $user)
{
2020-01-26 13:19:35 +00:00
parent::__construct();
}
}
class UserDeletionEvent extends Event
{
2023-02-24 21:08:05 +00:00
public function __construct(public int $id)
{
2020-01-26 13:19:35 +00:00
parent::__construct();
}
}