Commit f95f2ec3 authored by Simon Gadient's avatar Simon Gadient
Browse files

Merge branch 'KIME-4583' into 'master'

[TASK] Allow only delete records by arguments



See merge request !9
parents 85e2c0ce a374b380
Loading
Loading
Loading
Loading
+21 −1
Original line number Diff line number Diff line
@@ -34,6 +34,18 @@ class FrontendMappingService {
	 */
	protected $settings;

	/**
	 * @Flow\Inject
	 * @var \TYPO3\Flow\Persistence\PersistenceManagerInterface
	 */
	protected $persistenceManager;

	/**
	 * @Flow\Inject
	 * @var \TYPO3\Flow\Property\PropertyMapper
	 */
	protected $propertyMapper;

	/**
	 * @param string $context
	 * @param \TYPO3\Flow\Mvc\ActionRequest $request
@@ -48,8 +60,16 @@ class FrontendMappingService {
				$name = $contextArgument['name'];
				if (isset($contextArgument['static'])) {
					$arguments[$name] = $contextArgument['static'];
				} elseif ($request->hasArgument($name)) {
					$value = $request->getArgument($name);
					if (isset($contextArgument['domain'])) {
						$object = $this->propertyMapper->convert($value, $contextArgument['domain']);
						$arguments[$name] = $this->persistenceManager->getIdentifierByObject($object);
					} else {
						$arguments[$name] = $value;
					}
				} else {
					$arguments[$name] = $request->hasArgument($name) ? $request->getArgument($name) : NULL;
					$arguments[$name] = NULL;
				}
			}
		}
+21 −2
Original line number Diff line number Diff line
@@ -289,6 +289,24 @@ class SpreadsheetImportService {
		}
	}

	/**
	 * @param \TYPO3\Flow\Persistence\QueryInterface $query
	 * @param array $constraints
	 */
	private function mergeQueryConstraintsWithArguments(QueryInterface $query, &$constraints) {
		$contextArguments = $this->settings[$this->spreadsheetImport->getContext()]['arguments'];
		if (is_array($contextArguments)) {
			foreach ($contextArguments as $contextArgument) {
				$name = $contextArgument['name'];
				$arguments = $this->spreadsheetImport->getArguments();
				if (array_key_exists($name, $arguments)) {
					$value = $arguments[$name];
					$constraints[] = $query->equals($name, $value);
				}
			}
		}
	}

	/**
	 * @param array $identifiers
	 *
@@ -296,8 +314,9 @@ class SpreadsheetImportService {
	 */
	private function findObjectsByExcludedIds(array $identifiers) {
		$query = $this->getDomainRepository()->createQuery();
		$constraint = $query->logicalNot($query->in('Persistence_Object_Identifier', $identifiers));
		return $query->matching($constraint)->execute();
		$constraints[] = $query->logicalNot($query->in('Persistence_Object_Identifier', $identifiers));
		$this->mergeQueryConstraintsWithArguments($query, $constraints);
		return $query->matching($query->logicalAnd($constraints))->execute();
	}

	/**