File: /home/accemeff/vendor/craftcms/cms/src/models/BaseEntryRevisionModel.php
<?php
/**
* @link https://craftcms.com/
* @copyright Copyright (c) Pixel & Tonic, Inc.
* @license https://craftcms.github.io/license/
*/
namespace craft\models;
use Craft;
use craft\base\Field;
use craft\elements\Entry;
use craft\elements\User;
use craft\helpers\ArrayHelper;
use craft\helpers\ElementHelper;
/**
* Class BaseEntryRevision model.
*
* @author Pixel & Tonic, Inc. <support@pixelandtonic.com>
* @since 3.0
*/
class BaseEntryRevisionModel extends Entry
{
// Public Methods
// =========================================================================
/**
* @var int|null The revision creator’s user ID
*/
public $creatorId;
// Public Methods
// =========================================================================
/**
* @inheritdoc
*/
public function attributes()
{
$names = parent::attributes();
// Prevent getUrl() from being called by View::renderObjectTemplate(),
// which would cause an infinite recursion bug
ArrayHelper::removeValue($names, 'url');
ArrayHelper::removeValue($names, 'link');
return $names;
}
/**
* @inheritdoc
*/
public function rules()
{
$rules = parent::rules();
$rules[] = [['creatorId'], 'number', 'integerOnly' => true];
return $rules;
}
/**
* Sets the revision content.
*
* @param array $content
*/
public function setContentFromRevision(array $content)
{
// Swap the field IDs with handles
$contentByFieldHandles = [];
foreach ($content as $fieldId => $value) {
/** @var Field $field */
$field = Craft::$app->getFields()->getFieldById($fieldId);
if ($field) {
$contentByFieldHandles[$field->handle] = $value;
}
}
// Set the values and prep them
$this->setFieldValues($contentByFieldHandles);
}
/**
* Returns the draft's creator.
*
* @return User|null
*/
public function getCreator()
{
return $this->creatorId ? Craft::$app->getUsers()->getUserById($this->creatorId) : null;
}
/**
* Returns the element's full URL.
*
* @return string|null
*/
public function getUrl()
{
if ($this->uri === null) {
ElementHelper::setUniqueUri($this);
}
return parent::getUrl();
}
}