芝麻web文件管理V1.00
编辑当前文件:/home/mgatv524/cms.mgaplay.com.br/lib/Listener/OnMediaDelete/WidgetListener.php
. */ namespace Xibo\Listener\OnMediaDelete; use Xibo\Event\MediaDeleteEvent; use Xibo\Factory\ModuleFactory; use Xibo\Factory\WidgetFactory; use Xibo\Listener\ListenerLoggerTrait; use Xibo\Storage\StorageServiceInterface; class WidgetListener { use ListenerLoggerTrait; /** @var WidgetFactory */ private $widgetFactory; /** @var \Xibo\Factory\ModuleFactory */ private $moduleFactory; /** @var StorageServiceInterface */ private $storageService; public function __construct( StorageServiceInterface $storageService, WidgetFactory $widgetFactory, ModuleFactory $moduleFactory ) { $this->storageService = $storageService; $this->widgetFactory = $widgetFactory; $this->moduleFactory = $moduleFactory; } /** * @param MediaDeleteEvent $event * @throws \Xibo\Support\Exception\GeneralException */ public function __invoke(MediaDeleteEvent $event) { $media = $event->getMedia(); $parentMedia = $event->getParentMedia(); foreach ($this->widgetFactory->getByMediaId($media->mediaId) as $widget) { $widget->unassignMedia($media->mediaId); if ($parentMedia != null) { // Assign the parent media to the widget instead $widget->assignMedia($parentMedia->mediaId); // Swap any audio nodes over to this new widget media assignment. $this->storageService->update(' UPDATE `lkwidgetaudio` SET mediaId = :mediaId WHERE widgetId = :widgetId AND mediaId = :oldMediaId ', [ 'mediaId' => $parentMedia->mediaId, 'widgetId' => $widget->widgetId, 'oldMediaId' => $media->mediaId ]); } else { // Also delete the `lkwidgetaudio` foreach ($widget->audio as $audio) { $widget->unassignAudioById($audio->mediaId); $audio->delete(); } } // This action might result in us deleting a widget (unless we are a temporary file with an expiry date) if ($media->mediaType != 'module' && $this->moduleFactory->getByType($widget->type)->regionSpecific === 0 && count($widget->mediaIds) <= 0 ) { $widget->delete(); } else { $widget->save(['saveWidgetOptions' => false]); } } } }