protected function deleteAllPages() { // delete pages include_once "Modules/Portfolio/classes/class.ilPortfolioTemplatePage.php"; $pages = ilPortfolioTemplatePage::getAllPages($this->id); foreach ($pages as $page) { $page_obj = new ilPortfolioTemplatePage($page["id"]); $page_obj->setPortfolioId($this->id); $page_obj->delete(); } }
/** * Final processing * * @param array mapping array */ function finalProcessing($a_mapping) { $prttpg_map = $a_mapping->getMappingsOfEntity("Services/COPage", "pg"); foreach ($prttpg_map as $prttpg_id) { $prttpg_id = substr($prttpg_id, 5); $prtt_id = ilPortfolioTemplatePage::findPortfolioForPage($prttpg_id); ilPortfolioTemplatePage::_writeParentId("prtt", $prttpg_id, $prtt_id); } }
public function getXmlExportTailDependencies($a_entity, $a_target_release, $a_ids) { include_once "./Modules/Portfolio/classes/class.ilPortfolioTemplatePage.php"; $pg_ids = array(); foreach ($a_ids as $id) { foreach (ilPortfolioTemplatePage::getAllPages($id) as $p) { $pg_ids[] = "prtt:" . $p["id"]; } } return array(array("component" => "Services/COPage", "entity" => "pg", "ids" => $pg_ids)); }
protected function doCloneObject($new_obj, $a_target_id, $a_copy_id = null) { self::cloneBasics($this, $new_obj); // copy pages include_once "Modules/Portfolio/classes/class.ilPortfolioTemplatePage.php"; foreach (ilPortfolioPage::getAllPages($this->getId()) as $page) { // see ilObjWiki::cloneObject(); $page = new ilPortfolioTemplatePage($page["id"]); $new_page = new ilPortfolioTemplatePage(); $new_page->setPortfolioId($new_obj->getId()); $new_page->setTitle($page->getTitle()); $new_page->setType($page->getType()); $new_page->setOrderNr($page->getOrderNr()); $new_page->create(); $page->copy($new_page->getId(), "", 0, true); } }
/** * Get's the repository object ID of a parent object, if possible * * see ilWebAccessChecker */ function getParentObjectIdForUsage($a_usage, $a_include_all_access_obj_ids = false) { if (is_int(strpos($a_usage["type"], ":"))) { $us_arr = explode(":", $a_usage["type"]); $type = $us_arr[1]; $cont_type = $us_arr[0]; } else { $type = $a_usage["type"]; } $id = $a_usage["id"]; $obj_id = false; switch ($type) { // RTE / tiny mce case "html": switch ($cont_type) { case "qpl": // Question Pool *Question* Text (Test) include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php"; $qinfo = assQuestion::_getQuestionInfo($id); if ($qinfo["original_id"] > 0) { include_once "./Modules/Test/classes/class.ilObjTest.php"; $obj_id = ilObjTest::_lookupTestObjIdForQuestionId($id); // usage in test } else { $obj_id = $qinfo["obj_fi"]; // usage in pool } break; case "spl": // Question Pool *Question* Text (Survey) include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php"; $quest = SurveyQuestion::_instanciateQuestion($id); if ($quest) { if ($quest->getOriginalId() > 0) { $obj_id = $quest->getSurveyId(); } else { $obj_id = $quest->getObjId(); // usage in pool } unset($quest); } break; case "exca": // Exercise assignment $returned_pk = $a_usage['id']; // we are just checking against exercise object include_once 'Modules/Exercise/classes/class.ilObjExercise.php'; $obj_id = ilObjExercise::lookupExerciseIdForReturnedId($returned_pk); break; case "frm": // Forum $post_pk = $a_usage['id']; include_once 'Modules/Forum/classes/class.ilForumPost.php'; include_once 'Modules/Forum/classes/class.ilForum.php'; $oPost = new ilForumPost($post_pk); $frm_pk = $oPost->getForumId(); $obj_id = ilForum::_lookupObjIdForForumId($frm_pk); break; // temporary items (per user) // temporary items (per user) case "frm~": case "exca~": $obj_id = $a_usage['id']; break; // "old" category pages // "old" category pages case "cat": // InfoScreen Text // InfoScreen Text case "tst": case "svy": // data collection // data collection case "dcl": $obj_id = $id; break; } break; // page editor // page editor case "pg": switch ($cont_type) { case "qpl": // Question Pool Question Pages include_once "./Modules/TestQuestionPool/classes/class.assQuestion.php"; $qinfo = assQuestion::_getQuestionInfo($id); if ($qinfo["original_id"] > 0) { include_once "./Modules/Test/classes/class.ilObjTest.php"; $obj_id = ilObjTest::_lookupTestObjIdForQuestionId($id); // usage in test } else { $obj_id = $qinfo["obj_fi"]; // usage in pool } break; case "lm": case "dbk": // learning modules include_once "./Modules/LearningModule/classes/class.ilLMObject.php"; $obj_id = ilLMObject::_lookupContObjID($id); break; case "gdf": // glossary definition include_once "./Modules/Glossary/classes/class.ilGlossaryDefinition.php"; include_once "./Modules/Glossary/classes/class.ilGlossaryTerm.php"; $term_id = ilGlossaryDefinition::_lookupTermId($id); $obj_id = ilGlossaryTerm::_lookGlossaryID($term_id); break; case "wpg": // wiki page include_once 'Modules/Wiki/classes/class.ilWikiPage.php'; $obj_id = ilWikiPage::lookupObjIdByPage($id); break; case "sahs": // sahs page // can this implementation be used for other content types, too? include_once './Services/COPage/classes/class.ilPageObject.php'; $obj_id = ilPageObject::lookupParentId($id, 'sahs'); break; case "prtf": // portfolio include_once "Modules/Portfolio/classes/class.ilPortfolioPage.php"; $obj_id = ilPortfolioPage::findPortfolioForPage($id); break; case "prtt": // portfolio template include_once "Modules/Portfolio/classes/class.ilPortfolioTemplatePage.php"; $obj_id = ilPortfolioTemplatePage::findPortfolioForPage($id); break; case "blp": // blog include_once './Services/COPage/classes/class.ilPageObject.php'; $obj_id = ilPageObject::lookupParentId($id, 'blp'); break; case "crs": case "grp": case "cat": case "fold": case "root": // repository pages $obj_id = $id; break; } break; // Media Pool // Media Pool case "mep": $obj_id = $id; break; // News Context Object (e.g. MediaCast) // News Context Object (e.g. MediaCast) case "news": include_once "./Services/News/classes/class.ilNewsItem.php"; $obj_id = ilNewsItem::_lookupContextObjId($id); break; } return $obj_id; }
/** * Get portfolio template page instance * * @param int $a_page_id * @return ilPortfolioTemplatePage */ protected function getPageInstance($a_page_id = null) { include_once "Modules/Portfolio/classes/class.ilPortfolioTemplatePage.php"; $page = new ilPortfolioTemplatePage($a_page_id); $page->setPortfolioId($this->object->getId()); return $page; }
/** * @return array */ protected function addSkills() { $user = $this->getUsrObject(); $pskills = array_keys(ilPersonalSkill::getSelectedUserSkills($user->getId())); $skill_ids = array(); $recipe = array(); foreach (ilPortfolioTemplatePage::getAllPages($this->getPortfolioTemplateId()) as $page) { switch ($page['type']) { case ilPortfolioTemplatePage::TYPE_PAGE: $source_page = new ilPortfolioTemplatePage($page['id']); $source_page->buildDom(true); $dom = $source_page->getDom(); if ($dom instanceof php4DOMDocument) { $dom = $dom->myDOMDocument; } $xpath = new DOMXPath($dom); $nodes = $xpath->query('//PageContent/Skills'); foreach ($nodes as $node) { $skill_id = $node->getAttribute('Id'); if (!in_array($skill_id, $pskills)) { $skill_ids[] = $skill_id; } } unset($nodes); unset($xpath); unset($dom); break; } } foreach ($skill_ids as $skill_id) { ilPersonalSkill::addPersonalSkill($user->getId(), $skill_id); } }
/** * Build template from portfolio and vice versa * * @param ilObjPortfolioBase $a_source * @param ilObjPortfolioBase $a_target * @param array $a_recipe */ public static function clonePagesAndSettings(ilObjPortfolioBase $a_source, ilObjPortfolioBase $a_target, array $a_recipe = null) { global $lng, $ilUser; $source_id = $a_source->getId(); $target_id = $a_target->getId(); if ($a_source instanceof ilObjPortfolioTemplate && $a_target instanceof ilObjPortfolio) { $direction = "t2p"; } else { if ($a_source instanceof ilObjPortfolio && $a_target instanceof ilObjPortfolioTemplate) { $direction = "p2t"; } else { return; } } // copy portfolio properties $a_target->setPublicComments($a_source->hasPublicComments()); $a_target->setProfilePicture($a_source->hasProfilePicture()); $a_target->setFontColor($a_source->getFontColor()); $a_target->setBackgroundColor($a_source->getBackgroundColor()); $a_target->setImage($a_source->getImage()); $a_target->update(); // banner/images $source_dir = $a_source->initStorage($source_id); $target_dir = $a_target->initStorage($target_id); ilFSStoragePortfolio::_copyDirectory($source_dir, $target_dir); // set/copy stylesheet include_once "./Services/Style/classes/class.ilObjStyleSheet.php"; $style_id = $a_source->getStyleSheetId(); if ($style_id > 0 && !ilObjStyleSheet::_lookupStandard($style_id)) { $style_obj = ilObjectFactory::getInstanceByObjId($style_id); $new_id = $style_obj->ilClone(); $a_target->setStyleSheetId($new_id); $a_target->update(); } // copy pages $blog_count = 0; include_once "Modules/Portfolio/classes/class.ilPortfolioTemplatePage.php"; foreach (ilPortfolioPage::getAllPages($source_id) as $page) { $page_id = $page["id"]; if ($direction == "t2p") { $source_page = new ilPortfolioTemplatePage($page_id); $target_page = new ilPortfolioPage(); } else { $source_page = new ilPortfolioPage($page_id); $target_page = new ilPortfolioTemplatePage(); } $source_page->setPortfolioId($source_id); $target_page->setPortfolioId($target_id); $page_type = $source_page->getType(); $page_title = $source_page->getTitle(); $page_recipe = null; if (is_array($a_recipe)) { $page_recipe = $a_recipe[$page_id]; } $valid = false; switch ($page_type) { // blog => blog template case ilPortfolioTemplatePage::TYPE_BLOG: if ($direction == "p2t") { $page_type = ilPortfolioTemplatePage::TYPE_BLOG_TEMPLATE; $page_title = $lng->txt("obj_blog") . " " . ++$blog_count; $valid = true; } break; // blog template => blog (needs recipe) // blog template => blog (needs recipe) case ilPortfolioTemplatePage::TYPE_BLOG_TEMPLATE: if ($direction == "t2p" && is_array($page_recipe)) { $page_type = ilPortfolioPage::TYPE_BLOG; if ($page_recipe[0] == "blog") { switch ($page_recipe[1]) { case "create": $page_title = self::createBlogInPersonalWorkspace($page_recipe[2]); $valid = true; break; case "reuse": $page_title = $page_recipe[2]; $valid = true; break; case "ignore": // do nothing break; } } } break; // page editor // page editor default: $target_page->setXMLContent($source_page->copyXmlContent(true)); // copy mobs $target_page->buildDom(true); // parse content / blocks $dom = $target_page->getDom(); if ($dom instanceof php4DOMDocument) { $dom = $dom->myDOMDocument; } if ($direction == "t2p") { // update profile/consultation hours user id self::updateDomNodes($dom, "//PageContent/Profile", "User", $ilUser->getId()); self::updateDomNodes($dom, "//PageContent/ConsultationHours", "User", $ilUser->getId()); } // :TODO: skills $valid = true; break; } if ($valid) { // #12038 - update xml from dom $target_page->setXMLContent($target_page->getXMLFromDom()); $target_page->setType($page_type); $target_page->setTitle($page_title); $target_page->create(); if ($page_type == ilPortfolioPage::TYPE_PAGE) { $target_page->update(); // handle mob usages! } } } }
protected function createPortfolioFromTemplateProcess($a_process_form = true) { global $ilSetting, $ilUser, $ilAccess; $title = trim($_REQUEST["pt"]); $prtt_id = (int) $_REQUEST["prtt"]; // valid template? include_once "Modules/Portfolio/classes/class.ilObjPortfolioTemplate.php"; $templates = array_keys(ilObjPortfolioTemplate::getAvailablePortfolioTemplates()); if (!sizeof($templates) || !in_array($prtt_id, $templates)) { $this->toRepository(); } unset($templates); // build page recipe (aka import form values) $recipe = null; if ($a_process_form) { $this->ctrl->setParameter($this, "prtt", $prtt_id); $form = $this->initCreatePortfolioFromTemplateForm($prtt_id, $title); if ($form->checkInput()) { include_once "Modules/Portfolio/classes/class.ilPortfolioTemplatePage.php"; foreach (ilPortfolioTemplatePage::getAllPages($prtt_id) as $page) { switch ($page["type"]) { case ilPortfolioTemplatePage::TYPE_BLOG_TEMPLATE: if (!$ilSetting->get('disable_wsp_blogs')) { $field_id = "blog_" . $page["id"]; switch ($form->getInput($field_id)) { case "blog_create": $recipe[$page["id"]] = array("blog", "create", trim($form->getInput($field_id . "_create_title"))); break; case "blog_resuse": $recipe[$page["id"]] = array("blog", "reuse", (int) $form->getInput($field_id . "_reuse_blog")); break; case "blog_ignore": $recipe[$page["id"]] = array("blog", "ignore"); break; } } break; } } $recipe["skills"] = (array) $form->getInput("skill_ids"); } else { $form->setValuesByPost(); return $this->createPortfolioFromTemplate($form); } } $source = new ilObjPortfolioTemplate($prtt_id, false); // create portfolio include_once "Modules/Portfolio/classes/class.ilObjPortfolio.php"; $target = new ilObjPortfolio(); $target->setTitle($title); $target->create(); $target_id = $target->getId(); $source->clonePagesAndSettings($source, $target, $recipe); // link portfolio to exercise assignment $exc_ref_id = (int) $_REQUEST["exc_id"]; $ass_id = (int) $_REQUEST["ass_id"]; if ($exc_ref_id && $ass_id && $ilAccess->checkAccess("read", "", $exc_ref_id)) { include_once "Modules/Exercise/classes/class.ilObjExercise.php"; include_once "Modules/Exercise/classes/class.ilExAssignment.php"; $exc = new ilObjExercise($exc_ref_id); $ass = new ilExAssignment($ass_id); if ($ass->getExerciseId() == $exc->getId() && $ass->getType() == ilExAssignment::TYPE_PORTFOLIO) { $exc->addResourceObject($target_id, $ass_id, $ilUser->getId()); } } ilUtil::sendSuccess($this->lng->txt("prtf_portfolio_created"), true); $this->ctrl->setParameter($this, "prt_id", $target_id); $this->ctrl->redirect($this, "view"); }
/** * Import record * * @param * @return */ function importRecord($a_entity, $a_types, $a_rec, $a_mapping, $a_schema_version) { switch ($a_entity) { case "prtt": include_once "./Modules/Portfolio/classes/class.ilObjPortfolioTemplate.php"; // container copy if ($new_id = $a_mapping->getMapping("Services/Container", "objs", $a_rec["Id"])) { $newObj = ilObjectFactory::getInstanceByObjId($new_id, false); } else { $newObj = new ilObjPortfolioTemplate(); $newObj->create(); } $newObj->setTitle($a_rec["Title"]); $newObj->setDescription($a_rec["Description"]); $newObj->setPublicComments($a_rec["Comments"]); $newObj->setBackgroundColor($a_rec["BgColor"]); $newObj->setFontColor($a_rec["FontColor"]); $newObj->setProfilePicture($a_rec["Ppic"]); $newObj->setImage($a_rec["Img"]); $newObj->update(); // handle image(s) if ($a_rec["Img"]) { $dir = str_replace("..", "", $a_rec["Dir"]); if ($dir != "" && $this->getImportDirectory() != "") { $source_dir = $this->getImportDirectory() . "/" . $dir; $target_dir = ilObjPortfolioTemplate::initStorage($newObj->getId()); ilUtil::rCopy($source_dir, $target_dir); } } $a_mapping->addMapping("Modules/Portfolio", "prtt", $a_rec["Id"], $newObj->getId()); break; case "portfolio_page": $prtt_id = (int) $a_mapping->getMapping("Modules/Portfolio", "prtt", $a_rec["PortfolioId"]); if ($prtt_id) { include_once "./Modules/Portfolio/classes/class.ilPortfolioTemplatePage.php"; $newObj = new ilPortfolioTemplatePage(); $newObj->setPortfolioId($prtt_id); $newObj->setTitle($a_rec["Title"]); $newObj->setType($a_rec["Type"]); $newObj->setOrderNr($a_rec["OrderNr"]); $newObj->create(true); $a_mapping->addMapping("Services/COPage", "pg", "prtt:" . $a_rec["Id"], "prtt:" . $newObj->getId()); } break; } }
/** * Build template from portfolio and vice versa * * @param ilObjPortfolioBase $a_source * @param ilObjPortfolioBase $a_target * @param array $a_recipe */ public static function clonePagesAndSettings(ilObjPortfolioBase $a_source, ilObjPortfolioBase $a_target, array $a_recipe = null) { global $lng, $ilUser; $source_id = $a_source->getId(); $target_id = $a_target->getId(); if ($a_source instanceof ilObjPortfolioTemplate && $a_target instanceof ilObjPortfolio) { $direction = "t2p"; } else { if ($a_source instanceof ilObjPortfolio && $a_target instanceof ilObjPortfolioTemplate) { $direction = "p2t"; } else { return; } } self::cloneBasics($a_source, $a_target); // personal skills include_once "Services/Skill/classes/class.ilPersonalSkill.php"; $pskills = array_keys(ilPersonalSkill::getSelectedUserSkills($ilUser->getId())); // copy pages $blog_count = 0; include_once "Modules/Portfolio/classes/class.ilPortfolioTemplatePage.php"; foreach (ilPortfolioPage::getAllPages($source_id) as $page) { $page_id = $page["id"]; if ($direction == "t2p") { $source_page = new ilPortfolioTemplatePage($page_id); $target_page = new ilPortfolioPage(); } else { $source_page = new ilPortfolioPage($page_id); $target_page = new ilPortfolioTemplatePage(); } $source_page->setPortfolioId($source_id); $target_page->setPortfolioId($target_id); $page_type = $source_page->getType(); $page_title = $source_page->getTitle(); $page_recipe = null; if (is_array($a_recipe)) { $page_recipe = $a_recipe[$page_id]; } $valid = false; switch ($page_type) { // blog => blog template case ilPortfolioTemplatePage::TYPE_BLOG: if ($direction == "p2t") { $page_type = ilPortfolioTemplatePage::TYPE_BLOG_TEMPLATE; $page_title = $lng->txt("obj_blog") . " " . ++$blog_count; $valid = true; } break; // blog template => blog (needs recipe) // blog template => blog (needs recipe) case ilPortfolioTemplatePage::TYPE_BLOG_TEMPLATE: if ($direction == "t2p" && is_array($page_recipe)) { $page_type = ilPortfolioPage::TYPE_BLOG; if ($page_recipe[0] == "blog") { switch ($page_recipe[1]) { case "create": $page_title = self::createBlogInPersonalWorkspace($page_recipe[2]); $valid = true; break; case "reuse": $page_title = $page_recipe[2]; $valid = true; break; case "ignore": // do nothing break; } } } break; // page editor // page editor default: $target_page->setXMLContent($source_page->copyXmlContent(true)); // copy mobs $target_page->buildDom(true); // parse content / blocks if ($direction == "t2p") { $dom = $target_page->getDom(); if ($dom instanceof php4DOMDocument) { $dom = $dom->myDOMDocument; } // update profile/consultation hours user id self::updateDomNodes($dom, "//PageContent/Profile", "User", $ilUser->getId()); self::updateDomNodes($dom, "//PageContent/ConsultationHours", "User", $ilUser->getId()); self::updateDomNodes($dom, "//PageContent/MyCourses", "User", $ilUser->getId()); // skills $xpath = new DOMXPath($dom); $nodes = $xpath->query("//PageContent/Skills"); foreach ($nodes as $node) { $skill_id = $node->getAttribute("Id"); // existing personal skills if (in_array($skill_id, $pskills)) { $node->setAttribute("User", $ilUser->getId()); } else { if (in_array($skill_id, $a_recipe["skills"])) { include_once "Services/Skill/classes/class.ilPersonalSkill.php"; ilPersonalSkill::addPersonalSkill($ilUser->getId(), $skill_id); $node->setAttribute("User", $ilUser->getId()); } else { $page_element = $node->parentNode; $page_element->parentNode->removeChild($page_element); } } } } $valid = true; break; } if ($valid) { // #12038 - update xml from dom $target_page->setXMLContent($target_page->getXMLFromDom()); $target_page->setType($page_type); $target_page->setTitle($page_title); $target_page->create(); if ($page_type == ilPortfolioPage::TYPE_PAGE) { $target_page->update(); // handle mob usages! } } } }