diff --git a/Admin/Routes/http.php b/Admin/Routes/http.php index cb99b59..bbe4799 100644 --- a/Admin/Routes/http.php +++ b/Admin/Routes/http.php @@ -57,4 +57,53 @@ return [ 'verb' => RouteVerb::GET, ], ], + + '^.*/api/admin/settings.*$' => [ + [ + 'dest' => '\Modules\Admin\Controller:apiSettingsSet', + 'verb' => RouteVerb::SET, + ], + [ + 'dest' => '\Modules\Admin\Controller:apiSettingsGet', + 'verb' => RouteVerb::GET, + ], + ], + + '^.*/api/admin/group.*$' => [ + [ + 'dest' => '\Modules\Admin\Controller:apiGroupCreate', + 'verb' => RouteVerb::PUT, + ], + [ + 'dest' => '\Modules\Admin\Controller:apiGroupUpdate', + 'verb' => RouteVerb::SET, + ], + [ + 'dest' => '\Modules\Admin\Controller:apiGroupDelete', + 'verb' => RouteVerb::DELETE, + ], + [ + 'dest' => '\Modules\Admin\Controller:apiGroupGet', + 'verb' => RouteVerb::GET, + ], + ], + + '^.*/api/admin/account.*$' => [ + [ + 'dest' => '\Modules\Admin\Controller:apiAccountCreate', + 'verb' => RouteVerb::PUT, + ], + [ + 'dest' => '\Modules\Admin\Controller:apiAccountUpdate', + 'verb' => RouteVerb::SET, + ], + [ + 'dest' => '\Modules\Admin\Controller:apiAccountDelete', + 'verb' => RouteVerb::DELETE, + ], + [ + 'dest' => '\Modules\Admin\Controller:apiAccountGet', + 'verb' => RouteVerb::GET, + ], + ], ]; diff --git a/Controller.php b/Controller.php index 3875ead..724c0c3 100644 --- a/Controller.php +++ b/Controller.php @@ -15,8 +15,10 @@ */ namespace Modules\Admin; +use Modules\Admin\Models\Account; use Modules\Admin\Models\AccountMapper; use Modules\Admin\Models\GroupMapper; +use Modules\Admin\Models\Group; use phpOMS\Message\RequestAbstract; use phpOMS\Message\ResponseAbstract; use phpOMS\Module\ModuleAbstract; @@ -133,8 +135,7 @@ class Controller extends ModuleAbstract implements WebInterface $view->setTemplate('/Modules/Admin/Theme/Backend/accounts-list'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000104001, $request, $response)); - $accountMapper = new AccountMapper($this->app->dbPool->get()); - $view->setData('list:elements', $accountMapper->getAll()); + $view->setData('list:elements', AccountMapper::getAll()); $view->setData('list:count', 1); return $view; @@ -156,8 +157,7 @@ class Controller extends ModuleAbstract implements WebInterface $view->setTemplate('/Modules/Admin/Theme/Backend/accounts-single'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000104001, $request, $response)); - $accountMapper = new AccountMapper($this->app->dbPool->get()); - $view->addData('account', $accountMapper->get((int) $request->getData('id'))); + $view->addData('account', AccountMapper::get((int) $request->getData('id'))); return $view; } @@ -197,8 +197,7 @@ class Controller extends ModuleAbstract implements WebInterface $view->setTemplate('/Modules/Admin/Theme/Backend/groups-list'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000103001, $request, $response)); - $groupMapper = new GroupMapper($this->app->dbPool->get()); - $view->setData('list:elements', $groupMapper->getAll()); + $view->setData('list:elements', GroupMapper::getAll()); return $view; } @@ -219,8 +218,7 @@ class Controller extends ModuleAbstract implements WebInterface $view->setTemplate('/Modules/Admin/Theme/Backend/groups-single'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1000103001, $request, $response)); - $groupMapper = new GroupMapper($this->app->dbPool->get()); - $view->addData('group', $groupMapper->get((int) $request->getData('id'))); + $view->addData('group', GroupMapper::get((int) $request->getData('id'))); return $view; } @@ -280,11 +278,82 @@ class Controller extends ModuleAbstract implements WebInterface return $view; } - public function apiAccountList(RequestAbstract $request, ResponseAbstract $response, $data = null) + public function apiSettingsGet(RequestAbstract $request, ResponseAbstract $response, $data = null) { - // todo: instead of returning dom, maybe only return data and let ui handle presentation?!!?!?!?!! + $response->set('settings', $this->app->appSettings->get($request->getData('id'))); + } - $mapper = new AccountMapper($this->app->dbPool->get()); + public function apiSettingsSet(RequestAbstract $request, ResponseAbstract $response, $data = null) + { + $this->app->appSettings->set([$request->getData('setting') => $request->getData('value')], true); + } + + public function apiGroupGet(RequestAbstract $request, ResponseAbstract $response, $data = null) + { + $response->set('group', GroupMapper::getByRequest($request)); + } + + public function apiGroupCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) + { + $group = new Group(); + $group->setName($request->getData('name')); + $group->setDescription($request->getData('desc')); + + GroupMapper::create($group); + + $response->set('group', $group->__toString()); + } + + public function apiGroupDelete(RequestAbstract $request, ResponseAbstract $response, $data = null) + { + $status = GroupMapper::delete($request->getData('id')); + + $response->set('group', $status); + } + + public function apiGroupUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) + { + $group = GroupMapper::get($request->getData('id')); + $group->setName($request->getData('name')); + $group->setDescription($request->getData('desc')); + + $status = GroupMapper::update($group); + + $response->set('group', ['status' => $status, 'group' => $group->__toString()]); + } + + public function apiAccountGet(RequestAbstract $request, ResponseAbstract $response, $data = null) + { + $response->set('account', AccountMapper::getByRequest($request)); + } + + public function apiAccountCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) + { + $account = new Account(); + $account->setName($request->getData('name')); + $account->setDescription($request->getData('desc')); + + AccountMapper::create($account); + + $response->set('account', $account->__toString()); + } + + public function apiAccountDelete(RequestAbstract $request, ResponseAbstract $response, $data = null) + { + $status = AccountMapper::delete($request->getData('id')); + + $response->set('account', $status); + } + + public function apiAccountUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) + { + $account = AccountMapper::get($request->getData('id')); + $account->setName($request->getData('name')); + $account->setDescription($request->getData('desc')); + + $status = AccountMapper::update($account); + + $response->set('account', ['status' => $status, 'account' => $account->__toString()]); } } diff --git a/Models/AccountMapper.php b/Models/AccountMapper.php index 207f0a8..fc0e500 100644 --- a/Models/AccountMapper.php +++ b/Models/AccountMapper.php @@ -16,6 +16,7 @@ namespace Modules\Admin\Models; use phpOMS\DataStorage\Database\DataMapperAbstract; +use phpOMS\DataStorage\Database\RelationType; class AccountMapper extends DataMapperAbstract { @@ -64,4 +65,21 @@ class AccountMapper extends DataMapperAbstract * @since 1.0.0 */ protected static $createdAt = 'account_created_at'; + + /** + * Get object. + * + * @param mixed $primaryKey Key + * @param int $relations Load relations + * @param mixed $fill Object to fill + * + * @return Account + * + * @since 1.0.0 + * @author Dennis Eichhorn + */ + public static function get($primaryKey, int $relations = RelationType::ALL, $fill = null) + { + return parent::get((int) $primaryKey, $relations, $fill); + } } diff --git a/Models/Group.php b/Models/Group.php index 4fa4fed..92adf25 100644 --- a/Models/Group.php +++ b/Models/Group.php @@ -17,8 +17,22 @@ namespace Modules\Admin\Models; class Group extends \phpOMS\Account\Group { + /** + * Created at. + * + * @var \DateTime + * @since 1.0.0 + */ protected $createdAt = null; + /** + * Created by. + * + * @var int + * @since 1.0.0 + */ + protected $createdBy = 0; + public function getCreatedAt() : \DateTime { return $this->createdAt ?? new \DateTime('NOW'); diff --git a/Models/GroupMapper.php b/Models/GroupMapper.php index f9cd395..1f0a505 100644 --- a/Models/GroupMapper.php +++ b/Models/GroupMapper.php @@ -16,6 +16,7 @@ namespace Modules\Admin\Models; use phpOMS\DataStorage\Database\DataMapperAbstract; +use phpOMS\DataStorage\Database\RelationType; class GroupMapper extends DataMapperAbstract { @@ -56,4 +57,21 @@ class GroupMapper extends DataMapperAbstract * @since 1.0.0 */ protected static $createdAt = 'group_created'; + + /** + * Get object. + * + * @param mixed $primaryKey Key + * @param int $relations Load relations + * @param mixed $fill Object to fill + * + * @return Group + * + * @since 1.0.0 + * @author Dennis Eichhorn + */ + public static function get($primaryKey, int $relations = RelationType::ALL, $fill = null) + { + return parent::get((int) $primaryKey, $relations, $fill); + } } diff --git a/Models/NullAccount.php b/Models/NullAccount.php new file mode 100644 index 0000000..53b4195 --- /dev/null +++ b/Models/NullAccount.php @@ -0,0 +1,20 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +namespace Modules\Admin\Models; + +class NullAccount extends Account +{ +} diff --git a/Models/NullGroup.php b/Models/NullGroup.php new file mode 100644 index 0000000..5ea4693 --- /dev/null +++ b/Models/NullGroup.php @@ -0,0 +1,20 @@ + + * @author Dennis Eichhorn + * @copyright 2013 Dennis Eichhorn + * @license OMS License 1.0 + * @version 1.0.0 + * @link http://orange-management.com + */ +namespace Modules\Admin\Models; + +class NullGroup extends Group +{ +} diff --git a/Theme/Backend/groups-create.tpl.php b/Theme/Backend/groups-create.tpl.php index a3bb2fa..67db276 100644 --- a/Theme/Backend/groups-create.tpl.php +++ b/Theme/Backend/groups-create.tpl.php @@ -22,7 +22,7 @@ echo $this->getData('nav')->render(); ?>

l11n->lang['Admin']['Group'] ?>

-
+
diff --git a/Theme/backend/groups-create.tpl.php b/Theme/backend/groups-create.tpl.php index a3bb2fa..67db276 100644 --- a/Theme/backend/groups-create.tpl.php +++ b/Theme/backend/groups-create.tpl.php @@ -22,7 +22,7 @@ echo $this->getData('nav')->render(); ?>

l11n->lang['Admin']['Group'] ?>

- +