1
0
mirror of https://github.com/chylex/Lightning-Tracker.git synced 2025-06-02 13:34:10 +02:00

Minor fixes (code formatting, unused elements, future TODOs)

This commit is contained in:
chylex 2020-08-06 14:57:49 +02:00
parent ab75ece64c
commit ae25051aa8
28 changed files with 74 additions and 61 deletions

View File

@ -6,8 +6,8 @@ CREATE TABLE `user_logins` (
UNIQUE KEY (`token`),
FOREIGN KEY (`id`)
REFERENCES `users` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE
ON DELETE CASCADE
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE utf8mb4_general_ci

View File

@ -1,4 +1,4 @@
CREATE TABLE IF NOT EXISTS `users` (
CREATE TABLE `users` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(32) NOT NULL,
`email` VARCHAR(255) NOT NULL,

View File

@ -15,6 +15,7 @@ abstract class AbstractTable{
/**
* Fetches the next result.
*
* @param PDOStatement $stmt
* @return mixed
*/
@ -24,6 +25,7 @@ abstract class AbstractTable{
/**
* Fetches the next result.
*
* @param PDOStatement $stmt
* @return mixed
*/
@ -33,6 +35,7 @@ abstract class AbstractTable{
/**
* Fetches one result and closes the cursor.
*
* @param PDOStatement $stmt
* @return mixed
*/
@ -44,6 +47,7 @@ abstract class AbstractTable{
/**
* Fetches one result and closes the cursor.
*
* @param PDOStatement $stmt
* @return mixed
*/

View File

@ -18,10 +18,6 @@ final class RoleInfo{
return $this->id;
}
public function getTitle(): string{
return $this->title;
}
public function getTitleSafe(): string{
return protect($this->title);
}

View File

@ -10,14 +10,14 @@ final class UserInfo{
private string $name;
private string $email;
private ?string $role_title;
private string $registration_date;
private string $date_registered;
public function __construct(int $id, string $name, string $email, ?string $role_title, string $registration_date){
public function __construct(int $id, string $name, string $email, ?string $role_title, string $date_registered){
$this->id = $id;
$this->name = $name;
$this->email = $email;
$this->role_title = $role_title;
$this->registration_date = $registration_date;
$this->date_registered = $date_registered;
}
public function getId(): int{
@ -37,7 +37,7 @@ final class UserInfo{
}
public function getRegistrationDate(): string{
return $this->registration_date;
return $this->date_registered;
}
}

View File

@ -3,11 +3,10 @@ declare(strict_types = 1);
namespace Database\Tables;
use Database\Tables\Traits\PermTable;
use Database\AbstractTable;
use Database\DB;
use Database\Objects\RoleInfo;
use Database\Objects\UserProfile;
use Database\Tables\Traits\PermTable;
use PDO;
use PDOException;

View File

@ -87,9 +87,9 @@ SQL;
}
public function removeUserId(int $user_id){
$stmt = $this->db->prepare('DELETE FROM tracker_members WHERE tracker_id = ? AND user_id = ?');
$stmt->bindValue(1, $this->getTrackerId(), PDO::PARAM_INT);
$stmt->bindValue(2, $user_id, PDO::PARAM_INT);
$stmt = $this->db->prepare('DELETE FROM tracker_members WHERE user_id = ? AND tracker_id = ?');
$stmt->bindValue(1, $user_id, PDO::PARAM_INT);
$stmt->bindValue(2, $this->getTrackerId(), PDO::PARAM_INT);
$stmt->execute();
}
}

View File

@ -3,11 +3,11 @@ declare(strict_types = 1);
namespace Database\Tables;
use Database\Tables\Traits\PermTable;
use Database\AbstractTrackerTable;
use Database\Objects\RoleInfo;
use Database\Objects\TrackerInfo;
use Database\Objects\UserProfile;
use Database\Tables\Traits\PermTable;
use PDO;
use PDOException;

View File

@ -69,7 +69,7 @@ final class TrackerTable extends AbstractTable{
$stmt->execute();
}
public function countTrackers(TrackerFilter $filter = null): ?int{
public function countTrackers(?TrackerFilter $filter = null): ?int{
$filter ??= TrackerFilter::empty();
$stmt = $this->db->prepare('SELECT COUNT(*) FROM trackers '.$filter->generateClauses(true));
@ -84,7 +84,7 @@ final class TrackerTable extends AbstractTable{
* @param TrackerFilter|null $filter
* @return TrackerInfo[]
*/
public function listTrackers(TrackerFilter $filter = null): array{
public function listTrackers(?TrackerFilter $filter = null): array{
$filter ??= TrackerFilter::empty();
$stmt = $this->db->prepare('SELECT id, name, url, owner_id FROM trackers '.$filter->generateClauses());

View File

@ -41,7 +41,7 @@ final class UserTable extends AbstractTable{
$stmt->execute();
}
public function countUsers(UserFilter $filter = null): ?int{
public function countUsers(?UserFilter $filter = null): ?int{
$filter ??= UserFilter::empty();
$stmt = $this->db->prepare('SELECT COUNT(*) FROM users '.$filter->generateClauses(true));
@ -56,7 +56,7 @@ final class UserTable extends AbstractTable{
* @param UserFilter|null $filter
* @return UserInfo[]
*/
public function listUsers(UserFilter $filter = null): array{
public function listUsers(?UserFilter $filter = null): array{
$filter ??= UserFilter::empty();
$sql = <<<SQL

View File

@ -75,7 +75,7 @@ HTML;
echo '<option value="'.$option[0].'"'.$class.$selected.'>'.$option[1].'</option>';
}
echo <<<HTML
echo <<<HTML
</select>
HTML;

View File

@ -136,6 +136,7 @@ HTML;
/**
* Fills form fields using the provided data.
*
* @param array $data
*/
public function fill(array $data){
@ -154,6 +155,7 @@ HTML;
/**
* Refills form fields using the provided data, given that the form ID matches.
*
* @param array $data
* @return string|bool Truthy if all fields were present, indicating that the form is ready for validation. The truthy value is the submit button value if present, or true if no button had a set value.
*/
@ -194,6 +196,7 @@ HTML;
/**
* Reloads the form, saving data and form messages in a session.
*
* @param array $data
* @return ReloadFormAction
*/

View File

@ -8,6 +8,7 @@ use Pages\Components\Navigation\NavigationComponent;
interface IModel{
/**
* Loads data into the model.
*
* @return $this
*/
public function load(): IModel;

View File

@ -179,9 +179,17 @@ class UsersModel extends BasicRootPageModel{
return false;
}
try{
$users = new UserTable(DB::get());
$users->deleteById((int)$data['User']);
return true;
}catch(PDOException $e){
if ($e->getCode() === SQL::CONSTRAINT_VIOLATION){
// TODO show message with reason which foreign key checks failed, i.e. cannot delete tracker owner
}
throw $e;
}
}
}

View File

@ -45,10 +45,10 @@ class MembersModel extends BasicTrackerPageModel{
$this->table = new TableComponent();
$this->table->ifEmpty('No members found.');
$this->table->addColumn('Username');
$this->table->addColumn('Username')->bold();
$this->table->addColumn('Role');
if ($this->perms->checkTracker($tracker, self::PERM_MANAGE)){
if ($perms->checkTracker($tracker, self::PERM_MANAGE)){
$this->table->addColumn('Actions')->right()->tight();
$roles = (new TrackerPermTable(DB::get(), $tracker))->listRoles();

View File

@ -67,6 +67,8 @@ foreach(['&/', 'tracker/:tracker/&/'] as $base){
$router->add($base.'account/security', 'Mixed/AccountSecurityController');
}
// TODO CSRF
function handle_error(int $code, string $title, string $message, ?Request $req = null): void{
http_response_code($code);
$page_model = new BasicRootPageModel($req ?? new Request('', '', []));