Ejemplo n.º 1
0
 public function scopeLatestEdit($query, PageVersion $upToVersion)
 {
     $query->select("{$this->table}.*")->addSelect("{$this->table}.slotname as slotname")->join('page_versions as v1', "{$this->table}.page_vid", '=', 'v1.id')->leftJoin("{$this->table} as c2", function ($query) use($upToVersion) {
         $query->on("{$this->table}.id", '<', 'c2.id')->on("{$this->table}.slotname", '=', 'c2.slotname')->on('c2.page_vid', '<=', DB::raw("'{$upToVersion->getId()}'"));
     })->leftJoin('page_versions as v2', function ($query) use($upToVersion) {
         $query->on('c2.page_vid', '=', 'v2.id')->on('v1.page_id', '=', 'v2.page_id');
     })->whereNull('c2.id');
     return $query;
 }
Ejemplo n.º 2
0
 /**
  * Compare two versions.
  *
  * @param PageVersion $new
  * @param PageVersion $old
  *
  * @return Diff\BaseChange
  */
 public function compare(PageVersion $new, PageVersion $old)
 {
     if ($new->getRestoredVersionId()) {
         return new Diff\RestoredVersion($new, $old);
     }
     if ($new->isContentChange()) {
         return new Diff\ChunkChange($new, $old);
     }
     if ($new->getTemplateId() !== $old->getTemplateId()) {
         return new Diff\TemplateChange($new, $old);
     }
     if (strcmp($new->getTitle(), $old->getTitle()) !== 0) {
         return new Diff\TitleChange($new, $old);
     }
     if ($new->isPendingApproval() && !$old->isPendingApproval()) {
         return new Diff\ApprovalRequest($new, $old);
     }
     if ($new->isEmbargoed($new->getEditedTime())) {
         if (!$old->isEmbargoed($old->getEditedTime())) {
             return new Diff\Embargoed($new, $old);
         }
         if ($new->getEmbargoedUntil()->getTimestamp() !== $old->getEmbargoedUntil()->getTimestamp()) {
             return new Diff\EmbargoChanged($new, $old);
         }
     }
     if ($new->isPublished($new->getEditedTime())) {
         if (!$old->isPublished($old->getEditedTime())) {
             return new Diff\Published($new, $old);
         }
     }
 }
Ejemplo n.º 3
0
 /**
  * Mark the version as being restored from another.
  *
  * @param PageVersionInterface $version
  *
  * @return $this
  */
 public function setRestoredFrom(PageVersionInterface $version)
 {
     $this->{self::ATTR_RESTORED_FROM} = $version->getId();
     return $this;
 }
Ejemplo n.º 4
0
 public function findOne($type, $slotname, PageVersion $version)
 {
     $class = 'BoomCMS\\Database\\Models\\Chunk\\' . ucfirst($type);
     return $version->getId() ? $class::getSingleChunk($version, $slotname)->first() : null;
 }
Ejemplo n.º 5
0
 /**
  * Get the cache key for given chunk parameters.
  *
  * @param type        $type
  * @param type        $slotname
  * @param PageVersion $version
  *
  * @return string
  */
 public function getCacheKey($type, $slotname, PageVersion $version)
 {
     return md5("{$type}-{$slotname}-{$version->getId()}");
 }
Ejemplo n.º 6
0
 public function scopeGetSingleChunk(Builder $query, PageVersion $version, $slotname)
 {
     return $query->withRelations()->where('slotname', '=', $slotname)->where('page_vid', '<=', $version->getId())->where('page_id', '=', $version->getPageId())->orderBy('page_vid', 'desc');
 }