Deprecate the form model

[MAILPOET-3644]
This commit is contained in:
Pavel Dohnal
2021-09-15 14:16:42 +02:00
committed by Veljko V
parent b94b8f119a
commit 9977ed75fb
2 changed files with 16 additions and 325 deletions

View File

@@ -2,143 +2,30 @@
namespace MailPoet\Models;
use MailPoet\Settings\SettingsController;
use MailPoet\WP\Functions as WPFunctions;
/**
* @property string|array $settings
* @property string|array $body
* @property string $name
* @property string $status
* @property string|null $deletedAt
* @deprecated This model is deprecated. Use \MailPoet\Form\FormsRepository and respective Doctrine entities instead.
* This class can be removed after 2022-04-15
*/
class Form extends Model {
public static $_table = MP_FORMS_TABLE; // phpcs:ignore PSR2.Classes.PropertyDeclaration
public function getSettings() {
if (is_array($this->settings) || $this->settings === null) {
return $this->settings;
}
return WPFunctions::get()->isSerialized($this->settings) ? unserialize($this->settings) : $this->settings;
/**
* @deprecated This is here for displaying the deprecation warning for properties.
*/
public function __get($key) {
self::deprecationError('property "' . $key . '"');
return parent::__get($key);
}
public function getBody() {
if (is_array($this->body) || $this->body === null) {
return $this->body;
}
return WPFunctions::get()->isSerialized($this->body) ? unserialize($this->body) : $this->body;
/**
* @deprecated This is here for displaying the deprecation warning for static calls.
*/
public static function __callStatic($name, $arguments) {
self::deprecationError($name);
return parent::__callStatic($name, $arguments);
}
public function asArray() {
$model = parent::asArray();
$model['body'] = $this->getBody();
$model['settings'] = $this->getSettings();
return $model;
}
public function save() {
$this->set('body', (is_string($this->body) && is_serialized($this->body))
? $this->body
: serialize($this->body)
);
$this->set('settings', (is_string($this->settings) && is_serialized($this->settings))
? $this->settings
: serialize($this->settings)
);
return parent::save();
}
public function getFieldList(array $body = null) {
$body = $body ?? $this->getBody();
if (empty($body)) {
return false;
}
$skippedTypes = ['html', 'divider', 'submit'];
$nestedTypes = ['column', 'columns'];
$fields = [];
foreach ((array)$body as $field) {
if (!empty($field['type'])
&& in_array($field['type'], $nestedTypes)
&& !empty($field['body'])
) {
$nestedFields = $this->getFieldList($field['body']);
if ($nestedFields) {
$fields = array_merge($fields, $nestedFields);
}
continue;
}
if (empty($field['id'])
|| empty($field['type'])
|| in_array($field['type'], $skippedTypes)
) {
continue;
}
if ((int)$field['id'] > 0) {
$fields[] = 'cf_' . $field['id'];
} else {
$fields[] = $field['id'];
}
}
return $fields ?: false;
}
public static function search($orm, $search = '') {
return $orm->whereLike('name', '%' . $search . '%');
}
public static function groups() {
return [
[
'name' => 'all',
'label' => __('All', 'mailpoet'),
'count' => Form::getPublished()->count(),
],
[
'name' => 'trash',
'label' => __('Trash', 'mailpoet'),
'count' => Form::getTrashed()->count(),
],
];
}
public static function groupBy($orm, $group = null) {
if ($group === 'trash') {
return $orm->whereNotNull('deleted_at');
}
return $orm->whereNull('deleted_at');
}
public static function getDefaultSuccessMessage() {
$settings = SettingsController::getInstance();
if ($settings->get('signup_confirmation.enabled')) {
return __('Check your inbox or spam folder to confirm your subscription.', 'mailpoet');
}
return __('Youve been successfully subscribed to our newsletter!', 'mailpoet');
}
public static function updateSuccessMessages() {
$rightMessage = self::getDefaultSuccessMessage();
$wrongMessage = (
$rightMessage === __('Check your inbox or spam folder to confirm your subscription.', 'mailpoet')
? __('Youve been successfully subscribed to our newsletter!', 'mailpoet')
: __('Check your inbox or spam folder to confirm your subscription.', 'mailpoet')
);
$forms = self::findMany();
foreach ($forms as $form) {
$settings = $form->getSettings();
if (isset($settings['success_message']) && $settings['success_message'] === $wrongMessage) {
$settings['success_message'] = $rightMessage;
$form->set('settings', serialize($settings));
$form->save();
}
}
private static function deprecationError($methodName) {
trigger_error('Calling ' . $methodName . ' is deprecated and will be removed. Use MailPoet\Statistics\StatisticsFormsRepository and respective Doctrine entities instead.', E_USER_DEPRECATED);
}
}