/** * Shorten short text * * @param * @return */ function shortenShortText($text) { $a_length = 196; if ($this->getTermId() > 0) { include_once "./Modules/Glossary/classes/class.ilObjGlossary.php"; include_once "./Modules/Glossary/classes/class.ilGlossaryTerm.php"; $glo_id = ilGlossaryTerm::_lookGlossaryId($this->getTermId()); $snippet_length = ilObjGlossary::lookupSnippetLength($glo_id); if ($snippet_length > 0) { $a_length = $snippet_length; } } $text = str_replace("<br/>", "<br>", $text); $text = strip_tags($text, "<br>"); if (is_int(strpos(substr($text, $a_length - 16 - 5, 10), "[tex]"))) { $offset = 5; } $short = ilUtil::shortenText($text, $a_length - 16 + $offset, true); // make short text longer, if tex end tag is missing $ltexs = strrpos($short, "[tex]"); $ltexe = strrpos($short, "[/tex]"); if ($ltexs > $ltexe) { $ltexe = strpos($text, "[/tex]", $ltexs); if ($ltexe > 0) { $short = ilUtil::shortenText($text, $ltexe + 6, true); } } $short = ilUtil::shortenText($text, $a_length, true); return $short; }
public function outGlossarySelector() { require_once 'Modules/TestQuestionPool/classes/tables/class.ilQuestionInternalLinkSelectionTableGUI.php'; require_once 'Modules/Glossary/classes/class.ilObjGlossary.php'; $this->ctrl->setParameter($this, 'q_id', $this->object->getId()); $glossary = new ilObjGlossary($_GET['source_id'], true); $terms = $glossary->getTermList(); $rows = array(); foreach ($terms as $term) { $this->ctrl->setParameter($this, 'git', $term['id']); $rows[] = array('title' => $term['term'], 'description' => '', 'text_add' => $this->lng->txt('add'), 'href_add' => $this->ctrl->getLinkTarget($this, 'addGIT')); } $table = new ilQuestionInternalLinkSelectionTableGUI($this, 'cancelExplorer', __METHOD__); $table->setTitle($this->lng->txt('glossary_term')); $table->setData($rows); $this->tpl->setContent($table->getHTML()); }
function isClickable($a_type, $a_ref_id, $a_obj_id = 0) { global $rbacsystem, $ilDB, $ilUser, $ilAccess; if (!ilConditionHandler::_checkAllConditionsOfTarget($a_ref_id, $a_obj_id)) { return false; } switch ($a_type) { case "crs": return $ilAccess->checkAccess("read", "", $a_ref_id); // visible groups can allways be clicked; group processing decides // what happens next // visible groups can allways be clicked; group processing decides // what happens next case "grp": return true; case 'tst': if (!$rbacsystem->checkAccess("read", $a_ref_id)) { return false; } $query = sprintf("SELECT * FROM tst_tests WHERE obj_fi=%s", $a_obj_id); $res = $ilDB->query($query); while ($row = $res->fetchRow(DB_FETCHMODE_OBJECT)) { return (bool) $row->complete; } return false; case 'svy': if (!$rbacsystem->checkAccess("read", $a_ref_id)) { return false; } $query = sprintf("SELECT * FROM svy_svy WHERE obj_fi=%s", $a_obj_id); $res = $ilDB->query($query); while ($row = $res->fetchRow(DB_FETCHMODE_OBJECT)) { return (bool) $row->complete; } return false; // media pools can only be edited // media pools can only be edited case "mep": if ($rbacsystem->checkAccess("read", $a_ref_id)) { return true; } else { return false; } break; case 'crsr': case 'catr': include_once './Services/ContainerReference/classes/class.ilContainerReferenceAccess.php'; return ilContainerReferenceAccess::_isAccessible($a_ref_id); // all other types are only clickable, if read permission is given // all other types are only clickable, if read permission is given default: if ($rbacsystem->checkAccess("read", $a_ref_id)) { // check if lm is online if ($a_type == "lm") { include_once "./Modules/LearningModule/classes/class.ilObjLearningModule.php"; $lm_obj =& new ilObjLearningModule($a_ref_id); if (!$lm_obj->getOnline() && !$rbacsystem->checkAccess('write', $a_ref_id)) { return false; } } // check if fblm is online if ($a_type == "htlm") { include_once "./Modules/HTMLLearningModule/classes/class.ilObjFileBasedLM.php"; $lm_obj =& new ilObjFileBasedLM($a_ref_id); if (!$lm_obj->getOnline() && !$rbacsystem->checkAccess('write', $a_ref_id)) { return false; } } // check if fblm is online if ($a_type == "sahs") { include_once "./Modules/ScormAicc/classes/class.ilObjSAHSLearningModule.php"; $lm_obj =& new ilObjSAHSLearningModule($a_ref_id); if (!$lm_obj->getOnline() && !$rbacsystem->checkAccess('write', $a_ref_id)) { return false; } } // check if glossary is online if ($a_type == "glo") { $obj_id = ilObject::_lookupObjectId($a_ref_id); include_once "./Modules/Glossary/classes/class.ilObjGlossary.php"; if (!ilObjGlossary::_lookupOnline($obj_id) && !$rbacsystem->checkAccess('write', $a_ref_id)) { return false; } } return true; } else { return false; } break; } }
/** * Save glossary form */ public function saveGlossary() { global $tpl, $lng, $ilCtrl, $rbacsystem, $tree; $parent_ref_id = $tree->getParentId((int) $_GET["ref_id"]); if (!$rbacsystem->checkAccess("create", $parent_ref_id, "glo")) { ilUtil::sendFailure($lng->txt("no_permission"), true); $ilCtrl->redirect($this, "properties"); } $this->initGlossaryCreationForm(); if ($this->form->checkInput()) { include_once "./Modules/Glossary/classes/class.ilObjGlossary.php"; $newObj = new ilObjGlossary(); $newObj->setType("glo"); $newObj->setTitle($_POST["title"]); $newObj->setDescription($_POST["description"]); $newObj->setVirtualMode("none"); $newObj->create(); $newObj->createReference(); $newObj->putInTree($parent_ref_id); $newObj->setPermissions($parent_ref_id); $newObj->notify("new", $parent_ref_id, $_GET["parent_non_rbac_id"], $parent_ref_id, $newObj->getRefId()); // perform save $this->object->setAssignedGlossary($newObj->getId()); $this->object->update(); ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true); $ilCtrl->redirect($this, "properties"); } $this->form->setValuesByPost(); $tpl->setContent($this->form->getHtml()); }
function exportPDF($a_inst, $a_target_dir, &$expLog) { global $ilBench; $a_xml_writer = new ilXmlWriter(); $a_xml_writer->xmlStartTag("ContentObject", array("Type" => "SCORM2004SCO")); $this->exportXMLMetaData($a_xml_writer); $tree = new ilTree($this->getId()); $tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node'); $tree->setTreeTablePK("slm_id"); foreach ($tree->getSubTree($tree->getNodeData($tree->getRootId()), true, 'sco') as $sco) { include_once "./Modules/Scorm2004/classes/class.ilSCORM2004Sco.php"; $sco_folder = $a_target_dir . "/" . $sco['obj_id']; ilUtil::makeDir($sco_folder); $node = new ilSCORM2004Sco($this, $sco['obj_id']); $node->exportPDFPrepareXmlNFiles($a_inst, $a_target_dir, $expLog, $a_xml_writer); } if ($this->getAssignedGlossary() != 0) { ilUtil::makeDir($a_target_dir . "/glossary"); include_once "./Modules/Glossary/classes/class.ilObjGlossary.php"; include_once "./Modules/Glossary/classes/class.ilGlossaryExport.php"; $glos = new ilObjGlossary($this->getAssignedGlossary(), false); $glos_export = new ilGlossaryExport($glos, "xml"); $glos->exportXML($a_xml_writer, $glos_export->getInstId(), $a_target_dir . "/glossary", $expLog); } copy('./templates/default/images/icon_attachment_s.png', $a_target_dir . "/icon_attachment_s.png"); $a_xml_writer->xmlEndTag("ContentObject"); include_once 'Services/Transformation/classes/class.ilXML2FO.php'; $xml2FO = new ilXML2FO(); $xml2FO->setXSLTLocation('./Modules/Scorm2004/templates/xsl/contentobject2fo.xsl'); $xml2FO->setXMLString($a_xml_writer->xmlDumpMem()); $xml2FO->setXSLTParams(array('target_dir' => $a_target_dir)); $xml2FO->transform(); $fo_string = $xml2FO->getFOString(); $fo_xml = simplexml_load_string($fo_string); $fo_ext = $fo_xml->xpath("//fo:declarations"); $fo_ext = $fo_ext[0]; $results = array(); include_once "./Services/Utilities/classes/class.ilFileUtils.php"; ilFileUtils::recursive_dirscan($a_target_dir . "/objects", $results); if (is_array($results["file"])) { foreach ($results["file"] as $key => $value) { $e = $fo_ext->addChild("fox:embedded-file", "", "http://xml.apache.org/fop/extensions"); $e->addAttribute("src", $results[path][$key] . $value); $e->addAttribute("name", $value); $e->addAttribute("desc", ""); } } $fo_string = $fo_xml->asXML(); $a_xml_writer->_XmlWriter; return $fo_string; }
/** * Get all glossary ids * * @param * @return */ function getAllGlossaryIds($a_include_offline_childs = false) { global $tree; if ($this->isVirtual()) { $glo_ids = array(); $virtual_mode = $this->getRefId() ? $this->getVirtualMode() : ''; switch ($virtual_mode) { case "level": $glo_arr = $tree->getChildsByType($tree->getParentId($this->getRefId()), "glo"); $glo_ids[] = $this->getId(); foreach ($glo_arr as $glo) { $glo_ids[] = $glo['obj_id']; } if (!$a_include_offline_childs) { $glo_ids = ilObjGlossary::removeOfflineGlossaries($glo_ids); } // always show entries of current glossary (if no permission is given, user will not come to the presentation screen) // see bug #14477 if (!in_array($this->getId(), $glo_ids)) { $glo_ids[] = $this->getId(); } break; case "subtree": $subtree_nodes = $tree->getSubTree($tree->getNodeData($tree->getParentId($this->getRefId()))); foreach ($subtree_nodes as $node) { if ($node['type'] == 'glo') { $glo_ids[] = $node['obj_id']; } } if (!$a_include_offline_childs) { $glo_ids = ilObjGlossary::removeOfflineGlossaries($glo_ids); } // always show entries of current glossary (if no permission is given, user will not come to the presentation screen) // see bug #14477 if (!in_array($this->getId(), $glo_ids)) { $glo_ids[] = $this->getId(); } break; // fallback to none virtual mode in case of error // fallback to none virtual mode in case of error default: $glo_ids[] = $this->getId(); break; } } else { $glo_ids = $this->getId(); } return $glo_ids; }
/** * display status information or report errors messages * in case of error * * @access public */ function importFileObject() { $new_type = $_REQUEST["new_type"]; // create permission is already checked in createObject. This check here is done to prevent hacking attempts if (!$this->checkPermissionBool("create", "", $new_type)) { $ilErr->raiseError($this->lng->txt("no_create_permission")); } $this->lng->loadLanguageModule($new_type); $this->ctrl->setParameter($this, "new_type", $new_type); $form = $this->initImportForm($new_type); if ($form->checkInput()) { $this->ctrl->setParameter($this, "new_type", ""); $upload = $_FILES["importfile"]; // create and insert object in objecttree include_once "./Modules/Glossary/classes/class.ilObjGlossary.php"; $newObj = new ilObjGlossary(); $newObj->setType($new_type); $newObj->setTitle($upload["name"]); $newObj->create(true); $this->putObjectInTree($newObj); // create import directory $newObj->createImportDirectory(); // copy uploaded file to import directory $file = pathinfo($upload["name"]); $full_path = $newObj->getImportDirectory() . "/" . $upload["name"]; ilUtil::moveUploadedFile($upload["tmp_name"], $upload["name"], $full_path); // unzip file ilUtil::unzip($full_path); // determine filename of xml file $subdir = basename($file["basename"], "." . $file["extension"]); $xml_file = $newObj->getImportDirectory() . "/" . $subdir . "/" . $subdir . ".xml"; // check whether this is a new export file. // this is the case if manifest.xml exits //echo "1-".$newObj->getImportDirectory()."/".$subdir."/manifest.xml"."-"; if (is_file($newObj->getImportDirectory() . "/" . $subdir . "/manifest.xml")) { include_once "./Services/Export/classes/class.ilImport.php"; $imp = new ilImport((int) $_GET["ref_id"]); $map = $imp->getMapping(); $map->addMapping("Modules/Glossary", "glo", "new_id", $newObj->getId()); $imp->importObject($newObj, $full_path, $upload["name"], "glo", "Modules/Glossary", true); ilUtil::sendSuccess($this->lng->txt("glo_added"), true); ilUtil::redirect("ilias.php?baseClass=ilGlossaryEditorGUI&ref_id=" . $newObj->getRefId()); } // check whether subdirectory exists within zip file if (!is_dir($newObj->getImportDirectory() . "/" . $subdir)) { $this->ilias->raiseError(sprintf($this->lng->txt("cont_no_subdir_in_zip"), $subdir), $this->ilias->error_obj->MESSAGE); } // check whether xml file exists within zip file if (!is_file($xml_file)) { $this->ilias->raiseError(sprintf($this->lng->txt("cont_zip_file_invalid"), $subdir . "/" . $subdir . ".xml"), $this->ilias->error_obj->MESSAGE); } include_once "./Modules/LearningModule/classes/class.ilContObjParser.php"; $contParser = new ilContObjParser($newObj, $xml_file, $subdir); $contParser->startParsing(); ilObject::_writeImportId($newObj->getId(), $newObj->getImportId()); // delete import directory ilUtil::delDir($newObj->getImportDirectory()); ilUtil::sendSuccess($this->lng->txt("glo_added"), true); ilUtil::redirect("ilias.php?baseClass=ilGlossaryEditorGUI&ref_id=" . $newObj->getRefId()); } // display form to correct errors $form->setValuesByPost(); $tpl->setContent($form->getHtml()); }
/** * Get all glossary ids * * @param * @return */ function getAllGlossaryIds($a_include_offline_childs = false) { global $tree; if ($this->isVirtual()) { $glo_ids = array(); $virtual_mode = $this->getRefId() ? $this->getVirtualMode() : ''; switch ($virtual_mode) { case "level": $glo_arr = $tree->getChildsByType($tree->getParentId($this->getRefId()), "glo"); $glo_ids[] = $this->getId(); foreach ($glo_arr as $glo) { $glo_ids[] = $glo['obj_id']; } if (!$a_include_offline_childs) { $glo_ids = ilObjGlossary::removeOfflineGlossaries($glo_ids); } break; case "subtree": $subtree_nodes = $tree->getSubTree($tree->getNodeData($tree->getParentId($this->getRefId()))); foreach ($subtree_nodes as $node) { if ($node['type'] == 'glo') { $glo_ids[] = $node['obj_id']; } } if (!$a_include_offline_childs) { $glo_ids = ilObjGlossary::removeOfflineGlossaries($glo_ids); } break; // fallback to none virtual mode in case of error // fallback to none virtual mode in case of error default: $glo_ids[] = $this->getId(); break; } } else { $glo_ids = $this->getId(); } return $glo_ids; }
function importGlossary($slm, $packageFolder) { global $ilias; // create and insert object in objecttree include_once "./Modules/Glossary/classes/class.ilObjGlossary.php"; $newObj = new ilObjGlossary(); $newObj->setType('glo'); $newObj->setTitle(''); $newObj->create(true); $newObj->createReference(); $newObj->putInTree($_GET["ref_id"]); $newObj->setPermissions($_GET["ref_id"]); $newObj->notify("new", $_GET["ref_id"], $_GET["parent_non_rbac_id"], $_GET["ref_id"], $newObj->getRefId()); $xml_file = $packageFolder . "/glossary.xml"; // check whether xml file exists within zip file if (!is_file($xml_file)) { return; } include_once "./Modules/LearningModule/classes/class.ilContObjParser.php"; $contParser = new ilContObjParser($newObj, $xml_file, $packageFolder); $contParser->startParsing(); $newObj->update(); //ilObject::_writeImportId($newObj->getId(), $newObj->getImportId()); $slm->setAssignedGlossary($newObj->getId()); $slm->update(); }