Spaces:
No application file
No application file
| namespace Mautic\AssetBundle\Controller; | |
| use Gaufrette\Filesystem; | |
| use Mautic\AssetBundle\AssetEvents; | |
| use Mautic\AssetBundle\Event\RemoteAssetBrowseEvent; | |
| use Mautic\AssetBundle\Model\AssetModel; | |
| use Mautic\CoreBundle\Controller\AjaxController as CommonAjaxController; | |
| use Mautic\CoreBundle\Helper\InputHelper; | |
| use Symfony\Component\HttpFoundation\Request; | |
| class AjaxController extends CommonAjaxController | |
| { | |
| public function categoryListAction(Request $request): \Symfony\Component\HttpFoundation\JsonResponse | |
| { | |
| $assetModel = $this->getModel('asset'); | |
| \assert($assetModel instanceof AssetModel); | |
| $filter = InputHelper::clean($request->query->get('filter')); | |
| $results = $assetModel->getLookupResults('category', $filter, 10); | |
| $dataArray = []; | |
| foreach ($results as $r) { | |
| $dataArray[] = [ | |
| 'label' => $r['title']." ({$r['id']})", | |
| 'value' => $r['id'], | |
| ]; | |
| } | |
| return $this->sendJsonResponse($dataArray); | |
| } | |
| /** | |
| * @throws \Exception | |
| */ | |
| public function fetchRemoteFilesAction(Request $request): \Symfony\Component\HttpFoundation\JsonResponse | |
| { | |
| $provider = InputHelper::string($request->request->get('provider')); | |
| $path = InputHelper::string($request->request->get('path', '')); | |
| $dispatcher = $this->dispatcher; | |
| $name = AssetEvents::ASSET_ON_REMOTE_BROWSE; | |
| if (!$dispatcher->hasListeners($name)) { | |
| return $this->sendJsonResponse(['success' => 0]); | |
| } | |
| /** @var \Mautic\PluginBundle\Helper\IntegrationHelper $integrationHelper */ | |
| $integrationHelper = $this->factory->getHelper('integration'); | |
| /** @var \Mautic\PluginBundle\Integration\AbstractIntegration $integration */ | |
| $integration = $integrationHelper->getIntegrationObject($provider); | |
| $event = new RemoteAssetBrowseEvent($integration); | |
| $dispatcher->dispatch($event, $name); | |
| if (!$adapter = $event->getAdapter()) { | |
| return $this->sendJsonResponse(['success' => 0]); | |
| } | |
| $connector = new Filesystem($adapter); | |
| $output = $this->renderView( | |
| '@MauticAsset/Remote/list.html.twig', | |
| [ | |
| 'connector' => $connector, | |
| 'integration' => $integration, | |
| 'items' => $connector->listKeys($path), | |
| ] | |
| ); | |
| return $this->sendJsonResponse(['success' => 1, 'output' => $output]); | |
| } | |
| } | |