addColumn((new Column('email_alias')) ->setOrderable(DataProvider::SORT_ASC) ->setSearchable(true, Column::TYPE_STRING)) ->addColumn((new Column('account')) ->setOrderable() ->setSearchable(true)); } public function initContent() { $this->addMassActionButton(new MassDeleteEmailAliasButton()); $addEmailAliasesButton = new AddEmailAliasButton(); if($this->isCreateButtonDisabled()) { $addEmailAliasesButton->addHtmlAttribute('disabled', true); } $this->addButton($addEmailAliasesButton); $this->addActionButton(new DeleteEmailAliasButton()); } public function loadData() { /** * load hosting */ $hosting = Hosting::where('id', $this->getRequestValue('id'))->first(); /** * load api */ $aliases = (new KerioManager()) ->getApiByServer($hosting->server) ->soap->repository() ->accounts ->getAccountAliasesByDomainName($hosting->domain); /** * format model to array */ $data = []; foreach ($aliases as $alias) { /* @var $alias AccountAlias */ $tmp = [ 'id' => base64_encode(json_encode(['alias' => $alias->getAlias(), 'accId' => $alias->getAccountId()])), 'email_alias' => $alias->getAlias(), 'account' => $alias->getAccountName() ]; $data[] = $tmp; } $dataProv = new ArrayDataProvider(); $dataProv->setDefaultSorting('account', 'ASC')->setData($data); $this->setDataProvider($dataProv); } /** * * check if add button should be disabled * @return bool */ private function isCreateButtonDisabled() { $hid = $this->getRequestValue('id'); /** * hosting model */ $hosting = Hosting::where('id', $hid)->first(); $accounts =(new KerioManager()) ->getApiByHosting($hid) ->soap ->repository() ->accounts ->getByDomainName($hosting->domain); return !(count($accounts) > 0); } }