/**
  * 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();
 }