<?php

// 1. Bootstrap Laravel
require __DIR__.'/vendor/autoload.php';

$app = require_once __DIR__.'/bootstrap/app.php';

// 2. Start Laravel container
$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
$kernel->bootstrap();

set_time_limit(0);

$newTimezone = 'Europe/London';
date_default_timezone_set($newTimezone);

$imapDB = json_decode(config('app.settings.imap_settings'), true);

// Mailbox credentials
$hostname = '{'.$imapDB['host'].':'.$imapDB['port'].'/ssl}INBOX';
$username = $imapDB['username'];
$password = $imapDB['password'];

// Connect to mailbox
$inbox = imap_open($hostname, $username, $password);

// Check for connection errors
if (! $inbox) {
    exit('Could not connect to mailbox: '.imap_last_error());
}

// Get current time in Unix timestamp
$current_time = time();

// Search for messages older than one day
// $search_criteria = 'BEFORE "' . date('d-M-Y', strtotime('-3 hours', $current_time)) . '"';
// $messages = imap_search($inbox, $search_criteria);

$messages = imap_search($inbox, 'ALL');

$batch_size = 10;
$deleted_count = 0;

// if ($messages) {
//    $chunks = array_chunk($messages, $batch_size);
//    foreach ($chunks as $chunk) {
//        foreach ($chunk as $message_number) {
//            imap_delete($inbox, $message_number);
//        }
//        imap_expunge($inbox);
//        $deleted_count += count($chunk);
//    }
//    echo $deleted_count . ' messages older than specified time have been deleted.';
// } else {
//    echo 'No messages older than specified time found in mailbox.';
// }

if ($messages) {
    $chunks = array_chunk($messages, $batch_size);
    foreach ($chunks as $chunk) {
        foreach ($chunk as $message_number) {
            // Get message header to fetch internal date
            $header = imap_headerinfo($inbox, $message_number);
            $date_str = $header->date;
            $msg_time = strtotime($date_str);

            // Check if message is older than 3 hours
            if ($msg_time !== false && ($current_time - $msg_time) > 2 * 3600) {
                imap_delete($inbox, $message_number);
                $deleted_count++;
            }
        }
        imap_expunge($inbox);
    }
    echo $deleted_count.' messages older than 2 hours have been deleted.';
} else {
    echo 'No messages found in mailbox.';
}

// Close mailbox connection
imap_close($inbox);
