Refactor UserFlagsController
This commit is contained in:
committed by
M. Shull
parent
dd497d93c6
commit
92cf0cc7db
@ -94,7 +94,7 @@ class ContainerConfigurator implements IContainerConfigurator {
|
||||
// Settings
|
||||
$container->autowire(\MailPoet\Settings\SettingsController::class)->setPublic(true);
|
||||
// User Flags
|
||||
$container->autowire(\MailPoet\Settings\UserFlagsController::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\Settings\UserFlagsController::class)->setPublic(false);
|
||||
// Subscription
|
||||
$container->autowire(\MailPoet\Subscription\Comment::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\Subscription\Form::class)->setPublic(true);
|
||||
|
@ -9,49 +9,35 @@ class UserFlagsController {
|
||||
/**
|
||||
* @var array|null
|
||||
*/
|
||||
private static $data = null;
|
||||
private $data = null;
|
||||
|
||||
public function getDefaults() {
|
||||
return [
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
private $defaults;
|
||||
|
||||
function __construct() {
|
||||
$this->defaults = [
|
||||
'last_announcement_seen' => false,
|
||||
'editor_tutorial_seen' => false,
|
||||
];
|
||||
}
|
||||
|
||||
public function load() {
|
||||
$current_user_id = WPFunctions::get()->getCurrentUserId();
|
||||
$flags = UserFlag::where('user_id', $current_user_id)->findMany();
|
||||
self::$data = [];
|
||||
foreach ($flags as $flag) {
|
||||
self::$data[$flag->name] = $flag->value;
|
||||
}
|
||||
}
|
||||
|
||||
public function isLoaded() {
|
||||
return self::$data !== null;
|
||||
}
|
||||
|
||||
public function ensureLoaded() {
|
||||
if (!$this->isLoaded()) {
|
||||
$this->load();
|
||||
}
|
||||
}
|
||||
|
||||
public function get($name) {
|
||||
function get($name) {
|
||||
l(['defaults', $this->defaults]);
|
||||
$this->ensureLoaded();
|
||||
if (empty(self::$data[$name])) {
|
||||
$defaults = $this->getDefaults();
|
||||
return $defaults[$name];
|
||||
if (empty($this->data[$name])) {
|
||||
return $this->defaults[$name];
|
||||
}
|
||||
return self::$data[$name];
|
||||
return $this->data[$name];
|
||||
}
|
||||
|
||||
public function getAll() {
|
||||
function getAll() {
|
||||
$this->ensureLoaded();
|
||||
return array_merge($this->getDefaults(), self::$data);
|
||||
return array_merge($this->defaults, $this->data);
|
||||
}
|
||||
|
||||
public function set($name, $value) {
|
||||
function set($name, $value) {
|
||||
$current_user_id = WPFunctions::get()->getCurrentUserId();
|
||||
UserFlag::createOrUpdate([
|
||||
'user_id' => $current_user_id,
|
||||
@ -59,21 +45,36 @@ class UserFlagsController {
|
||||
'value' => $value
|
||||
]);
|
||||
if ($this->isLoaded()) {
|
||||
self::$data[$name] = $value;
|
||||
$this->data[$name] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
public function delete($name) {
|
||||
function delete($name) {
|
||||
$current_user_id = WPFunctions::get()->getCurrentUserId();
|
||||
UserFlag::where('user_id', $current_user_id)
|
||||
->where('name', $name)
|
||||
->deleteMany();
|
||||
if ($this->isLoaded()) {
|
||||
unset(self::$data[$name]);
|
||||
unset($this->data[$name]);
|
||||
}
|
||||
}
|
||||
|
||||
public static function clear() {
|
||||
self::$data = null;
|
||||
private function load() {
|
||||
$current_user_id = WPFunctions::get()->getCurrentUserId();
|
||||
$flags = UserFlag::where('user_id', $current_user_id)->findMany();
|
||||
$this->data = [];
|
||||
foreach ($flags as $flag) {
|
||||
$this->data[$flag->name] = $flag->value;
|
||||
}
|
||||
}
|
||||
|
||||
private function isLoaded() {
|
||||
return $this->data !== null;
|
||||
}
|
||||
|
||||
private function ensureLoaded() {
|
||||
if (!$this->isLoaded()) {
|
||||
$this->load();
|
||||
}
|
||||
}
|
||||
}
|
@ -6,7 +6,7 @@ use MailPoet\API\JSON\Response as APIResponse;
|
||||
use MailPoet\API\JSON\Error as APIError;
|
||||
use MailPoet\API\JSON\v1\UserFlags;
|
||||
use MailPoet\Models\UserFlag;
|
||||
use MailPoet\Settings\UserFlags as UserFlagsController;
|
||||
use MailPoet\Settings\UserFlagsController;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
class UserFlagsTest extends \MailPoetTest {
|
||||
@ -20,12 +20,10 @@ class UserFlagsTest extends \MailPoetTest {
|
||||
function _before() {
|
||||
parent::_before();
|
||||
$this->user_flags = Stub::make(new UserFlagsController, [
|
||||
'getDefaults' => function() {
|
||||
return [
|
||||
'defaults' => [
|
||||
'flag_1' => 'default_value_1',
|
||||
'flag_2' => 'default_value_2',
|
||||
];
|
||||
},
|
||||
],
|
||||
]);
|
||||
$this->user_flags->set('flag_1', 'value_1');
|
||||
$this->endpoint = new UserFlags($this->user_flags);
|
||||
@ -57,7 +55,6 @@ class UserFlagsTest extends \MailPoetTest {
|
||||
}
|
||||
|
||||
function _after() {
|
||||
UserFlagsController::clear();
|
||||
\ORM::forTable(UserFlag::$_table)->deleteMany();
|
||||
}
|
||||
}
|
||||
|
@ -3,12 +3,12 @@ namespace MailPoet\Test\Settings;
|
||||
|
||||
use Codeception\Stub;
|
||||
use MailPoet\Models\UserFlag;
|
||||
use MailPoet\Settings\UserFlags;
|
||||
use MailPoet\Settings\UserFlagsController;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
class UserFlagsTest extends \MailPoetTest {
|
||||
class UserFlagsControllerTest extends \MailPoetTest {
|
||||
|
||||
/** @var UserFlags */
|
||||
/** @var UserFlagsController */
|
||||
private $user_flags;
|
||||
|
||||
/** @var int */
|
||||
@ -26,14 +26,12 @@ class UserFlagsTest extends \MailPoetTest {
|
||||
'getCurrentUserId' => $current_user_id,
|
||||
]));
|
||||
$this->current_user_id = $current_user_id;
|
||||
$this->user_flags = Stub::make(new UserFlags(), [
|
||||
'getDefaults' => function() {
|
||||
return [
|
||||
$this->user_flags = Stub::make(new UserFlagsController(), [
|
||||
'defaults' => [
|
||||
'flag_1' => 'default_value_1',
|
||||
'flag_2' => 'default_value_2',
|
||||
'flag_3' => 'default_value_3',
|
||||
];
|
||||
}
|
||||
],
|
||||
]);
|
||||
UserFlag::createOrUpdate([
|
||||
'user_id' => $this->current_user_id,
|
||||
@ -103,7 +101,6 @@ class UserFlagsTest extends \MailPoetTest {
|
||||
}
|
||||
|
||||
function _after() {
|
||||
UserFlags::clear();
|
||||
WPFunctions::set(new WPFunctions);
|
||||
\ORM::raw_execute('TRUNCATE ' . UserFlag::$_table);
|
||||
}
|
Reference in New Issue
Block a user