PluginProbe
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress / 11.1.0
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress v11.1.0
11.1.1 11.1.0 11.0.5 11.0.4 11.0.3 11.0.2 11.0.1 11.0.0 10.11.1 10.11.0 10.10.2 10.10.1 10.10.0 10.9.1 trunk 10.0.0 10.0.1 10.1.0 10.1.1 10.1.2 10.1.3 10.1.4 10.2.0 10.2.1 10.2.2 All 62 releases
← All changes | back/Classes/MailClass.php +40 -8 11.0.3 → 11.1.0 View file →
@@ -533,13 +533,8 @@
533 533
534 534 $this->deleteMediaFolder($elements);
535 535 acym_arrayToInteger($elements);
536 536
537 - $favoriteTemplate = (int)$this->config->get('favorite_template', 0);
538 - if (in_array($favoriteTemplate, $elements)) {
539 - $this->config->saveConfig(['favorite_template' => 0]);
540 - }
541 -
542 537 $allThumbnailToDelete = acym_loadResultArray('SELECT DISTINCT thumbnail FROM #__acym_mail WHERE id IN ('.implode(',', $elements).')');
543 538
544 539 $translations = acym_loadResultArray('SELECT id FROM #__acym_mail WHERE parent_id IN ('.implode(',', $elements).')');
545 540 $elements = array_merge($elements, $translations);
@@ -546,8 +541,13 @@
546 541 if (!empty($translations)) {
547 542 acym_query('UPDATE #__acym_mail SET `parent_id` = null WHERE `id` IN ('.implode(',', $translations).')');
548 543 }
549 544
545 + $favoriteTemplate = (int)$this->config->get('favorite_template', 0);
546 + if (in_array($favoriteTemplate, $elements)) {
547 + $this->config->saveConfig(['favorite_template' => 0]);
548 + }
549 +
550 550 acym_query('UPDATE #__acym_list SET welcome_id = null WHERE welcome_id IN ('.implode(',', $elements).')');
551 551 acym_query('UPDATE #__acym_list SET unsubscribe_id = null WHERE unsubscribe_id IN ('.implode(',', $elements).')');
552 552 acym_query('DELETE FROM #__acym_queue WHERE mail_id IN ('.implode(',', $elements).')');
553 553 acym_query('DELETE FROM #__acym_mail_has_list WHERE mail_id IN ('.implode(',', $elements).')');
@@ -564,8 +564,25 @@
564 564
565 565 return $return;
566 566 }
567 567
568 + public function getFavoriteTemplateId(): int
569 + {
570 + $favoriteTemplate = (int)$this->config->get('favorite_template', 0);
571 + if (empty($favoriteTemplate)) {
572 + return 0;
573 + }
574 +
575 + $exists = acym_loadResult('SELECT `id` FROM #__acym_mail WHERE `id` = '.intval($favoriteTemplate));
576 + if (empty($exists)) {
577 + $this->config->saveConfig(['favorite_template' => 0]);
578 +
579 + return 0;
580 + }
581 +
582 + return $favoriteTemplate;
583 + }
584 +
568 585 public function deleteMediaFolder(array $elements): void
569 586 {
570 587 if (empty($elements)) {
571 588 return;
@@ -767,9 +784,9 @@
767 784 $allowedFileType = false;
768 785 }
769 786
770 787 if (!$allowedFileType) {
771 - acym_enqueueMessage(acym_translationSprintf('ACYM_ACCEPTED_TYPE', $extension, 'zip'), 'error');
788 + acym_enqueueMessage(acym_translationSprintf('ACYM_ACCEPTED_TYPE', esc_html($extension), 'zip'), 'error');
772 789
773 790 return null;
774 791 }
775 792
@@ -1543,9 +1560,9 @@
1543 1560 if (empty($userId)) {
1544 1561 return false;
1545 1562 }
1546 1563
1547 - $mail = acym_loadObject('SELECT `creator_id`, `type` FROM #__acym_mail WHERE id = '.intval($mailId));
1564 + $mail = acym_loadObject('SELECT `creator_id`, `type`, `access` FROM #__acym_mail WHERE id = '.intval($mailId));
1548 1565 if (empty($mail)) {
1549 1566 return false;
1550 1567 }
1551 1568
@@ -1556,9 +1573,24 @@
1556 1573 if ($mail->creator_id == $userId) {
1557 1574 return true;
1558 1575 }
1559 1576
1560 - return !$write && $mail->type === self::TYPE_TEMPLATE;
1577 + return !$write && $mail->type === self::TYPE_TEMPLATE && $this->isAccessAllowedForUser($mail->access, $userId);
1578 + }
1579 +
1580 + private function isAccessAllowedForUser(?string $access, int $userId): bool
1581 + {
1582 + if (empty($access)) {
1583 + return false;
1584 + }
1585 +
1586 + foreach (acym_getGroupsByUser($userId) as $userGroup) {
1587 + if (strpos($access, ','.$userGroup.',') !== false) {
1588 + return true;
1589 + }
1590 + }
1591 +
1592 + return false;
1561 1593 }
1562 1594
1563 1595 private function isTypeAllowed(?string $type): bool
1564 1596 {