Files
2025-03-12 17:06:23 +01:00

182 lines
5.1 KiB
PHP

<?php
class stTaskScheluderBackendActions extends autoStTaskScheluderBackendActions
{
public function preExecute()
{
$config = stConfig::getInstance('stTaskScheluderBackend');
$error = $config->get('cron_error_message');
if ($error)
{
$i18n = $this->getContext()->getI18N();
$this->setFlash('warning', $i18n->__($error['message'], $error['params']), false);
}
}
public function executeList()
{
if ($this->checkPHPVersion())
{
stTaskScheluder::initialize();
}
$ret = parent::executeList();
$this->pager->setPeerCountMethod(array($this, 'doCountTasks'));
$this->pager->init();
if (SF_ENVIRONMENT != 'dev')
{
$this->hideField('task_id');
}
return $ret;
}
public function executeConfig()
{
$this->checkPHPVersion();
return parent::executeConfig();
}
public function executeClean()
{
if (Propel::getConnection()->executeQuery(sprintf('TRUNCATE TABLE %s', TaskLogPeer::TABLE_NAME)))
{
$i18n = $this->getContext()->getI18N();
$this->setFlash('notice', $i18n->__('Logi zostały wyczyszczone pomyślnie'));
}
return $this->redirect($this->getRequest()->getReferer());
}
public function executeEdit()
{
parent::executeEdit();
if ($this->task->getIsSystemDefault())
{
$i18n = $this->getContext()->getI18N();
$this->setFlash('warning', $i18n->__('Zadania systemowe nie mogą być zmieniane'));
return $this->redirect('@stTaskScheluderBackend');
}
}
protected function addSortCriteria($c)
{
parent::addSortCriteria($c);
$c->addAscendingOrderByColumn(TaskPeer::TASK_PRIORITY);
}
protected function addLogFiltersCriteria($c)
{
/**
* @var Criteria $c
*/
if ($this->getRequestParameter('id'))
{
$c->add(TaskLogPeer::TASK_ID, $this->getRequestParameter('id'));
}
if (isset($this->filters['type']) && "" !== $this->filters['type'])
{
$c->add(TaskLogPeer::TYPE, $this->filters['type']);
}
$c->addDescendingOrderByColumn(TaskLogPeer::ID);
parent::addLogFiltersCriteria($c);
}
public function executeExecuteTasks()
{
if (floatval(phpversion()) < 7.1)
{
return $this->redirect('@stTaskScheluderBackend');
}
$taskPool = array();
$totalCount = 0;
$i18n = $this->getContext()->getI18N();
$progressBarTask = new stTaskScheluderProgressBar($this->getContext());
$progressBarTask->clearParameters();
$taskId = $this->getRequestParameter('task_id');
$tasks = null !== $taskId ? [stTaskScheluder::getTask($taskId)] : stTaskScheluder::getTasks();
foreach ($tasks as $task)
{
if ($task->isReadyToExecute(false))
{
if (false === $task->doInitialize(true))
{
continue;
}
$count = $task->doCount();
if ($count > 0)
{
$taskPool[] = ['id' => $task->getId(), 'offset' => $totalCount];
$totalCount += $count;
}
elseif (null !== $taskId)
{
$this->setFlash('notice', $i18n->__('Zadanie <b>%%task%%</b> nie wymagało wykonania.', [
'%%task%%' => $task->getName(),
]));
return $this->redirect('@stTaskScheluderBackend');
}
}
elseif (null !== $taskId)
{
$this->setFlash('warning', $i18n->__('Zadanie <b>%%task%%</b> jest już w trakcie wykonywania.', [
'%%task%%' => $task->getName(),
]));
return $this->redirect('@stTaskScheluderBackend');
}
}
if (!$totalCount)
{
$this->setFlash('notice', $i18n->__('Zadania nie wymagają wykonania.'));
return $this->redirect('@stTaskScheluderBackend');
}
$taskPool = array_reverse($taskPool);
$progressBarTask->setParameter('task_pool', $taskPool);
$progressBarTask->setParameter('count', $totalCount);
$this->getBreadcrumbsBuilder()->getDefaultBreadcrumbs()->add($i18n->__('Wykonaj ręcznie'));
$this->progress_bar_task = $progressBarTask;
}
public function doCountTasks(Criteria $c)
{
return floatval(phpversion()) < 7.1 ? 0 : TaskPeer::doCount($c);
}
protected function checkPHPVersion()
{
if (floatval(phpversion()) < 7.1)
{
$i18n = $this->getContext()->getI18N();
$this->setFlash('warning', $i18n->__('Do poprawnego działania moduł wymaga wersji PHP 7.1.x (aktualnie ustawiona wersja PHP: %version%)', array('%version%' => phpversion())), false);
return false;
}
return true;
}
}