// Set parent_id based on show_all filter if (!$filters['show_all']) { $args['parent_id'] = 0; // Only show parent events (no children) } // Apply other filters if (!empty($filters['type'])) { $args['type'] = $filters['type']; } if ($filters['severity'] >= 0) { $args['severity'] = $filters['severity']; } if (!empty($filters['date_from'])) { $args['date_from'] = $filters['date_from']; } if (!empty($filters['date_to'])) { $args['date_to'] = $filters['date_to']; } if (!empty($filters['search'])) { $args['search'] = $filters['search']; } // Get logs $logs = AbstractLogEvent::getList($args); $totalItems = AbstractLogEvent::count($args); $totalPages = $perPage > 0 ? ceil($totalItems / $perPage) : 1; TplMng::getInstance()->render( 'admin_pages/activity_log/log_list', [ 'logs' => $logs, 'filters' => $filters, 'page' => $page, 'perPage' => $perPage, 'totalItems' => $totalItems, 'totalPages' => $totalPages, 'logTypes' => LogUtils::getAllLogTypes(), 'severityLevels' => LogUtils::getSeverityLabels(), 'openLogId' => $openLogId, ] ); break; } } /** * Get severity levels * * @return array */ public function getSeverityLevels(): array { return [ AbstractLogEvent::SEVERITY_INFO => __('Info', 'duplicator'), AbstractLogEvent::SEVERITY_WARNING => __('Warning', 'duplicator'), AbstractLogEvent::SEVERITY_ERROR => __('Error', 'duplicator'), ]; } /** * Get severity CSS class * * @param int $severity Severity level * * @return string CSS class name */ public static function getSeverityClass(int $severity): string { switch ($severity) { case AbstractLogEvent::SEVERITY_ERROR: return 'dup-log-error'; case AbstractLogEvent::SEVERITY_WARNING: return 'dup-log-warning'; default: return 'dup-log-info'; } } /** * Check if current page is activity log page * * @return bool */ public static function isActivityLogPage(): bool { return ControllersManager::isCurrentPage( ControllersManager::ACTIVITY_LOG_SUBMENU_SLUG ); } }