cleanLiveActivities(); } public function initDailyTasks() { $this->cleanActivityLogs(); } protected function cleanLiveActivities() { // Delete All Live Activity older than 24 hours $oldDateTime = date('Y-m-d H:i:s', strtotime(current_time('mysql')) - 86400); Meta::where('key', '_live_activity') ->where('object_type', 'ticket_meta') ->where('updated_at', '<', $oldDateTime) ->delete(); } protected function cleanActivityLogs() { $settings = Helper::getOption('_activity_settings', []); if (!$settings && empty($settings['delete_days'])) { $settings['delete_days'] = 14; } $oldDateTime = date('Y-m-d H:i:s', strtotime(current_time('mysql')) - ($settings['delete_days'] * 86400)); Activity::where('created_at', '<', $oldDateTime)->delete(); } public function maybeDeleteAttachmentsOnClose($ticket) { $settings = (new Settings())->globalBusinessSettings(); if ($settings['del_files_on_close'] == 'yes') { $this->deleteTicketAttachments($ticket); } } public function deleteTicketAttachments($ticket) { $uploadDir = wp_upload_dir(); $dir = $uploadDir['basedir'] . FLUENT_SUPPORT_UPLOAD_DIR; $attachments = Attachment::where('ticket_id', $ticket->id)->get(); if (!$attachments->isEmpty()) { $ticketDir = $dir . '/ticket_' . $ticket->id; if (is_dir($ticketDir)) { $this->deleteDir($ticketDir); } foreach ($attachments as $attachment) { if ($attachment->driver != 'local') { continue; } if (file_exists($attachment->file_path)) { @unlink($attachment->file_path); } } Attachment::where('ticket_id', $ticket->id)->delete(); } } private function deleteDir($dir) { if (!class_exists('\WP_Filesystem_Direct')) { require_once(ABSPATH . 'wp-admin/includes/class-wp-filesystem-base.php'); require_once(ABSPATH . 'wp-admin/includes/class-wp-filesystem-direct.php'); } $fileSystemDirect = new \WP_Filesystem_Direct(false); $fileSystemDirect->rmdir($dir, true); } }