http://modulesgarden.com * CONTACT -> contact@modulesgarden.com * * * This software is furnished under a license and may be used and copied * only in accordance with the terms of such license and with the * inclusion of the above copyright notice. This software or any other * copies thereof may not be provided or otherwise made available to any * other person. No title to and ownership of the software is hereby * transferred. * * * ******************************************************************** */ namespace ModulesGarden\Servers\ProxmoxVps\App\UI\Snapshot\Pages; use MGProvision\Proxmox\v2\models\Kvm; use MGProvision\Proxmox\v2\repository\SnapshotRepository; use ModulesGarden\ProxmoxAddon\App\Models\SnapshotJob; use ModulesGarden\ProxmoxAddon\App\Services\ApiService; use ModulesGarden\ProxmoxAddon\App\Services\Vps\ProductService; use ModulesGarden\Servers\ProxmoxVps\App\Enum\JobPeriod; use ModulesGarden\Servers\ProxmoxVps\App\UI\Snapshot\Buttons\CreateButton; use ModulesGarden\Servers\ProxmoxVps\App\UI\Snapshot\Buttons\CreateJobButton; use ModulesGarden\Servers\ProxmoxVps\App\UI\Snapshot\Buttons\DeleteButton; use ModulesGarden\Servers\ProxmoxVps\App\UI\Snapshot\Buttons\DeleteJobButton; use ModulesGarden\Servers\ProxmoxVps\App\UI\Snapshot\Buttons\DeleteJobMassButton; use ModulesGarden\Servers\ProxmoxVps\App\UI\Snapshot\Buttons\DeleteMassButton; use ModulesGarden\Servers\ProxmoxVps\App\UI\Snapshot\Buttons\RollbackButton; use ModulesGarden\Servers\ProxmoxVps\App\UI\Snapshot\Buttons\UpdateButton; use ModulesGarden\Servers\ProxmoxVps\App\UI\Snapshot\Buttons\UpdateJobButton; use function ModulesGarden\Servers\ProxmoxVps\Core\Helper\sl; use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\AdminArea; use ModulesGarden\Servers\ProxmoxVps\Core\UI\Interfaces\ClientArea; use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\DataTable\Column; use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\DataTable\DataProviders\Providers\ArrayDataProvider; use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\DataTable\DataProviders\Providers\QueryDataProvider; use ModulesGarden\Servers\ProxmoxVps\Core\UI\Widget\RawDataTable\RawDataTable; class JobRawDataTable extends RawDataTable implements ClientArea, AdminArea { use ApiService; use ProductService; protected $id = 'jobDataTable'; protected $title = 'jobDataTable'; public function initContent() { //Create $createButton = new CreateJobButton(); $createButton->addClass("pmCreateJobButton"); if (!$this->resourceGuard()->hasSnapshotJobLimit()) { $createButton->addClass("hidden"); } $this->addButton($createButton); //Update $this->addActionButton(new UpdateJobButton()); //Delete $this->addActionButton(new DeleteJobButton()); //Mass delete $this->addMassActionButton(new DeleteJobMassButton()); } protected function loadHtml() { $this->addColumn((new Column('name'))->setSearchable(true, "string")->setOrderable()); if ($this->vm() instanceof Kvm) { $this->addColumn((new Column('vmstate'))->setSearchable(true)->setOrderable()); } $this->addColumn((new Column('description'))->setSearchable(true)->setOrderable()); $this->addColumn((new Column('days'))->setSearchable(true)) ->addColumn((new Column('created_at'))->setSearchable(true, "date")->setOrderable('DESC')); } public function replaceFieldVmstate($key, $row) { if ($row->vmstate == "1") { return '' . sl('lang')->tr("Yes") . ''; } return '' . sl('lang')->tr("No") . ''; } public function replaceFieldDescription($key, $row) { if ($row->description) { return $row->description; } return '-'; } public function replaceFieldDays($key, $row) { if($row->period == JobPeriod::DAILY && $row->days){ $row = json_decode($row->days, true); foreach ($row as &$day){ $day = sl("lang")->tr($day); } return implode(", ", $row); }elseif ($row->period == JobPeriod::HOURLY && $row->run_every && $row->run_every == 1){ sl('lang')->addReplacementConstant('run_every', $row->run_every); return sl("lang")->tr("Every :run_every: hour"); }elseif ($row->period == JobPeriod::HOURLY && $row->run_every && $row->run_every > 1){ sl('lang')->addReplacementConstant('run_every', $row->run_every); return sl("lang")->tr("Every :run_every: hours"); } return '-'; } protected function loadData() { $query = (new SnapshotJob()) ->query() ->getQuery() ->select('id','name','description','vmstate','period', 'run_every','days','start_time','updated_at','created_at') ->where("hosting_id", $this->getWhmcsParamByKey('serviceid')); $dataProv = new QueryDataProvider(); $dataProv->setData($query); $dataProv->setDefaultSorting("created_at", 'DESC'); $this->setDataProvider($dataProv); } }