/** * Persist task state into database. * @return bool */ public function save() { if (!$this->provider) { throw new \Exception('The task has not been initialised with a provider.'); } return $this->provider->updateTask($this); }
/** * Task@save */ public function save() { $tmp_contrl = new PageController(); $tmp_contrl->restrictAccess(Auth::isAdmin() && Filter::checkCsrf()); $task_name = Filter::post('task'); $frequency = Filter::postInteger('frequency'); $is_limited = Filter::postInteger('is_limited', 0, 1); $nb_occur = Filter::postInteger('nb_occur'); $task = $this->provider->getTask($task_name, false); $success = false; if ($task) { $task->setFrequency($frequency); if ($is_limited == 1) { $task->setRemainingOccurrences($nb_occur); } else { $task->setRemainingOccurrences(0); } $res = $task->save(); if ($res) { if ($task instanceof MyArtJaub\Webtrees\Module\AdminTasks\Model\ConfigurableTaskInterface) { $res = $task->saveConfig(); if (!$res) { FlashMessages::addMessage(I18N::translate('An error occured while updating the specific settings of administrative task “%s”', $task->getTitle()), 'danger'); Log::addConfigurationLog('Module ' . $this->module->getName() . ' : AdminTask “' . $task->getName() . '” specific settings could not be updated. See error log.'); } } if ($res) { FlashMessages::addMessage(I18N::translate('The administrative task “%s” has been successfully updated', $task->getTitle()), 'success'); Log::addConfigurationLog('Module ' . $this->module->getName() . ' : AdminTask “' . $task->getName() . '” has been updated.'); $success = true; } } else { FlashMessages::addMessage(I18N::translate('An error occured while updating the administrative task “%s”', $task->getTitle()), 'danger'); Log::addConfigurationLog('Module ' . $this->module->getName() . ' : AdminTask “' . $task->getName() . '” could not be updated. See error log.'); } } $redirection_url = 'module.php?mod=' . $this->module->getName() . '&mod_action=AdminConfig'; if (!$success) { $redirection_url = 'module.php?mod=' . $this->module->getName() . '&mod_action=Task@edit&task=' . $task->getName(); } header('Location: ' . WT_BASE_URL . $redirection_url); }
/** * AdminConfig@jsonTasksList */ public function jsonTasksList() { global $WT_TREE; $controller = new JsonController(); $controller->restrictAccess(Auth::isAdmin()); // Generate an AJAX/JSON response for datatables to load a block of rows $search = Filter::postArray('search'); if ($search) { $search = $search['value']; } $start = Filter::postInteger('start'); $length = Filter::postInteger('length'); $order = Filter::postArray('order'); $order_by_name = false; foreach ($order as $key => &$value) { switch ($value['column']) { case 3: $order_by_name = true; unset($order[$key]); break; case 4: $value['column'] = 'majat_last_run'; break; case 4: $value['column'] = 'majat_last_result'; break; default: unset($order[$key]); } } $list = $this->provider->getFilteredTasksList($search, $order, $start, $length); if ($order_by_name) { usort($list, function (AbstractTask $a, AbstractTask $b) { return I18N::strcasecmp($a->getTitle(), $b->getTitle()); }); } $recordsFiltered = count($list); $recordsTotal = $this->provider->getTasksCount(); $data = array(); foreach ($list as $task) { $datum = array(); $datum[0] = ' <div class="btn-group"> <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-expanded="false"> <i class="fa fa-pencil"></i><span class="caret"></span> </button> <ul class="dropdown-menu" role="menu"> <li> <a href="#" onclick="return set_admintask_status(\'' . $task->getName() . '\', ' . ($task->isEnabled() ? 'false' : 'true') . ');"> <i class="fa fa-fw ' . ($task->isEnabled() ? 'fa-times' : 'fa-check') . '"></i> ' . ($task->isEnabled() ? I18N::translate('Disable') : I18N::translate('Enable')) . ' </a> </li> <li> <a href="module.php?mod=' . $this->module->getName() . '&mod_action=Task@edit&task=' . $task->getName() . '"> <i class="fa fa-fw fa-pencil"></i> ' . I18N::translate('Edit') . ' </a> </li> </ul> </div>'; $datum[1] = $task->getName(); $datum[2] = $task->isEnabled() ? '<i class="fa fa-check"></i><span class="sr-only">' . I18N::translate('Enabled') . '</span>' : '<i class="fa fa-times"></i><span class="sr-only">' . I18N::translate('Disabled') . '</span>'; $datum[3] = $task->getTitle(); $date_format = str_replace('%', '', I18N::dateFormat()) . ' H:i:s'; $datum[4] = $task->getLastUpdated()->format($date_format); $datum[5] = $task->isLastRunSuccess() ? '<i class="fa fa-check"></i><span class="sr-only">' . I18N::translate('Yes') . '</span>' : '<i class="fa fa-times"></i><span class="sr-only">' . I18N::translate('No') . '</span>'; $dtF = new \DateTime('@0'); $dtT = new \DateTime('@' . $task->getFrequency() * 60); $datum[6] = $dtF->diff($dtT)->format(I18N::translate('%a d %h h %i m')); $datum[7] = $task->getRemainingOccurrences() > 0 ? I18N::number($task->getRemainingOccurrences()) : I18N::translate('Unlimited'); $datum[8] = $task->isRunning() ? '<i class="fa fa-cog fa-spin fa-fw"></i><span class="sr-only">' . I18N::translate('Running') . '</span>' : '<i class="fa fa-times"></i><span class="sr-only">' . I18N::translate('Not running') . '</span>'; if ($task->isEnabled() && !$task->isRunning()) { $datum[9] = ' <button id="bt_runtask_' . $task->getName() . '" class="btn btn-primary" href="#" onclick="return run_admintask(\'' . $task->getName() . '\')"> <div id="bt_runtasktext_' . $task->getName() . '"><i class="fa fa-cog fa-fw" ></i>' . I18N::translate('Run') . '</div> </button>'; } else { $datum[9] = ''; } $data[] = $datum; } $controller->pageHeader(); $controller->encode(array('draw' => Filter::getInteger('draw'), 'recordsTotal' => $recordsTotal, 'recordsFiltered' => $recordsFiltered, 'data' => $data)); }