WIP on document conversion
This commit is contained in:
@@ -1,5 +1,12 @@
|
||||
<?php
|
||||
use JetBrains\PhpStorm\NoReturn;
|
||||
|
||||
use BitBadger\Documents\Field;
|
||||
use BitBadger\Documents\SQLite\Count;
|
||||
use BitBadger\Documents\SQLite\Delete;
|
||||
use BitBadger\Documents\SQLite\Patch;
|
||||
use FeedReaderCentral\Data;
|
||||
use FeedReaderCentral\Domain\Table;
|
||||
use FeedReaderCentral\Security;
|
||||
|
||||
require __DIR__ . '/../cli-start.php';
|
||||
|
||||
@@ -58,8 +65,8 @@ switch ($argv[1]) {
|
||||
/**
|
||||
* Display the options for this utility and exit
|
||||
*/
|
||||
#[NoReturn]
|
||||
function display_help(): void {
|
||||
function display_help(): never
|
||||
{
|
||||
printfn('Options:');
|
||||
printfn(' - add-user [e-mail] [password]');
|
||||
printfn(' Adds a new user to this instance');
|
||||
@@ -83,7 +90,8 @@ function display_help(): void {
|
||||
/**
|
||||
* Add a new user
|
||||
*/
|
||||
function add_user(): void {
|
||||
function add_user(): void
|
||||
{
|
||||
global $argv;
|
||||
|
||||
$db = Data::getConnection();
|
||||
@@ -110,14 +118,16 @@ function add_user(): void {
|
||||
* @param string $email The e-mail address of the user
|
||||
* @return string The string to use when displaying results
|
||||
*/
|
||||
function display_user(string $email): string {
|
||||
function display_user(string $email): string
|
||||
{
|
||||
return $email == Security::SINGLE_USER_EMAIL ? 'single-user mode user' : "user \"$email\"";
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a user's password
|
||||
*/
|
||||
function set_password(string $email, string $password): void {
|
||||
function set_password(string $email, string $password): void
|
||||
{
|
||||
$db = Data::getConnection();
|
||||
try {
|
||||
$displayUser = display_user($email);
|
||||
@@ -144,8 +154,8 @@ function set_password(string $email, string $password): void {
|
||||
*
|
||||
* @param string $email The e-mail address of the user to be deleted
|
||||
*/
|
||||
function delete_user(string $email): void {
|
||||
|
||||
function delete_user(string $email): void
|
||||
{
|
||||
$db = Data::getConnection();
|
||||
|
||||
try {
|
||||
@@ -158,32 +168,35 @@ function delete_user(string $email): void {
|
||||
return;
|
||||
}
|
||||
|
||||
$feedCountQuery = $db->prepare('SELECT COUNT(*) FROM feed WHERE user_id = :user');
|
||||
$feedCountQuery->bindValue(':user', $user['id']);
|
||||
$feedCountResult = $feedCountQuery->execute();
|
||||
if (!$feedCountResult) {
|
||||
printfn('SQLite error: %s', $db->lastErrorMsg());
|
||||
return;
|
||||
}
|
||||
$feedCount = $feedCountResult->fetchArray(SQLITE3_NUM);
|
||||
$feedCount = Count::byField(Table::FEED, Field::EQ('user_id', $user->id));
|
||||
// $feedCountQuery = $db->prepare('SELECT COUNT(*) FROM feed WHERE user_id = :user');
|
||||
// $feedCountQuery->bindValue(':user', $user['id']);
|
||||
// $feedCountResult = $feedCountQuery->execute();
|
||||
// if (!$feedCountResult) {
|
||||
// printfn('SQLite error: %s', $db->lastErrorMsg());
|
||||
// return;
|
||||
// }
|
||||
// $feedCount = $feedCountResult->fetchArray(SQLITE3_NUM);
|
||||
|
||||
$proceed = readline("Delete the $displayUser and their $feedCount[0] feed(s)? (y/N)" . PHP_EOL);
|
||||
$proceed = readline("Delete the $displayUser and their $feedCount feed(s)? (y/N)" . PHP_EOL);
|
||||
if (!$proceed || !str_starts_with(strtolower($proceed), 'y')) {
|
||||
printfn('Deletion canceled');
|
||||
return;
|
||||
}
|
||||
|
||||
$itemDelete = $db->prepare('DELETE FROM item WHERE feed_id IN (SELECT id FROM feed WHERE user_id = :user)');
|
||||
$itemDelete->bindValue(':user', $user['id']);
|
||||
$itemDelete->bindValue(':user', $user->id);
|
||||
$itemDelete->execute();
|
||||
|
||||
$feedDelete = $db->prepare('DELETE FROM feed WHERE user_id = :user');
|
||||
$feedDelete->bindValue(':user', $user['id']);
|
||||
$feedDelete->execute();
|
||||
Delete::byField(Table::FEED, Field::EQ('user_id', $user['id']), $db);
|
||||
// $feedDelete = $db->prepare('DELETE FROM feed WHERE user_id = :user');
|
||||
// $feedDelete->bindValue(':user', $user['id']);
|
||||
// $feedDelete->execute();
|
||||
|
||||
$userDelete = $db->prepare('DELETE FROM frc_user WHERE id = :user');
|
||||
$userDelete->bindValue(':user', $user['id']);
|
||||
$userDelete->execute();
|
||||
Delete::byId(Table::USER, $user->id, $db);
|
||||
// $userDelete = $db->prepare('DELETE FROM frc_user WHERE id = :user');
|
||||
// $userDelete->bindValue(':user', $user['id']);
|
||||
// $userDelete->execute();
|
||||
|
||||
printfn('%s deleted successfully', init_cap($displayUser));
|
||||
} finally {
|
||||
@@ -194,23 +207,25 @@ function delete_user(string $email): void {
|
||||
/**
|
||||
* Change the single-user mode user to a different e-mail address and password
|
||||
*/
|
||||
function migrate_single_user(): void {
|
||||
function migrate_single_user(): void
|
||||
{
|
||||
global $argv;
|
||||
|
||||
$db = Data::getConnection();
|
||||
|
||||
try {
|
||||
$single = Security::findUserByEmail(Security::SINGLE_USER_EMAIL, $db);
|
||||
if (!$single) {
|
||||
if (!$single = Security::findUserByEmail(Security::SINGLE_USER_EMAIL, $db)) {
|
||||
printfn('There is no single-user mode user to be migrated');
|
||||
return;
|
||||
}
|
||||
|
||||
$migrateQuery = $db->prepare('UPDATE frc_user SET email = :email, password = :password WHERE id = :id');
|
||||
$migrateQuery->bindValue(':email', $argv[2]);
|
||||
$migrateQuery->bindValue(':password', password_hash($argv[3], Security::PW_ALGORITHM));
|
||||
$migrateQuery->bindValue(':id', $single['id']);
|
||||
$migrateQuery->execute();
|
||||
Patch::byId(Table::USER, $single->id,
|
||||
['email' => $argv[2], 'password' => password_hash($argv[3], Security::PW_ALGORITHM)], $db);
|
||||
// $migrateQuery = $db->prepare('UPDATE frc_user SET email = :email, password = :password WHERE id = :id');
|
||||
// $migrateQuery->bindValue(':email', $argv[2]);
|
||||
// $migrateQuery->bindValue(':password', password_hash($argv[3], Security::PW_ALGORITHM));
|
||||
// $migrateQuery->bindValue(':id', $single['id']);
|
||||
// $migrateQuery->execute();
|
||||
|
||||
printfn('The single user has been moved to "%s", with password "%s"', $argv[2], $argv[3]);
|
||||
} finally {
|
||||
|
||||
Reference in New Issue
Block a user