Очистка кеша при отложенной публикации через TicketsForm!
Приветствую сообщество!
В общем проблема следующего характера.
Требуется отложить публикацию, т.е. после сохранения формы (через фронтэнд или бэкэнд, как оказалось проблема и там и там).
Т.е. вносим поле pub_date и по идее по наступлению этой даты, ресурс автоматически публикуется.
НО! Он не публикуется, т.к. ему нужно очистить КЕШ, т.к. новый тикет не появляется! Так вот КЕШ то не очищается и получается, что все равно надо зайти в админку и очистить его, но так по идее ведь не должно работать? Иначе зачем предусмотрена возможность отложенной публикации.
Обновился на новый MODX 2.7 может в этом косяк? (вроде на другом сайте, где еще старый стоит, я так же делаю с unpub_date и все четко работает)
Люди добрые подскажите куда копать!
UPD1
Нашел такое решение, не уверен на счет надежности его использования и нагрузки, но для меня думаю подходит, если можете подскажите вариант лучше, буду благодарен!
Код плагина (решения):
В общем проблема следующего характера.
Требуется отложить публикацию, т.е. после сохранения формы (через фронтэнд или бэкэнд, как оказалось проблема и там и там).
Т.е. вносим поле pub_date и по идее по наступлению этой даты, ресурс автоматически публикуется.
НО! Он не публикуется, т.к. ему нужно очистить КЕШ, т.к. новый тикет не появляется! Так вот КЕШ то не очищается и получается, что все равно надо зайти в админку и очистить его, но так по идее ведь не должно работать? Иначе зачем предусмотрена возможность отложенной публикации.
Обновился на новый MODX 2.7 может в этом косяк? (вроде на другом сайте, где еще старый стоит, я так же делаю с unpub_date и все четко работает)
Люди добрые подскажите куда копать!
UPD1
Нашел такое решение, не уверен на счет надежности его использования и нагрузки, но для меня думаю подходит, если можете подскажите вариант лучше, буду благодарен!
Код плагина (решения):
switch ($modx->event->name) {
case 'OnDocFormSave':
if ($resource instanceof Ticket) {
$contexts = array();
$query = $modx->newQuery('modContext');
$query->select($modx->escape('key'));
if ($query->prepare() && $query->stmt->execute()) {
$contexts = $query->stmt->fetchAll(PDO::FETCH_COLUMN);
}
$modx->cacheManager->autoPublish(array_diff($contexts, array('mgr')));
}
break;
}