Exemplo n.º 1
0
 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();
 }
Exemplo n.º 6
0
 /**
  * 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);
 }