Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Service/Bookmark/Editor.php
<?php

namespace XF\Service\Bookmark;

use
XF\Entity\BookmarkItem;
use
XF\Service\AbstractService;
use
XF\Service\ValidateAndSavableTrait;

class
Editor extends AbstractService
{
    use
ValidateAndSavableTrait;

   
/**
     * @var BookmarkItem
     */
   
protected $bookmark;

   
/**
     * @var Preparer
     */
   
protected $preparer;

   
/**
     * @var \XF\Service\Bookmark\LabelChanger
     */
   
protected $labelChanger;

    public function
__construct(\XF\App $app, BookmarkItem $bookmark)
    {
       
parent::__construct($app);

       
$this->bookmark = $bookmark;
       
$this->preparer = $this->service('XF:Bookmark\Preparer', $this->bookmark);
       
$this->labelChanger = $this->service('XF:Bookmark\LabelChanger', $this->bookmark, $this->bookmark->User);
    }

    public function
getBookmark()
    {
        return
$this->bookmark;
    }

    public function
getBookmarkPreparer()
    {
        return
$this->preparer;
    }

    public function
setMessage($message, $format = true)
    {
        return
$this->preparer->setMessage($message, $format);
    }

    public function
setLabels($labels)
    {
       
$this->labelChanger->setLabels($labels);
    }

    protected function
finalSetup()
    {
    }

    protected function
_validate()
    {
       
$this->finalSetup();

       
$this->bookmark->preSave();
        return
$this->bookmark->getErrors();
    }

    protected function
_save()
    {
       
$bookmark = $this->bookmark;

       
$this->db()->beginTransaction();

       
$bookmark->save();
       
$this->preparer->afterUpdate();
       
$this->labelChanger->save();

       
$this->db()->commit();

        return
$bookmark;
    }
}