RequestHandlerBase.php in Panels 8.4
File
panels_ipe/src/Helpers/RequestHandlerBase.php
View source
<?php
namespace Drupal\panels_ipe\Helpers;
use Drupal\Component\Serialization\Json;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\panels\Plugin\DisplayVariant\PanelsDisplayVariant;
use Drupal\panels\Storage\PanelsStorageManagerInterface;
use Drupal\panels_ipe\Exception\EmptyRequestContentException;
use Drupal\Core\TempStore\SharedTempStore;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
abstract class RequestHandlerBase implements RequestHandlerInterface {
private $responseStatusCode = 200;
private $response = [];
private $tempStore;
private $panelsStore;
private $moduleHandler;
public function __construct(ModuleHandlerInterface $module_handler, PanelsStorageManagerInterface $panels_store, SharedTempStore $temp_store) {
$this->moduleHandler = $module_handler;
$this->panelsStore = $panels_store;
$this->tempStore = $temp_store;
}
public function handleRequest(PanelsDisplayVariant $panels_display, Request $request, $save_to_temp_store = FALSE) {
$this
->setResponse([]);
try {
$this
->handle($panels_display, self::decodeRequest($request), $save_to_temp_store);
} catch (EmptyRequestContentException $e) {
$this
->setResponse([
'success' => FALSE,
], 400);
}
}
protected abstract function handle(PanelsDisplayVariant $panels_display, $decoded_request, $save_to_temp_store = FALSE);
protected static function decodeRequest(Request $request) {
if (empty($request
->getContent())) {
throw new EmptyRequestContentException();
}
return Json::decode($request
->getContent());
}
protected function invokeHook($hook, array $arguments) {
$this->moduleHandler
->invokeAll($hook, $arguments);
}
protected function savePanelsDisplay(PanelsDisplayVariant $panels_display) {
$this
->deletePanelsDisplayTempStore($panels_display);
$this->panelsStore
->save($panels_display);
}
protected function savePanelsDisplayToTempStore(PanelsDisplayVariant $panels_display) {
$this->tempStore
->set($panels_display
->getTempStoreId(), $panels_display
->getConfiguration());
}
protected function deletePanelsDisplayTempStore(PanelsDisplayVariant $panels_display) {
$this->tempStore
->delete($panels_display
->getTempStoreId());
}
public function getJsonResponse() {
return new JsonResponse($this->response, $this->responseStatusCode);
}
protected function setResponse(array $response, $response_status_code = 200) {
$this->response = $response;
$this->responseStatusCode = $response_status_code;
}
}