Create tags when do not exist

[MAILPOET-4557]
This commit is contained in:
Jan Lysý
2022-09-08 12:52:08 +02:00
committed by Aschepikov
parent 7644ce9833
commit 7e6f708df8
2 changed files with 46 additions and 0 deletions

View File

@@ -20,6 +20,7 @@ use MailPoet\Form\PreviewPage;
use MailPoet\Form\Templates\TemplateRepository;
use MailPoet\Listing;
use MailPoet\Settings\UserFlagsController;
use MailPoet\Tags\TagRepository;
use MailPoet\UnexpectedValueException;
use MailPoet\WP\Emoji;
use MailPoet\WP\Functions as WPFunctions;
@@ -56,6 +57,9 @@ class Forms extends APIEndpoint {
/** @var ApiDataSanitizer */
private $dataSanitizer;
/** @var TagRepository */
private $tagRepository;
/** @var FormSaveController */
private $formSaveController;
@@ -69,6 +73,7 @@ class Forms extends APIEndpoint {
WPFunctions $wp,
Emoji $emoji,
ApiDataSanitizer $dataSanitizer,
TagRepository $tagRepository,
FormSaveController $formSaveController
) {
$this->listingHandler = $listingHandler;
@@ -80,6 +85,7 @@ class Forms extends APIEndpoint {
$this->formsResponseBuilder = $formsResponseBuilder;
$this->emoji = $emoji;
$this->dataSanitizer = $dataSanitizer;
$this->tagRepository = $tagRepository;
$this->formSaveController = $formSaveController;
}
@@ -201,6 +207,11 @@ class Forms extends APIEndpoint {
$settings['segments_selected_by'] = 'admin';
}
// check tags and create them if they don't exist
if (isset($settings['tags'])) {
$this->createTagsIfDoNotExist($settings['tags']);
}
// Check Custom HTML block permissions
$customHtmlBlocks = $formEntity->getBlocksByTypes([FormEntity::HTML_BLOCK_TYPE]);
if (count($customHtmlBlocks) && !$this->wp->currentUserCan('administrator')) {
@@ -338,4 +349,10 @@ class Forms extends APIEndpoint {
$form = $formTemplate->toFormEntity();
return $form->toArray();
}
private function createTagsIfDoNotExist(array $tagNames): void {
foreach ($tagNames as $tagName) {
$this->tagRepository->createOrUpdate(['name' => $tagName]);
}
}
}