| @@ -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 | { |