<?php

namespace Uhura\Grossmarkt\Backend\Controller;

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use TYPO3\CMS\Backend\ContextMenu\ContextMenu;
use TYPO3\CMS\Backend\Utility\BackendUtility;
use TYPO3\CMS\Core\Http\JsonResponse;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use Uhura\Grossmarkt\Backend\Services\BackendUserAccess;

class ContextMenuController extends \TYPO3\CMS\Backend\Controller\ContextMenuController
{
	/**
	 * Renders a context menu
	 * Modify ContextMenu render by user permissions
	 */
	public function getContextMenuAction(ServerRequestInterface $request): ResponseInterface
	{
		$contextMenu = GeneralUtility::makeInstance(ContextMenu::class);

		$params = $request->getQueryParams();
		$context = $params['context'] ?? '';
		$items = $contextMenu->getItems($params['table'], $params['uid'], $context);
		if (!is_array($items)) {
			$items = [];
		}
		$record = BackendUtility::getRecord($params['table'],$params['uid'],'pid');
		if(isset($record['pid']) ) {
			if(!BackendUserAccess::isUserHaveCreateContentPermissions($record['pid'])){
				unset($items['new']);
				unset($items['disable']);
				unset($items['copy']);
			}
			if(!BackendUserAccess::isUserHaveDeleteContentPermissions($record['pid'])){
				unset($items['delete']);
				unset($items['cut']);
			}
		}

		return new JsonResponse($items);
	}
}