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 index a19df99..557c833 100644 --- a/Admin/Routes/Web/Api.php +++ b/Admin/Routes/Web/Api.php @@ -16,5 +16,3 @@ return [ ], ], ]; - - 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 e180a0d..3c0da81 100644 --- a/Models/TaskMapper.php +++ b/Models/TaskMapper.php @@ -68,6 +68,12 @@ class TaskMapper extends DataMapperAbstract 'dst' => 'task_element_task', 'src' => null, ], + 'media' => [ + 'mapper' => MediaMapper::class, + 'table' => 'task_media', + 'dst' => 'task_media_dst', + 'src' => 'task_media_src', + ], ]; /**