Подправить сниппет 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
05 декабря 2020, 02:07
modx.pro
346
0

Комментарии в этом разделе отключены, так что вы должны указать свои контакты прямо в объявлении, или активировать отправку сообщений из профиля.

Обратите внимание, что modx.pro не несёт никакой ответственности за выполнение работы или оплату заказа. Это просто доска объявлений, дальше вы общаетесь за пределами нашей площадки.