Initial commit - Last War messaging system

This commit is contained in:
2026-02-19 01:33:28 -06:00
commit 38a8447a64
2162 changed files with 216183 additions and 0 deletions

98
includes/schedule_helpers.php Executable file
View File

@@ -0,0 +1,98 @@
<?php
function calculateNextSendTime(string $recurringDays, string $recurringTime): ?string
{
$daysMap = [
'sunday' => 0,
'monday' => 1,
'tuesday' => 2,
'wednesday' => 3,
'thursday' => 4,
'friday' => 5,
'saturday' => 6
];
$days = array_map('trim', explode(',', strtolower($recurringDays)));
$days = array_filter($days, fn($d) => isset($daysMap[$d]));
$days = array_map(fn($d) => $daysMap[$d], $days);
if (empty($days)) {
return null;
}
$timeParts = explode(':', $recurringTime);
$hour = (int) ($timeParts[0] ?? 0);
$minute = (int) ($timeParts[1] ?? 0);
$now = new DateTime('now', new DateTimeZone('America/Mexico_City'));
$currentDay = (int) $now->format('w');
$currentHour = (int) $now->format('H');
$currentMinute = (int) $now->format('i');
sort($days);
foreach ($days as $day) {
if ($day > $currentDay || ($day === $currentDay && ($hour > $currentHour || ($hour === $currentHour && $minute > $currentMinute)))) {
$next = clone $now;
$next->setTime($hour, $minute);
$next->modify('+' . ($day - $currentDay) . ' days');
return $next->format('Y-m-d H:i:s');
}
}
$daysAhead = (7 - $currentDay) + $days[0];
$next = clone $now;
$next->setTime($hour, $minute);
$next->modify('+' . $daysAhead . ' days');
return $next->format('Y-m-d H:i:s');
}
function getRecurringDaysOptions(): array
{
return [
['value' => 'monday', 'label' => 'Lunes'],
['value' => 'tuesday', 'label' => 'Martes'],
['value' => 'wednesday', 'label' => 'Miércoles'],
['value' => 'thursday', 'label' => 'Jueves'],
['value' => 'friday', 'label' => 'Viernes'],
['value' => 'saturday', 'label' => 'Sábado'],
['value' => 'sunday', 'label' => 'Domingo']
];
}
function formatRecurringDays(string $days): string
{
$daysMap = [
'monday' => 'Lun',
'tuesday' => 'Mar',
'wednesday' => 'Mié',
'thursday' => 'Jue',
'friday' => 'Vie',
'saturday' => 'Sáb',
'sunday' => 'Dom'
];
$daysArray = array_map('trim', explode(',', strtolower($days)));
$result = [];
foreach ($daysArray as $day) {
$result[] = $daysMap[$day] ?? $day;
}
return implode(', ', $result);
}
function isValidRecurringDays(string $days): bool
{
$validDays = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'];
$daysArray = array_map('trim', explode(',', strtolower($days)));
foreach ($daysArray as $day) {
if (!in_array($day, $validDays)) {
return false;
}
}
return !empty($daysArray);
}