59 include_once(
'./Services/WebServices/ECS/classes/class.ilECSSetting.php');
60 $this->settings = $setting;
77 if(self::$instances[$a_server_id])
79 return self::$instances[$a_server_id];
81 include_once
'./Services/WebServices/ECS/classes/class.ilECSSetting.php';
82 return self::$instances[$a_server_id] =
93 include_once
'./Services/Context/classes/class.ilContext.php';
99 include_once
'./Services/WebServices/ECS/classes/class.ilECSServerSettings.php';
101 foreach($servers->getServers() as
$server)
104 if($sched->checkNextExecution())
106 $sched->initNextExecution();
116 include_once
'./Services/WebServices/ECS/classes/class.ilECSServerSettings.php';
121 $sched->startTaskExecution();
155 $this->log->write(__METHOD__.
': Caught exception: '.$exc->getMessage());
171 include_once(
'./Services/WebServices/ECS/classes/class.ilECSEventQueueReader.php');
173 $this->event_reader->refresh();
189 include_once
'./Services/WebServices/ECS/classes/class.ilECSEvent.php';
193 if(!$event = $this->event_reader->shift())
195 $this->log->write(__METHOD__.
': No more pending events found. DONE');
199 $this->log->write(print_r($event,
true));
203 $event_ignored =
false;
204 switch($event[
'type'])
214 include_once
'Services/WebServices/ECS/classes/class.ilRemoteObjectBase.php';
216 $this->log->write(
"got handler ".get_class($handler));
220 include_once
'./Services/WebServices/ECS/classes/Tree/class.ilECSCmsTreeCommandQueueHandler.php';
225 include_once
'./Services/WebServices/ECS/classes/Course/class.ilECSCmsCourseCommandQueueHandler.php';
230 include_once
'./Services/WebServices/ECS/classes/Course/class.ilECSCmsCourseMemberCommandQueueHandler.php';
235 $this->log->write(__METHOD__.
': Ignoring event type in queue '.$event[
'type']);
236 $event_ignored =
true;
240 include_once
'./Services/WebServices/ECS/classes/Connectors/class.ilECSEnrolmentStatusCommandQueueHandler.php';
246 $event_ignored =
true;
248 $GLOBALS[
'ilAppEventHandler']->raise(
249 'Services/WebServices/ECS',
251 array(
'event' => $event)
258 $this->event_reader->delete($event[
'event_id']);
272 $res = $handler->handleDelete($this->
getServer(), $event[
'id'],$this->mids);
273 $this->log->write(__METHOD__.
': Handling delete. DONE');
277 $res = $handler->handleCreate($this->
getServer(), $event[
'id'], $this->mids);
278 $this->log->write(__METHOD__.
': Handling create. DONE');
282 $res = $handler->handleUpdate($this->
getServer(), $event[
'id'], $this->mids);
283 $this->log->write(__METHOD__.
': Handling update. DONE');
287 $this->log->write(__METHOD__.
': Unknown event operation in queue '.$event[
'op']);
292 $this->log->write(__METHOD__.
': Processing of event done '.$event[
'event_id']);
293 $this->event_reader->delete($event[
'event_id']);
297 $this->log->write(__METHOD__.
': Processing of event failed '.$event[
'event_id']);
312 $query =
"SELECT usr_id FROM usr_data WHERE auth_mode = 'ecs' ".
313 "AND time_limit_until < ".time().
" ".
314 "AND time_limit_unlimited = 0 ".
315 "AND (time_limit_until - time_limit_from) < 7200";
321 $this->log->write(__METHOD__.
': Deleting deprecated ECS user account '.$user_obj->getLogin());
340 $this->mids = array();
342 include_once(
'./Services/WebServices/ECS/classes/class.ilECSCommunityReader.php');
344 foreach(
$reader->getCommunities() as $com)
346 foreach($com->getParticipants() as $part)
350 $this->mids[] = $part->getMID();
351 #$this->log->write('Fetch MID: '.$part->getMID());
374 if(!$this->settings->isEnabled())
379 if(!$this->settings->checkImportId())
381 $this->log->write(__METHOD__.
': Import ID is deleted or not of type "category". Aborting');
388 $query =
'UPDATE settings SET '.
389 'value = '.$ilDB->quote(time() + $this->settings->getPollingTime(),
'text').
' '.
390 'WHERE module = '.$ilDB->quote(
'ecs',
'text').
' '.
391 'AND keyword = '.$ilDB->quote(
'next_execution_'.$this->settings->getServerId(),
'text').
' '.
392 'AND value < '.$ilDB->quote(time(),
'text');
414 include_once
'Services/WebServices/SOAP/classes/class.ilSoapClient.php';
417 $soap_client->setResponseTimeout(1);
418 $soap_client->enableWSDL(
true);
420 #$ilLog->write(__METHOD__.': Trying to call Soap client...');
424 if($soap_client->init() and 0)
426 $ilLog->write(__METHOD__.
': Calling soap handleECSTasks method...');
427 $res = $soap_client->call(
'handleECSTasks',array($new_session_id.
'::'.
$client_id,$this->settings->getServerId()));
431 $ilLog->write(__METHOD__.
': SOAP call failed. Calling clone method manually. ');
432 include_once(
'./webservice/soap/include/inc.soap_functions.php');
const DB_FETCHMODE_OBJECT
static getType()
Get context type.
Reads ECS events and stores them in the database.
const TYPE_REMOTE_GLOSSARY
const TYPE_REMOTE_LEARNING_MODULE
const TYPE_DIRECTORY_TREES
const TYPE_REMOTE_CATEGORY
const TYPE_CMS_COURSE_MEMBERS
const TYPE_ENROLMENT_STATUS
static getInstance()
Get singleton instance.
static getInstanceByServerId($a_server_id)
Get singleton instance per server.
getServer()
Get server setting.
__construct(ilECSSetting $setting)
Singleton constructor.
initNextExecution()
Call next task scheduler run.
startTaskExecution()
Start Tasks.
handleEvents()
Handle events.
static _getInstanceByServerId($a_server_id)
get singleton instance Private access use ilECSTaskScheduler::start() or ilECSTaskScheduler::startTas...
static start()
Start task scheduler for each server instance.
handleDeprecatedAccounts()
Delete deprecate ECS accounts.
static startExecution()
Static version iterates over all active instances.
readMIDs()
Read MID's of this installation.
readEvents()
Read EContent.
checkNextExecution()
Start.
Base class for ILIAS Exception handling.
static getRootLogger()
The unique root logger has a fixed error level.
getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
static getInstanceByEventType($a_type)
Get instance by ilECSEvent(QueueReader) type.
static _duplicate($a_session_id)
Duplicate session.
static handleECSTasks($sid, $a_server_id)
$GLOBALS['PHPCAS_CLIENT']
This global variable is used by the interface class phpCAS.