/**
  * export released
  *
  * @access protected
  * @return
  */
 protected function exportReleased()
 {
     global $ilObjDataCache;
     include_once './Services/WebServices/ECS/classes/class.ilECSExport.php';
     $exported = ilECSExport::getExportedIds();
     $ilObjDataCache->preloadObjectCache($exported);
     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_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 ($exported 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));
         $field = $settings->getMappingByECSName('courseID');
         $writer->addColumn(isset($values[$field]) ? $values[$field] : '');
         $field = $settings->getMappingByECSName('term');
         $writer->addColumn(isset($values[$field]) ? $values[$field] : '');
         $field = $settings->getMappingByECSName('lecturer');
         $writer->addColumn(isset($values[$field]) ? $values[$field] : '');
         $field = $settings->getMappingByECSName('courseType');
         $writer->addColumn(isset($values[$field]) ? $values[$field] : '');
         $field = $settings->getMappingByECSName('semester_hours');
         $writer->addColumn(isset($values[$field]) ? $values[$field] : '');
         $field = $settings->getMappingByECSName('credits');
         $writer->addColumn(isset($values[$field]) ? $values[$field] : '');
         $field = $settings->getMappingByECSName('room');
         $writer->addColumn(isset($values[$field]) ? $values[$field] : '');
         $field = $settings->getMappingByECSName('cycle');
         $writer->addColumn(isset($values[$field]) ? $values[$field] : '');
         $field = $settings->getMappingByECSName('begin');
         $writer->addColumn(isset($values[$field]) ? ilFormat::formatUnixTime($values[$field], true) : '');
         $field = $settings->getMappingByECSName('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_export.csv", "text/csv");
 }
 /**
  * get command frame
  *
  * @access public
  * @param
  * @return
  */
 public function getCommandFrame($a_cmd)
 {
     switch ($a_cmd) {
         case 'show':
             include_once './Services/WebServices/ECS/classes/class.ilECSExport.php';
             include_once './Services/WebServices/ECS/classes/class.ilECSImport.php';
             if (ilECSExport::_isRemote(ilECSImport::lookupServerId($this->obj_id), ilECSImport::_lookupEContentId($this->obj_id))) {
                 return '_blank';
             }
         default:
             return parent::getCommandFrame($a_cmd);
     }
 }
 /**
  * Handle export reset.
  * Delete exported econtent and create it again 
  *
  * @return bool
  * @static
  * throws ilException, ilECSConnectorException
  */
 public static function handleExportReset(ilECSSetting $server)
 {
     include_once './Services/WebServices/ECS/classes/class.ilECSExport.php';
     // Delete all export events
     $queue = new ilECSEventQueueReader($server->getServerId());
     $queue->deleteAllExportedEvents();
     // Read all local export info
     $local_econtent_ids = ilECSExport::_getAllEContentIds($server->getServerId());
     $types = self::getAllEContentTypes();
     $list = self::getAllResourceIds($server, $types, true);
     // merge in one array
     $all_remote_ids = array();
     foreach ($list as $resource_type => $remote_ids) {
         $all_remote_ids = array_merge($all_remote_ids, (array) $remote_ids);
     }
     $all_remote_ids = array_unique($all_remote_ids);
     $GLOBALS['ilLog']->write(__METHOD__ . ': Resources = ' . print_r($all_remote_ids, true));
     $GLOBALS['ilLog']->write(__METHOD__ . ': Local = ' . print_r($local_econtent_ids, true));
     foreach ($local_econtent_ids as $local_econtent_id => $local_obj_id) {
         if (!in_array($local_econtent_id, $all_remote_ids)) {
             // Delete this deprecated info
             $GLOBALS['ilLog']->write(__METHOD__ . ': Deleting deprecated econtent id ' . $local_econtent_id);
             ilECSExport::_deleteEContentIds($server->getServerId(), array($local_econtent_id));
         }
     }
     return true;
 }
 /**
  * Is remote object from same installation?
  * 
  * @return boolean 
  */
 public function isLocalObject()
 {
     include_once './Services/WebServices/ECS/classes/class.ilECSExport.php';
     include_once './Services/WebServices/ECS/classes/class.ilECSImport.php';
     if (ilECSExport::_isRemote(ilECSImport::lookupServerId($this->getId()), ilECSImport::_lookupEContentId($this->getId()))) {
         return false;
     }
     return true;
 }
 /**
  * handle delete
  * Objects that are moved to the trash call ECS-Remove
  * 
  * @see ilRepUtil	 
  * @param array $a_subbtree_nodes
  */
 public static function _handleDelete(array $a_subbtree_nodes)
 {
     // active?
     include_once './Services/WebServices/ECS/classes/class.ilECSServerSettings.php';
     if (!ilECSServerSettings::getInstance()->activeServerExists()) {
         return;
     }
     include_once './Services/WebServices/ECS/classes/class.ilECSSetting.php';
     include_once './Services/WebServices/ECS/classes/class.ilECSExport.php';
     $exported = ilECSExport::getExportedIds();
     foreach ($a_subbtree_nodes as $node) {
         if (in_array($node['obj_id'], $exported)) {
             if ($content_obj = ilObjectFactory::getInstanceByRefId($node['child'], false)) {
                 $settings = self::getInstanceByObject($content_obj);
                 // Read export server ids
                 foreach (ilECSExport::getExportServerIds($node['obj_id']) as $sid) {
                     $server = ilECSSetting::getInstanceByServerId($sid);
                     $export_settings = new ilECSExport($sid, $content_obj->getId());
                     $settings->doDelete($server, $export_settings);
                 }
             }
         }
     }
 }
 /**
  * Delete
  */
 public function delete()
 {
     global $ilDB;
     // --- cascading delete
     include_once 'Services/WebServices/ECS/classes/Tree/class.ilECSCmsData.php';
     ilECSCmsData::deleteByServerId($this->getServerId());
     include_once 'Services/WebServices/ECS/classes/class.ilECSCommunityCache.php';
     ilECSCommunityCache::deleteByServerId($this->getServerId());
     include_once 'Services/WebServices/ECS/classes/class.ilECSDataMappingSetting.php';
     ilECSDataMappingSetting::deleteByServerId($this->getServerId());
     include_once 'Services/WebServices/ECS/classes/class.ilECSEventQueueReader.php';
     ilECSEventQueueReader::deleteByServerId($this->getServerId());
     include_once 'Services/WebServices/ECS/classes/Mapping/class.ilECSNodeMappingAssignment.php';
     ilECSNodeMappingAssignment::deleteByServerId($this->getServerId());
     include_once 'Services/WebServices/ECS/classes/class.ilECSParticipantSetting.php';
     ilECSParticipantSetting::deleteByServerId($this->getServerId());
     include_once 'Services/WebServices/ECS/classes/class.ilECSExport.php';
     ilECSExport::deleteByServerId($this->getServerId());
     // resetting server id to flag items in imported list
     include_once 'Services/WebServices/ECS/classes/class.ilECSImport.php';
     ilECSImport::resetServerId($this->getServerId());
     $ilDB->manipulate('DELETE FROM ecs_server ' . 'WHERE server_id = ' . $ilDB->quote($this->getServerId(), 'integer'));
     $this->server_id = NULL;
     return true;
 }
 /**
  * Handle export reset.
  * Delete exported econtent and create it again 
  *
  * @return bool
  * @static
  * throws ilException, ilECSConnectorException
  */
 public static function handleExportReset(ilECSSetting $server)
 {
     include_once './Services/WebServices/ECS/classes/class.ilECSExport.php';
     // Delete all export events
     $queue = new ilECSEventQueueReader($server->getServerId());
     $queue->deleteAllExportedEvents();
     // Read all local export info
     $local_econtent_ids = ilECSExport::_getAllEContentIds($server->getServerId());
     $types = self::getAllEContentTypes();
     $list = self::getAllResourceIds($server, $types, true);
     // Delete all deprecated local export info
     foreach ($list as $resource_type => $remote_econtent_ids) {
         if ($remote_econtent_ids) {
             foreach ($local_econtent_ids as $econtent_id => $obj_id) {
                 if (!in_array($econtent_id, $remote_econtent_ids)) {
                     ilECSExport::_deleteEContentIds($server->getServerId(), array($econtent_id));
                 }
             }
             // Delete all with deprecated remote info
             foreach ($remote_econtent_ids as $econtent_id) {
                 if (!isset($local_econtent_ids[$econtent_id])) {
                     ilECSExport::_deleteEContentIds($server->getServerId(), array($econtent_id));
                 }
             }
         }
     }
     return true;
 }
 /**
  * Parse
  *
  * @access public
  * @param array array of released content obj_ids
  * 
  */
 public function parse($a_obj_ids)
 {
     global $ilObjDataCache;
     $ilObjDataCache->preloadObjectCache($a_obj_ids);
     // read obj_ids
     $obj_ids = array();
     foreach ($a_obj_ids as $obj_id) {
         $ref_ids = ilObject::_getAllReferences($obj_id);
         $ref_id = current($ref_ids);
         $obj_ids[$ref_id] = $obj_id;
     }
     foreach ($obj_ids as $ref_id => $obj_id) {
         include_once './Services/WebServices/ECS/classes/class.ilECSExport.php';
         $tmp_arr['sids'] = ilECSExport::lookupServerIds($obj_id);
         $tmp_arr['ref_id'] = $ref_id;
         $tmp_arr['obj_id'] = $obj_id;
         $tmp_arr['title'] = $ilObjDataCache->lookupTitle($obj_id);
         $tmp_arr['desc'] = $ilObjDataCache->lookupDescription($obj_id);
         $tmp_arr['md'] = '';
         $tmp_arr['last_update'] = $ilObjDataCache->lookupLastUpdate($obj_id);
         $content[] = $tmp_arr;
     }
     $this->setData($content ? $content : array());
 }