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 { ...@@ -34,6 +34,18 @@ class FrontendMappingService {
*/ */
protected $settings; protected $settings;
/**
* @Flow\Inject
* @var \TYPO3\Flow\Persistence\PersistenceManagerInterface
*/
protected $persistenceManager;
/**
* @Flow\Inject
* @var \TYPO3\Flow\Property\PropertyMapper
*/
protected $propertyMapper;
/** /**
* @param string $context * @param string $context
* @param \TYPO3\Flow\Mvc\ActionRequest $request * @param \TYPO3\Flow\Mvc\ActionRequest $request
...@@ -48,8 +60,16 @@ class FrontendMappingService { ...@@ -48,8 +60,16 @@ class FrontendMappingService {
$name = $contextArgument['name']; $name = $contextArgument['name'];
if (isset($contextArgument['static'])) { if (isset($contextArgument['static'])) {
$arguments[$name] = $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 { } else {
$arguments[$name] = $request->hasArgument($name) ? $request->getArgument($name) : NULL; $arguments[$name] = NULL;
} }
} }
} }
......
...@@ -289,6 +289,24 @@ class SpreadsheetImportService { ...@@ -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 * @param array $identifiers
* *
...@@ -296,8 +314,9 @@ class SpreadsheetImportService { ...@@ -296,8 +314,9 @@ class SpreadsheetImportService {
*/ */
private function findObjectsByExcludedIds(array $identifiers) { private function findObjectsByExcludedIds(array $identifiers) {
$query = $this->getDomainRepository()->createQuery(); $query = $this->getDomainRepository()->createQuery();
$constraint = $query->logicalNot($query->in('Persistence_Object_Identifier', $identifiers)); $constraints[] = $query->logicalNot($query->in('Persistence_Object_Identifier', $identifiers));
return $query->matching($constraint)->execute(); $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