Spaces:
No application file
No application file
File size: 2,552 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
<?php
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]);
}
}
|