%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/file/models/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/file/models/FileHistory.php |
<?php /** * @link https://www.humhub.org/ * @copyright Copyright (c) 2021 HumHub GmbH & Co. KG * @license https://www.humhub.com/licences */ namespace humhub\modules\file\models; use humhub\components\ActiveRecord; use humhub\modules\user\models\User; /** * This is the model class for table "file_history". * * @property int $id * @property int $file_id * @property int $size * @property string $hash_sha1 * @property string|null $created_at * @property int|null $created_by * * @property File $file * @property User $createdBy * * @since 1.10 */ class FileHistory extends ActiveRecord { const VARIANT_PREFIX = 'old-'; /** * {@inheritdoc} */ public static function tableName() { return 'file_history'; } /** * {@inheritdoc} */ public function rules() { return [ [['file_id', 'size', 'hash_sha1'], 'required'], [['file_id', 'size'], 'integer'], [['hash_sha1'], 'string', 'max' => 40], [['file_id'], 'exist', 'skipOnError' => true, 'targetClass' => File::class, 'targetAttribute' => ['file_id' => 'id']], ]; } /** * Gets query for [[File]]. * * @return \yii\db\ActiveQuery */ public function getFile() { return $this->hasOne(File::class, ['id' => 'file_id']); } /** * Gets query for [[CreatedBy]]. * * @return \yii\db\ActiveQuery */ public function getCreatedBy() { return $this->hasOne(User::class, ['id' => 'created_by']); } /** * @return string */ public function getFileUrl() { return $this->file->getUrl($this->getFileVariantId()); } /** * @return string */ public function getFileStorePath() { return $this->file->store->get($this->getFileVariantId()); } /** * @return string */ public function getFileVariantId() { return static::VARIANT_PREFIX . $this->id; } /** * Checks if the file histories has been enabled for a given file. * * @param File $file * @return bool * @throws \yii\db\IntegrityException */ public static function isEnabled(File $file) { if (!$file->isNewRecord && $file->isAssigned()) { /** @var ActiveRecord $record */ $record = $file->getPolymorphicRelation(); if ($record->fileManagerEnableHistory) { return true; } } return false; } /** * Copies the current contents of a file to the history. * * @param File $file * @return bool */ public static function createEntryForFile(File $file): bool { $entry = new static; $entry->file_id = $file->id; $entry->created_by = empty($file->old_updated_by) ? $file->updated_by : $file->old_updated_by; $entry->created_at = empty($file->old_updated_at) ? $file->updated_at : $file->old_updated_at; if ($file->store->has()) { $entry->hash_sha1 = sha1_file($file->store->get()); $entry->size = filesize($file->store->get()); } if ($entry->save()) { $file->store->setByPath($file->store->get(), $entry->getFileVariantId()); return true; } return false; } /** * @inheritdoc */ public function afterDelete() { $this->file->store->delete($this->getFileVariantId()); parent::afterDelete(); } }