Devise\Pages\PagesRepository::wrapPageVersionStatusByDate PHP Method

wrapPageVersionStatusByDate() protected method

Wraps the status around a single page version
protected wrapPageVersionStatusByDate ( DvsPageVersion $version, DvsPage $page, DvsPageVersion $liveVersion ) : DvsPageVersion
$version DvsPageVersion
$page DvsPage
$liveVersion DvsPageVersion
return DvsPageVersion
    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;
    }