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']; } $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 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; } }