add changetype

This commit is contained in:
Roland Gruber 2018-09-06 20:53:22 +02:00
parent a44350407e
commit 109e7d679c
2 changed files with 20 additions and 7 deletions

View File

@ -267,6 +267,14 @@ class Importer {
} }
else { else {
$type = $firstAttribute[Importer::VALUE]; $type = $firstAttribute[Importer::VALUE];
if ($type === 'add') {
$attributes = array();
foreach ($entry as $line) {
$lineData = $this->getLineKeyValue($line);
$attributes[$lineData[Importer::KEY]][] = $lineData[Importer::VALUE];
}
return new AddEntryTask($dn, $attributes);
}
$changes = array(); $changes = array();
$subtasks = array(); $subtasks = array();
$currentLines = array(); $currentLines = array();
@ -286,7 +294,7 @@ class Importer {
$currentLines[] = $line; $currentLines[] = $line;
} }
$subtasks[] = $this->getChangeTypeTask($dn, $currentLines, $type); $subtasks[] = $this->getChangeTypeTask($dn, $currentLines, $type);
return new MultiTask($subtasks); return new MultiTask($subtasks, $dn);
} }
} }
@ -305,7 +313,7 @@ class Importer {
$attributes[$lineData[Importer::KEY]][] = $lineData[Importer::VALUE]; $attributes[$lineData[Importer::KEY]][] = $lineData[Importer::VALUE];
} }
if ($type === 'add') { if ($type === 'add') {
return new AddAttributesTask($dn, $attributes); return new AddEntryTask($dn, $attributes);
} }
throw new LAMException(_('Invalid data'), htmlspecialchars($dn) . ' - ' . Importer::CHANGETYPE . ': ' . htmlspecialchars($type)); throw new LAMException(_('Invalid data'), htmlspecialchars($dn) . ' - ' . Importer::CHANGETYPE . ': ' . htmlspecialchars($type));
} }
@ -414,13 +422,19 @@ class MultiTask implements ImporterTask {
*/ */
private $tasks = array(); private $tasks = array();
/**
* @var string DN
*/
private $dn = null;
/** /**
* Constructor * Constructor
* *
* @param ImporterTask[] $tasks tasks * @param ImporterTask[] $tasks tasks
*/ */
public function __construct($tasks) { public function __construct($tasks, $dn) {
$this->tasks = $tasks; $this->tasks = $tasks;
$this->dn = $dn;
} }
/** /**

View File

@ -2,6 +2,7 @@
use \LAM\TOOLS\IMPORT_EXPORT\Importer; use \LAM\TOOLS\IMPORT_EXPORT\Importer;
use LAM\TOOLS\IMPORT_EXPORT\MultiTask; use LAM\TOOLS\IMPORT_EXPORT\MultiTask;
use LAM\TOOLS\IMPORT_EXPORT\AddAttributesTask; use LAM\TOOLS\IMPORT_EXPORT\AddAttributesTask;
use LAM\TOOLS\IMPORT_EXPORT\AddEntryTask;
/* /*
This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/) This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/)
@ -157,10 +158,8 @@ class ImporterTest extends PHPUnit_Framework_TestCase {
$importer = new Importer(); $importer = new Importer();
$tasks = $importer->getTasks($lines); $tasks = $importer->getTasks($lines);
$this->assertEquals(1, sizeof($tasks)); $this->assertEquals(1, sizeof($tasks));
$multiTask = $tasks[0]; $task = $tasks[0];
$this->assertEquals(MultiTask::class, get_class($multiTask)); $this->assertEquals(AddEntryTask::class, get_class($task));
$this->assertEquals(1, sizeof($multiTask->getTasks()));
$this->assertEquals(AddAttributesTask::class, get_class($multiTask->getTasks()[0]));
} }
} }