%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/cfiles/widgets/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/cfiles/widgets/VersionsView.php |
<?php
/**
* @link https://www.humhub.org/
* @copyright Copyright (c) 2021 HumHub GmbH & Co. KG
* @license https://www.humhub.com/licences
*/
namespace humhub\modules\cfiles\widgets;
use humhub\components\Widget;
use humhub\modules\cfiles\models\File;
use humhub\modules\file\models\FileHistory;
use yii\data\Pagination;
/**
* Widget for rendering file versions table.
*/
class VersionsView extends Widget
{
/**
* @var File
*/
public $file;
/**
* @var int
*/
public $page = 1;
/**
* @var int
*/
public $pageSize = 10;
/**
* @var FileHistory[]
*/
private $versions;
/**
* @var bool
*/
private $isLastPage = true;
/**
* @inheritdoc
*/
public function init()
{
parent::init();
$this->initVersions();
}
/**
* Initialise versions
*/
private function initVersions()
{
$pagination = new Pagination([
'page' => $this->page - 1,
'pageSize' => $this->pageSize,
'totalCount' => $this->file->baseFile->getHistoryFiles()->count()
]);
$this->isLastPage = ($pagination->page >= $pagination->pageCount - 1);
$this->versions = $this->file->baseFile
->getHistoryFiles()
->offset($pagination->offset)
->limit($pagination->limit)
->all();
}
/**
* @inheritdoc
*/
public function run()
{
return $this->render('versionsView', [
'versionsRowsHtml' => $this->renderVersions(),
'nextPageVersionsUrl' => $this->getNextPageVersionsUrl(),
]);
}
public function renderVersions(): string
{
$html = '';
if ($this->page == 1) {
$html .= VersionItem::widget([
'version' => $this->file->baseFile,
'revertUrl' => false,
'downloadUrl' => $this->file->baseFile->getUrl(),
'deleteUrl' => false,
]);
}
foreach ($this->versions as $version) {
$html .= VersionItem::widget([
'version' => $version,
'revertUrl' => $this->file->getVersionsUrl($version->id),
'downloadUrl' => $version->getFileUrl(),
'deleteUrl' => $this->file->getDeleteVersionUrl($version->id),
]);
}
return $html;
}
public function isLastPage(): bool
{
return $this->isLastPage;
}
private function getNextPageVersionsUrl(): string
{
return $this->isLastPage() ? ''
: $this->file->content->container->createUrl('/cfiles/version/page', ['id' => $this->file->id]);
}
}