/**
  * Get all resource ids by resource type
  * 
  * @param ilECSSetting $server
  * @param array $a_types
  * @param bool $a_sender_only
  * @return array type => ids
  */
 protected static function getAllResourceIds(ilECSSetting $server, array $a_types, $a_sender_only = false)
 {
     include_once 'Services/WebServices/ECS/classes/class.ilRemoteObjectBase.php';
     $list = array();
     foreach ($a_types as $type) {
         $robj = ilRemoteObjectBase::getInstanceByEventType($type);
         if ($robj) {
             $list[$type] = $robj->getAllResourceIds($server, $a_sender_only);
         }
     }
     return $list;
 }
 public static function _lookupOrganization($a_obj_id)
 {
     return ilRemoteObjectBase::_lookupOrganization($a_obj_id, self::DB_TABLE_NAME);
 }
 /**
  * Handle events
  *
  * @access private
  * 
  */
 private function handleEvents()
 {
     include_once './Services/WebServices/ECS/classes/class.ilECSEvent.php';
     for ($i = 0; $i < self::MAX_TASKS; $i++) {
         if (!($event = $this->event_reader->shift())) {
             $this->log->write(__METHOD__ . ': No more pending events found. DONE');
             break;
         }
         $this->log->write(print_r($event, true));
         // determine event handler
         switch ($event['type']) {
             case ilECSEventQueueReader::TYPE_REMOTE_COURSE:
             case ilECSEventQueueReader::TYPE_REMOTE_CATEGORY:
             case ilECSEventQueueReader::TYPE_REMOTE_FILE:
             case ilECSEventQueueReader::TYPE_REMOTE_GLOSSARY:
             case ilECSEventQueueReader::TYPE_REMOTE_GROUP:
             case ilECSEventQueueReader::TYPE_REMOTE_LEARNING_MODULE:
             case ilECSEventQueueReader::TYPE_REMOTE_WIKI:
             case ilECSEventQueueReader::TYPE_REMOTE_TEST:
                 include_once 'Services/WebServices/ECS/classes/class.ilRemoteObjectBase.php';
                 $handler = ilRemoteObjectBase::getInstanceByEventType($event['type']);
                 $this->log->write("got handler " . get_class($handler));
                 break;
             case ilECSEventQueueReader::TYPE_DIRECTORY_TREES:
                 include_once './Services/WebServices/ECS/classes/Tree/class.ilECSCmsTreeCommandQueueHandler.php';
                 $handler = new ilECSCmsTreeCommandQueueHandler($this->getServer());
                 break;
             case ilECSEventQueueReader::TYPE_CMS_COURSES:
                 include_once './Services/WebServices/ECS/classes/Course/class.ilECSCmsCourseCommandQueueHandler.php';
                 $handler = new ilECSCmsCourseCommandQueueHandler($this->getServer());
                 break;
             case ilECSEventQueueReader::TYPE_CMS_COURSE_MEMBERS:
                 include_once './Services/WebServices/ECS/classes/Course/class.ilECSCmsCourseMemberCommandQueueHandler.php';
                 $handler = new ilECSCmsCourseMemberCommandQueueHandler($this->getServer());
                 break;
             default:
                 $this->log->write(__METHOD__ . ': Unknown event type in queue ' . $event['type']);
                 break;
         }
         $res = false;
         switch ($event['op']) {
             case ilECSEvent::NEW_EXPORT:
                 // DEPRECATED?
                 // $this->handleNewlyCreate($event['id']);
                 // $this->log->write(__METHOD__.': Handling new creation. DONE');
                 break;
             case ilECSEvent::DESTROYED:
                 $res = $handler->handleDelete($this->getServer(), $event['id']);
                 $this->log->write(__METHOD__ . ': Handling delete. DONE');
                 break;
             case ilECSEvent::CREATED:
                 $res = $handler->handleCreate($this->getServer(), $event['id'], $this->mids);
                 $this->log->write(__METHOD__ . ': Handling create. DONE');
                 break;
             case ilECSEvent::UPDATED:
                 $res = $handler->handleUpdate($this->getServer(), $event['id'], $this->mids);
                 $this->log->write(__METHOD__ . ': Handling update. DONE');
                 break;
             default:
                 $this->log->write(__METHOD__ . ': Unknown event operation in queue ' . $event['op']);
                 break;
         }
         if ($res) {
             $this->log->write(__METHOD__ . ': Processing of event done ' . $event['event_id']);
             $this->event_reader->delete($event['event_id']);
         } else {
             $this->log->write(__METHOD__ . ': Processing of event failed ' . $event['event_id']);
         }
     }
 }