Commit f95f2ec3 authored by Simon Gadient's avatar Simon Gadient

Merge branch 'KIME-4583' into 'master'

[TASK] Allow only delete records by arguments



See merge request !9
parents 85e2c0ce a374b380
......@@ -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;
}
}
}
......
......@@ -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();
}
/**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment