getUser()->isAdmin()) { throw new Forbidden(); } } public function actionCreateEntity($params, $data, $request) { if (!$request->isPost()) { throw new BadRequest(); } if (empty($data['name']) || empty($data['type'])) { throw new BadRequest(); } $name = $data['name']; $type = $data['type']; $name = filter_var($name, \FILTER_SANITIZE_STRING); $type = filter_var($type, \FILTER_SANITIZE_STRING); $params = array(); if (!empty($data['labelSingular'])) { $params['labelSingular'] = $data['labelSingular']; } if (!empty($data['labelPlural'])) { $params['labelPlural'] = $data['labelPlural']; } if (!empty($data['stream'])) { $params['stream'] = $data['stream']; } if (!empty($data['sortBy'])) { $params['sortBy'] = $data['sortBy']; } if (!empty($data['sortDirection'])) { $params['asc'] = $data['sortDirection'] === 'asc'; } $result = $this->getContainer()->get('entityManagerUtil')->create($name, $type, $params); if ($result) { $tabList = $this->getConfig()->get('tabList', []); $tabList[] = $name; $this->getConfig()->set('tabList', $tabList); $this->getConfig()->save(); $this->getContainer()->get('dataManager')->rebuild(); } else { throw new Error(); } return true; } public function actionUpdateEntity($params, $data, $request) { if (!$request->isPost()) { throw new BadRequest(); } if (empty($data['name'])) { throw new BadRequest(); } $name = $data['name']; $name = filter_var($name, \FILTER_SANITIZE_STRING); if (!empty($data['sortDirection'])) { $data['asc'] = $data['sortDirection'] === 'asc'; } $result = $this->getContainer()->get('entityManagerUtil')->update($name, $data); if ($result) { $this->getContainer()->get('dataManager')->clearCache(); } else { throw new Error(); } return true; } public function actionRemoveEntity($params, $data, $request) { if (!$request->isPost()) { throw new BadRequest(); } if (empty($data['name'])) { throw new BadRequest(); } $name = $data['name']; $name = filter_var($name, \FILTER_SANITIZE_STRING); $result = $this->getContainer()->get('entityManagerUtil')->delete($name); if ($result) { $tabList = $this->getConfig()->get('tabList', []); if (($key = array_search($name, $tabList)) !== false) { unset($tabList[$key]); $tabList = array_values($tabList); } $this->getConfig()->set('tabList', $tabList); $this->getConfig()->save(); $this->getContainer()->get('dataManager')->clearCache(); } else { throw new Error(); } return true; } public function actionCreateLink($params, $data, $request) { if (!$request->isPost()) { throw new BadRequest(); } $paramList = [ 'entity', 'entityForeign', 'link', 'linkForeign', 'label', 'labelForeign', 'linkType' ]; $d = array(); foreach ($paramList as $item) { if (empty($data[$item])) { throw new BadRequest(); } $d[$item] = filter_var($data[$item], \FILTER_SANITIZE_STRING); } $result = $this->getContainer()->get('entityManagerUtil')->createLink($d); if ($result) { $this->getContainer()->get('dataManager')->rebuild(); } else { throw new Error(); } return true; } public function actionUpdateLink($params, $data, $request) { if (!$request->isPost()) { throw new BadRequest(); } $paramList = [ 'entity', 'entityForeign', 'link', 'linkForeign', 'label', 'labelForeign' ]; $d = array(); foreach ($paramList as $item) { $d[$item] = filter_var($data[$item], \FILTER_SANITIZE_STRING); } $result = $this->getContainer()->get('entityManagerUtil')->updateLink($d); if ($result) { $this->getContainer()->get('dataManager')->clearCache(); } else { throw new Error(); } return true; } public function actionRemoveLink($params, $data, $request) { if (!$request->isPost()) { throw new BadRequest(); } $paramList = [ 'entity', 'link', ]; $d = array(); foreach ($paramList as $item) { $d[$item] = filter_var($data[$item], \FILTER_SANITIZE_STRING); } $result = $this->getContainer()->get('entityManagerUtil')->deleteLink($d); if ($result) { $this->getContainer()->get('dataManager')->clearCache(); } else { throw new Error(); } return true; } }