Move user flags from settings [MAILPOET-1677]

This commit is contained in:
Amine Ben hammou
2019-03-11 19:07:31 +01:00
committed by M. Shull
parent 6218166ca1
commit afe7aa0a54
5 changed files with 47 additions and 12 deletions

View File

@@ -53,12 +53,10 @@ class FeatureAnnouncement extends React.Component {
this.setState({ showDot: false });
MailPoet.Modal.loading(false);
window.Beamer.show();
const data = { last_announcement_seen: window.mailpoet_last_announcement_seen || {} };
const userId = window.mailpoet_current_wp_user.ID;
data.last_announcement_seen[userId] = Math.floor(Date.now() / 1000);
const data = { last_announcement_seen: Math.floor(Date.now() / 1000) };
MailPoet.Ajax.post({
api_version: window.mailpoet_api_version,
endpoint: 'settings',
endpoint: 'user_flags',
action: 'set',
data,
});

View File

@@ -2,7 +2,6 @@ import MailPoet from 'mailpoet';
import moment from 'moment';
const displayTutorial = () => {
const key = `user_seen_editor_tutorial${window.config.currentUserId}`;
if (window.config.dragDemoUrlSettings) {
return;
}
@@ -15,9 +14,9 @@ const displayTutorial = () => {
onCancel: () => {
MailPoet.Ajax.post({
api_version: window.mailpoet_api_version,
endpoint: 'settings',
endpoint: 'user_flags',
action: 'set',
data: { [key]: 1 },
data: { editor_tutorial_seen: 1 },
});
},
});

View File

@@ -20,6 +20,7 @@ use MailPoet\Services\Bridge;
use MailPoet\Settings\Hosts;
use MailPoet\Settings\Pages;
use MailPoet\Settings\SettingsController;
use MailPoet\Settings\UserFlags;
use MailPoet\Subscribers\ImportExport\ImportExportFactory;
use MailPoet\Tasks\Sending;
use MailPoet\Tasks\State;
@@ -49,6 +50,8 @@ class Menu {
private $access_control;
/** @var SettingsController */
private $settings;
/** @var UserFlags */
private $user_flags;
/** @var WPFunctions */
private $wp;
/** @var ServicesChecker */
@@ -62,7 +65,8 @@ class Menu {
SettingsController $settings,
WPFunctions $wp,
WooCommerceHelper $woocommerce_helper,
ServicesChecker $servicesChecker
ServicesChecker $servicesChecker,
UserFlags $user_flags
) {
$this->renderer = $renderer;
$this->access_control = $access_control;
@@ -70,6 +74,7 @@ class Menu {
$this->settings = $settings;
$this->woocommerce_helper = $woocommerce_helper;
$this->servicesChecker = $servicesChecker;
$this->user_flags = $user_flags;
}
function init() {
@@ -606,6 +611,7 @@ class Menu {
});
$data['segments'] = $segments;
$data['settings'] = $this->settings->getAll();
$data['user_flags'] = $this->user_flags->getAll();
$data['current_wp_user'] = WPFunctions::get()->wpGetCurrentUser()->to_array();
$data['current_wp_user_firstname'] = WPFunctions::get()->wpGetCurrentUser()->user_firstname;
$data['site_url'] = WPFunctions::get()->siteUrl();
@@ -631,9 +637,9 @@ class Menu {
$data['is_woocommerce_active'] = $this->woocommerce_helper->isWooCommerceActive();
$user_id = $data['current_wp_user']['ID'];
$data['feature_announcement_has_news'] = empty($data['settings']['last_announcement_seen'][$user_id])
|| $data['settings']['last_announcement_seen'][$user_id] < strtotime(self::LAST_ANNOUNCEMENT_DATE);
$data['last_announcement_seen'] = isset($data['settings']['last_announcement_seen']) ? $data['settings']['last_announcement_seen'] : false;
$data['feature_announcement_has_news'] = empty($data['user_flags']['last_announcement_seen'])
|| $data['user_flags']['last_announcement_seen'] < strtotime(self::LAST_ANNOUNCEMENT_DATE);
$data['last_announcement_seen'] = $data['user_flags']['last_announcement_seen'];
$data['automatic_emails'] = array(
array(
@@ -701,6 +707,7 @@ class Menu {
$data = array(
'shortcodes' => ShortcodesHelper::getShortcodes(),
'settings' => $this->settings->getAll(),
'user_flags' => $this->user_flags->getAll(),
'current_wp_user' => array_merge($subscriber_data, WPFunctions::get()->wpGetCurrentUser()->to_array()),
'sub_menu' => self::MAIN_PAGE_SLUG,
'mss_active' => Bridge::isMPSendingServiceEnabled()

View File

@@ -9,6 +9,7 @@ use MailPoet\Models\Form;
use MailPoet\Models\Segment;
use MailPoet\Models\StatisticsForms;
use MailPoet\Models\Subscriber;
use MailPoet\Models\UserFlag;
use MailPoet\Segments\WP;
use MailPoet\Settings\Pages;
use MailPoet\Settings\SettingsController;
@@ -116,6 +117,7 @@ class Populator {
$this->createDefaultSegments();
$this->createDefaultForm();
$this->createDefaultSettings();
$this->createDefaultUsersFlags();
$this->createMailPoetPage();
$this->createSourceForSubscribers();
$this->updateNewsletterCategories();
@@ -223,6 +225,35 @@ class Populator {
MailerLog::resetMailerLog();
}
private function createDefaultUsersFlags() {
$last_announcement_seen = $this->settings->fetch('last_announcement_seen');
if (!empty($last_announcement_seen)) {
foreach ($last_announcement_seen as $user_id => $value) {
UserFlag::createOrUpdate([
'user_id' => $user_id,
'name' => 'last_announcement_seen',
'value' => $value,
]);
}
$this->settings->delete('last_announcement_seen');
}
$prefix = 'user_seen_editor_tutorial';
$prefix_length = strlen($prefix);
$users_seen_editor_tutorial = Settings::whereLike('name', $prefix . '%')->findMany();
if (!empty($users_seen_editor_tutorial)) {
foreach ($users_seen_editor_tutorial as $setting) {
$user_id = substr($setting->name, $prefix_length);
UserFlag::createOrUpdate([
'user_id' => $user_id,
'name' => 'editor_tutorial_seen',
'value' => $setting->value,
]);
}
Settings::whereLike('name', $prefix . '%')->deleteMany();
}
}
private function createDefaultSegments() {
// WP Users segment
Segment::getWPSegment();

View File

@@ -1412,7 +1412,7 @@
},
dragDemoUrl: '<%= cdn_url('newsletter-editor/editor-drag-demo.20190226-1505.mp4') %>',
currentUserId: '<%= current_wp_user.wp_user_id %>',
dragDemoUrlSettings: '<%= settings["user_seen_editor_tutorial" ~ current_wp_user.wp_user_id] %>',
dragDemoUrlSettings: '<%= user_flags["editor_tutorial_seen"] %>',
installedAt: '<%= settings["installed_at"] %>',
mtaMethod: '<%= settings["mta"]["method"] %>',
displayWcProductsWidget: '<%= settings["display_wc_products_widget"] %>',