addColumn((new Column('email')) ->setOrderable(DataProvider::SORT_ASC) ->setSearchable(true, Column::TYPE_STRING)) ->addColumn((new Column('name')) ->setOrderable() ->setSearchable(true)) ->addColumn((new Column('status')) ->setOrderable() ->setSearchable(true)); } /** * * return status as html element * @param $key * @param $row * @return string */ public function replaceFieldStatus($key, $row) { /** * check status */ $enabled = $row[$key] === 'enabled' ? true : false; /** * * create enabled element */ $field = new EnabledField(); $field->setEnabled($enabled); $field->setRawTitle(di('lang')->absoluteT('kerio','account','status',$row[$key])); return $field->getHtml(); } public function initContent() { $this->addMassActionButton(new MassDeleteListButton()); $this->addButton(new AddListButton()); $this->addActionButton(new EditListButton()); $this->addActionButton(new DeleteListButton()); } public function loadData() { /** * load hosting */ $hosting = Hosting::where('id', $this->getRequestValue('id'))->first(); /** * load api */ $api = (new KerioManager())->getApiByServer($hosting->server); $repository = new Repository($api->soap); $lists = $repository->lists->getAllDistributionListsByDomain($hosting->domain); $data = []; foreach($lists as $list) { /* @var $list DistributionList */ $tmp = [ 'id' => $list->getId(), 'email' => $list->getName(), 'name' => $list->getDataResourceA(DistributionList::ATTR_DISPLAY_NAME), 'status' => $list->getDataResourceA(DistributionList::ATTR_MAIL_STATUS) ]; $data[] = $tmp; } $dataProv = new ArrayDataProvider(); $dataProv->setDefaultSorting('id', 'ASC')->setData($data); $this->setDataProvider($dataProv); } }