| 1 |
<?php if (! defined('ABSPATH')) exit; // Exit if accessed directly |
| 2 |
#[AllowDynamicProperties] |
| 3 |
class SH4_Reminders_Html_Cron |
| 4 |
{ |
| 5 |
public function __construct( |
| 6 |
HC3_Time $t, |
| 7 |
HC3_Settings $settings, |
| 8 |
|
| 9 |
SH4_Reminders_Query $remindersQuery, |
| 10 |
SH4_Reminders_Command $remindersCommand, |
| 11 |
SH4_Reminders_CommandSms $remindersCommandSms, |
| 12 |
|
| 13 |
HC3_Hooks $hooks |
| 14 |
) |
| 15 |
{ |
| 16 |
$this->t = $t; |
| 17 |
$this->settings = $hooks->wrap( $settings ); |
| 18 |
|
| 19 |
$this->remindersQuery = $hooks->wrap( $remindersQuery ); |
| 20 |
$this->remindersCommand = $hooks->wrap( $remindersCommand ); |
| 21 |
$this->remindersCommandSms = $hooks->wrap( $remindersCommandSms ); |
| 22 |
|
| 23 |
$this->self = $hooks->wrap( $this ); |
| 24 |
} |
| 25 |
|
| 26 |
public function run() |
| 27 |
{ |
| 28 |
$date = $this->t->setNow()->modify('+1 day')->setStartDay()->formatDateDb(); |
| 29 |
|
| 30 |
$sendDaily = $this->settings->get( 'reminders_daily' ); |
| 31 |
$sendWeekly = $this->settings->get( 'reminders_weekly' ); |
| 32 |
$sendMonthly = $this->settings->get( 'reminders_monthly' ); |
| 33 |
|
| 34 |
$sendDailySms = $this->settings->get( 'reminders_daily_sms' ); |
| 35 |
|
| 36 |
// daily |
| 37 |
if( $sendDaily ){ |
| 38 |
$date = $this->t->setNow()->modify('+1 day')->setStartDay()->formatDateDb(); |
| 39 |
$range = SH4_Reminders_Model::RANGE_DAILY; |
| 40 |
$reminders = $this->remindersQuery->find( $range, $date ); |
| 41 |
foreach( $reminders as $reminder ){ |
| 42 |
if( $reminder->log ) continue; |
| 43 |
$this->remindersCommand->send( $reminder ); |
| 44 |
} |
| 45 |
} |
| 46 |
|
| 47 |
// daily sms |
| 48 |
if( $sendDailySms ){ |
| 49 |
$date = $this->t->setNow()->modify('+1 day')->setStartDay()->formatDateDb(); |
| 50 |
$range = SH4_Reminders_Model::RANGE_DAILY_SMS; |
| 51 |
$reminders = $this->remindersQuery->find( $range, $date ); |
| 52 |
foreach( $reminders as $reminder ){ |
| 53 |
if( $reminder->log ) continue; |
| 54 |
$this->remindersCommandSms->send( $reminder ); |
| 55 |
} |
| 56 |
} |
| 57 |
|
| 58 |
// weekly |
| 59 |
if( $sendWeekly ){ |
| 60 |
$date = $this->t->setNow()->modify('+1 week')->setStartWeek()->formatDateDb(); |
| 61 |
$range = SH4_Reminders_Model::RANGE_WEEKLY; |
| 62 |
$reminders = $this->remindersQuery->find( $range, $date ); |
| 63 |
foreach( $reminders as $reminder ){ |
| 64 |
if( $reminder->log ) continue; |
| 65 |
$this->remindersCommand->send( $reminder ); |
| 66 |
} |
| 67 |
} |
| 68 |
|
| 69 |
// monthly |
| 70 |
if( $sendMonthly ){ |
| 71 |
$date = $this->t->setNow()->modify('+1 month')->setStartMonth()->formatDateDb(); |
| 72 |
$range = SH4_Reminders_Model::RANGE_MONTHLY; |
| 73 |
$reminders = $this->remindersQuery->find( $range, $date ); |
| 74 |
foreach( $reminders as $reminder ){ |
| 75 |
if( $reminder->log ) continue; |
| 76 |
$this->remindersCommand->send( $reminder ); |
| 77 |
} |
| 78 |
} |
| 79 |
} |
| 80 |
} |