ILIAS  release_7 Revision v7.30-3-g800a261c036
class.ilRemoteObjectBase.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2010 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4include_once "Services/Object/classes/class.ilObject2.php";
5
15abstract class ilRemoteObjectBase extends ilObject2
16{
18 protected $remote_link;
19 protected $organization;
20 protected $mid;
21 protected $auth_hash = '';
22
23 protected $realm_plain = '';
24
25 const MAIL_SENDER = 6;
26 const OBJECT_OWNER = 6;
27
35 public function __construct($a_id = 0, $a_call_by_reference = true)
36 {
37 global $DIC;
38
39 $ilDB = $DIC['ilDB'];
40
41 parent::__construct($a_id, $a_call_by_reference);
42 $this->db = $ilDB;
43 }
44
51 public static function getInstanceByEventType($a_type)
52 {
53 switch ($a_type) {
55 include_once 'Modules/RemoteCourse/classes/class.ilObjRemoteCourse.php';
56 return new ilObjRemoteCourse();
57
59 include_once 'Modules/RemoteCategory/classes/class.ilObjRemoteCategory.php';
60 return new ilObjRemoteCategory();
61
63 include_once 'Modules/RemoteFile/classes/class.ilObjRemoteFile.php';
64 return new ilObjRemoteFile();
65
67 include_once 'Modules/RemoteGlossary/classes/class.ilObjRemoteGlossary.php';
68 return new ilObjRemoteGlossary();
69
71 include_once 'Modules/RemoteGroup/classes/class.ilObjRemoteGroup.php';
72 return new ilObjRemoteGroup();
73
75 include_once 'Modules/RemoteLearningModule/classes/class.ilObjRemoteLearningModule.php';
76 return new ilObjRemoteLearningModule();
77
79 include_once 'Modules/RemoteWiki/classes/class.ilObjRemoteWiki.php';
80 return new ilObjRemoteWiki();
81
83 include_once 'Modules/RemoteTest/classes/class.ilObjRemoteTest.php';
84 return new ilObjRemoteTest();
85 }
86 }
87
88 public function beforeCreate()
89 {
90 $this->setOwner(self::OBJECT_OWNER);
91 return parent::beforeCreate();
92 }
93
99 abstract protected function getTableName();
100
106 abstract protected function getECSObjectType();
107
114 public static function _lookupOrganization($a_obj_id)
115 {
116 global $DIC;
117
118 $ilDB = $DIC['ilDB'];
119
120 $query = "SELECT organization FROM " . static::DB_TABLE_NAME .
121 " WHERE obj_id = " . $ilDB->quote($a_obj_id, 'integer') . " ";
122 $res = $ilDB->query($query);
123 while ($row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT)) {
124 return $row->organization;
125 }
126 return '';
127 }
128
133 public function getRealmPlain()
134 {
135 return $this->realm_plain;
136 }
137
143 public function setOrganization($a_organization)
144 {
145 $this->organization = $a_organization;
146 }
147
153 public function getOrganization()
154 {
155 return $this->organization;
156 }
157
163 public function getLocalInformation()
164 {
166 }
167
173 public function setLocalInformation($a_info)
174 {
175 $this->local_information = $a_info;
176 }
177
183 public function getMID()
184 {
185 return $this->mid;
186 }
187
193 public function setMID($a_mid)
194 {
195 $this->mid = $a_mid;
196 }
197
204 public static function _lookupMID($a_obj_id)
205 {
206 global $DIC;
207
208 $ilDB = $DIC['ilDB'];
209
210 $query = "SELECT mid FROM " . static::DB_TABLE_NAME .
211 " WHERE obj_id = " . $ilDB->quote($a_obj_id, 'integer') . " ";
212 $res = $ilDB->query($query);
213 while ($row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT)) {
214 return $row->mid;
215 }
216 return 0;
217 }
218
224 public function setRemoteLink($a_link)
225 {
226 $this->remote_link = $a_link;
227 }
228
234 public function getRemoteLink()
235 {
236 return $this->remote_link;
237 }
238
246 public function getFullRemoteLink()
247 {
248 global $DIC;
249
250 $ilUser = $DIC['ilUser'];
251
252
253 include_once './Services/WebServices/ECS/classes/class.ilECSImport.php';
254 $server_id = ilECSImport::lookupServerId($this->getId());
256
257 include_once('./Services/WebServices/ECS/classes/class.ilECSUser.php');
258 $user = new ilECSUser($ilUser);
259 $ecs_user_data = $user->toGET();
260 $GLOBALS['DIC']['ilLog']->write(__METHOD__ . ': Using ecs user data ' . $ecs_user_data);
261
262 // check token mechanism enabled
263 include_once './Services/WebServices/ECS/classes/class.ilECSParticipantSetting.php';
264 $part = new ilECSParticipantSetting($server_id, $this->getMID());
265 if (!$part->isTokenEnabled()) {
266 return $this->getRemoteLink();
267 }
268
269 $auth_hash = $this->createAuthResource($this->getRemoteLink() . $user->toREALM());
270 $ecs_url_hash = 'ecs_hash_url=' . urlencode($server->getServerURI() . '/sys/auths/' . $auth_hash);
271
272 if (strpos($this->getRemoteLink(), '?')) {
273 $link = $this->getRemoteLink() . '&ecs_hash=' . $auth_hash . $ecs_user_data . '&' . $ecs_url_hash;
274 } else {
275 $link = $this->getRemoteLink() . '?ecs_hash=' . $auth_hash . $ecs_user_data . '&' . $ecs_url_hash;
276 }
277 $GLOBALS['DIC']['ilLog']->write(__METHOD__ . ': ECS full link: ' . $link);
278 return $link;
279 }
280
287 public function createAuthResource($a_plain_realm)
288 {
289 global $DIC;
290
291 $ilLog = $DIC['ilLog'];
292
293 include_once './Services/WebServices/ECS/classes/class.ilECSAuth.php';
294 include_once './Services/WebServices/ECS/classes/class.ilECSConnector.php';
295 include_once './Services/WebServices/ECS/classes/class.ilECSImport.php';
296 include_once './Services/WebServices/ECS/classes/class.ilECSSetting.php';
297
298 try {
299 $server_id = ilECSImport::lookupServerId($this->getId());
300 $import_info = new ilECSImport($server_id, $this->getId());
301
302 $connector = new ilECSConnector(ilECSSetting::getInstanceByServerId($server_id));
303 $auth = new ilECSAuth();
304 $auth->setPid($import_info->getMID());
305 // URL is deprecated
306 $auth->setUrl($this->getRemoteLink());
307 $realm = sha1($a_plain_realm);
308 $GLOBALS['DIC']['ilLog']->write(__METHOD__ . ': Using realm ' . $a_plain_realm);
309 $auth->setRealm($realm);
310 $GLOBALS['DIC']['ilLog']->write(__METHOD__ . ' Mid is ' . $this->getMID());
311 $this->auth_hash = $connector->addAuth(@json_encode($auth), $this->getMID());
312 return $this->auth_hash;
313 } catch (ilECSConnectorException $exc) {
314 $ilLog->write(__METHOD__ . ': Caught error from ECS Auth resource: ' . $exc->getMessage());
315 return false;
316 }
317 }
318
322 public function doCreate()
323 {
324 global $DIC;
325
326 $ilDB = $DIC['ilDB'];
327
328 $fields = array(
329 "obj_id" => array("integer", $this->getId()),
330 "local_information" => array("text", ""),
331 "remote_link" => array("text", ""),
332 "mid" => array("integer", 0),
333 "organization" => array("text", "")
334 );
335
336 $this->doCreateCustomFields($fields);
337
338 $ilDB->insert($this->getTableName(), $fields);
339 }
340
345 protected function doCreateCustomFields(array &$a_fields)
346 {
347 }
348
352 public function doUpdate()
353 {
354 global $DIC;
355
356 $ilDB = $DIC['ilDB'];
357
358 $fields = array(
359 "local_information" => array("text", $this->getLocalInformation()),
360 "remote_link" => array("text", $this->getRemoteLink()),
361 "mid" => array("integer", $this->getMID()),
362 "organization" => array("text", $this->getOrganization())
363 );
364
365 $this->doUpdateCustomFields($fields);
366
367 $where = array("obj_id" => array("integer", $this->getId()));
368
369 $ilDB->update($this->getTableName(), $fields, $where);
370 }
371
376 protected function doUpdateCustomFields(array &$a_fields)
377 {
378 }
379
383 public function doDelete()
384 {
385 global $DIC;
386
387 $ilDB = $DIC['ilDB'];
388
389 //put here your module specific stuff
390 include_once('./Services/WebServices/ECS/classes/class.ilECSImport.php');
392
393 $query = "DELETE FROM " . $this->getTableName() .
394 " WHERE obj_id = " . $this->db->quote($this->getId(), 'integer') . " ";
395 $ilDB->manipulate($query);
396 }
397
401 public function doRead()
402 {
403 $query = "SELECT * FROM " . $this->getTableName() .
404 " WHERE obj_id = " . $this->db->quote($this->getId(), 'integer') . " ";
405 $res = $this->db->query($query);
406 while ($row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT)) {
407 $this->setLocalInformation($row->local_information);
408 $this->setRemoteLink($row->remote_link);
409 $this->setMID($row->mid);
410 $this->setOrganization($row->organization);
411
412 $this->doReadCustomFields($row);
413 }
414 }
415
420 protected function doReadCustomFields($a_row)
421 {
422 }
423
431 public function createFromECSEContent(ilECSSetting $a_server, $a_ecs_content, $a_owner)
432 {
433 $this->create();
434
435 // won't work for personal workspace
436 $this->createReference();
437 $this->setPermissions($a_server->getImportId());
438
439 include_once './Services/WebServices/ECS/classes/class.ilECSUtils.php';
440 $matchable_content = ilECSUtils::getMatchableContent(
441 $this->getECSObjectType(),
442 $a_server->getServerId(),
443 $a_ecs_content,
444 $a_owner
445 );
446
447 include_once './Services/WebServices/ECS/classes/class.ilECSCategoryMapping.php';
449 $a_server->getServerId(),
450 $matchable_content
451 ));
452
453 $this->updateFromECSContent($a_server, $a_ecs_content, $a_owner);
454 }
455
463 public function updateFromECSContent(ilECSSetting $a_server, $a_ecs_content, $a_owner)
464 {
465 global $DIC;
466
467 $ilLog = $DIC['ilLog'];
468
469 $ilLog->write('updateFromECSContent: ' . print_r($a_ecs_content, true));
470
471 // Get organisation for owner (ObjectListGUI performance)
472 $organisation = null;
473 if ($a_owner) {
474 include_once './Services/WebServices/ECS/classes/class.ilECSUtils.php';
475 $organisation = ilECSUtils::lookupParticipantName($a_owner, $a_server->getServerId());
476 $ilLog->write('found organisation: ' . $organisation);
477 }
478
479 $this->setMID($a_owner); // obsolete?
480 $this->setOrganization($organisation);
481 $this->setTitle($a_ecs_content->title);
482 $this->setDescription($a_ecs_content->abstract);
483 $this->setRemoteLink($a_ecs_content->url);
484
485 $ilLog->write('updateCustomFromECSContent');
486 $this->updateCustomFromECSContent($a_server, $a_ecs_content);
487
488 // we are updating late so custom values can be set
489
490 $ilLog->write('ilObject->update()');
491 $this->update();
492
493 include_once './Services/WebServices/ECS/classes/class.ilECSUtils.php';
494 $matchable_content = ilECSUtils::getMatchableContent(
495 $this->getECSObjectType(),
496 $a_server->getServerId(),
497 $a_ecs_content,
498 $a_owner
499 );
500
501 // rule-based category mapping
502 include_once './Services/WebServices/ECS/classes/class.ilECSCategoryMapping.php';
504 $this->getId(),
505 $a_server->getServerId(),
506 $matchable_content
507 );
508 }
509
518 protected function importMetadataFromJson($a_json, ilECSSetting $a_server, array $a_definition, $a_mapping_mode)
519 {
520 global $DIC;
521
522 $ilLog = $DIC['ilLog'];
523
524 $ilLog->write("importing metadata from json: " . print_r($a_json, true));
525
526 include_once('./Services/WebServices/ECS/classes/class.ilECSDataMappingSettings.php');
527 include_once('./Services/AdvancedMetaData/classes/class.ilAdvancedMDValues.php');
528 include_once('./Services/AdvancedMetaData/classes/class.ilAdvancedMDFieldDefinition.php');
529
531 $values_records = ilAdvancedMDValues::getInstancesForObjectId($this->getId(), $this->getType());
532 foreach ($values_records as $values_record) {
533 // this correctly binds group and definitions
534 $values_record->read();
535 }
536
537 $do_save = false;
538
539 foreach ($a_definition as $id => $type) {
540 if (is_array($type)) {
541 $target = $type[1];
542 $type = $type[0];
543 } else {
544 $target = $id;
545 }
546
547 $timePlace = null;
548 if ($field = $mappings->getMappingByECSName($a_mapping_mode, $id)) {
549 // find element in records
550 $adv_md_def = null;
551 foreach ($values_records as $values_record) {
552 $adv_md_defs = $values_record->getDefinitions();
553 if (isset($adv_md_defs[$field])) {
554 $adv_md_def = $adv_md_defs[$field];
555 break;
556 }
557 }
558 if (!$adv_md_def) {
559 continue;
560 }
561
562 $raw_value = $a_json->$target;
563
565 if (!is_object($timePlace)) {
566 include_once('./Services/WebServices/ECS/classes/class.ilECSTimePlace.php');
567 if (is_object($raw_value)) {
568 $timePlace = new ilECSTimePlace();
569 $timePlace->loadFromJSON($raw_value);
570 } else {
571 $timePlace = new ilECSTimePlace();
572 }
573 }
574 $raw_value = $timePlace;
575 }
576
577 if ($adv_md_def->importFromECS($type, $raw_value, $id)) {
578 $do_save = true;
579 }
580 }
581 }
582
583 if ($do_save) {
584 foreach ($values_records as $values_record) {
585 $additional = array();
586 foreach ($values_record->getADTGroup()->getElements() as $element_id => $element) {
587 if (!$element->isNull()) {
588 $additional[$element_id] = array("disabled" => array("integer", 1));
589 }
590 }
591 $values_record->write($additional);
592 }
593 }
594 }
595
602 protected function updateCustomFromECSContent(ilECSSetting $a_server, $ecs_content)
603 {
604 }
605
611 public function isLocalObject()
612 {
613 include_once('./Services/WebServices/ECS/classes/class.ilECSExport.php');
614 include_once('./Services/WebServices/ECS/classes/class.ilECSImport.php');
618 )) {
619 return false;
620 }
621 return true;
622 }
623
633 public function handleCreate(ilECSSetting $a_server, $a_econtent_id, array $a_mids)
634 {
635 return $this->handleUpdate($a_server, $a_econtent_id, $a_mids);
636 }
637
648 public function handleUpdate(ilECSSetting $a_server, $a_econtent_id, array $a_mids)
649 {
650 global $DIC;
651
652 $ilLog = $DIC['ilLog'];
653
654 // get content details
655 include_once('./Services/WebServices/ECS/classes/class.ilECSEContentDetails.php');
657 $a_server->getServerId(),
658 $a_econtent_id,
659 $this->getECSObjectType()
660 );
661 if (!$details instanceof ilECSEContentDetails) {
662 $this->handleDelete($a_server, $a_econtent_id);
663 $ilLog->write(__METHOD__ . ': Handling delete of deprecated remote object. DONE');
664 return;
665 }
666
667 $ilLog->write(__METHOD__ . ': Receivers are ' . print_r($details->getReceivers(), true));
668 $ilLog->write(__METHOD__ . ': Senders are ' . print_r($details->getSenders(), true));
669
670 // check owner (sender mid)
671 include_once('./Services/WebServices/ECS/classes/class.ilECSParticipantSettings.php');
672 if (!ilECSParticipantSettings::getInstanceByServerId($a_server->getServerId())->isImportAllowed($details->getSenders())) {
673 $ilLog->write('Ignoring disabled participant. MID: ' . $details->getOwner());
674 return true;
675 }
676
677 // new mids
678 include_once 'Services/WebServices/ECS/classes/class.ilECSImport.php';
679 include_once 'Services/WebServices/ECS/classes/class.ilECSConnector.php';
680 foreach (array_intersect($a_mids, $details->getReceivers()) as $mid) {
681 try {
682 $connector = new ilECSConnector($a_server);
683 $res = $connector->getResource($this->getECSObjectType(), $a_econtent_id);
684 if ($res->getHTTPCode() == ilECSConnector::HTTP_CODE_NOT_FOUND) {
685 continue;
686 }
687 $json = $res->getResult();
688 $GLOBALS['DIC']['ilLog']->write(__METHOD__ . ': Received json: ' . print_r($json, true));
689 if (!is_object($json)) {
690 // try as array (workaround for invalid content)
691 $json = $json[0];
692 if (!is_object($json)) {
693 throw new ilECSConnectorException('invalid json');
694 }
695 }
696 } catch (ilECSConnectorException $exc) {
697 $ilLog->write(__METHOD__ . ': Error parsing result. ' . $exc->getMessage());
698 $ilLog->logStack();
699 return false;
700 }
701
702 // Update existing
703
704 // Check receiver mid
705 if ($obj_id = ilECSImport::_isImported($a_server->getServerId(), $a_econtent_id, $mid)) {
706 $ilLog->write(__METHOD__ . ': Handling update for existing object');
707 $remote = ilObjectFactory::getInstanceByObjId($obj_id, false);
708 if (!$remote instanceof ilRemoteObjectBase) {
709 $ilLog->write(__METHOD__ . ': Cannot instantiate remote object. Got object type ' . $remote->getType());
710 continue;
711 }
712 $remote->updateFromECSContent($a_server, $json, $details->getMySender());
713 } else {
714 $GLOBALS['DIC']['ilLog']->write(__METHOD__ . ': my sender ' . $details->getMySender() . 'vs mid' . $mid);
715
716 $ilLog->write(__METHOD__ . ': Handling create for non existing object');
717 $this->createFromECSEContent($a_server, $json, $details->getMySender());
718
719 // update import status
720 $ilLog->write(__METHOD__ . ': Updating import status');
721 include_once('./Services/WebServices/ECS/classes/class.ilECSImport.php');
722 $import = new ilECSImport($a_server->getServerId(), $this->getId());
723 $import->setEContentId($a_econtent_id);
724 // Store receiver mid
725 $import->setMID($mid);
726 $import->save();
727
728 $ilLog->write(__METHOD__ . ': Sending notification');
729 $this->sendNewContentNotification($a_server->getServerId());
730 }
731 }
732
733 $ilLog->write(__METHOD__ . ': done');
734 return true;
735 }
736
740 protected function sendNewContentNotification($a_server_id)
741 {
742 include_once('Services/WebServices/ECS/classes/class.ilECSSetting.php');
743 $settings = ilECSSetting::getInstanceByServerId($a_server_id);
744 if (!count($rcps = $settings->getEContentRecipients())) {
745 return;
746 }
747
748 include_once('./Services/Mail/classes/class.ilMail.php');
749 include_once('./Services/Language/classes/class.ilLanguageFactory.php');
750
752 $lang->loadLanguageModule('ecs');
753
754 $mail = new ilMail(self::MAIL_SENDER);
755 $message = $lang->txt('ecs_' . $this->getType() . '_created_body_a') . "\n\n";
756 $message .= $lang->txt('title') . ': ' . $this->getTitle() . "\n";
757 if (strlen($desc = $this->getDescription())) {
758 $message .= $lang->txt('desc') . ': ' . $desc . "\n";
759 }
760
761 include_once('./Services/Link/classes/class.ilLink.php');
762 $href = ilLink::_getStaticLink($this->getRefId(), $this->getType(), true);
763 $message .= $lang->txt("perma_link") . ': ' . $href . "\n\n";
765
766 $mail->enqueue(
767 $settings->getEContentRecipientsAsString(),
768 '',
769 '',
770 $lang->txt('ecs_new_econtent_subject'),
771 $message,
772 array()
773 );
774 }
775
786 public function handleDelete(ilECSSetting $a_server, $a_econtent_id, $a_mid = 0)
787 {
788 global $DIC;
789
790 $tree = $DIC['tree'];
791 $ilLog = $DIC['ilLog'];
792
793
794 include_once('./Services/WebServices/ECS/classes/class.ilECSImport.php');
795
796 // there is no information about the original mid anymore.
797 // Therefor delete any remote objects with given econtent id
798 $obj_ids = ilECSImport::_lookupObjIds($a_server->getServerId(), $a_econtent_id);
799 $ilLog->write(__METHOD__ . ': Received obj_ids ' . print_r($obj_ids, true));
800
801 foreach ($obj_ids as $obj_id) {
802 $references = ilObject::_getAllReferences($obj_id);
803 foreach ($references as $ref_id) {
804 if ($tmp_obj = ilObjectFactory::getInstanceByRefId($ref_id, false)) {
805 $ilLog->write(__METHOD__ . ': Deleting obsolete remote course: ' . $tmp_obj->getTitle());
806 $tmp_obj->delete();
807 $tree->deleteTree($tree->getNodeData($ref_id));
808 }
809 unset($tmp_obj);
810 }
811 }
812 return true;
813 }
814
822 public function getAllResourceIds(ilECSSetting $a_server, $a_sender_only = false)
823 {
824 global $DIC;
825
826 $ilLog = $DIC['ilLog'];
827
828 try {
829 include_once './Services/WebServices/ECS/classes/class.ilECSConnector.php';
830 $connector = new ilECSConnector($a_server);
831 $connector->addHeader('X-EcsQueryStrings', $a_sender_only ? 'sender=true' : 'all=true'); // #11301
832 $list = $connector->getResourceList($this->getECSObjectType());
833 if ($list instanceof ilECSResult) {
834 return $list->getResult()->getLinkIds();
835 }
836 } catch (ilECSConnectorException $exc) {
837 $ilLog->write(__METHOD__ . ': Error getting resource list. ' . $exc->getMessage());
838 }
839 }
840}
if(!defined('PATH_SEPARATOR')) $GLOBALS['_PEAR_default_error_mode']
Definition: PEAR.php:64
An exception for terminatinating execution or to throw for unit testing.
static getInstancesForObjectId($a_obj_id, $a_obj_type=null, $a_sub_type="-", $a_sub_id=0)
Get instances for given object id.
static handleUpdate($a_obj_id, $a_server_id, $a_matchable_content)
Handle update of ecs content and create references.
static getMatchingCategory($a_server_id, $a_matchable_content)
get matching category
static getInstanceByServerId($a_server_id)
Get singleton instance.
Presentation of ecs content details (http://...campusconnect/courselinks/id/details)
static getInstance($a_server_id, $a_econtent_id, $a_resource_type)
Get data from server.
static _isRemote($a_server_id, $a_econtent_id)
is remote object
Storage of ECS imported objects.
static _lookupEContentId($a_obj_id)
get econent_id
static _deleteByObjId($a_obj_id)
Delete by obj_id.
static _lookupObjIds($a_server_id, $a_econtent_id)
Lookup obj_id.
static _isImported($a_server_id, $a_econtent_id, $a_mid, $a_sub_id=null)
check if econtent is imported for a specific mid
static lookupServerId($a_obj_id)
Lookup server id of imported content @global <type> $ilDB.
static getInstanceByServerId($a_server_id)
Get instance by server id.
getServerId()
Get current server id.
static getInstanceByServerId($a_server_id)
Get singleton instance per server.
getImportId()
get import id
Representation of ECS EContent Time Place.
Stores relevant user data.
static getMatchableContent($a_resource_id, $a_server_id, $a_ecs_content, $a_owner)
Convert ECS content to rule matchable values.
static lookupParticipantName($a_owner, $a_server_id)
Lookup participant name.
const TYPE_TIMEPLACE
static _getLanguage($a_lang_key='')
Get langauge object.
static _getAutoGeneratedMessageString(ilLanguage $lang=null)
Get auto generated info string.
Remote category app class.
Remote course app class.
Remote file app class.
Remote glossary app class.
Remote group app class.
Remote learning module app class.
Remote test app class.
Remote wiki app class.
Class ilObject2 This is an intermediate progress of ilObject class.
getRefId()
get reference id @access public
setTitle($a_title)
set object title
putInTree($a_parent_ref)
maybe this method should be in tree object!?
setPermissions($a_parent_ref)
set permissions of object
getType()
get object type @access public
getDescription()
get object description
setOwner($a_owner)
set object owner
update()
update object in db
setDescription($a_desc)
set object description
createReference()
creates reference for object
getTitle()
get object title @access public
static getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
static getInstanceByRefId($a_ref_id, $stop_on_error=true)
get an instance of an Ilias object by reference id
static _getAllReferences($a_id)
get all reference ids of object
create()
create
getId()
get object id @access public
Remote object app base class.
getAllResourceIds(ilECSSetting $a_server, $a_sender_only=false)
Get all available resources.
updateCustomFromECSContent(ilECSSetting $a_server, $ecs_content)
update remote object settings from ecs content
doUpdateCustomFields(array &$a_fields)
Add custom fields to db update.
getOrganization()
get organization
handleCreate(ilECSSetting $a_server, $a_econtent_id, array $a_mids)
Handle creation.
createFromECSEContent(ilECSSetting $a_server, $a_ecs_content, $a_owner)
create remote object from ECSContent object
setRemoteLink($a_link)
set remote link
getTableName()
Get db table name.
doReadCustomFields($a_row)
Read custom fields from db row.
getLocalInformation()
get local information
doCreate()
Create remote object.
__construct($a_id=0, $a_call_by_reference=true)
Constructor.
doUpdate()
Update remote object.
isLocalObject()
Is remote object from same installation?
static _lookupMID($a_obj_id)
lookup owner mid
getFullRemoteLink()
get full remote link Including ecs generated hash and auth mode
doDelete()
Delete remote object.
setOrganization($a_organization)
set organization
getRealmPlain()
Get realm plain.
handleDelete(ilECSSetting $a_server, $a_econtent_id, $a_mid=0)
Handle delete event.
static _lookupOrganization($a_obj_id)
lookup organization
getECSObjectType()
Get ECS resource identifier, e.g.
createAuthResource($a_plain_realm)
create authentication resource on ecs server
handleUpdate(ilECSSetting $a_server, $a_econtent_id, array $a_mids)
Handle update event.
importMetadataFromJson($a_json, ilECSSetting $a_server, array $a_definition, $a_mapping_mode)
Add advanced metadata to json (export)
setLocalInformation($a_info)
set local information
updateFromECSContent(ilECSSetting $a_server, $a_ecs_content, $a_owner)
update remote object settings from ecs content
beforeCreate()
If overwritten this method should return true, there is currently no "abort" handling for cases where...
sendNewContentNotification($a_server_id)
send notifications about new EContent
doCreateCustomFields(array &$a_fields)
Add custom fields to db insert.
static getInstanceByEventType($a_type)
Get instance by ilECSEvent(QueueReader) type.
$server
global $DIC
Definition: goto.php:24
$additional
Definition: goto.php:52
$ilUser
Definition: imgupload.php:18
$auth
Definition: metadata.php:59
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
$query
foreach($_POST as $key=> $value) $res
global $ilDB
$lang
Definition: xapiexit.php:8
$message
Definition: xapiexit.php:14