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