protected function wrapPageVersionStatusByDate($version, $page, $liveVersion) { // sometimes we don't have a current version // like when a page is completely unpublished! if (is_null($liveVersion)) { $liveVersion = new \StdClass(); $liveVersion->id = -1; } $now = new \DateTime(); $startsAt = $version->starts_at; $endsAt = $version->ends_at; $version->starts_at_human = $version->starts_at ? $this->toHumanDateFormat($version->starts_at) : 'never starts'; $version->ends_at_human = $version->ends_at ? $this->toHumanDateFormat($version->ends_at) : 'never ends'; // the current version is live if ($version->id == $liveVersion->id) { $page->status = 'live'; $version->status = "live"; return $version; } // if the version is overriden b/c it has started and has not finished but is not live version if ($version->id != $liveVersion->id && $startsAt && $startsAt < $now && ($endsAt > $now || is_null($endsAt))) { $version->status = "overridden"; return $version; } // if version has a starts_at date scheduled if ($startsAt && $startsAt > $now) { $version->status = 'scheduled'; return $version; } // finally fallback to the page is just unpublished status $version->status = "unpublished"; return $version; }