Подправить сниппет subscribeAuthor

2 1 000
В своё время @tolanych написал по моей просьбе такой сниппет для подписки на авторов:

<?php
/** @var array $scriptProperties */
/** @var Tickets $Tickets */
$Tickets = $modx->getService('tickets', 'Tickets', $modx->getOption('tickets.core_path', null,
        $modx->getOption('core_path') . 'components/tickets/') . 'model/tickets/', $scriptProperties);

if (!$Tickets->authenticated || empty($scriptProperties['createdby'])) {
    return '';
}

if (!empty($scriptProperties['TicketsInit'])) {
    $Tickets->initialize($modx->context->key, $scriptProperties);
}

if ($profile = $modx->getObject('TicketAuthor', array('id' => $scriptProperties['createdby']))) {
    $properties = $profile->get('properties');
    if (!empty($properties['subscribers'])) {
        $found = array_search($modx->user->id, $properties['subscribers']);
        $subscribed = ($found == false) ? 0:1;
    }
}

$tpl = $modx->getOption('tpl', $scriptProperties, 'tpl.Tickets.author.subscribe');
$data = [
    'author_id' => $scriptProperties['createdby'],
    'subscribed' => $subscribed
];
$output = $Tickets->getChunk($tpl, $data);

// Return output
if (!empty($toPlaceholder)) {
    $modx->setPlaceholder($toPlaceholder, $output);
} else {
    return $output;
}
Как в старой сказке — до обновления MODx всё было хорошо. Почти. Ругался в лог, но работало.
Теперь выдаёт такую ошибку:
Undefined variable: subscribed in www/core/cache/includes/elements/modsnippet/142.include.cache.php

Я так понимаю, из-за того, что в сниппете он не объявил $subscribed, если здесь не выполнен IF:
if (!empty($properties['subscribers'])) {
        $found = array_search($modx->user->id, $properties['subscribers']);
        $subscribed = ($found == false) ? 0:1;
    }
Кто сможет помочь, пишите через форму. Бюджет обсуждается.
Заранее благодарен.
Wassi Wassinen
Wassi Wassinen
05 декабря 2020, 02:07
modx.pro
808