16        $this->stats = array(
"created" => 0, 
"updated" => 0, 
"deleted" => 0);
 
   17        $a = file_get_contents($file_path, 
"r");
 
   18        $xml = 
new SimpleXMLElement($a);
 
   20        if (!count(
$xml->OrgUnit)) {
 
   21            $this->
addError(
"no_orgunit", 
null, 
null);
 
   25        foreach (
$xml->OrgUnit as $o) {
 
   38        $external_id = $o->external_id;
 
   45        $ou_parent_id_type = (string) 
$attributes->ou_parent_id_type;
 
   48            $this->
addWarning(
"cannot_change_root_node", $ou_id?$ou_id:$external_id, 
$action);
 
   52        if ($ou_parent_id == 
"__ILIAS") {
 
   54            $ou_parent_id_type = 
"reference_id";
 
   57        $ref_id = $this->
buildRef($ou_id, $ou_id_type);
 
   58        $parent_ref_id = $this->
buildRef($ou_parent_id, $ou_parent_id_type);
 
   61            if (!$parent_ref_id) {
 
   62                $this->
addError(
"ou_parent_id_not_valid", $ou_id?$ou_id:$external_id, 
$action);
 
   66                $this->
addError(
"ou_id_not_valid", $ou_id?$ou_id:$external_id, 
$action);
 
   71                $ru->deleteObjects($parent_ref_id, array($ref_id)) !== 
false;
 
   72                $this->stats[
"deleted"]++;
 
   73            } 
catch (Exception $e) {
 
   77        } elseif (
$action == 
"update") {
 
   78            if (!$parent_ref_id) {
 
   79                $this->
addError(
"ou_parent_id_not_valid", $ou_id?$ou_id:$external_id, 
$action);
 
   83                $this->
addError(
"ou_id_not_valid", $ou_id?$ou_id:$external_id, 
$action);
 
   89            $arrTranslations = $object->getTranslations();
 
   94            $object->setImportId($external_id);
 
   95            $this->
moveObject($ref_id, $parent_ref_id, $ou_id, $external_id);
 
   97            $this->stats[
"updated"]++;
 
   98        } elseif (
$action == 
"create") {
 
   99            if (!$parent_ref_id) {
 
  100                $this->
addError(
"ou_parent_id_not_valid", $ou_id?$ou_id:$external_id, 
$action);
 
  106                    $this->
addError(
"ou_external_id_exists", $ou_id?$ou_id:$external_id, 
$action);
 
  111            $object->setTitle(
$title);
 
  113            $object->setImportId($external_id);
 
  115            $object->createReference();
 
  116            $object->putInTree($parent_ref_id);
 
  117            $object->setPermissions($ou_parent_id);
 
  118            $this->stats[
"created"]++;
 
  130    protected function moveObject($ref_id, $parent_ref_id, $ou_id, $external_id)
 
  133        $tree = 
$DIC[
'tree'];
 
  134        if ($parent_ref_id != $tree->getParentId($ref_id)) {
 
  136                $path = $tree->getPathId($parent_ref_id);
 
  137                if (in_array($ref_id, 
$path)) {
 
  138                    $this->
addWarning(
"not_movable_to_subtree", $ou_id?$ou_id:$external_id, 
"update");
 
  140                    $tree->moveTree($ref_id, $parent_ref_id);
 
  142            } 
catch (Exception $e) {
 
  145                $this->
addWarning(
"not_movable", $ou_id?$ou_id:$external_id, 
"update");
 
  146                $ilLog->write($e->getMessage() . 
"\\n" . $e->getTraceAsString());
 
  147                error_log($e->getMessage() . 
"\\n" . $e->getTraceAsString());
 
An exception for terminatinating execution or to throw for unit testing.
static _hasUntrashedReference($a_obj_id)
checks wether an object has at least one reference that is not in trash
static _lookupObjIdByImportId($a_import_id)
static _lookupType($a_id, $a_reference=false)
lookup object type
addError($lang_var, $import_id, $action=null)
addWarning($lang_var, $import_id, $action=null)
Class ilOrgUnitSimpleImport.
simpleImportElement(SimpleXMLElement $o)
moveObject($ref_id, $parent_ref_id, $ou_id, $external_id)
Repository Utilities (application layer, put GUI related stuff into ilRepUtilGUI)