From 38c31e47804757bf2e25b655d5081c0dfa3c82f5 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Wed, 28 Sep 2016 22:07:54 +0200 Subject: [PATCH] Preparing for query extension implementing media for task/task elements and preparing for unit parent display. --- Admin/Installer.php | 34 ++++++++++++++++++++++++++++++++++ Admin/Routes/Web/Api.php | 18 ++++++++++++++++++ Admin/Routes/Web/Backend.php | 13 ------------- Models/Task.php | 2 ++ Models/TaskElementMapper.php | 15 +++++++++++++++ Models/TaskMapper.php | 7 ++++++- 6 files changed, 75 insertions(+), 14 deletions(-) create mode 100644 Admin/Routes/Web/Api.php diff --git a/Admin/Installer.php b/Admin/Installer.php index 5355af8..191d8a3 100644 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -69,6 +69,23 @@ class Installer extends InstallerAbstract ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'task_ibfk_2` FOREIGN KEY (`task_created_by`) REFERENCES `' . $dbPool->get('core')->prefix . 'account` (`account_id`);' )->execute(); + $dbPool->get('core')->con->prepare( + 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'task_media` ( + `task_media_id` int(11) NOT NULL AUTO_INCREMENT, + `task_media_src` int(11) NULL, + `task_media_dst` int(11) NULL, + PRIMARY KEY (`task_media_id`), + KEY `task_media_src` (`task_media_src`), + KEY `task_media_dst` (`task_media_dst`) + )ENGINE=InnoDB DEFAULT CHARSET=utf8;' + )->execute(); + + $dbPool->get('core')->con->prepare( + 'ALTER TABLE `' . $dbPool->get('core')->prefix . 'task_media` + ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'task_media_ibfk_1` FOREIGN KEY (`task_media_src`) REFERENCES `' . $dbPool->get('core')->prefix . 'task` (`task_id`), + ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'task_media_ibfk_2` FOREIGN KEY (`task_media_dst`) REFERENCES `' . $dbPool->get('core')->prefix . 'media` (`media_id`);' + )->execute(); + $dbPool->get('core')->con->prepare( 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'task_account` ( `task_account_id` int(11) NOT NULL AUTO_INCREMENT, @@ -112,6 +129,23 @@ class Installer extends InstallerAbstract ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'task_element_ibfk_3` FOREIGN KEY (`task_element_forwarded`) REFERENCES `' . $dbPool->get('core')->prefix . 'account` (`account_id`);' )->execute(); + $dbPool->get('core')->con->prepare( + 'CREATE TABLE if NOT EXISTS `' . $dbPool->get('core')->prefix . 'task_element_media` ( + `task_element_media_id` int(11) NOT NULL AUTO_INCREMENT, + `task_element_media_src` int(11) NULL, + `task_element_media_dst` int(11) NULL, + PRIMARY KEY (`task_element_media_id`), + KEY `task_element_media_src` (`task_element_media_src`), + KEY `task_element_media_dst` (`task_element_media_dst`) + )ENGINE=InnoDB DEFAULT CHARSET=utf8;' + )->execute(); + + $dbPool->get('core')->con->prepare( + 'ALTER TABLE `' . $dbPool->get('core')->prefix . 'task_element_media` + ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'task_element_media_ibfk_1` FOREIGN KEY (`task_element_media_src`) REFERENCES `' . $dbPool->get('core')->prefix . 'task_element` (`task_element_id`), + ADD CONSTRAINT `' . $dbPool->get('core')->prefix . 'task_element_media_ibfk_2` FOREIGN KEY (`task_element_media_dst`) REFERENCES `' . $dbPool->get('core')->prefix . 'media` (`media_id`);' + )->execute(); + $dbPool->get('core')->con->commit(); break; } diff --git a/Admin/Routes/Web/Api.php b/Admin/Routes/Web/Api.php new file mode 100644 index 0000000..85d0dc1 --- /dev/null +++ b/Admin/Routes/Web/Api.php @@ -0,0 +1,18 @@ + [ + [ + 'dest' => '\Modules\Tasks\Controller:apiTaskCreate', + 'verb' => RouteVerb::SET, + ], + ], + '^.*/api/task/element.*$' => [ + [ + 'dest' => '\Modules\Tasks\Controller:apiTaskElementCreate', + 'verb' => RouteVerb::SET, + ], + ], +]; diff --git a/Admin/Routes/Web/Backend.php b/Admin/Routes/Web/Backend.php index bf85247..a407d12 100644 --- a/Admin/Routes/Web/Backend.php +++ b/Admin/Routes/Web/Backend.php @@ -27,17 +27,4 @@ return [ 'verb' => RouteVerb::GET, ], ], - - '^.*/api/task$' => [ - [ - 'dest' => '\Modules\Tasks\Controller:apiTaskCreate', - 'verb' => RouteVerb::SET, - ], - ], - '^.*/api/task/element.*$' => [ - [ - 'dest' => '\Modules\Tasks\Controller:apiTaskElementCreate', - 'verb' => RouteVerb::SET, - ], - ], ]; diff --git a/Models/Task.php b/Models/Task.php index 6eb94a2..b50e2f2 100644 --- a/Models/Task.php +++ b/Models/Task.php @@ -119,6 +119,8 @@ class Task */ protected $schedule = null; + protected $media = null; + /** * Constructor. * diff --git a/Models/TaskElementMapper.php b/Models/TaskElementMapper.php index 5b15db1..176c5a4 100644 --- a/Models/TaskElementMapper.php +++ b/Models/TaskElementMapper.php @@ -49,6 +49,21 @@ class TaskElementMapper extends DataMapperAbstract 'task_element_created_at' => ['name' => 'task_element_created_at', 'type' => 'DateTime', 'internal' => 'createdAt'], ]; + /** + * Has many relation. + * + * @var array + * @since 1.0.0 + */ + protected static $hasMany = [ + 'media' => [ + 'mapper' => MediaMapper::class, + 'table' => 'task_element_media', + 'dst' => 'task_element_media_dst', + 'src' => 'task_element_media_src', + ], + ]; + /** * Primary table. * diff --git a/Models/TaskMapper.php b/Models/TaskMapper.php index c377045..3e9de1b 100644 --- a/Models/TaskMapper.php +++ b/Models/TaskMapper.php @@ -64,11 +64,16 @@ class TaskMapper extends DataMapperAbstract protected static $hasMany = [ 'taskElements' => [ 'mapper' => TaskElementMapper::class, - 'relationmapper' => TaskElementMapper::class, 'table' => 'task_element', 'dst' => 'task_element_task', 'src' => null, ], + 'media' => [ + 'mapper' => MediaMapper::class, + 'table' => 'task_media', + 'dst' => 'task_media_dst', + 'src' => 'task_media_src', + ], ]; /**