diff --git a/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php b/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php index 2acec673..99504135 100644 --- a/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php +++ b/src/packages/plg_system_mokowaas/Field/DemoTaskInfoField.php @@ -66,10 +66,52 @@ class DemoTaskInfoField extends FormField // Parse schedule from execution_rules $rules = json_decode($task['execution_rules'] ?? '{}', true); - $schedule = $rules['cron-expression'] ?? 'Not set'; + $ruleType = $rules['rule-type'] ?? ''; - // Friendly schedule labels - $friendlySchedule = $this->friendlySchedule($schedule); + switch ($ruleType) + { + case 'cron-expression': + $schedule = $rules['cron-expression'] ?? ''; + $friendlySchedule = $this->friendlySchedule($schedule); + break; + + case 'interval-minutes': + $mins = (int) ($rules['interval-minutes'] ?? 0); + + if ($mins >= 1440 && $mins % 1440 === 0) + { + $days = $mins / 1440; + $schedule = 'Every ' . $days . ' day' . ($days > 1 ? 's' : ''); + } + elseif ($mins >= 60 && $mins % 60 === 0) + { + $hours = $mins / 60; + $schedule = 'Every ' . $hours . ' hour' . ($hours > 1 ? 's' : ''); + } + else + { + $schedule = 'Every ' . $mins . ' minute' . ($mins !== 1 ? 's' : ''); + } + + $friendlySchedule = $schedule; + break; + + case 'interval-hours': + $hours = (int) ($rules['interval-hours'] ?? 0); + $schedule = 'Every ' . $hours . ' hour' . ($hours !== 1 ? 's' : ''); + $friendlySchedule = $schedule; + break; + + case 'interval-days': + $days = (int) ($rules['interval-days'] ?? 0); + $schedule = 'Every ' . $days . ' day' . ($days !== 1 ? 's' : ''); + $friendlySchedule = $schedule; + break; + + default: + $schedule = $ruleType ?: 'Not set'; + $friendlySchedule = 'Custom'; + } // Next execution $nextExec = $task['next_execution'] ?? ''; @@ -135,14 +177,26 @@ class DemoTaskInfoField extends FormField // Link to edit the task $editLink = Route::_('index.php?option=com_scheduler&task=task.edit&id=' . $taskId); + // Task params + $taskParams = json_decode($task['params'] ?? '{}', true) ?: []; + $bannerOn = !empty($taskParams['banner_enabled']) && (int) $taskParams['banner_enabled'] === 1; + $mediaOn = !empty($taskParams['include_media']) && (int) $taskParams['include_media'] === 1; + $countdownOn = !empty($taskParams['show_countdown']) && (int) $taskParams['show_countdown'] === 1; + + // Check if snapshot exists + $snapshotExists = is_dir(JPATH_ROOT . '/mokowaas-snapshots/default'); + // Build info card return '
' - . '' - . '' - . '' + . '
Status' . $stateBadge . '
Schedule' . htmlspecialchars($schedule) . ' (' . htmlspecialchars($friendlySchedule) . ')
' + . '' + . '' . '' . '' . '' + . '' + . '' + . '' . '
Status' . $stateBadge . '
Schedule' . htmlspecialchars($friendlySchedule) . '
Next Reset' . htmlspecialchars($nextFormatted) . ' ' . $nextBadge . '
Last Reset' . htmlspecialchars($lastFormatted) . '
Runs' . (int) ($task['times_executed'] ?? 0) . ' executed, ' . (int) ($task['times_failed'] ?? 0) . ' failed
Baseline' . ($snapshotExists ? 'Saved' : 'Not taken yet') . '
Banner' . ($bannerOn ? 'On' : 'Off') . ($countdownOn ? ' + countdown' : '') . '
Images' . ($mediaOn ? 'Included' : 'Excluded') . '
' . '' . ' Manage Scheduled Task'