Initial Upload

This commit is contained in:
Matt Batchelder
2025-12-02 10:32:59 -05:00
commit 05ce0da296
2240 changed files with 467811 additions and 0 deletions

View File

@@ -0,0 +1,50 @@
<?php
/**
* Copyright (C) 2022 Xibo Signage Ltd
*
* Xibo - Digital Signage - http://www.xibo.org.uk
*
* 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\Listener\OnFolderMoving;
use Xibo\Event\FolderMovingEvent;
use Xibo\Factory\DataSetFactory;
class DataSetListener
{
/**
* @var DataSetFactory
*/
private $dataSetFactory;
public function __construct(DataSetFactory $dataSetFactory)
{
$this->dataSetFactory = $dataSetFactory;
}
public function __invoke(FolderMovingEvent $event)
{
$folder = $event->getFolder();
$newFolder = $event->getNewFolder();
foreach ($this->dataSetFactory->getByFolderId($folder->getId()) as $dataSet) {
$dataSet->folderId = $newFolder->getId();
$dataSet->permissionsFolderId = $newFolder->getPermissionFolderIdOrThis();
$dataSet->updateFolders('dataset');
}
}
}

View File

@@ -0,0 +1,55 @@
<?php
/**
* Copyright (C) 2022 Xibo Signage Ltd
*
* Xibo - Digital Signage - http://www.xibo.org.uk
*
* 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\Listener\OnFolderMoving;
use Xibo\Event\FolderMovingEvent;
use Xibo\Factory\FolderFactory;
class FolderListener
{
/**
* @var FolderFactory
*/
private $folderFactory;
public function __construct(FolderFactory $folderFactory)
{
$this->folderFactory = $folderFactory;
}
public function __invoke(FolderMovingEvent $event)
{
$merge = $event->getIsMerge();
if ($merge) {
$folder = $event->getFolder();
$newFolder = $event->getNewFolder();
// on merge we delete the original Folder and move its content to the new selected folder
// sub-folders are moved to their new parent as well
foreach (array_filter(explode(',', $folder->children)) as $childFolderId) {
$childFolder = $this->folderFactory->getById($childFolderId, 0);
$childFolder->updateFoldersAfterMove($folder->getId(), $newFolder->getId());
}
}
}
}

View File

@@ -0,0 +1,50 @@
<?php
/**
* Copyright (C) 2022 Xibo Signage Ltd
*
* Xibo - Digital Signage - http://www.xibo.org.uk
*
* 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\Listener\OnFolderMoving;
use Xibo\Event\FolderMovingEvent;
use Xibo\Factory\MenuBoardFactory;
class MenuBoardListener
{
/**
* @var MenuBoardFactory
*/
private $menuBoardFactory;
public function __construct(MenuBoardFactory $menuBoardFactory)
{
$this->menuBoardFactory = $menuBoardFactory;
}
public function __invoke(FolderMovingEvent $event)
{
$folder = $event->getFolder();
$newFolder = $event->getNewFolder();
foreach ($this->menuBoardFactory->getbyFolderId($folder->getId()) as $menuBoard) {
$menuBoard->folderId = $newFolder->getId();
$menuBoard->permissionsFolderId = $newFolder->getPermissionFolderIdOrThis();
$menuBoard->updateFolders('menu_board');
}
}
}

View File

@@ -0,0 +1,58 @@
<?php
/**
* Copyright (C) 2022 Xibo Signage Ltd
*
* Xibo - Digital Signage - http://www.xibo.org.uk
*
* 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\Listener\OnFolderMoving;
use Xibo\Event\FolderMovingEvent;
use Xibo\Factory\UserFactory;
use Xibo\Storage\StorageServiceInterface;
class UserListener
{
/**
* @var UserFactory
*/
private $userFactory;
/**
* @var StorageServiceInterface
*/
private $store;
public function __construct(UserFactory $userFactory, StorageServiceInterface $store)
{
$this->userFactory = $userFactory;
$this->store = $store;
}
public function __invoke(FolderMovingEvent $event)
{
$folder = $event->getFolder();
$newFolder = $event->getNewFolder();
foreach ($this->userFactory->getByHomeFolderId($folder->getId()) as $user) {
$this->store->update('UPDATE `user` SET homeFolderId = :newFolderId WHERE homeFolderId = :oldFolderId AND userId = :userId', [
'newFolderId' => $newFolder->getId(),
'oldFolderId' => $folder->getId(),
'userId' => $user->getId()
]);
}
}
}