/**
  * Handle target parameter
  * @param object $a_target
  * @return 
  */
 public static function handleCode($a_ref_id, $a_type, $a_code)
 {
     global $lng, $tree, $ilUser;
     include_once './Services/Link/classes/class.ilLink.php';
     $lng->loadLanguageModule($a_type);
     try {
         self::useCode($a_code, $a_ref_id);
         $title = ilObject::_lookupTitle(ilObject::_lookupObjectId($a_ref_id));
         ilUtil::sendSuccess(sprintf($lng->txt($a_type . "_admission_link_success_registration"), $title), true);
         ilUtil::redirect(ilLink::_getLink($a_ref_id));
     } catch (ilMembershipRegistrationException $e) {
         switch ($e->getCode()) {
             case 124:
                 //added to waiting list
                 ilUtil::sendSuccess($e->getMessage(), true);
                 break;
             case 123:
                 //object is full
                 ilUtil::sendFailure($lng->txt($a_type . "_admission_link_failure_membership_limited"), true);
                 break;
             case 789:
                 //out of registration period
                 ilUtil::sendFailure($lng->txt($a_type . "_admission_link_failure_registration_period"), true);
                 break;
             default:
                 ilUtil::sendFailure($e->getMessage(), true);
                 break;
         }
         $GLOBALS['ilLog']->logStack();
         $GLOBALS['ilLog']->write($e->getCode() . ': ' . $e->getMessage());
         $parent_id = $tree->getParentId($a_ref_id);
         ilUtil::redirect(ilLink::_getLink($parent_id));
     }
 }
示例#2
0
 function __construct()
 {
     global $ilias, $tpl, $ilCtrl, $ilUser, $lng;
     //erase next?
     if ($_REQUEST['learnerId']) {
         $this->userId = $_REQUEST['learnerId'];
     } else {
         $this->userId = $GLOBALS['USER']['usr_id'];
     }
     $this->packageId = (int) $_REQUEST['packageId'];
     $this->jsMode = strpos($_SERVER['HTTP_ACCEPT'], 'text/javascript') !== false;
     $this->page = $_REQUEST['page'];
     $this->slm =& new ilObjSCORM2004LearningModule($_GET["ref_id"], true);
     $this->ilias =& $ilias;
     $this->tpl =& $tpl;
     $this->ctrl =& $ilCtrl;
     $this->packageId = ilObject::_lookupObjectId($_GET['ref_id']);
     $this->ref_id = $_GET['ref_id'];
     $this->userId = $ilUser->getID();
     if ($_GET['envEditor'] != null) {
         $this->envEditor = $_GET['envEditor'];
     } else {
         $this->envEditor = 0;
     }
 }
 /**
  * Constructor
  *
  * @param	int		$a_id		Object ID
  * @access	public
  */
 function __construct()
 {
     global $ilias;
     $this->ilias =& $ilias;
     $this->id = $_GET['ref_id'];
     $this->obj_id = ilObject::_lookupObjectId($_GET['ref_id']);
     include_once "./Modules/ScormAicc/classes/class.ilObjSAHSLearningModule.php";
     $this->type = ilObjSAHSLearningModule::_lookupSubType($this->obj_id);
     $this->read();
 }
 public function getPossibleItems($a_ref_id)
 {
     if (!isset(self::$possible_items[$a_ref_id])) {
         $obj_id = ilObject::_lookupObjectId($a_ref_id);
         $items = array();
         // only top-level chapters
         include_once "Services/MetaData/classes/class.ilMDEducational.php";
         $tree = new ilTree($obj_id);
         $tree->setTableNames('lm_tree', 'lm_data');
         $tree->setTreeTablePK("lm_id");
         foreach ($tree->getChilds($tree->readRootId()) as $child) {
             if ($child["type"] == "st") {
                 $child["tlt"] = ilMDEducational::_getTypicalLearningTimeSeconds($obj_id, $child["obj_id"]);
                 $items[$child["obj_id"]] = $child;
             }
         }
         self::$possible_items[$a_ref_id] = $items;
     }
     return self::$possible_items[$a_ref_id];
 }
     $lng->loadLanguageModule("sop");
     $this->lng =& $lng;
     $this->ctrl =& $ilCtrl;
     $this->ctrl->saveParameter($this, "ref_id");
     $this->offlineMode = new ilSCORMOfflineMode();
     $this->online_icon = 'icon_slm_b.png';
     $this->offline_icon = 'icon_slm_b_offline.png';
     $this->icon = $this->online_icon;
 }
 function executeCommand()
 {
     global $tpl, $ilCtrl;
     $this->lmId = ilObject::_lookupObjectId($_GET["ref_id"]);
     $this->clientIdSop = $this->offlineMode->getClientIdSop();
     $cmd = $ilCtrl->getCmd();
     $this->setOfflineModeTabs($cmd);
     switch ($cmd) {
         case 'offlineMode_il2sopContent':
             ilUtil::deliverFile(ilUtil::getDataDir() . "/lm_data/lm_" . $this->lmId . ".zip", "lm_" . $this->lmId . ".zip");
             break;
         case 'offlineMode_il2sop':
             $this->offlineMode->il2sop();
             break;
         case 'offlineMode_il2sopStop':
             $this->offlineMode->setOfflineMode("online");
             $this->view($this->offlineMode->getOfflineMode(), "msg_export_failure");
             break;
         case 'offlineMode_il2sopOk':
             $this->offlineMode->setOfflineMode("offline");
             $this->view($this->offlineMode->getOfflineMode(), "msg_export_ok");
             break;
         case 'offlineMode_sop2il':
             $this->offlineMode->sop2il();
             break;
         case 'offlineMode_sop2ilStop':
             $this->offlineMode->setOfflineMode("offline");
             $this->view($this->offlineMode->getOfflineMode(), "msg_push_tracking_failure");
             break;
         case 'offlineMode_sop2ilOk':
             $this->offlineMode->setOfflineMode("online");
             $this->view($this->offlineMode->getOfflineMode(), "msg_push_tracking_ok");
 /**
  * 
  */
 private function initParticipantsObject()
 {
     if ($this->getRefId() > 0) {
         global $tree;
         $this->pluginObj->includeClass('class.ilAdobeConnectContainerParticipants.php');
         $parent_ref = $tree->checkForParentType($this->getRefId(), 'grp');
         if (!$parent_ref) {
             $parent_ref = $tree->checkForParentType($this->getRefId(), 'crs');
         }
         $object_id = ilObject::_lookupObjectId($parent_ref);
         $this->participants = ilAdobeConnectContainerParticipants::getInstanceByObjId($object_id);
     }
 }
示例#7
0
 /**
  * Constructor
  *
  * @param int $a_id
  * @param int $a_id_type
  * @param int $a_parent_node_id
  */
 function __construct($a_id = 0, $a_id_type = self::REPOSITORY_NODE_ID, $a_parent_node_id = 0)
 {
     global $objDefinition, $tpl, $ilCtrl, $ilErr, $lng, $ilTabs, $tree, $ilAccess;
     if (!isset($ilErr)) {
         $ilErr = new ilErrorHandling();
         $ilErr->setErrorHandling(PEAR_ERROR_CALLBACK, array($ilErr, 'errorHandler'));
     } else {
         $this->ilErr =& $ilErr;
     }
     $this->id_type = $a_id_type;
     $this->parent_id = $a_parent_node_id;
     $this->type = $this->getType();
     $this->html = "";
     // use globals instead?
     $this->tabs_gui = $ilTabs;
     $this->objDefinition = $objDefinition;
     $this->tpl = $tpl;
     $this->ctrl = $ilCtrl;
     $this->lng = $lng;
     $params = array();
     switch ($this->id_type) {
         case self::REPOSITORY_NODE_ID:
             $this->node_id = $a_id;
             $this->object_id = ilObject::_lookupObjectId($this->node_id);
             $this->tree = $tree;
             $this->access_handler = $ilAccess;
             $this->call_by_reference = true;
             // needed for prepareOutput()
             $params[] = "ref_id";
             break;
         case self::REPOSITORY_OBJECT_ID:
             $this->object_id = $a_id;
             $this->tree = $tree;
             $this->access_handler = $ilAccess;
             $params[] = "obj_id";
             // ???
             break;
         case self::WORKSPACE_NODE_ID:
             global $ilUser;
             $this->node_id = $a_id;
             include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceTree.php";
             $this->tree = new ilWorkspaceTree($ilUser->getId());
             $this->object_id = $this->tree->lookupObjectId($this->node_id);
             include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceAccessHandler.php";
             $this->access_handler = new ilWorkspaceAccessHandler($this->tree);
             $params[] = "wsp_id";
             break;
         case self::WORKSPACE_OBJECT_ID:
             global $ilUser;
             $this->object_id = $a_id;
             include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceTree.php";
             $this->tree = new ilWorkspaceTree($ilUser->getId());
             include_once "Services/PersonalWorkspace/classes/class.ilWorkspaceAccessHandler.php";
             $this->access_handler = new ilWorkspaceAccessHandler($this->tree);
             $params[] = "obj_id";
             // ???
             break;
         case self::PORTFOLIO_OBJECT_ID:
             $this->object_id = $a_id;
             include_once './Modules/Portfolio/classes/class.ilPortfolioAccessHandler.php';
             $this->access_handler = new ilPortfolioAccessHandler();
             $params[] = "prt_id";
             break;
         case self::OBJECT_ID:
             $this->object_id = $a_id;
             include_once "Services/Object/classes/class.ilDummyAccessHandler.php";
             $this->access_handler = new ilDummyAccessHandler();
             $params[] = "obj_id";
             break;
     }
     $this->ctrl->saveParameter($this, $params);
     // old stuff for legacy code (obsolete?)
     if (!$this->object_id) {
         $this->creation_mode = true;
     }
     if ($this->node_id) {
         // add parent node id if missing
         if (!$this->parent_id && $this->tree) {
             $this->parent_id = $this->tree->getParentId($this->node_id);
         }
     }
     $this->ref_id = $this->node_id;
     $this->obj_id = $this->object_id;
     $this->assignObject();
     // set context
     if (is_object($this->object)) {
         $this->ctrl->setContext($this->object->getId(), $this->object->getType());
     }
     $this->afterConstructor();
 }
 /**
  * update a weblink with id.
  *
  * @param string $session_id    current session
  * @param int $ref_id   refid id of weblink in repository
  * @param string $weblink_xml  xml description
  *
  * @return boolean true, if update successful, false otherwise
  */
 function updateWebLink($sid, $ref_id, $weblink_xml)
 {
     $this->initAuth($sid);
     $this->initIlias();
     if (!$this->__checkSession($sid)) {
         return $this->__raiseError($this->__getMessage(), $this->__getMessageCode());
     }
     global $rbacsystem, $tree, $ilLog;
     if (ilObject::_isInTrash($ref_id)) {
         return $this->__raiseError('Cannot perform update since weblink has been deleted.', 'CLIENT_OBJECT_DELETED');
     }
     // get obj_id
     if (!($obj_id = ilObject::_lookupObjectId($ref_id))) {
         return $this->__raiseError('No weblink found for id: ' . $ref_id, 'CLIENT_OBJECT_NOT_FOUND');
     }
     // Check access
     $permission_ok = false;
     foreach ($ref_ids = ilObject::_getAllReferences($obj_id) as $ref_id) {
         if ($rbacsystem->checkAccess('edit', $ref_id)) {
             $permission_ok = true;
             break;
         }
     }
     if (!$permission_ok) {
         return $this->__raiseError('No permission to edit the weblink with id: ' . $ref_id, 'Server');
     }
     $webl = ilObjectFactory::getInstanceByObjId($obj_id, false);
     if (!is_object($webl) or $webl->getType() != "webr") {
         return $this->__raiseError('Wrong obj id or type for weblink with id ' . $ref_id, 'Client');
     }
     try {
         include_once './Modules/WebResource/classes/class.ilWebLinkXmlParser.php';
         $parser = new ilWebLinkXmlParser($webl, $weblink_xml);
         $parser->setMode(ilWebLinkXmlParser::MODE_UPDATE);
         $parser->start();
     } catch (ilSaxParserException $e) {
         return $this->__raiseError($e->getMessage(), 'Client');
     } catch (ilWebLinkXMLParserException $e) {
         return $this->__raiseError($e->getMessage(), 'Client');
     }
     // Check if required
     return true;
 }
 /**
  * upload new version of module
  */
 function newModuleVersion()
 {
     $obj_id = ilObject::_lookupObjectId($_GET['ref_id']);
     $type = ilObjSAHSLearningModule::_lookupSubType($obj_id);
     // display import form
     $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.scorm_new_version_import.html", "Modules/ScormAicc");
     $this->tpl->setVariable("TYPE_IMG", ilUtil::getImagePath('icon_slm.png'));
     $this->tpl->setVariable("ALT_IMG", $this->lng->txt("obj_sahs"));
     $this->ctrl->setParameter($this, "new_type", "sahs");
     $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
     $this->tpl->setVariable("BTN_NAME", "newModuleVersionUpload");
     $this->tpl->setVariable("TARGET", ' target="' . ilFrameTargetInfo::_getFrame("MainContent") . '" ');
     $this->tpl->setVariable("TXT_SELECT_LMTYPE", $this->lng->txt("type"));
     if ($type == "scorm2004") {
         $this->tpl->setVariable("TXT_TYPE", $this->lng->txt("lm_type_scorm2004"));
     } else {
         $this->tpl->setVariable("TXT_TYPE", $this->lng->txt("lm_type_scorm"));
     }
     include_once 'Services/FileSystem/classes/class.ilUploadFiles.php';
     if (ilUploadFiles::_getUploadDirectory()) {
         $files = ilUploadFiles::_getUploadFiles();
         foreach ($files as $file) {
             $file = htmlspecialchars($file, ENT_QUOTES, "utf-8");
             $this->tpl->setCurrentBlock("option_uploaded_file");
             $this->tpl->setVariable("UPLOADED_FILENAME", $file);
             $this->tpl->setVariable("TXT_UPLOADED_FILENAME", $file);
             $this->tpl->parseCurrentBlock();
         }
         $this->tpl->setCurrentBlock("select_uploaded_file");
         $this->tpl->setVariable("TXT_SELECT_FROM_UPLOAD_DIR", $this->lng->txt("cont_select_from_upload_dir"));
         $this->tpl->setVariable("TXT_UPLOADED_FILE", $this->lng->txt("cont_uploaded_file"));
         $this->tpl->parseCurrentBlock();
     }
     $this->tpl->setVariable("TXT_UPLOAD", $this->lng->txt("upload"));
     $this->tpl->setVariable("TXT_CANCEL", $this->lng->txt("cancel"));
     $this->tpl->setVariable("TXT_IMPORT_LM", $this->lng->txt("import_sahs"));
     $this->tpl->setVariable("TXT_SELECT_FILE", $this->lng->txt("select_file"));
     // gives out the limit as a little notice
     $this->tpl->setVariable("TXT_FILE_INFO", $this->lng->txt("file_notice") . " " . $this->getMaxFileSize());
 }
 /**
  * @param integer $ref_id ref_id of ilias ac-object
  * @param integer $sco_id
  * @param array   $member_ids
  */
 public function addCrsGrpMembers($ref_id, $sco_id, $member_ids = null)
 {
     global $tree;
     $parent_crs_ref = $tree->checkForParentType($ref_id, 'crs');
     $parent_grp_ref = $tree->checkForParentType($ref_id, 'grp');
     $type = null;
     $obj_id = 0;
     if ($parent_crs_ref && empty($parent_grp_ref)) {
         $obj_id = ilObject::_lookupObjectId($parent_crs_ref);
         include_once 'Modules/Course/classes/class.ilCourseParticipants.php';
         $oParticipants = ilCourseParticipants::_getInstanceByObjId($obj_id);
         $type = 'crs';
     } else {
         if ($parent_grp_ref) {
             $obj_id = ilObject::_lookupObjectId($parent_grp_ref);
             include_once 'Modules/Group/classes/class.ilGroupParticipants.php';
             $oParticipants = ilGroupParticipants::_getInstanceByObjId($obj_id);
             $type = 'grp';
         }
     }
     if ($type == 'crs' || $type == 'grp') {
         $role_map = ilAdobeConnectServer::getRoleMap();
         $owner_id = ilObject::_lookupOwner(ilObject::_lookupObjectId($ref_id));
         /** @var $oParticipants  ilGroupParticipants | ilCourseParticipants */
         $admins = $oParticipants->getAdmins();
         $tutors = $oParticipants->getTutors();
         $members = $oParticipants->getMembers();
         if (is_array($member_ids) && count($member_ids) > 0) {
             $all_participants = $member_ids;
             $admins = array_uintersect($member_ids, $admins, 'strcmp');
             $tutors = array_uintersect($member_ids, $tutors, 'strcmp');
             $members = array_uintersect($member_ids, $members, 'strcmp');
         } else {
             $all_participants = array_unique(array_merge($admins, $tutors, $members));
         }
         $this->pluginObj->includeClass('class.ilAdobeConnectRoles.php');
         $xavcRoles = new ilAdobeConnectRoles($ref_id);
         if (ilAdobeConnectServer::getSetting('user_assignment_mode') != ilAdobeConnectServer::ASSIGN_USER_SWITCH) {
             foreach ($all_participants as $user_id) {
                 $this->pluginObj->includeClass('class.ilAdobeConnectUserUtil.php');
                 //check if there is an adobe connect account at the ac-server
                 $ilAdobeConnectUser = new ilAdobeConnectUserUtil($user_id);
                 $ilAdobeConnectUser->ensureAccountExistance();
                 // add to desktop
                 if (ilAdobeConnectServer::getSetting('add_to_desktop') == 1) {
                     ilObjUser::_addDesktopItem($user_id, $ref_id, 'xavc');
                 }
             }
         }
         // receive breeze session
         $session = self::getSession();
         $this->pluginObj->includeClass('class.ilXAVCMembers.php');
         if ($session != NULL && $this->xmlApi->login($this->adminLogin, $this->adminPass, $session)) {
             foreach ($admins as $user_id) {
                 $xavcRoles->addAdministratorRole($user_id);
                 $is_member = ilXAVCMembers::_isMember($user_id, $ref_id);
                 // local member table
                 $xavcMemberObj = new ilXAVCMembers($ref_id, $user_id);
                 $status = $role_map[$type . '_admin'];
                 $xavcMemberObj->setStatus($status);
                 $xavcMemberObj->setScoId($sco_id);
                 if ($is_member) {
                     $xavcMemberObj->updateXAVCMember();
                 } else {
                     $xavcMemberObj->insertXAVCMember();
                 }
                 $xavc_login = ilXAVCMembers::_lookupXAVCLogin($user_id);
                 if (!empty($xavc_login)) {
                     $this->xmlApi->updateMeetingParticipant($sco_id, $xavc_login, $session, $status);
                 }
             }
             foreach ($tutors as $user_id) {
                 if (($xavc_login = ilXAVCMembers::_lookupXAVCLogin($user_id)) != $this->adminLogin && $user_id != $owner_id) {
                     $xavcRoles->addAdministratorRole($user_id);
                     $is_member = ilXAVCMembers::_isMember($user_id, $ref_id);
                     // local member table
                     $xavcMemberObj = new ilXAVCMembers($ref_id, $user_id);
                     $status = $role_map[$type . '_tutor'];
                     $xavcMemberObj->setStatus($status);
                     $xavcMemberObj->setScoId($sco_id);
                     if ($is_member) {
                         $xavcMemberObj->updateXAVCMember();
                     } else {
                         $xavcMemberObj->insertXAVCMember();
                     }
                     if (!empty($xavc_login)) {
                         $this->xmlApi->updateMeetingParticipant($sco_id, $xavc_login, $session, $status);
                     }
                 }
             }
             foreach ($members as $user_id) {
                 if (($xavc_login = ilXAVCMembers::_lookupXAVCLogin($user_id)) != $this->adminLogin && $user_id != $owner_id) {
                     $xavcRoles->addMemberRole($user_id);
                     $is_member = ilXAVCMembers::_isMember($user_id, $ref_id);
                     // local member table
                     $xavcMemberObj = new ilXAVCMembers($ref_id, $user_id);
                     $status = $role_map[$type . '_member'];
                     $xavcMemberObj->setStatus($status);
                     $xavcMemberObj->setScoId($sco_id);
                     if ($is_member) {
                         $xavcMemberObj->updateXAVCMember();
                     } else {
                         $xavcMemberObj->insertXAVCMember();
                     }
                     if (!empty($xavc_login)) {
                         $this->xmlApi->updateMeetingParticipant($sco_id, $xavc_login, $session, $status);
                     }
                 }
             }
             $xavcRoles->addAdministratorRole($owner_id);
             // local member table
             $xavcMemberObj = new ilXAVCMembers($ref_id, $owner_id);
             $status = $role_map[$type . '_owner'];
             $xavcMemberObj->setStatus($status);
             $xavcMemberObj->setScoId($sco_id);
             $is_member = ilXAVCMembers::_isMember($owner_id, $ref_id);
             if ($is_member) {
                 $xavcMemberObj->updateXAVCMember();
             } else {
                 $xavcMemberObj->insertXAVCMember();
             }
             $this->xmlApi->updateMeetingParticipant($sco_id, ilXAVCMembers::_lookupXAVCLogin($owner_id), $session, $status);
         }
     }
 }
 function details()
 {
     global $ilToolbar, $ilCtrl, $rbacsystem;
     // Show back button to crs if called from crs. Otherwise if called from personal desktop or administration
     // show back to list
     if ((int) $_GET['crs_id']) {
         $this->ctrl->setParameter($this, 'details_id', (int) $_GET['crs_id']);
         $ilToolbar->addButton($this->lng->txt('trac_view_crs'), $this->ctrl->getLinkTarget($this, 'details'));
     } elseif ($this->getMode() == self::LP_CONTEXT_PERSONAL_DESKTOP or $this->getMode() == self::LP_CONTEXT_ADMINISTRATION or $this->getMode() == self::LP_CONTEXT_USER_FOLDER) {
         $ilToolbar->addButton($this->lng->txt('trac_view_list'), $this->ctrl->getLinkTarget($this, 'show'));
     }
     $this->tpl->addBlockFile('ADM_CONTENT', 'adm_content', 'tpl.lp_progress_container.html', 'Services/Tracking');
     include_once "./Services/InfoScreen/classes/class.ilInfoScreenGUI.php";
     $info = new ilInfoScreenGUI($this);
     $info->setFormAction($ilCtrl->getFormAction($this));
     $this->__appendUserInfo($info, $this->tracked_user);
     $this->__appendLPDetails($info, $this->details_obj_id, $this->tracked_user->getId());
     $this->__showObjectDetails($info, $this->details_obj_id, false);
     // Finally set template variable
     $this->tpl->setVariable("LM_INFO", $info->getHTML());
     include_once './Services/Object/classes/class.ilObjectLP.php';
     $olp = ilObjectLP::getInstance($this->details_obj_id);
     $collection = $olp->getCollectionInstance();
     if ($collection) {
         $obj_ids = array();
         foreach ($collection->getItems() as $item_id) {
             if ($collection instanceof ilLPCollectionOfRepositoryObjects) {
                 $obj_ids[ilObject::_lookupObjectId($item_id)] = array($item_id);
             } else {
                 $obj_ids[] = $item_id;
             }
         }
     }
     // #15247
     if (sizeof($obj_ids)) {
         // seems obsolete
         $personal_only = !$rbacsystem->checkAccess('read_learning_progress', $this->getRefId());
         include_once "./Services/Tracking/classes/repository_statistics/class.ilLPProgressTableGUI.php";
         $lp_table = new ilLPProgressTableGUI($this, "details", $this->tracked_user, $obj_ids, true, $this->details_mode, $personal_only, $this->details_obj_id, $this->details_id);
         $this->tpl->setVariable("LP_OBJECTS", $lp_table->getHTML());
     }
     $this->tpl->setVariable("LEGEND", $this->__getLegendHTML());
 }
示例#12
0
 static final function _lookupObjectId($a_ref_id)
 {
     return parent::_lookupObjectId($a_ref_id);
 }
 /**
  * get results of test
  *
  * @param string $sid
  * @param int $test_ref_id
  * @param boolean $sum_only
  *
  * @return XMLResultSet with columns 
  * 	sum only = true: user_id, login, firstname, lastname, matriculation, maximum points, received points
  *  sum only = false: user_id, login, firstname, lastname, matriculation, question id, question title, question points, received points
  */
 function getTestResults($sid, $test_ref_id, $sum_only)
 {
     $this->initAuth($sid);
     $this->initIlias();
     if (!$this->__checkSession($sid)) {
         return $this->__raiseError($this->__getMessage(), $this->__getMessageCode());
     }
     if (!strlen($test_ref_id)) {
         return $this->__raiseError('No test id given. Aborting!', 'Client');
     }
     global $rbacsystem, $tree, $ilLog;
     if (ilObject::_isInTrash($test_ref_id)) {
         return $this->__raiseError('Test is trashed. Aborting!', 'Client');
     }
     // get obj_id
     if (!($obj_id = ilObject::_lookupObjectId($test_ref_id))) {
         return $this->__raiseError('No test found for id: ' . $test_ref_id, 'Client');
     }
     // Check access
     $permission_ok = false;
     foreach ($ref_ids = ilObject::_getAllReferences($obj_id) as $ref_id) {
         if ($rbacsystem->checkAccess('write', $ref_id)) {
             $permission_ok = true;
             break;
         }
     }
     if (!$permission_ok) {
         return $this->__raiseError('No permission to edit the object with id: ' . $test_ref_id, 'Server');
     }
     // store into xml result set
     include_once './webservice/soap/classes/class.ilXMLResultSet.php';
     include_once './webservice/soap/classes/class.ilXMLResultSetWriter.php';
     $xmlResultSet = new ilXMLResultSet();
     $xmlResultSet->addColumn("user_id");
     $xmlResultSet->addColumn("login");
     $xmlResultSet->addColumn("firstname");
     $xmlResultSet->addColumn("lastname");
     $xmlResultSet->addColumn("matriculation");
     include_once './Modules/Test/classes/class.ilObjTest.php';
     $test_obj = new ilObjTest($obj_id, false);
     $participants = $test_obj->getTestParticipants();
     if ($sum_only) {
         $data = $test_obj->getAllTestResults($participants, false);
         // create xml
         $xmlResultSet->addColumn("maximum_points");
         $xmlResultSet->addColumn("received_points");
         // skip titles
         $titles = array_shift($data);
         foreach ($data as $row) {
             $xmlRow = new ilXMLResultSetRow();
             $xmlRow->setValue(0, $row["user_id"]);
             $xmlRow->setValue(1, $row["login"]);
             $xmlRow->setValue(2, $row["firstname"]);
             $xmlRow->setValue(3, $row["lastname"]);
             $xmlRow->setValue(4, $row["matriculation"]);
             $xmlRow->setValue(5, $row["max_points"]);
             $xmlRow->setValue(6, $row["reached_points"]);
             $xmlResultSet->addRow($xmlRow);
         }
     } else {
         $data = $test_obj->getDetailedTestResults($participants);
         // create xml
         $xmlResultSet->addColumn("question_id");
         $xmlResultSet->addColumn("question_title");
         $xmlResultSet->addColumn("maximum_points");
         $xmlResultSet->addColumn("received_points");
         foreach ($data as $row) {
             $xmlRow = new ilXMLResultSetRow();
             $xmlRow->setValue(0, $row["user_id"]);
             $xmlRow->setValue(1, $row["login"]);
             $xmlRow->setValue(2, $row["firstname"]);
             $xmlRow->setValue(3, $row["lastname"]);
             $xmlRow->setValue(4, $row["matriculation"]);
             $xmlRow->setValue(5, $row["question_id"]);
             $xmlRow->setValue(6, $row["question_title"]);
             $xmlRow->setValue(7, $row["max_points"]);
             $xmlRow->setValue(8, $row["reached_points"]);
             $xmlResultSet->addRow($xmlRow);
         }
     }
     // create writer
     $xmlWriter = new ilXMLResultSetWriter($xmlResultSet);
     $xmlWriter->start();
     return $xmlWriter->getXML();
 }
示例#14
0
 /**
  * edit page content (for repository root node and categories)
  *
  * @access	public
  */
 function editPageContentObject()
 {
     global $rbacsystem, $tpl, $lng, $ilCtrl;
     if (!$rbacsystem->checkAccess("write", $this->ref_id)) {
         $this->ilias->raiseError($this->lng->txt("msg_no_perm_write"), $this->ilias->error_obj->MESSAGE);
     }
     $xpage_id = ilContainer::_lookupContainerSetting($this->object->getId(), "xhtml_page");
     if ($xpage_id > 0) {
         include_once "Services/XHTMLPage/classes/class.ilXHTMLPage.php";
         $xpage = new ilXHTMLPage($xpage_id);
         $content = $xpage->getContent();
     }
     // get template
     $tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.container_edit_page_content.html", "Services/Container");
     $tpl->setVariable("VAL_CONTENT", ilUtil::prepareFormOutput($content));
     $tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
     $tpl->setVariable("TXT_EDIT_PAGE_CONTENT", $this->lng->txt("edit_page_content"));
     $tpl->setVariable("TXT_SAVE", $this->lng->txt("save"));
     $tpl->setVariable("TXT_CANCEL", $this->lng->txt("cancel"));
     $tpl->setVariable("TXT_MIGRATION_INFO", $lng->txt("cntr_old_editor_warning"));
     $tpl->setVariable("TXT_MIGRATION_OPEN_STD_EDITOR", $lng->txt("cntr_old_editor_open_standard_editor"));
     $tpl->setVariable("IMG_WARNING", ilUtil::getImagePath("icon_alert.svg"));
     $tpl->setVariable("HREF_OPEN_STD_EDITOR", $ilCtrl->getLinkTarget($this, "switchToStdEditor"));
     $tpl->setVariable("ALT_WARNING", $lng->txt("warning"));
     include_once "./Services/Form/classes/class.ilFormPropertyGUI.php";
     include_once "./Services/Form/classes/class.ilTextAreaInputGUI.php";
     //$ta = new ilTextAreaInputGUI();
     //$tags = $ta->getRteTagSet("extended_table_img");
     // add rte support
     include_once "./Services/RTE/classes/class.ilRTE.php";
     $rtestring = ilRTE::_getRTEClassname();
     include_once "./Services/RTE/classes/class.{$rtestring}.php";
     $rte = new $rtestring();
     //$rte->addPlugin("latex");
     include_once "./Services/Object/classes/class.ilObject.php";
     $obj_id = ilObject::_lookupObjectId($_GET["ref_id"]);
     $obj_type = ilObject::_lookupType($_GET["ref_id"], TRUE);
     $rte->addRTESupport($obj_id, $obj_type);
     //$rte->setStyleSelect(true);
     //$rte->addCustomRTESupport($obj_id, $obj_type, $tags);
 }
 /**
  * Handle group creation inside main course
  * @param type $a_obj_id
  */
 protected function handleGroupCreation($a_node_ref_id, $a_node_obj_id, $a_node_obj_type)
 {
     if ($a_node_obj_type != 'grp') {
         $GLOBALS['ilLog']->write(__METHOD__ . ': New node not of type grp for ref_id ' . $a_node_ref_id);
         return false;
     }
     if (!$a_node_ref_id) {
         $GLOBALS['ilLog']->write(__METHOD__ . ': No ref_id given. Aborting!');
         return false;
     }
     $parent_id = $GLOBALS['tree']->getParentId($a_node_ref_id);
     if (ilObject::_lookupType($parent_id, true) != 'crs') {
         $GLOBALS['ilLog']->write(__METHOD__ . ': Parent type is not of type "crs"');
         return false;
     }
     if (!$this->isMainCourse($parent_id)) {
         $GLOBALS['ilLog']->write(__METHOD__ . ': Parent course is not main course for group ref_id ' . $a_node_ref_id);
         return false;
     }
     // determine default group role
     $group_role_id = 0;
     foreach ($GLOBALS['rbacreview']->getRolesOfObject($a_node_ref_id, TRUE) as $role_id) {
         $role_title = ilObject::_lookupTitle($role_id);
         if (substr($role_title, 0, 8) == 'il_grp_m') {
             $group_role_id = $role_id;
         }
     }
     if (!$group_role_id) {
         $GLOBALS['ilLog']->write(__METHOD__ . ': Did not found default group member role for group obj_id ' . $a_node_obj_id);
         return false;
     }
     // now assign all members of the parent course to the new group
     include_once './Modules/Course/classes/class.ilCourseParticipants.php';
     $part = ilCourseParticipants::getInstanceByObjId(ilObject::_lookupObjectId($parent_id));
     foreach ($part->getMembers() as $member_id) {
         // do not assign user if he/she is admin or tutor
         if ($part->isAdmin($member_id) || $part->isTutor($member_id)) {
             continue;
         }
         $GLOBALS['rbacadmin']->assignUser($group_role_id, $member_id);
     }
     return true;
 }
 function details()
 {
     global $ilToolbar, $ilCtrl, $rbacsystem;
     // Show back button to crs if called from crs. Otherwise if called from personal desktop or administration
     // show back to list
     if ((int) $_GET['crs_id']) {
         $this->ctrl->setParameter($this, 'details_id', (int) $_GET['crs_id']);
         $ilToolbar->addButton($this->lng->txt('trac_view_crs'), $this->ctrl->getLinkTarget($this, 'details'));
     } elseif ($this->getMode() == self::LP_CONTEXT_PERSONAL_DESKTOP or $this->getMode() == self::LP_CONTEXT_ADMINISTRATION or $this->getMode() == self::LP_CONTEXT_USER_FOLDER) {
         $ilToolbar->addButton($this->lng->txt('trac_view_list'), $this->ctrl->getLinkTarget($this, 'show'));
     }
     $this->tpl->addBlockFile('ADM_CONTENT', 'adm_content', 'tpl.lp_progress_container.html', 'Services/Tracking');
     $olp = ilObjectLP::getInstance($this->details_obj_id);
     $collection = $olp->getCollectionInstance();
     include_once "./Services/InfoScreen/classes/class.ilInfoScreenGUI.php";
     $info = new ilInfoScreenGUI($this);
     $info->setFormAction($ilCtrl->getFormAction($this));
     $this->__appendUserInfo($info, $this->tracked_user);
     $this->__showObjectDetails($info, $this->details_obj_id, false);
     // START PATCH RUBRIC CPKN 2016
     include_once './Services/Tracking/classes/rubric/class.ilLPRubricGrade.php';
     include_once './Services/Tracking/classes/rubric/class.ilLPRubricGradeGUI.php';
     //if the user is viewing history show the old status/mark/etc.
     if ($olp->getCurrentMode() == 92 && $_REQUEST['grader_history'] !== 'current' && !is_null($_REQUEST['grader_history'])) {
         $marks = ilLPRubricGrade::_lookupRubricHistoryLP($_REQUEST['grader_history']);
         include_once "./Services/Tracking/classes/class.ilLearningProgressBaseGUI.php";
         $status_path = ilLearningProgressBaseGUI::_getImagePathForStatus($marks['status']);
         $status_text = ilLearningProgressBaseGUI::_getStatusText($marks['status']);
         $info->addSection($this->lng->txt("trac_progress") . ": " . ilObject::_lookupTitle($this->details_obj_id));
         $info->addProperty($this->lng->txt('trac_mode'), $olp->getModeText($olp->getCurrentMode()));
         $info->addProperty($this->lng->txt('trac_status'), ilUtil::img($status_path, $status_text) . " " . $status_text);
         $info->addProperty($this->lng->txt('trac_mark'), $marks['mark']);
         $info->addProperty($this->lng->txt('trac_comment'), $marks['comments']);
     } else {
         $this->__appendLPDetails($info, $this->details_obj_id, $this->tracked_user->getId());
     }
     // END PATCH RUBRIC CPKN 2016
     // Finally set template variable
     $this->tpl->setVariable("LM_INFO", $info->getHTML());
     include_once './Services/Object/classes/class.ilObjectLP.php';
     if ($collection) {
         $obj_ids = array();
         foreach ($collection->getItems() as $item_id) {
             if ($collection instanceof ilLPCollectionOfRepositoryObjects) {
                 $obj_ids[ilObject::_lookupObjectId($item_id)] = array($item_id);
             } else {
                 $obj_ids[] = $item_id;
             }
         }
     }
     // #15247
     if (sizeof($obj_ids)) {
         // seems obsolete
         $personal_only = !$rbacsystem->checkAccess('read_learning_progress', $this->getRefId());
         include_once "./Services/Tracking/classes/repository_statistics/class.ilLPProgressTableGUI.php";
         $lp_table = new ilLPProgressTableGUI($this, "details", $this->tracked_user, $obj_ids, true, $this->details_mode, $personal_only, $this->details_obj_id, $this->details_id);
         $this->tpl->setVariable("LP_OBJECTS", $lp_table->getHTML());
     }
     $this->tpl->setVariable("LEGEND", $this->__getLegendHTML());
     // START PATCH RUBRIC CPKN 2015
     if ($olp->getCurrentMode() == ilLPObjSettings::LP_MODE_RUBRIC) {
         $rubricObj = new ilLPRubricGrade($this->getObjId());
         $rubricGui = new ilLPRubricGradeGUI();
         $a_user = ilObjectFactory::getInstanceByObjId($_SESSION['AccountId']);
         if ($rubricObj->objHasRubric() && $rubricObj->isRubricComplete()) {
             $rubricGui->setUserHistoryId($_REQUEST['grader_history']);
             $rubricGui->setUserHistory($rubricObj->getUserHistory($_SESSION['AccountId']));
             $rubricGui->setRubricData($rubricObj->load());
             $rubricGui->setUserData($rubricObj->getRubricUserGradeData($_SESSION['AccountId'], $_REQUEST['grader_history']));
             $rubricGui->setRubricComment($rubricObj->getRubricComment($_SESSION['AccountId'], $_REQUEST['grader_history']));
             $this->tpl->setVariable("LP_OBJECTS", $rubricGui->getStudentViewHTML($this->ctrl->getFormAction($this), $a_user->getFullname(), $_SESSION['AccountId']));
         }
     }
     // END PATCH RUBRIC CPKN 2015
 }
 public function performCrsGrpTrigger()
 {
     ignore_user_abort(true);
     @set_time_limit(0);
     $response = new stdClass();
     $response->succcess = false;
     $this->pluginObj->includeClass('class.ilAdobeConnectServer.php');
     if ((int) ilAdobeConnectServer::getSetting('allow_crs_grp_trigger') == 0) {
         echo json_encode($response);
         exit;
     }
     $this->pluginObj->includeClass('class.ilXAVCMembers.php');
     if (count($this->object->getParticipantsObject()->getParticipants()) > 0) {
         $sco_id = ilObjAdobeConnect::_lookupScoId(ilObject::_lookupObjectId($this->object->getRefId()));
         $current_member_ids = ilXAVCMembers::getMemberIds($this->object->getRefId());
         $crs_grp_member_ids = $this->object->getParticipantsObject()->getParticipants();
         if (count($current_member_ids) == 0 && count($crs_grp_member_ids) > 0) {
             $this->object->addCrsGrpMembers($this->object->getRefId(), $sco_id);
         } else {
             $new_member_ids = array_diff($crs_grp_member_ids, $current_member_ids);
             $delete_member_ids = array_diff($current_member_ids, $crs_grp_member_ids);
             if (is_array($new_member_ids) && count($new_member_ids) > 0) {
                 $this->object->addCrsGrpMembers($this->object->getRefId(), $sco_id, $new_member_ids);
             }
             if (is_array($delete_member_ids) && count($delete_member_ids) > 0) {
                 $this->object->deleteCrsGrpMembers($sco_id, $delete_member_ids);
             }
         }
     }
     $response->succcess = true;
     echo json_encode($response);
     exit;
 }
 protected function parseChangesFaPa(array $raw)
 {
     $result = array();
     $type = ilObject::_lookupType($this->ref_id, true);
     if (isset($raw["src"])) {
         $obj_id = ilObject::_lookupObjectId($raw["src"]);
         if ($obj_id) {
             include_once "./Services/Link/classes/class.ilLink.php";
             $result[] = array("action" => $this->lng->txt("rbac_log_source_object"), "operation" => "<a href=\"" . ilLink::_getLink($raw["src"]) . "\">" . ilObject::_lookupTitle($obj_id) . "</a>");
         }
         // added only
         foreach ($raw["ops"] as $role_id => $ops) {
             foreach ($ops as $op) {
                 $result[] = array("action" => sprintf($this->lng->txt("rbac_log_operation_add"), ilObject::_lookupTitle($role_id)), "operation" => $this->getOPCaption($type, $op));
             }
         }
     } else {
         if (isset($raw["ops"])) {
             foreach ($raw["ops"] as $role_id => $actions) {
                 foreach ($actions as $action => $ops) {
                     foreach ((array) $ops as $op) {
                         $result[] = array("action" => sprintf($this->lng->txt("rbac_log_operation_" . $action), ilObject::_lookupTitle($role_id)), "operation" => $this->getOPCaption($type, $op));
                     }
                 }
             }
         }
     }
     if (isset($raw["inht"])) {
         foreach ($raw["inht"] as $action => $role_ids) {
             foreach ((array) $role_ids as $role_id) {
                 $result[] = array("action" => sprintf($this->lng->txt("rbac_log_inheritance_" . $action), ilObject::_lookupTitle($role_id)));
             }
         }
     }
     return $result;
 }
 /**
  * Get status matrix for users on objects
  *
  * @param	int		$a_parent_ref_id
  * @param	array	$a_obj_ids
  * @param	string	$a_user_filter
  * @return	array	cnt, set
  */
 static function getUserObjectMatrix($a_parent_ref_id, $a_obj_ids, $a_user_filter = NULL)
 {
     global $ilDB;
     $result = array("cnt" => 0, "set" => NULL);
     if (sizeof($a_obj_ids)) {
         $where = array();
         $where[] = "usr_data.usr_id <> " . $ilDB->quote(ANONYMOUS_USER_ID, "integer");
         if ($a_user_filter) {
             $where[] = $ilDB->like("usr_data.login", "text", "%" . $a_user_filter . "%");
         }
         // users
         $left = "";
         $a_users = self::getParticipantsForObject($a_parent_ref_id);
         if (is_array($a_users)) {
             $left = "LEFT";
             $where[] = $ilDB->in("usr_data.usr_id", $a_users, false, "integer");
         }
         include_once "./Services/Tracking/classes/class.ilLPStatus.php";
         $fields = array("usr_data.usr_id", "login", "active", "status", "status_changed", "percentage", "last_access", "spent_seconds+childs_spent_seconds as spent_seconds");
         $parent_obj_id = ilObject::_lookupObjectId($a_parent_ref_id);
         self::refreshObjectsStatus(array($parent_obj_id), $a_users);
         self::refreshObjectsStatus($a_obj_ids, $a_users);
         $raw = array();
         foreach ($a_obj_ids as $obj_id) {
             // one request for each object
             $query = " FROM usr_data " . $left . " JOIN read_event ON (read_event.usr_id = usr_data.usr_id" . " AND read_event.obj_id = " . $ilDB->quote($obj_id, "integer") . ")" . " LEFT JOIN ut_lp_marks ON (ut_lp_marks.usr_id = usr_data.usr_id " . " AND ut_lp_marks.obj_id = " . $ilDB->quote($obj_id, "integer") . ")" . self::buildFilters($where);
             $raw = self::executeQueries(array(array("fields" => $fields, "query" => $query)), "login");
             if ($raw["cnt"]) {
                 // convert to final structure
                 foreach ($raw["set"] as $row) {
                     $result["set"][$row["usr_id"]]["login"] = $row["login"];
                     $result["set"][$row["usr_id"]]["usr_id"] = $row["usr_id"];
                     $result["set"][$row["usr_id"]]["objects"][$obj_id] = array("status" => $row["status"], "percentage" => $row["percentage"]);
                     if ($obj_id == $parent_obj_id) {
                         $result["set"][$row["usr_id"]]["status_changed"] = $row["status_changed"];
                         $result["set"][$row["usr_id"]]["last_access"] = $row["last_access"];
                         $result["set"][$row["usr_id"]]["spent_seconds"] = $row["spent_seconds"];
                     }
                 }
             }
         }
         $result["cnt"] = sizeof($result["set"]);
         $result["users"] = $a_users;
     }
     return $result;
 }
 /**
  * Init menu entry form.
  *
  * @param string $a_mode Edit Mode
  */
 public function initMenuEntryForm($a_mode = "edit")
 {
     global $lng, $ilCtrl;
     include_once "Services/Form/classes/class.ilPropertyFormGUI.php";
     $form = new ilPropertyFormGUI();
     // title
     $ti = new ilTextInputGUI($this->lng->txt("lm_menu_entry_title"), "title");
     $ti->setMaxLength(255);
     $ti->setSize(40);
     $form->addItem($ti);
     // target
     $ta = new ilTextInputGUI($this->lng->txt("lm_menu_entry_target"), "target");
     $ta->setMaxLength(255);
     $ta->setSize(40);
     $form->addItem($ta);
     if ($a_mode == "edit") {
         $this->__initLMMenuEditor();
         $this->lmme_obj->readEntry($_REQUEST["menu_entry"]);
         $ti->setValue($this->lmme_obj->getTitle());
         $ta->setValue($this->lmme_obj->getTarget());
     }
     if (isset($_GET["link_ref_id"])) {
         $link_ref_id = (int) $_GET["link_ref_id"];
         $obj_type = ilObject::_lookupType($link_ref_id, true);
         $obj_id = ilObject::_lookupObjectId($link_ref_id);
         $title = ilObject::_lookupTitle($obj_id);
         $target_link = $obj_type . "_" . $link_ref_id;
         $ti->setValue($title);
         $ta->setValue($target_link);
         // link ref id
         $hi = new ilHiddenInputGUI("link_ref_id");
         $hi->setValue($link_ref_id);
         $form->addItem($hi);
     }
     // save and cancel commands
     if ($a_mode == "create") {
         $form->addCommandButton("saveMenuEntry", $lng->txt("save"));
         $form->addCommandButton("editMenuProperties", $lng->txt("cancel"));
         $form->setTitle($lng->txt("lm_menu_new_entry"));
     } else {
         $form->addCommandButton("updateMenuEntry", $lng->txt("save"));
         $form->addCommandButton("editMenuProperties", $lng->txt("cancel"));
         $form->setTitle($lng->txt("lm_menu_edit_entry"));
     }
     $form->setFormAction($ilCtrl->getFormAction($this));
     return $form;
 }
 /**
  * updates class room on ilinc server
  *
  * @access	public
  */
 public function updateClassroom()
 {
     $this->initSettingsForm('edit');
     if ($this->form_gui->checkInput()) {
         $this->object->setTitle($this->form_gui->getInput('title'));
         $this->object->setDescription($this->form_gui->getInput('desc'));
         $this->object->setDocentId($this->form_gui->getInput('instructoruserid'));
         $this->object->setStatus($this->form_gui->getInput('alwaysopen'));
         if (!$this->object->update()) {
             $this->ilErr->raiseError($this->object->getErrorMsg(), $this->ilErr->MESSAGE);
         }
         ilUtil::sendInfo($this->getResultMsg(), true);
         $this->ctrl->redirectByClass('ilobjilinccoursegui');
     } else {
         if ($this->ilias->getSetting('ilinc_akclassvalues_active')) {
             $icrs_obj_id = ilObject::_lookupObjectId($this->parent);
             include_once 'Modules/ILinc/classes/class.ilObjiLincCourse.php';
             $akclassvalues = ilObjiLincCourse::_getAKClassValues($icrs_obj_id);
             $_POST['akclassvalue1'] = $akclassvalues[0];
             $_POST['akclassvalue2'] = $akclassvalues[1];
         }
         $this->form_gui->setValuesByPost();
         return $this->tpl->setVariable('ADM_CONTENT', $this->form_gui->getHtml());
     }
 }
 public function confirmRemoveObject()
 {
     global $ilCtrl;
     if (!sizeof($_POST["id"])) {
         ilUtil::sendFailure($this->lng->txt("select_one"), true);
         $ilCtrl->redirect($this, "manage");
     }
     if ($this->view == self::VIEW_MY_OFFERS) {
         $question = $this->lng->txt("pd_info_delete_sure_remove");
         $cmd = "confirmedRemove";
     } else {
         $question = $this->lng->txt("pd_info_delete_sure_unsubscribe");
         $cmd = "confirmedUnsubscribe";
     }
     include_once "./Services/Utilities/classes/class.ilConfirmationGUI.php";
     $cgui = new ilConfirmationGUI();
     $cgui->setHeaderText($question);
     $cgui->setFormAction($ilCtrl->getFormAction($this));
     $cgui->setCancel($this->lng->txt("cancel"), "manage");
     $cgui->setConfirm($this->lng->txt("confirm"), $cmd);
     foreach ($_POST["id"] as $ref_id) {
         $obj_id = ilObject::_lookupObjectId($ref_id);
         $title = ilObject::_lookupTitle($obj_id);
         $type = ilObject::_lookupType($obj_id);
         $cgui->addItem("ref_id[]", $ref_id, $title, ilObject::_getIcon($obj_id, "small", $type), $this->lng->txt("icon") . " " . $this->lng->txt("obj_" . $type));
     }
     return $cgui->getHTML();
 }
 public function getSCORMCompletionStatus($sid, $a_usr_id, $a_ref_id)
 {
     $this->initAuth($sid);
     $this->initIlias();
     if (!$this->__checkSession($sid)) {
         return $this->__raiseError($this->__getMessage(), $this->__getMessageCode());
     }
     if (!strlen($a_ref_id)) {
         return $this->__raiseError('No ref_id given. Aborting!', 'Client');
     }
     include_once 'include/inc.header.php';
     // get obj_id
     if (!($obj_id = ilObject::_lookupObjectId($a_ref_id))) {
         return $this->__raiseError('No scorm module found for id: ' . $a_ref_id, 'Client');
     }
     include_once 'Services/Tracking/classes/class.ilLPStatus.php';
     include_once 'Services/Tracking/classes/class.ilObjUserTracking.php';
     if (!ilObjUserTracking::_enabledLearningProgress()) {
         return $this->__raiseError('Learning progress not enabled in this installation. Aborting!', 'Server');
     }
     $status = ilLPStatus::_lookupStatus($obj_id, $a_usr_id);
     if ($status == ilLPStatus::LP_STATUS_COMPLETED_NUM) {
         return 'completed';
     } else {
         if ($status == ilLPStatus::LP_STATUS_FAILED_NUM) {
             return 'failed';
         } else {
             if ($status == ilLPStatus::LP_STATUS_IN_PROGRESS_NUM) {
                 return 'in_progress';
             } else {
                 return 'not_attempted';
             }
         }
     }
 }
示例#24
0
 public static function _goto($a_target, $a_thread = 0, $a_posting = 0)
 {
     /**
      * @var $ilAccess ilAccessHandler
      * @var $ilErr ilErrorHandling
      * @var $lng ilLanguage
      */
     global $ilAccess, $ilErr, $lng;
     if ($ilAccess->checkAccess('read', '', $a_target)) {
         if ($a_thread != 0) {
             $objTopic = new ilForumTopic($a_thread);
             if ($objTopic->getFrmObjId() && $objTopic->getFrmObjId() != ilObject::_lookupObjectId($a_target)) {
                 $ref_ids = ilObject::_getAllReferences($objTopic->getFrmObjId());
                 foreach ($ref_ids as $ref_id) {
                     if ($ilAccess->checkAccess('read', '', $ref_id)) {
                         $new_ref_id = $ref_id;
                         break;
                     }
                 }
                 if (isset($new_ref_id) && $new_ref_id != $a_target) {
                     ilUtil::redirect(ILIAS_HTTP_PATH . "/goto.php?target=frm_" . $new_ref_id . "_" . $a_thread . "_" . $a_posting);
                 }
             }
             $_GET['ref_id'] = $a_target;
             $_GET['pos_pk'] = $a_posting;
             $_GET['thr_pk'] = $a_thread;
             $_GET['anchor'] = $a_posting;
             $_GET['cmdClass'] = 'ilObjForumGUI';
             $_GET['cmd'] = 'viewThread';
             $_GET['baseClass'] = 'ilRepositoryGUI';
             include_once 'ilias.php';
             exit;
         } else {
             $_GET['ref_id'] = $a_target;
             $_GET['baseClass'] = 'ilRepositoryGUI';
             include_once 'ilias.php';
             exit;
         }
     } else {
         if ($ilAccess->checkAccess('read', '', ROOT_FOLDER_ID)) {
             $_GET['target'] = '';
             $_GET['ref_id'] = ROOT_FOLDER_ID;
             ilUtil::sendInfo(sprintf($lng->txt('msg_no_perm_read_item'), ilObject::_lookupTitle(ilObject::_lookupObjId($a_target))), true);
             $_GET['baseClass'] = 'ilRepositoryGUI';
             include 'ilias.php';
             exit;
         }
     }
     $ilErr->raiseError($lng->txt('msg_no_perm_read'), $ilErr->FATAL);
 }
 /**
  * get File xml
  *
  * @param string $sid
  * @param int $ref_id
  * @param boolean $attachFileContentsMode
  *
  * @return xml following ilias_file_x.dtd
  */
 function getFileXML($sid, $ref_id, $attachFileContentsMode)
 {
     $this->initAuth($sid);
     $this->initIlias();
     if (!$this->__checkSession($sid)) {
         return $this->__raiseError($this->__getMessage(), $this->__getMessageCode());
     }
     if (!strlen($ref_id)) {
         return $this->__raiseError('No ref id given. Aborting!', 'Client');
     }
     global $rbacsystem, $tree, $ilLog, $ilAccess;
     // get obj_id
     if (!($obj_id = ilObject::_lookupObjectId($ref_id))) {
         return $this->__raiseError('No File found for id: ' . $ref_id, 'Client');
     }
     if (ilObject::_isInTrash($ref_id)) {
         return $this->__raiseError("Object with ID {$ref_id} has been deleted.", 'Client');
     }
     // Check access
     $permission_ok = false;
     foreach ($ref_ids = ilObject::_getAllReferences($obj_id) as $ref_id) {
         if ($ilAccess->checkAccess('read', '', $ref_id)) {
             $permission_ok = true;
             break;
         }
     }
     if (!$permission_ok) {
         return $this->__raiseError('No permission to edit the object with id: ' . $ref_id, 'Server');
     }
     $file = ilObjectFactory::getInstanceByObjId($obj_id, false);
     if (!is_object($file) || $file->getType() != "file") {
         return $this->__raiseError('Wrong obj id or type for File with id ' . $ref_id, 'Server');
     }
     // store into xml result set
     include_once './Modules/File/classes/class.ilFileXMLWriter.php';
     // create writer
     $xmlWriter = new ilFileXMLWriter();
     $xmlWriter->setFile($file);
     $xmlWriter->setAttachFileContents($attachFileContentsMode);
     $xmlWriter->start();
     return $xmlWriter->getXML();
 }
 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;
     }
 }
 /**
  * Returns the available question pools for the active user
  *
  * @return array The available question pools
  * @access public
  */
 function _getAvailableQuestionpools($use_object_id = FALSE, $could_be_offline = FALSE, $showPath = FALSE, $permission = "read")
 {
     global $ilUser;
     global $ilDB;
     $result_array = array();
     $qpls = ilUtil::_getObjectsByOperations("spl", $permission, $ilUser->getId(), -1);
     $titles = ilObject::_prepareCloneSelection($qpls, "spl", $showPath);
     $allqpls = array();
     $result = $ilDB->query("SELECT obj_fi, isonline FROM svy_qpl");
     while ($row = $ilDB->fetchAssoc($result)) {
         $allqpls[$row['obj_fi']] = $row['isonline'];
     }
     foreach ($qpls as $ref_id) {
         $obj_id = ilObject::_lookupObjectId($ref_id);
         if ($could_be_offline || $allqpls[$obj_id] == 1) {
             if ($use_object_id) {
                 $result_array[$obj_id] = $titles[$ref_id];
             } else {
                 $result_array[$ref_id] = $titles[$ref_id];
             }
         }
     }
     return $result_array;
 }
 function updateObjects($sid, $a_xml)
 {
     $this->initAuth($sid);
     $this->initIlias();
     if (!$this->__checkSession($sid)) {
         return $this->__raiseError($this->__getMessage(), $this->__getMessageCode());
     }
     if (!strlen($a_xml)) {
         return $this->__raiseError('No valid xml string given.', 'Client');
     }
     global $rbacreview, $rbacsystem, $lng, $ilAccess;
     include_once './webservice/soap/classes/class.ilObjectXMLParser.php';
     $xml_parser =& new ilObjectXMLParser($a_xml, true);
     try {
         $xml_parser->startParsing();
     } catch (ilSaxParserException $se) {
         return $this->__raiseError($se->getMessage(), 'Client');
     } catch (ilObjectXMLException $e) {
         return $this->__raiseError($e->getMessage(), 'Client');
     }
     // Validate incoming data
     $object_datas = $xml_parser->getObjectData();
     foreach ($object_datas as &$object_data) {
         $res = $this->validateReferences('update', $object_data);
         if ($this->isFault($res)) {
             return $res;
         }
         if (!$object_data["obj_id"]) {
             return $this->__raiseError('No obj_id in xml found.', 'Client');
         } elseif ((int) $object_data["obj_id"] == -1 && count($object_data["references"]) > 0) {
             // object id might be unknown, resolve references instead to determine object id
             // all references should point to the same object, so using the first one is ok.
             foreach ($object_data["references"] as $refid) {
                 if (ilObject::_isInTrash($refid)) {
                     continue;
                 }
                 break;
             }
             $obj_id_from_refid = ilObject::_lookupObjectId($object_data["references"][0], false);
             if (!$obj_id_from_refid) {
                 return $this->__raiseError('No obj_id found for reference id ' . $object_data["references"][0], 'CLIENT_OBJECT_NOT_FOUND');
             } else {
                 $tmp_obj = ilObjectFactory::getInstanceByObjId($object_data['obj_id'], false);
                 $object_data["obj_id"] = $obj_id_from_refid;
             }
         }
         $tmp_obj = ilObjectFactory::getInstanceByObjId($object_data['obj_id'], false);
         if ($tmp_obj == null) {
             return $this->__raiseError('No object for id ' . $object_data['obj_id'] . '!', 'CLIENT_OBJECT_NOT_FOUND');
         } else {
             $object_data["instance"] = $tmp_obj;
         }
         if ($object_data['type'] == 'role') {
             $rolf_ids = $rbacreview->getFoldersAssignedToRole($object_data['obj_id'], true);
             $rolf_id = $rolf_ids[0];
             if (!$rbacsystem->checkAccess('write', $rolf_id)) {
                 return $this->__raiseError('No write permission for object with id ' . $object_data['obj_id'] . '!', 'Client');
             }
         } else {
             $permission_ok = false;
             foreach (ilObject::_getAllReferences($object_data['obj_id']) as $ref_id) {
                 if ($ilAccess->checkAccess('write', '', $ref_id)) {
                     $permission_ok = true;
                     break;
                 }
             }
             if (!$permission_ok) {
                 return $this->__raiseError('No write permission for object with id ' . $object_data['obj_id'] . '!', 'Client');
             }
         }
     }
     // perform update
     if (count($object_datas) > 0) {
         foreach ($object_datas as $object_data) {
             $this->updateReferences($object_data);
             $tmp_obj = $object_data["instance"];
             $tmp_obj->setTitle($object_data['title']);
             $tmp_obj->setDescription($object_data['description']);
             #$GLOBALS['ilLog']->write(__METHOD__.': type is '. $object_data['type']);
             #$GLOBALS['ilLog']->write(__METHOD__.': type is '. $a_xml);
             switch ($object_data['type']) {
                 case 'cat':
                     $tmp_obj->updateTranslation($object_data["title"], $object_data["description"], $lng->getLangKey(), $lng->getLangKey());
                     break;
             }
             $tmp_obj->update();
             if (strlen($object_data['owner']) && is_numeric($object_data['owner'])) {
                 $tmp_obj->setOwner($object_data['owner']);
                 $tmp_obj->updateOwner();
             }
         }
         return true;
     }
     return false;
 }
示例#29
0
 public static function _deassignPurchasedCourseMemberRole($a_ref_id, $a_user_id)
 {
     include_once './Modules/Course/classes/class.ilCourseParticipants.php';
     $obj_id = ilObject::_lookupObjectId($a_ref_id);
     $participants = ilCourseParticipants::_getInstanceByObjId($obj_id);
     $res = $participants->delete($a_user_id, IL_CRS_MEMBER);
 }
 function outQuestionForTest($formaction, $active_id, $pass = NULL, $is_postponed = FALSE, $use_post_solutions = FALSE)
 {
     $test_output = $this->getTestOutput($active_id, $pass, $is_postponed, $use_post_solutions);
     $this->tpl->setVariable("QUESTION_OUTPUT", $test_output);
     $this->tpl->setVariable("FORMACTION", $formaction);
     include_once "./Services/RTE/classes/class.ilRTE.php";
     $rtestring = ilRTE::_getRTEClassname();
     include_once "./Services/RTE/classes/class.{$rtestring}.php";
     $rte = new $rtestring();
     include_once "./Services/Object/classes/class.ilObject.php";
     $obj_id = ilObject::_lookupObjectId($_GET["ref_id"]);
     $obj_type = ilObject::_lookupType($_GET["ref_id"], TRUE);
     $rte->addUserTextEditor("textinput");
     $this->outAdditionalOutput();
 }