/** * checks wether a user may invoke a command or not * (this method is called by ilAccessHandler::checkAccess) * * @param string $a_cmd command (not permission!) * @param string $a_permission permission * @param int $a_ref_id reference id * @param int $a_obj_id object id * @param int $a_user_id user id (if not provided, current user is taken) * * @return boolean true, if everything is ok */ public function _checkAccess($a_cmd, $a_permission, $a_ref_id, $a_obj_id, $a_user_id = "") { global $ilUser, $lng, $rbacsystem, $ilAccess, $ilias; if ($a_user_id == "") { $a_user_id = $ilUser->getId(); } switch ($a_permission) { case "visible": include_once './Modules/RemoteCourse/classes/class.ilObjRemoteCourse.php'; $active = ilObjRemoteCourse::_lookupOnline($a_obj_id); $tutor = $rbacsystem->checkAccessOfUser($a_user_id, 'write', $a_ref_id); if (!$active) { $ilAccess->addInfoItem(IL_NO_OBJECT_ACCESS, $lng->txt("offline")); } if (!$tutor and !$active) { return false; } break; case 'read': $tutor = $rbacsystem->checkAccessOfUser($a_user_id, 'write', $a_ref_id); if ($tutor) { return true; } include_once 'Modules/RemoteCourse/classes/class.ilObjRemoteCourse.php'; $active = ilObjRemoteCourse::_lookupOnline($a_obj_id); if (!$active) { $ilAccess->addInfoItem(IL_NO_OBJECT_ACCESS, $lng->txt("offline")); return false; } break; } return true; }
/** * csv export of imported remote courses * * @access protected * @return */ protected function exportImported() { global $ilObjDataCache, $ilUser; // :TODO: mind resource type and move to ilRemoteObjectBase... $rcourses = ilUtil::_getObjectsByOperations('rcrs', 'visible', $ilUser->getId(), -1); // Read participants include_once './Modules/RemoteCourse/classes/class.ilObjRemoteCourse.php'; include_once './Services/WebServices/ECS/classes/class.ilECSCommunityReader.php'; try { $reader = ilECSCommunityReader::_getInstance(); } catch (ilECSConnectorException $e) { $reader = null; } // read obj_ids $ilObjDataCache->preloadReferenceCache($rcourses); $obj_ids = array(); foreach ($rcourses as $rcrs_ref_id) { $obj_id = $ilObjDataCache->lookupObjId($rcrs_ref_id); $obj_ids[$obj_id] = $obj_id; } include_once 'Services/Utilities/classes/class.ilCSVWriter.php'; $writer = new ilCSVWriter(); $writer->addColumn($this->lng->txt('title')); $writer->addColumn($this->lng->txt('description')); $writer->addColumn($this->lng->txt('ecs_imported_from')); $writer->addColumn($this->lng->txt('ecs_field_courseID')); $writer->addColumn($this->lng->txt('ecs_field_term')); $writer->addColumn($this->lng->txt('ecs_field_lecturer')); $writer->addColumn($this->lng->txt('ecs_field_courseType')); $writer->addColumn($this->lng->txt('ecs_field_semester_hours')); $writer->addColumn($this->lng->txt('ecs_field_credits')); $writer->addColumn($this->lng->txt('ecs_field_room')); $writer->addColumn($this->lng->txt('ecs_field_cycle')); $writer->addColumn($this->lng->txt('ecs_field_begin')); $writer->addColumn($this->lng->txt('ecs_field_end')); $writer->addColumn($this->lng->txt('last_update')); include_once './Services/WebServices/ECS/classes/class.ilECSDataMappingSettings.php'; $settings = ilECSDataMappingSettings::_getInstance(); foreach ($obj_ids as $obj_id) { include_once './Services/AdvancedMetaData/classes/class.ilAdvancedMDValues.php'; $values = ilAdvancedMDValues::_getValuesByObjId($obj_id); $writer->addRow(); $writer->addColumn(ilObject::_lookupTitle($obj_id)); $writer->addColumn(ilObject::_lookupDescription($obj_id)); $mid = ilObjRemoteCourse::_lookupMID($obj_id); if ($reader and $participant = $reader->getParticipantByMID($mid)) { $writer->addColumn($participant->getParticipantName()); } $field = $settings->getMappingByECSName(ilECSDataMappingSetting::MAPPING_IMPORT_RCRS, 'courseID'); $writer->addColumn(isset($values[$field]) ? $values[$field] : ''); $field = $settings->getMappingByECSName(ilECSDataMappingSetting::MAPPING_IMPORT_RCRS, 'term'); $writer->addColumn(isset($values[$field]) ? $values[$field] : ''); $field = $settings->getMappingByECSName(ilECSDataMappingSetting::MAPPING_IMPORT_RCRS, 'lecturer'); $writer->addColumn(isset($values[$field]) ? $values[$field] : ''); $field = $settings->getMappingByECSName(ilECSDataMappingSetting::MAPPING_IMPORT_RCRS, 'courseType'); $writer->addColumn(isset($values[$field]) ? $values[$field] : ''); $field = $settings->getMappingByECSName(ilECSDataMappingSetting::MAPPING_IMPORT_RCRS, 'semester_hours'); $writer->addColumn(isset($values[$field]) ? $values[$field] : ''); $field = $settings->getMappingByECSName(ilECSDataMappingSetting::MAPPING_IMPORT_RCRS, 'credits'); $writer->addColumn(isset($values[$field]) ? $values[$field] : ''); $field = $settings->getMappingByECSName(ilECSDataMappingSetting::MAPPING_IMPORT_RCRS, 'room'); $writer->addColumn(isset($values[$field]) ? $values[$field] : ''); $field = $settings->getMappingByECSName(ilECSDataMappingSetting::MAPPING_IMPORT_RCRS, 'cycle'); $writer->addColumn(isset($values[$field]) ? $values[$field] : ''); $field = $settings->getMappingByECSName(ilECSDataMappingSetting::MAPPING_IMPORT_RCRS, 'begin'); $writer->addColumn(isset($values[$field]) ? ilFormat::formatUnixTime($values[$field], true) : ''); $field = $settings->getMappingByECSName(ilECSDataMappingSetting::MAPPING_IMPORT_RCRS, 'end'); $writer->addColumn(isset($values[$field]) ? ilFormat::formatUnixTime($values[$field], true) : ''); $writer->addColumn($ilObjDataCache->lookupLastUpdate($obj_id)); } ilUtil::deliverData($writer->getCSVString(), date("Y_m_d") . "_ecs_import.csv", "text/csv"); }
/** * Parse * * @access public * @param array array of remote course ids * */ public function parse($a_rcrs) { global $ilObjDataCache; // Preload object data $ilObjDataCache->preloadReferenceCache($a_rcrs); // Read participants include_once './Modules/RemoteCourse/classes/class.ilObjRemoteCourse.php'; include_once './Services/WebServices/ECS/classes/class.ilECSCommunityReader.php'; include_once './Services/WebServices/ECS/classes/class.ilECSImport.php'; // read obj_ids $obj_ids = array(); foreach ($a_rcrs as $rcrs_ref_id) { $obj_id = $ilObjDataCache->lookupObjId($rcrs_ref_id); $obj_ids[$obj_id] = $ilObjDataCache->lookupObjId($rcrs_ref_id); } foreach ($obj_ids as $obj_id => $obj_id) { $tmp_arr['obj_id'] = $obj_id; $tmp_arr['sid'] = ilECSImport::lookupServerId($obj_id); $tmp_arr['title'] = $ilObjDataCache->lookupTitle($obj_id); $tmp_arr['desc'] = $ilObjDataCache->lookupDescription($obj_id); $tmp_arr['md'] = ''; $mid = ilObjRemoteCourse::_lookupMID($obj_id); if ($tmp_arr['sid']) { try { $reader = ilECSCommunityReader::getInstanceByServerId($tmp_arr['sid']); } catch (ilECSConnectorException $e) { $reader = null; } if ($reader and $participant = $reader->getParticipantByMID($mid)) { $tmp_arr['from'] = $participant->getParticipantName(); $tmp_arr['from_info'] = $participant->getDescription(); } } else { $tmp_arr['from'] = $this->lng->txt("ecs_server_deleted"); } $tmp_arr['last_update'] = $ilObjDataCache->lookupLastUpdate($obj_id); $content[] = $tmp_arr; } $this->setData($content ? $content : array()); }
/** * get properties (offline) * * @access public * @param * */ public function getProperties() { global $lng; include_once 'Modules/RemoteCourse/classes/class.ilObjRemoteCourse.php'; if ($org = ilObjRemoteCourse::_lookupOrganization($this->obj_id)) { $this->addCustomProperty($lng->txt('organization'), $org, false, true); } if (!ilObjRemoteCourse::_lookupOnline($this->obj_id)) { $this->addCustomProperty($lng->txt("status"), $lng->txt("offline"), true, true); } return array(); }