Files
Cloud-CMS/lib/Dependencies/Factories.php

537 lines
26 KiB
PHP
Raw Normal View History

2025-12-02 10:32:59 -05:00
<?php
/*
* Copyright (C) 2025 Xibo Signage Ltd
*
* Xibo - Digital Signage - https://xibosignage.com
*
* This file is part of Xibo.
*
* Xibo is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* Xibo is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with Xibo. If not, see <http://www.gnu.org/licenses/>.
*/
namespace Xibo\Dependencies;
use Psr\Container\ContainerInterface;
/**
* Helper class to add factories to DI.
*/
class Factories
{
/**
* Register Factories with DI
*/
public static function registerFactoriesWithDi()
{
return [
'actionFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\ActionFactory(
$c->get('user'),
$c->get('userFactory')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'apiRequestsFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\ApplicationRequestsFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'applicationFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\ApplicationFactory(
$c->get('user'),
$c->get('applicationRedirectUriFactory'),
$c->get('applicationScopeFactory')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'applicationRedirectUriFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\ApplicationRedirectUriFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'applicationScopeFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\ApplicationScopeFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'auditLogFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\AuditLogFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'bandwidthFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\BandwidthFactory(
$c->get('pool'),
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'campaignFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\CampaignFactory(
$c->get('user'),
$c->get('userFactory'),
$c->get('permissionFactory'),
$c->get('scheduleFactory'),
$c->get('displayNotifyService')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'commandFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\CommandFactory(
$c->get('user'),
$c->get('userFactory')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'connectorFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\ConnectorFactory(
$c->get('pool'),
$c->get('configService'),
$c->get('jwtService'),
$c->get('playerActionService'),
$c
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'dataSetColumnFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\DataSetColumnFactory(
$c->get('dataTypeFactory'),
$c->get('dataSetColumnTypeFactory')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'dataSetColumnTypeFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\DataSetColumnTypeFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'dataSetFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\DataSetFactory(
$c->get('user'),
$c->get('userFactory'),
$c->get('configService'),
$c->get('pool'),
$c->get('dataSetColumnFactory'),
$c->get('permissionFactory'),
$c->get('displayNotifyService')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'dataSetRssFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\DataSetRssFactory(
$c->get('user'),
$c->get('userFactory')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'dataTypeFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\DataTypeFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'dayPartFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\DayPartFactory(
$c->get('user'),
$c->get('userFactory')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'displayFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\DisplayFactory(
$c->get('user'),
$c->get('userFactory'),
$c->get('displayNotifyService'),
$c->get('configService'),
$c->get('displayGroupFactory'),
$c->get('displayProfileFactory'),
$c->get('folderFactory')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'displayEventFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\DisplayEventFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'displayGroupFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\DisplayGroupFactory(
$c->get('user'),
$c->get('userFactory'),
$c->get('permissionFactory')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'displayTypeFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\DisplayTypeFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'displayProfileFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\DisplayProfileFactory(
$c->get('configService'),
$c->get('commandFactory')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'folderFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\FolderFactory(
$c->get('permissionFactory'),
$c->get('user'),
$c->get('userFactory')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'fontFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\FontFactory(
$c->get('configService')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'layoutFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\LayoutFactory(
$c->get('user'),
$c->get('userFactory'),
$c->get('configService'),
$c->get('permissionFactory'),
$c->get('regionFactory'),
$c->get('tagFactory'),
$c->get('campaignFactory'),
$c->get('mediaFactory'),
$c->get('moduleFactory'),
$c->get('moduleTemplateFactory'),
$c->get('resolutionFactory'),
$c->get('widgetFactory'),
$c->get('widgetOptionFactory'),
$c->get('playlistFactory'),
$c->get('widgetAudioFactory'),
$c->get('actionFactory'),
$c->get('folderFactory'),
$c->get('fontFactory'),
$c->get('widgetDataFactory'),
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
if ($c->has('pool')) {
$repository->usePool($c->get('pool'));
}
return $repository;
},
'logFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\LogFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'mediaFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\MediaFactory(
$c->get('user'),
$c->get('userFactory'),
$c->get('configService'),
$c->get('permissionFactory'),
$c->get('playlistFactory')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'menuBoardCategoryFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\MenuBoardCategoryFactory(
$c->get('menuBoardProductOptionFactory')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'menuBoardProductOptionFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\MenuBoardProductOptionFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'menuBoardFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\MenuBoardFactory(
$c->get('user'),
$c->get('userFactory'),
$c->get('configService'),
$c->get('pool'),
$c->get('permissionFactory'),
$c->get('menuBoardCategoryFactory'),
$c->get('displayNotifyService')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'moduleFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\ModuleFactory(
$c->get('configService')->getSetting('LIBRARY_LOCATION') . 'widget',
$c->get('pool'),
$c->get('view'),
$c->get('configService')
);
$repository
->setAclDependencies(
$c->get('user'),
$c->get('userFactory')
)
->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'moduleTemplateFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\ModuleTemplateFactory(
$c->get('pool'),
$c->get('view'),
);
$repository
->setAclDependencies(
$c->get('user'),
$c->get('userFactory')
)
->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'notificationFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\NotificationFactory(
$c->get('user'),
$c->get('userFactory'),
$c->get('userGroupFactory'),
$c->get('displayGroupFactory')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'permissionFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\PermissionFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'playerFaultFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\PlayerFaultFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'playerVersionFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\PlayerVersionFactory(
$c->get('user'),
$c->get('userFactory'),
$c->get('configService')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'playlistFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\PlaylistFactory(
$c->get('configService'),
$c->get('user'),
$c->get('userFactory'),
$c->get('permissionFactory'),
$c->get('widgetFactory')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'regionFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\RegionFactory(
$c->get('permissionFactory'),
$c->get('regionOptionFactory'),
$c->get('playlistFactory'),
$c->get('actionFactory'),
$c->get('campaignFactory')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'regionOptionFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\RegionOptionFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'requiredFileFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\RequiredFileFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'reportScheduleFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\ReportScheduleFactory(
$c->get('user'),
$c->get('userFactory')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'resolutionFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\ResolutionFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'savedReportFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\SavedReportFactory(
$c->get('user'),
$c->get('userFactory'),
$c->get('configService'),
$c->get('mediaFactory')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'scheduleFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\ScheduleFactory(
$c->get('configService'),
$c->get('pool'),
$c->get('displayGroupFactory'),
$c->get('dayPartFactory'),
$c->get('userFactory'),
$c->get('scheduleReminderFactory'),
$c->get('scheduleExclusionFactory'),
$c->get('user'),
$c->get('scheduleCriteriaFactory')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'scheduleReminderFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\ScheduleReminderFactory(
$c->get('user'),
$c->get('userFactory'),
$c->get('configService')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'scheduleExclusionFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\ScheduleExclusionFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'scheduleCriteriaFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\ScheduleCriteriaFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'sessionFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\SessionFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'syncGroupFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\SyncGroupFactory(
$c->get('user'),
$c->get('userFactory'),
$c->get('permissionFactory'),
$c->get('displayFactory'),
$c->get('scheduleFactory')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'tagFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\TagFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'taskFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\TaskFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'transitionFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\TransitionFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'userFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\UserFactory(
$c->get('configService'),
$c->get('permissionFactory'),
$c->get('userOptionFactory'),
$c->get('applicationScopeFactory')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'userGroupFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\UserGroupFactory(
$c->get('user'),
$c->get('userFactory')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'userNotificationFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\UserNotificationFactory(
$c->get('user'),
$c->get('userFactory')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'userOptionFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\UserOptionFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'userTypeFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\UserTypeFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'widgetFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\WidgetFactory(
$c->get('user'),
$c->get('userFactory'),
$c->get('widgetOptionFactory'),
$c->get('widgetMediaFactory'),
$c->get('widgetAudioFactory'),
$c->get('permissionFactory'),
$c->get('displayNotifyService'),
$c->get('actionFactory'),
$c->get('moduleTemplateFactory')
);
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'widgetMediaFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\WidgetMediaFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'widgetAudioFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\WidgetAudioFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'widgetOptionFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\WidgetOptionFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
'widgetDataFactory' => function (ContainerInterface $c) {
$repository = new \Xibo\Factory\WidgetDataFactory();
$repository->useBaseDependenciesService($c->get('RepositoryBaseDependenciesService'));
return $repository;
},
];
}
}