addClass("pmCreateButton"); if (!$this->resourceGuard()->hasSnapshotLimit()) { $createButton->addClass("hidden"); } $this->addButton($createButton); //rollback $this->addActionButton(new RollbackButton()); //Update $this->addActionButton(new UpdateButton()); //Delete $this->addActionButton(new DeleteButton()); //Mass delete $this->addMassActionButton(new DeleteMassButton()); $this->snapshotRepository = new SnapshotRepository(); } protected function loadHtml() { $this->addColumn((new Column('name'))->setSearchable(true, "string")->setOrderable()) ->addColumn((new Column('status'))->setSearchable(true, "string")->setOrderable()); if ($this->vm() instanceof Kvm) { $this->addColumn((new Column('vmstate'))->setSearchable(true)->setOrderable()); } $this->addColumn((new Column('snaptime'))->setSearchable(true, "date")->setOrderable('DESC')) ->addColumn((new Column('description'))->setSearchable(true)->setOrderable()); } public function replaceFieldStatus($key, $row) { //current if ($this->snapshotRepository->getCurrent()->getParent() == $row['name']) { return '' . sl('lang')->tr("Active") . ''; } return '' . sl('lang')->tr("Disabled") . ''; } public function replaceFieldVmstate($key, $row) { if ($row['vmstate'] == "1") { return '' . sl('lang')->tr("Yes") . ''; } return '' . sl('lang')->tr("No") . ''; } public function replaceFieldSnaptime($key, $row) { return date('Y-m-d H:i:s', $row[$key]); } public function replaceFieldDescription($key, $row) { if ($row['description']) { return $row['description']; } return '-'; } protected function loadData() { $this->snapshotRepository->setApi($this->api()); $this->snapshotRepository->findByVm($this->vm()); $this->snapshotRepository->ignoreCurrent(true); $data = []; foreach ($this->snapshotRepository->fetch() as $entity) { $row = $entity->getAttributes(); $data[] = array_merge(['id' => base64_encode(json_encode($row))], $row); } $dataProv = new ArrayDataProvider(); $dataProv->setDefaultSorting("snaptime", 'DESC'); $dataProv->setData($data); $this->setDataProvider($dataProv); } }