protected function storeTree($tree_id, $a_nodes) { include_once './Services/WebServices/ECS/classes/Tree/class.ilECSCmsData.php'; include_once './Services/WebServices/ECS/classes/Tree/class.ilECSCmsTree.php'; $tree = new ilECSCmsTree($tree_id); $cms_tree = $a_nodes; $data = new ilECSCmsData(); $data->setServerId($this->server_id); $data->setMid($this->mid); $data->setCmsId($cms_tree->rootID); $data->setTreeId($tree_id); $data->setTitle($node->directoryTitle); $data->setTerm($node->term); $data->save(); $tree->insertRootNode($tree_id, $data->getObjId()); $tree->setRootId($data->getObjId()); foreach ((array) $cms_tree->nodes as $node) { // Add data entry $data = new ilECSCmsData(); $data->setServerId($this->server_id); $data->setMid($this->mid); $data->setCmsId($node->id); $data->setTreeId($tree_id); $data->setTitle($node->title); $data->setTerm($node->term); $data->save(); // add to tree if ($node->parent->id) { $parent_id = ilECSCmsData::lookupObjId($this->server_id, $this->mid, $tree_id, (int) $node->parent->id); $tree->insertNode($data->getObjId(), $parent_id); } } }
/** * Sync category * @param ilECSNodeMappingAssignment $ass */ protected function syncCategory(ilECSNodeMappingAssignment $ass, $parent_id) { include_once './Services/WebServices/ECS/classes/Tree/class.ilECSCmsData.php'; $data = new ilECSCmsData($ass->getCSId()); // Check if node is imported => create // perform title update // perform position update include_once './Services/WebServices/ECS/classes/class.ilECSImport.php'; $obj_id = ilECSImport::lookupObjIdByContentId($this->getServer()->getServerId(), $this->mid, $data->getCmsId()); if ($obj_id) { $refs = ilObject::_getAllReferences($obj_id); $ref_id = end($refs); $cat = ilObjectFactory::getInstanceByRefId($ref_id, false); if ($cat instanceof ilObject and $this->default_settings['title_update']) { $GLOBALS['ilLog']->write(__METHOD__ . ': Updating cms category '); $GLOBALS['ilLog']->write(__METHOD__ . ': Title is ' . $data->getTitle()); $cat->deleteTranslation($GLOBALS['lng']->getDefaultLanguage()); $cat->addTranslation($data->getTitle(), $cat->getLongDescription(), $GLOBALS['lng']->getDefaultLanguage(), 1); $cat->setTitle($data->getTitle()); $cat->update(); } else { $GLOBALS['ilLog']->write(__METHOD__ . ': Updating cms category -> nothing to do'); } return $ref_id; } elseif ($this->getGlobalSettings()->isEmptyContainerCreationEnabled()) { $GLOBALS['ilLog']->write(__METHOD__ . ': Creating new cms category'); // Create category include_once './Modules/Category/classes/class.ilObjCategory.php'; $cat = new ilObjCategory(); $cat->setTitle($data->getTitle()); $cat->create(); // true for upload $cat->createReference(); $cat->putInTree($parent_id); $cat->setPermissions($parent_id); $cat->deleteTranslation($GLOBALS['lng']->getDEfaultLanguage()); $cat->addTranslation($data->getTitle(), $cat->getLongDescription(), $GLOBALS['lng']->getDefaultLanguage(), 1); // set imported $import = new ilECSImport($this->getServer()->getServerId(), $cat->getId()); $import->setMID($this->mid); $import->setContentId($data->getCmsId()); $import->setImported(true); $import->save(); return $cat->getRefId(); } else { $GLOBALS['ilLog']->write(__METHOD__ . ': Creation of empty containers is disabled.'); return 0; } }
/** * Do mapping */ protected function dMap() { if (!$_POST['lnodes']) { ilUtil::sendFailure($this->lng->txt('select_one'), true); $this->ctrl->redirect($this, 'dEditTree'); } $ref_id = end($_POST['lnodes']); include_once './Services/WebServices/ECS/classes/Mapping/class.ilECSNodeMappingAssignments.php'; ilECSNodeMappingAssignments::deleteDisconnectableMappings($this->getServer()->getServerId(), $this->getMid(), (int) $_REQUEST['tid'], $ref_id); $nodes = (array) $_POST['rnodes']; $nodes = (array) array_reverse($nodes); include_once './Services/WebServices/ECS/classes/Mapping/class.ilECSNodeMappingAssignment.php'; include_once './Services/WebServices/ECS/classes/Mapping/class.ilECSNodeMappingAssignments.php'; include_once './Services/WebServices/ECS/classes/Tree/class.ilECSCmsTree.php'; foreach ($nodes as $cms_id) { $assignment = new ilECSNodeMappingAssignment($this->getServer()->getServerId(), $this->getMid(), (int) $_REQUEST['tid'], (int) $cms_id); $assignment->setRefId($ref_id); $assignment->setObjId(ilObject::_lookupObjId($ref_id)); $assignment->enablePositionUpdate(false); $assignment->enableTreeUpdate(false); $assignment->enableTitleUpdate(ilECSNodeMappingAssignments::lookupDefaultTitleUpdate($this->getServer()->getServerId(), $this->getMid(), (int) $_REQUEST['tid'])); $assignment->update(); // Delete subitems mappings for cms subtree $cmsTree = new ilECSCmsTree((int) $_REQUEST['tid']); $childs = $cmsTree->getSubTreeIds($cms_id); ilECSNodeMappingAssignments::deleteMappingsByCsId($this->getServer()->getServerId(), $this->getMid(), (int) $_REQUEST['tid'], $childs); } ilECSCmsData::updateStatus($this->getServer()->getServerId(), $this->getMid(), (int) $_REQUEST['tid']); // Save parameter cid $this->ctrl->setParameter($this, 'lid', (int) $ref_id); ilUtil::sendSuccess($this->lng->txt('settings_saved'), true); $this->ctrl->redirect($this, 'dEditTree'); }
/** * Parse campusconnect */ public function parse() { include_once './Services/WebServices/ECS/classes/Mapping/class.ilECSMappingUtils.php'; include_once './Services/WebServices/ECS/classes/Tree/class.ilECSCmsData.php'; include_once './Services/WebServices/ECS/classes/Tree/class.ilECSCmsTree.php'; $data = array(); $counter = 0; foreach (ilECSCmsData::lookupTreeIds($this->getServer()->getServerId(), $this->getMid()) as $tree_id) { $root = new ilECSCmsTree($tree_id); $node = new ilECSCmsData($root->getRootId()); $data[$counter]['id'] = $tree_id; $data[$counter]['status'] = ilECSMappingUtils::lookupMappingStatus($this->getServer()->getServerId(), $this->getMid(), $tree_id); $data[$counter]['title'] = $node->getTitle(); $data[$counter]['term'] = ilECSCmsData::lookupTopTerm($this->getServer()->getServerId(), $this->getMid(), $tree_id); $counter++; } $this->setData($data); }
/** * Sync category * @param type $tobj_id * @param type $parent_ref_id */ protected function syncCategory($tobj_id, $parent_ref_id) { include_once './Services/WebServices/ECS/classes/Tree/class.ilECSCmsData.php'; $data = new ilECSCmsData($tobj_id); include_once './Modules/Category/classes/class.ilObjCategory.php'; $cat = new ilObjCategory(); $cat->setTitle($data->getTitle()); $cat->create(); // true for upload $cat->createReference(); $cat->putInTree($parent_ref_id); $cat->setPermissions($parent_ref_id); $cat->deleteTranslation($GLOBALS['lng']->getDefaultLanguage()); $cat->addTranslation($data->getTitle(), $cat->getLongDescription(), $GLOBALS['lng']->getDefaultLanguage(), 1); // set imported $import = new ilECSImport($this->getServer()->getServerId(), $cat->getId()); $import->setMID($this->getMid()); $import->setContentId($data->getCmsId()); $import->setImported(true); $import->save(); return $cat->getId(); }
/** * Delete */ public function delete() { global $ilDB; // --- cascading delete include_once 'Services/WebServices/ECS/classes/Tree/class.ilECSCmsData.php'; ilECSCmsData::deleteByServerId($this->getServerId()); include_once 'Services/WebServices/ECS/classes/class.ilECSCommunityCache.php'; ilECSCommunityCache::deleteByServerId($this->getServerId()); include_once 'Services/WebServices/ECS/classes/class.ilECSDataMappingSetting.php'; ilECSDataMappingSetting::deleteByServerId($this->getServerId()); include_once 'Services/WebServices/ECS/classes/class.ilECSEventQueueReader.php'; ilECSEventQueueReader::deleteByServerId($this->getServerId()); include_once 'Services/WebServices/ECS/classes/Mapping/class.ilECSNodeMappingAssignment.php'; ilECSNodeMappingAssignment::deleteByServerId($this->getServerId()); include_once 'Services/WebServices/ECS/classes/class.ilECSParticipantSetting.php'; ilECSParticipantSetting::deleteByServerId($this->getServerId()); include_once 'Services/WebServices/ECS/classes/class.ilECSExport.php'; ilECSExport::deleteByServerId($this->getServerId()); // resetting server id to flag items in imported list include_once 'Services/WebServices/ECS/classes/class.ilECSImport.php'; ilECSImport::resetServerId($this->getServerId()); $ilDB->manipulate('DELETE FROM ecs_server ' . 'WHERE server_id = ' . $ilDB->quote($this->getServerId(), 'integer')); $this->server_id = NULL; return true; }
/** * Handle update * @param ilECSSetting $server * @param type $a_content_id */ public function handleUpdate(ilECSSetting $server, $a_content_id) { // 1) Mark all nodes as deleted // 2a) Delete cms tree // 2) Add cms tree table entries // 2) Replace the cms data table entries // 3) Insert deleted tree nodes in tree // 4) Sync tree try { include_once './Services/WebServices/ECS/classes/Tree/class.ilECSDirectoryTreeConnector.php'; $dir_reader = new ilECSDirectoryTreeConnector($this->getServer()); $res = $dir_reader->getDirectoryTree($a_content_id); $nodes = $res->getResult(); } catch (ilECSConnectorException $e) { $GLOBALS['ilLog']->write(__METHOD__ . ': Tree creation failed with mesage ' . $e->getMessage()); return false; } // read old tree structure include_once './Services/WebServices/ECS/classes/Tree/class.ilECSCmsTree.php'; $tree = new ilECSCmsTree($a_content_id); $root_node = $tree->getNodeData(ilECSCmsTree::lookupRootId($a_content_id)); $old_nodes = array(); if ($root_node['child']) { $old_nodes = $tree->getSubTree($root_node, true); } //$GLOBALS['ilLog']->write(__METHOD__.': OLD TREE DATA ........'.print_r($old_nodes,true)); // Delete old cms tree ilECSCmsTree::deleteByTreeId($a_content_id); // Mark all nodes in cms data as deleted include_once './Services/WebServices/ECS/classes/Tree/class.ilECSCmsData.php'; ilECSCmsData::writeAllDeleted($this->getServer()->getServerId(), $this->mid, $a_content_id, true); // Check for update or new entry $cms_tree = $nodes; $data_obj_id = ilECSCmsData::lookupObjId($this->getServer()->getServerId(), $this->mid, $a_content_id, $cms_tree->rootID); $data = new ilECSCmsData($data_obj_id); $data->setServerId($server->getServerId()); $data->setMid($this->mid); $data->setCmsId($cms_tree->rootID); $data->setTreeId($a_content_id); $data->setTitle($cms_tree->directoryTreeTitle); $data->setTerm($cms_tree->term); if ($data_obj_id) { $data->setDeleted(false); $data->update(); } else { $data->save(); } $tree->insertRootNode($a_content_id, $data->getObjId()); $tree->setRootId($data->getObjId()); foreach ((array) $cms_tree->nodes as $node) { $data_obj_id = ilECSCmsData::lookupObjId($this->getServer()->getServerId(), $this->mid, $a_content_id, $node->id); // update data entry $data = new ilECSCmsData($data_obj_id); $data->setTitle($node->title); $data->setTerm($node->term); $data->setDeleted(false); if ($data_obj_id) { $data->update(); } else { $data->setCmsId($node->id); $data->setMid($this->mid); $data->setServerId($this->getServer()->getServerId()); $data->setTreeId($a_content_id); $data->setDeleted(false); $data->save(); $data_obj_id = $data->getObjId(); } // add to tree $parent_id = ilECSCmsData::lookupObjId($this->getServer()->getServerId(), $this->mid, $a_content_id, (int) $node->parent->id); $tree->insertNode($data->getObjId(), $parent_id); } // Insert deleted nodes in tree $deleted = ilECSCmsData::findDeletedNodes($this->getServer()->getServerId(), $this->mid, $a_content_id); foreach ((array) $deleted as $obj_id) { $parent = 0; foreach ((array) $old_nodes as $tmp_id => $node) { if ($node['child'] == $obj_id) { $parent = $node['parent']; break; } } if ($tree->isInTree($parent) and $parent) { $tree->insertNode($obj_id, $parent); } } // Sync tree include_once './Services/WebServices/ECS/classes/Tree/class.ilECSCmsTreeSynchronizer.php'; $sync = new ilECSCmsTreeSynchronizer($this->getServer(), $this->mid, $a_content_id); $sync->sync(); return true; }
public function buildTitle($title, $a_obj_id, $a_type) { if (strlen($title) >= 22) { #$title = substr($title, 0,22).'...'; } include_once './Services/WebServices/ECS/classes/Tree/class.ilECSCmsData.php'; $status = ilECSCmsData::lookupStatusByObjId($this->server_id, $this->mid, $this->tree_id, $a_obj_id); switch ($status) { case ilECSCmsData::MAPPING_UNMAPPED: return '<font style="font-weight: bold">' . $title . '</font>'; case ilECSCmsData::MAPPING_PENDING_DISCONNECTABLE: return '<font style="font-weight: bold;font-style: italic">' . $title . '</font>'; case ilECSCmsData::MAPPING_PENDING_NOT_DISCONNECTABLE: return '<font style="font-style: italic">' . $title . '</font>'; case ilECSCmsData::MAPPING_MAPPED: return $title; case ilECSCmsData::MAPPING_DELETED: return '<font class="warning">' . $title . '</font>'; default: return $title; } }
/** * delete disconnectable mappings * @param <type> $a_server_id * @param <type> $a_mid * @param <type> $a_tree_id */ public static function deleteDisconnectableMappings($a_server_id, $a_mid, $a_tree_id, $a_ref_id) { global $ilDB; include_once './Services/WebServices/ECS/classes/Tree/class.ilECSCmsTree.php'; include_once './Services/WebServices/ECS/classes/Tree/class.ilECSCmsData.php'; $toDelete = array(); foreach (self::lookupAssignmentsByRefId($a_server_id, $a_mid, $a_tree_id, $a_ref_id) as $assignment) { $status = ilECSCmsData::lookupStatusByCmsId($a_server_id, $a_mid, $a_tree_id, $assignment); switch ($status) { case ilECSCmsData::MAPPING_UNMAPPED: $toDelete[] = $assignment; break; case ilECSCmsData::MAPPING_PENDING_DISCONNECTABLE: $toDelete[] = $assignment; break; case ilECSCmsData::MAPPING_PENDING_NOT_DISCONNECTABLE: break; case ilECSCmsData::MAPPING_MAPPED: $toDelete[] = $assignment; break; case ilECSCmsData::MAPPING_DELETED: $toDelete[] = $assignment; break; } } self::deleteMappingsByCsId($a_server_id, $a_mid, $a_tree_id, $toDelete); }