settings = $settings; $this->wp = $wp; } function processTaskStrategy(ScheduledTask $task) { return $this->setLastAnnouncementDate(); } function setLastAnnouncementDate() { $response = $this->wp->wpRemoteGet(self::API_URL . '/posts?published=true&maxResults=1', [ 'headers' => [ 'Beamer-Api-Key' => self::API_KEY, ], ]); $posts = $this->wp->wpRemoteRetrieveBody($response); if (empty($posts)) return false; $posts = json_decode($posts); if (empty($posts) || empty($posts[0]->date)) return false; $this->settings->set('last_announcement_date', Carbon::createFromTimeString($posts[0]->date)->getTimestamp()); return true; } static function getNextRunDate() { $wp = new WPFunctions; $date = Carbon::createFromTimestamp($wp->currentTime('timestamp')); return $date->hour(11)->minute(00)->second(00)->addDay(); } }