diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 57b5a69..3518363 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -354,7 +354,7 @@ final class ApiController extends Controller */ public function apiKanbanBoardUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { - $old = clone KanbanBoardMapper::get((int) $request->getData('id')); + $old = clone KanbanBoardMapper::get()->where('id', (int) $request->getData('id'))->execute(); $new = $this->updateBoardFromRequest($request); $this->updateModel($request->header->account, $old, $new, KanbanBoardMapper::class, 'board', $request->getOrigin()); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Board', 'Board successfully updated', $new); @@ -372,7 +372,7 @@ final class ApiController extends Controller private function updateBoardFromRequest(RequestAbstract $request) : KanbanBoard { /** @var KanbanBoard $board */ - $board = KanbanBoardMapper::get((int) $request->getData('id')); + $board = KanbanBoardMapper::get()->where('id', (int) $request->getData('id'))->execute(); $board->name = $request->getData('title') ?? $board->name; $board->description = Markdown::parse((string) ($request->getData('plain') ?? $board->descriptionRaw)); $board->descriptionRaw = (string) ($request->getData('plain') ?? $board->descriptionRaw); diff --git a/Controller/BackendController.php b/Controller/BackendController.php index 28e8f76..2df893f 100755 --- a/Controller/BackendController.php +++ b/Controller/BackendController.php @@ -18,8 +18,10 @@ use Modules\Kanban\Models\KanbanBoardMapper; use Modules\Kanban\Models\KanbanCardMapper; use Modules\Kanban\Models\PermissionState; use phpOMS\Account\PermissionType; +use phpOMS\Algorithm\Sort\SortOrder; use phpOMS\Asset\AssetType; use phpOMS\Contract\RenderableInterface; +use phpOMS\DataStorage\Database\Query\OrderType; use phpOMS\Message\Http\RequestStatusCode; use phpOMS\Message\RequestAbstract; use phpOMS\Message\ResponseAbstract; @@ -74,10 +76,14 @@ final class BackendController extends Controller $view->setTemplate('/Modules/Kanban/Theme/Backend/kanban-dashboard'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005801001, $request, $response)); - $list = KanbanBoardMapper - ::with('columns', models: null) - ::with('language', $response->getLanguage()) - ::getNewest(20, depth: 3); + $list = KanbanBoardMapper::getAll() + ->with('tags') + ->with('tags/title') + ->where('tags/title/language', $request->getLanguage()) + ->sort('createdAt', OrderType::DESC) + ->limit(20) + ->execute(); + $view->setData('boards', $list); return $view; @@ -99,8 +105,15 @@ final class BackendController extends Controller { $view = new View($this->app->l11nManager, $request, $response); - $board = KanbanBoardMapper::with('language', $response->getLanguage()) - ::get((int) $request->getData('id'), depth: 5); + $board = KanbanBoardMapper::get() + ->with('columns') + ->with('columns/cards') + ->with('columns/cards/tags') + ->with('columns/cards/tags/title') + ->where('id', (int) $request->getData('id')) + ->where('columns/cards/tags/title/language', $request->getLanguage()) + ->execute(); + $accountId = $request->header->account; if ($board->createdBy->getId() !== $accountId @@ -138,9 +151,13 @@ final class BackendController extends Controller $view->setTemplate('/Modules/Kanban/Theme/Backend/kanban-archive'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1005801001, $request, $response)); - $list = KanbanBoardMapper::with('columns', models: null) - ::with('language', $response->getLanguage()) - ::getNewest(20, depth: 3); + $list = KanbanBoardMapper::getAll() + ->with('tags') + ->with('tags/title') + ->where('tags/title/language', $request->getLanguage()) + ->sort('createdAt', OrderType::DESC) + ->limit(25) + ->execute(); $view->setData('boards', $list); @@ -195,7 +212,7 @@ final class BackendController extends Controller { $view = new View($this->app->l11nManager, $request, $response); - $card = KanbanCardMapper::get((int) $request->getData('id')); + $card = KanbanCardMapper::get()->where('id', (int) $request->getData('id'))->execute(); $accountId = $request->header->account; if ($card->createdBy->getId() !== $accountId diff --git a/Models/KanbanBoardMapper.php b/Models/KanbanBoardMapper.php index 1cea631..ee5234a 100755 --- a/Models/KanbanBoardMapper.php +++ b/Models/KanbanBoardMapper.php @@ -16,7 +16,7 @@ namespace Modules\Kanban\Models; use Modules\Admin\Models\AccountMapper; use Modules\Tag\Models\TagMapper; -use phpOMS\DataStorage\Database\DataMapperAbstract; +use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; /** * Mapper class. @@ -26,7 +26,7 @@ use phpOMS\DataStorage\Database\DataMapperAbstract; * @link https://orange-management.org * @since 1.0.0 */ -final class KanbanBoardMapper extends DataMapperAbstract +final class KanbanBoardMapper extends DataMapperFactory { /** * Columns. @@ -34,7 +34,7 @@ final class KanbanBoardMapper extends DataMapperAbstract * @var array * @since 1.0.0 */ - protected static array $columns = [ + public const COLUMNS = [ 'kanban_board_id' => ['name' => 'kanban_board_id', 'type' => 'int', 'internal' => 'id'], 'kanban_board_name' => ['name' => 'kanban_board_name', 'type' => 'string', 'internal' => 'name'], 'kanban_board_desc' => ['name' => 'kanban_board_desc', 'type' => 'string', 'internal' => 'description'], @@ -52,7 +52,7 @@ final class KanbanBoardMapper extends DataMapperAbstract * @var array * @since 1.0.0 */ - protected static array $hasMany = [ + public const HAS_MANY = [ 'columns' => [ 'mapper' => KanbanColumnMapper::class, 'table' => 'kanban_column', @@ -73,7 +73,7 @@ final class KanbanBoardMapper extends DataMapperAbstract * @var array * @since 1.0.0 */ - protected static array $belongsTo = [ + public const BELONGS_TO = [ 'createdBy' => [ 'mapper' => AccountMapper::class, 'external' => 'kanban_board_created_by', @@ -86,7 +86,7 @@ final class KanbanBoardMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $table = 'kanban_board'; + public const TABLE = 'kanban_board'; /** * Created at. @@ -94,7 +94,7 @@ final class KanbanBoardMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $createdAt = 'kanban_board_created_at'; + public const CREATED_AT = 'kanban_board_created_at'; /** * Primary field name. @@ -102,5 +102,5 @@ final class KanbanBoardMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $primaryField = 'kanban_board_id'; + public const PRIMARYFIELD ='kanban_board_id'; } diff --git a/Models/KanbanCardCommentMapper.php b/Models/KanbanCardCommentMapper.php index d60bfed..89935b0 100755 --- a/Models/KanbanCardCommentMapper.php +++ b/Models/KanbanCardCommentMapper.php @@ -16,7 +16,7 @@ namespace Modules\Kanban\Models; use Modules\Admin\Models\AccountMapper; use Modules\Media\Models\MediaMapper; -use phpOMS\DataStorage\Database\DataMapperAbstract; +use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; /** * Mapper class. @@ -26,7 +26,7 @@ use phpOMS\DataStorage\Database\DataMapperAbstract; * @link https://orange-management.org * @since 1.0.0 */ -final class KanbanCardCommentMapper extends DataMapperAbstract +final class KanbanCardCommentMapper extends DataMapperFactory { /** * Columns. @@ -34,7 +34,7 @@ final class KanbanCardCommentMapper extends DataMapperAbstract * @var array * @since 1.0.0 */ - protected static array $columns = [ + public const COLUMNS = [ 'kanban_card_comment_id' => ['name' => 'kanban_card_comment_id', 'type' => 'int', 'internal' => 'id'], 'kanban_card_comment_description' => ['name' => 'kanban_card_comment_description', 'type' => 'string', 'internal' => 'description'], 'kanban_card_comment_descriptionraw' => ['name' => 'kanban_card_comment_descriptionraw', 'type' => 'string', 'internal' => 'descriptionRaw'], @@ -49,7 +49,7 @@ final class KanbanCardCommentMapper extends DataMapperAbstract * @var array * @since 1.0.0 */ - protected static array $hasMany = [ + public const HAS_MANY = [ 'media' => [ 'mapper' => MediaMapper::class, 'table' => 'kanban_card_comment_media', @@ -64,7 +64,7 @@ final class KanbanCardCommentMapper extends DataMapperAbstract * @var array * @since 1.0.0 */ - protected static array $belongsTo = [ + public const BELONGS_TO = [ 'createdBy' => [ 'mapper' => AccountMapper::class, 'external' => 'kanban_card_comment_created_by', @@ -77,7 +77,7 @@ final class KanbanCardCommentMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $table = 'kanban_card_comment'; + public const TABLE = 'kanban_card_comment'; /** * Created at. @@ -85,7 +85,7 @@ final class KanbanCardCommentMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $createdAt = 'kanban_card_comment_created_at'; + public const CREATED_AT = 'kanban_card_comment_created_at'; /** * Primary field name. @@ -93,5 +93,5 @@ final class KanbanCardCommentMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $primaryField = 'kanban_card_comment_id'; + public const PRIMARYFIELD ='kanban_card_comment_id'; } diff --git a/Models/KanbanCardMapper.php b/Models/KanbanCardMapper.php index 140597e..6ae870e 100755 --- a/Models/KanbanCardMapper.php +++ b/Models/KanbanCardMapper.php @@ -17,7 +17,7 @@ namespace Modules\Kanban\Models; use Modules\Admin\Models\AccountMapper; use Modules\Media\Models\MediaMapper; use Modules\Tag\Models\TagMapper; -use phpOMS\DataStorage\Database\DataMapperAbstract; +use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; /** * Mapper class. @@ -27,7 +27,7 @@ use phpOMS\DataStorage\Database\DataMapperAbstract; * @link https://orange-management.org * @since 1.0.0 */ -final class KanbanCardMapper extends DataMapperAbstract +final class KanbanCardMapper extends DataMapperFactory { /** * Columns. @@ -35,7 +35,7 @@ final class KanbanCardMapper extends DataMapperAbstract * @var array * @since 1.0.0 */ - protected static array $columns = [ + public const COLUMNS = [ 'kanban_card_id' => ['name' => 'kanban_card_id', 'type' => 'int', 'internal' => 'id'], 'kanban_card_name' => ['name' => 'kanban_card_name', 'type' => 'string', 'internal' => 'name'], 'kanban_card_description' => ['name' => 'kanban_card_description', 'type' => 'string', 'internal' => 'description'], @@ -57,7 +57,7 @@ final class KanbanCardMapper extends DataMapperAbstract * @var array * @since 1.0.0 */ - protected static array $belongsTo = [ + public const BELONGS_TO = [ 'createdBy' => [ 'mapper' => AccountMapper::class, 'external' => 'kanban_card_created_by', @@ -70,7 +70,7 @@ final class KanbanCardMapper extends DataMapperAbstract * @var array * @since 1.0.0 */ - protected static array $hasMany = [ + public const HAS_MANY = [ 'media' => [ 'mapper' => MediaMapper::class, 'table' => 'kanban_card_media', @@ -97,7 +97,7 @@ final class KanbanCardMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $table = 'kanban_card'; + public const TABLE = 'kanban_card'; /** * Created at. @@ -105,7 +105,7 @@ final class KanbanCardMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $createdAt = 'kanban_card_created_at'; + public const CREATED_AT = 'kanban_card_created_at'; /** * Primary field name. @@ -113,5 +113,5 @@ final class KanbanCardMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $primaryField = 'kanban_card_id'; + public const PRIMARYFIELD ='kanban_card_id'; } diff --git a/Models/KanbanColumnMapper.php b/Models/KanbanColumnMapper.php index a5f958a..2a61a77 100755 --- a/Models/KanbanColumnMapper.php +++ b/Models/KanbanColumnMapper.php @@ -14,7 +14,7 @@ declare(strict_types=1); namespace Modules\Kanban\Models; -use phpOMS\DataStorage\Database\DataMapperAbstract; +use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; /** * Mapper class. @@ -24,7 +24,7 @@ use phpOMS\DataStorage\Database\DataMapperAbstract; * @link https://orange-management.org * @since 1.0.0 */ -final class KanbanColumnMapper extends DataMapperAbstract +final class KanbanColumnMapper extends DataMapperFactory { /** * Columns. @@ -32,7 +32,7 @@ final class KanbanColumnMapper extends DataMapperAbstract * @var array * @since 1.0.0 */ - protected static array $columns = [ + public const COLUMNS = [ 'kanban_column_id' => ['name' => 'kanban_column_id', 'type' => 'int', 'internal' => 'id'], 'kanban_column_name' => ['name' => 'kanban_column_name', 'type' => 'string', 'internal' => 'name'], 'kanban_column_order' => ['name' => 'kanban_column_order', 'type' => 'int', 'internal' => 'order'], @@ -45,7 +45,7 @@ final class KanbanColumnMapper extends DataMapperAbstract * @var array * @since 1.0.0 */ - protected static array $hasMany = [ + public const HAS_MANY = [ 'cards' => [ 'mapper' => KanbanCardMapper::class, 'table' => 'kanban_card', @@ -60,7 +60,7 @@ final class KanbanColumnMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $table = 'kanban_column'; + public const TABLE = 'kanban_column'; /** * Primary field name. @@ -68,5 +68,5 @@ final class KanbanColumnMapper extends DataMapperAbstract * @var string * @since 1.0.0 */ - protected static string $primaryField = 'kanban_column_id'; + public const PRIMARYFIELD ='kanban_column_id'; } diff --git a/tests/Bootstrap.php b/tests/Bootstrap.php index f5fc99c..252a62f 100755 --- a/tests/Bootstrap.php +++ b/tests/Bootstrap.php @@ -12,7 +12,7 @@ require_once __DIR__ . '/../vendor/autoload.php'; require_once __DIR__ . '/Autoloader.php'; use phpOMS\DataStorage\Database\DatabasePool; -use phpOMS\DataStorage\Database\DataMapperAbstract; +use phpOMS\DataStorage\Database\Mapper\DataMapperFactory; use phpOMS\DataStorage\Session\HttpSession; $CONFIG = [ @@ -329,7 +329,7 @@ $GLOBALS['dbpool']->create('delete', $CONFIG['db']['core']['masters']['delete']) $GLOBALS['dbpool']->create('insert', $CONFIG['db']['core']['masters']['insert']); $GLOBALS['dbpool']->create('schema', $CONFIG['db']['core']['masters']['schema']); -DataMapperAbstract::setConnection($GLOBALS['dbpool']->get()); +DataMapperFactory::db($GLOBALS['dbpool']->get()); $GLOBALS['frameworkpath'] = '/phpOMS/'; diff --git a/tests/Models/KanbanBoardMapperTest.php b/tests/Models/KanbanBoardMapperTest.php index 22c6b5d..ed7ec44 100644 --- a/tests/Models/KanbanBoardMapperTest.php +++ b/tests/Models/KanbanBoardMapperTest.php @@ -35,11 +35,11 @@ final class KanbanBoardMapperTest extends \PHPUnit\Framework\TestCase $board->description = 'This is some description'; $board->createdBy = new NullAccount(1); - $id = KanbanBoardMapper::create($board); + $id = KanbanBoardMapper::create()->execute($board); self::assertGreaterThan(0, $board->getId()); self::assertEquals($id, $board->getId()); - $boardR = KanbanBoardMapper::get($board->getId()); + $boardR = KanbanBoardMapper::get()->where('id', $board->getId())->execute(); self::assertEquals($board->name, $boardR->name); self::assertEquals($board->getStatus(), $boardR->getStatus()); self::assertEquals($board->description, $boardR->description); diff --git a/tests/Models/KanbanCardCommentMapperTest.php b/tests/Models/KanbanCardCommentMapperTest.php index fa689c8..3b51f2f 100644 --- a/tests/Models/KanbanCardCommentMapperTest.php +++ b/tests/Models/KanbanCardCommentMapperTest.php @@ -36,11 +36,11 @@ final class KanbanCardCommentMapperTest extends \PHPUnit\Framework\TestCase $comment->card = 1; $comment->createdBy = new NullAccount(1); - $id = KanbanCardCommentMapper::create($comment); + $id = KanbanCardCommentMapper::create()->execute($comment); self::assertGreaterThan(0, $comment->getId()); self::assertEquals($id, $comment->getId()); - $commentR = KanbanCardCommentMapper::get($comment->getId()); + $commentR = KanbanCardCommentMapper::get()->where('id', $comment->getId())->execute(); self::assertEquals($comment->description, $commentR->description); self::assertEquals($comment->card, $commentR->card); self::assertEquals($comment->createdBy->getId(), $commentR->createdBy->getId()); diff --git a/tests/Models/KanbanCardMapperTest.php b/tests/Models/KanbanCardMapperTest.php index d90621a..b6625ae 100644 --- a/tests/Models/KanbanCardMapperTest.php +++ b/tests/Models/KanbanCardMapperTest.php @@ -45,11 +45,11 @@ final class KanbanCardMapperTest extends \PHPUnit\Framework\TestCase $card->addTag(new Tag()); $card->addTag(new Tag()); - $id = KanbanCardMapper::create($card); + $id = KanbanCardMapper::create()->execute($card); self::assertGreaterThan(0, $card->getId()); self::assertEquals($id, $card->getId()); - $cardR = KanbanCardMapper::get($card->getId()); + $cardR = KanbanCardMapper::get()->where('id', $card->getId())->execute(); self::assertEquals($card->name, $cardR->name); self::assertEquals($card->description, $cardR->description); self::assertEquals($card->column, $cardR->column); @@ -78,7 +78,7 @@ final class KanbanCardMapperTest extends \PHPUnit\Framework\TestCase $card->addTag(new Tag()); $card->addTag(new Tag()); - $id = KanbanCardMapper::create($card); + $id = KanbanCardMapper::create()->execute($card); self::assertGreaterThan(0, $card->getId()); self::assertEquals($id, $card->getId()); } diff --git a/tests/Models/KanbanColumnMapperTest.php b/tests/Models/KanbanColumnMapperTest.php index 5660cef..febb7d1 100644 --- a/tests/Models/KanbanColumnMapperTest.php +++ b/tests/Models/KanbanColumnMapperTest.php @@ -35,11 +35,11 @@ final class KanbanColumnMapperTest extends \PHPUnit\Framework\TestCase $column->board = 1; $column->order = 1; - $id = KanbanColumnMapper::create($column); + $id = KanbanColumnMapper::create()->execute($column); self::assertGreaterThan(0, $column->getId()); self::assertEquals($id, $column->getId()); - $columnR = KanbanColumnMapper::get($column->getId()); + $columnR = KanbanColumnMapper::get()->where('id', $column->getId())->execute(); self::assertEquals($column->name, $columnR->name); self::assertEquals($column->board, $columnR->board); self::assertEquals($column->order, $columnR->order);