Add normUsername() method for users
Add username_normal field for users. For https://github.com/forkbb/forkbb/issues/1
This commit is contained in:
parent
690abfef5b
commit
341a400f3b
6 changed files with 6394 additions and 3 deletions
app
|
@ -951,6 +951,7 @@ class Install extends Admin
|
|||
'id' => ['SERIAL', false],
|
||||
'group_id' => ['INT(10) UNSIGNED', false, 0],
|
||||
'username' => ['VARCHAR(190)', false, ''],
|
||||
'username_normal' => ['VARCHAR(190)', false, ''],
|
||||
'password' => ['VARCHAR(255)', false, ''],
|
||||
'email' => ['VARCHAR(190)', false, ''],
|
||||
'email_normal' => ['VARCHAR(190)', false, ''],
|
||||
|
@ -1126,8 +1127,8 @@ class Install extends Admin
|
|||
$this->c->DB->exec('UPDATE ::groups SET g_pm=0, g_sig_length=0, g_sig_lines=0 WHERE g_id=?i', [FORK_GROUP_GUEST]);
|
||||
|
||||
$ip = \filter_var($_SERVER['REMOTE_ADDR'], \FILTER_VALIDATE_IP) ?: '0.0.0.0';
|
||||
$this->c->DB->exec('INSERT INTO ::users (group_id, username, password, signature, u_pm) VALUES (?i, ?s, ?s, \'\', ?i)', [FORK_GROUP_GUEST, __('Guest '), __('Guest '), 0]);
|
||||
$this->c->DB->exec('INSERT INTO ::users (group_id, username, password, email, email_normal, language, style, num_posts, last_post, registered, registration_ip, last_visit, signature, num_topics) VALUES (?i, ?s, ?s, ?s, ?s, ?s, ?s, 1, ?i, ?i, ?s, ?i, \'\', 1)', [FORK_GROUP_ADMIN, $v->username, password_hash($v->password, \PASSWORD_DEFAULT), $v->email, $this->c->NormEmail->normalize($v->email), $v->defaultlang, $v->defaultstyle, $now, $now, $ip, $now]);
|
||||
$this->c->DB->exec('INSERT INTO ::users (group_id, username, username_normal, password, signature, u_pm) VALUES (?i, ?s, ?s, ?s, \'\', ?i)', [FORK_GROUP_GUEST, __('Guest '), $this->c->users->normUsername(__('Guest ')), __('Guest '), 0]);
|
||||
$this->c->DB->exec('INSERT INTO ::users (group_id, username, username_normal, password, email, email_normal, language, style, num_posts, last_post, registered, registration_ip, last_visit, signature, num_topics) VALUES (?i, ?s, ?s, ?s, ?s, ?s, ?s, ?s, 1, ?i, ?i, ?s, ?i, \'\', 1)', [FORK_GROUP_ADMIN, $v->username, $this->c->users->normUsername($v->username), password_hash($v->password, \PASSWORD_DEFAULT), $v->email, $this->c->NormEmail->normalize($v->email), $v->defaultlang, $v->defaultstyle, $now, $now, $ip, $now]);
|
||||
|
||||
$pun_config = [
|
||||
'i_fork_revision' => $this->c->FORK_REVISION,
|
||||
|
|
|
@ -1627,4 +1627,47 @@ class Update extends Admin
|
|||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* rev.40 to rev.41
|
||||
*/
|
||||
protected function stageNumber40(array $args): ?int
|
||||
{
|
||||
$coreConfig = new CoreConfig($this->configFile);
|
||||
|
||||
$coreConfig->add(
|
||||
'shared=>UserManagerNormUsername',
|
||||
'\\ForkBB\\Models\\User\\NormUsername::class'
|
||||
);
|
||||
|
||||
$coreConfig->save();
|
||||
|
||||
$this->c->DB->addField('users', 'username_normal', 'VARCHAR(190)', false, '', 'username');
|
||||
|
||||
$confChange = [
|
||||
'shared' => [
|
||||
'UserManagerNormUsername' => \ForkBB\Models\User\NormUsername::class,
|
||||
],
|
||||
];
|
||||
|
||||
$this->c->config($confChange);
|
||||
|
||||
$query = 'SELECT id, username FROM ::users';
|
||||
$users = $this->c->DB->query($query)->fetchAll(PDO::FETCH_KEY_PAIR);
|
||||
|
||||
$query = 'UPDATE ::users AS u
|
||||
SET u.username_normal = ?s:norm
|
||||
WHERE u.id=?i:id';
|
||||
|
||||
foreach ($users as $id => $username) {
|
||||
$vars = [
|
||||
':id' => $id,
|
||||
':norm' => $this->c->users->normUsername($username),
|
||||
];
|
||||
|
||||
$this->c->DB->exec($query, $vars);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
6343
app/Models/User/NormUsername.php
Normal file
6343
app/Models/User/NormUsername.php
Normal file
File diff suppressed because it is too large
Load diff
|
@ -58,7 +58,7 @@ if (
|
|||
}
|
||||
$c->PUBLIC_URL = $c->BASE_URL . $forkPublicPrefix;
|
||||
|
||||
$c->FORK_REVISION = 40;
|
||||
$c->FORK_REVISION = 41;
|
||||
$c->START = $forkStart;
|
||||
$c->DIR_APP = __DIR__;
|
||||
$c->DIR_PUBLIC = \realpath(__DIR__ . '/../public');
|
||||
|
|
|
@ -109,6 +109,8 @@ return [
|
|||
|
||||
'VLemail' => \ForkBB\Models\Validators\Email::class,
|
||||
'VLhtml' => \ForkBB\Models\Validators\Html::class,
|
||||
|
||||
'UserManagerNormUsername' => \ForkBB\Models\User\NormUsername::class,
|
||||
],
|
||||
'multiple' => [
|
||||
'PrimaryController' => \ForkBB\Controllers\Install::class,
|
||||
|
|
|
@ -217,6 +217,8 @@ return [
|
|||
'PMModelSave' => \ForkBB\Models\PM\Save::class,
|
||||
'PMModelDelete' => \ForkBB\Models\PM\Delete::class,
|
||||
'PMModelUpdateUsername' => \ForkBB\Models\PM\UpdateUsername::class,
|
||||
|
||||
'UserManagerNormUsername' => \ForkBB\Models\User\NormUsername::class,
|
||||
],
|
||||
'multiple' => [
|
||||
'CtrlPrimary' => \ForkBB\Controllers\Primary::class,
|
||||
|
|
Loading…
Add table
Reference in a new issue