ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
ilRemoteObjectBase Class Reference

Remote object app base class. More...

+ Inheritance diagram for ilRemoteObjectBase:
+ Collaboration diagram for ilRemoteObjectBase:

Public Member Functions

 __construct (int $a_id=0, bool $a_call_by_reference=true)
 Constructor. More...
 
 getRealmPlain ()
 Get realm plain. More...
 
 setOrganization (string $a_organization)
 set organization More...
 
 getOrganization ()
 get organization More...
 
 getLocalInformation ()
 get local information More...
 
 setLocalInformation (string $a_info)
 set local information More...
 
 getMID ()
 get mid More...
 
 setMID (int $a_mid)
 set mid More...
 
 setRemoteLink (string $a_link)
 set remote link More...
 
 getRemoteLink ()
 get remote link More...
 
 getFullRemoteLink ()
 get full remote link Including ecs generated hash and auth mode More...
 
 createAuthResource (string $a_plain_realm)
 create authentication resource on ecs server More...
 
 createFromECSEContent (ilECSSetting $a_server, object $a_ecs_content, int $a_owner)
 create remote object from ECSContent object More...
 
 updateFromECSContent (ilECSSetting $a_server, object $a_ecs_content, int $a_owner)
 update remote object settings from ecs content More...
 
 isLocalObject ()
 Is remote object from same installation? More...
 
 handleCreate (ilECSSetting $a_server, int $a_econtent_id, array $a_mids)
 Handle creation. More...
 
 handleUpdate (ilECSSetting $a_server, int $a_econtent_id, array $a_mids)
 Handle update event. More...
 
 handleDelete (ilECSSetting $a_server, int $a_econtent_id, $a_mid=0)
 Handle delete event. More...
 
 getAllResourceIds (ilECSSetting $a_server, bool $a_sender_only=false)
 Get all available resources. More...
 
- Public Member Functions inherited from ilObject2
 __construct (int $a_id=0, bool $a_reference=true)
 Constructor. More...
 
 read ()
 
 create (bool $a_clone_mode=false)
 
 update ()
 
 delete ()
 delete object or referenced object (in the case of a referenced object, object data is only deleted if last reference is deleted) This function removes an object entirely from system!! More...
 
 cloneMetaData (ilObject $target_obj)
 Copy meta data. More...
 
 cloneObject (int $target_id, int $copy_id=0, bool $omit_tree=false)
 
- Public Member Functions inherited from ilObject
 getObjectProperties ()
 
 flushObjectProperties ()
 
 withReferences ()
 determines whether objects are referenced or not (got ref ids or not) More...
 
 processAutoRating ()
 
 read ()
 
 getId ()
 
 setId (int $id)
 
 setRefId (int $ref_id)
 
 getRefId ()
 
 getType ()
 
 setType (string $type)
 
 getPresentationTitle ()
 get presentation title Normally same as title Overwritten for sessions More...
 
 getTitle ()
 
 getUntranslatedTitle ()
 Get untranslated object title WebDAV needs to access the untranslated title of an object. More...
 
 setTitle (string $title)
 
 getDescription ()
 
 setDescription (string $description)
 
 getLongDescription ()
 get object long description (stored in object_description) More...
 
 getImportId ()
 
 setImportId (string $import_id)
 
 setOfflineStatus (bool $status)
 
 getOfflineStatus ()
 
 supportsOfflineHandling ()
 
 getOwner ()
 
 getOwnerName ()
 get full name of object owner More...
 
 setOwner (int $usr_id)
 
 getCreateDate ()
 Get create date in YYYY-MM-DD HH-MM-SS format. More...
 
 getLastUpdateDate ()
 Get last update date in YYYY-MM-DD HH-MM-SS format. More...
 
 create ()
 note: title, description and type should be set when this function is called More...
 
 update ()
 
 MDUpdateListener (string $element)
 Metadata update listener. More...
 
 createMetaData ()
 
 updateMetaData ()
 
 deleteMetaData ()
 
 updateOwner ()
 update owner of object in db More...
 
 putInTree (int $parent_ref_id)
 maybe this method should be in tree object!? More...
 
 setPermissions (int $parent_ref_id)
 
 setParentRolePermissions (int $parent_ref_id)
 Initialize the permissions of parent roles (local roles of categories, global roles...) This method is overwritten in e.g. More...
 
 createReference ()
 creates reference for object More...
 
 countReferences ()
 
 delete ()
 delete object or referenced object (in the case of a referenced object, object data is only deleted if last reference is deleted) This function removes an object entirely from system!! More...
 
 initDefaultRoles ()
 init default roles settings Purpose of this function is to create a local role folder and local roles, that are needed depending on the object type. More...
 
 applyDidacticTemplate (int $tpl_id)
 
 getXMLZip ()
 
 getHTMLDirectory ()
 
 appendCopyInfo (int $target_id, int $copy_id, int $new_obj_id)
 Prepend Copy info if object with same name exists in that container. More...
 
 cloneDependencies (int $target_id, int $copy_id)
 Clone object dependencies. More...
 
 cloneMetaData (ilObject $target_obj)
 Copy meta data. More...
 
 selfOrParentWithRatingEnabled ()
 
 getPossibleSubObjects (bool $filter=true)
 get all possible sub objects of this type the object can decide which types of sub objects are possible jut in time overwrite if the decision distinguish from standard model More...
 

Static Public Member Functions

static getInstanceByEventType (string $a_type)
 Get instance by ilECSEvent(QueueReader) type. More...
 
- Static Public Member Functions inherited from ilObject
static _lookupObjIdByImportId (string $import_id)
 Get (latest) object id for an import id. More...
 
static _lookupImportId (int $obj_id)
 
static _lookupOwnerName (int $owner_id)
 Lookup owner name for owner id. More...
 
static _getIdForImportId (string $import_id)
 
static _getAllReferences (int $id)
 get all reference ids for object ID More...
 
static _lookupTitle (int $obj_id)
 
static lookupOfflineStatus (int $obj_id)
 Lookup offline status using objectDataCache. More...
 
static _lookupOwner (int $obj_id)
 Lookup owner user ID for object ID. More...
 
static _getIdsForTitle (string $title, string $type='', bool $partial_match=false)
 
static _lookupDescription (int $obj_id)
 
static _lookupLastUpdate (int $obj_id, bool $formatted=false)
 
static _getLastUpdateOfObjects (array $obj_ids)
 
static _lookupObjId (int $ref_id)
 
static _setDeletedDate (int $ref_id, int $deleted_by)
 
static setDeletedDates (array $ref_ids, int $user_id)
 
static _resetDeletedDate (int $ref_id)
 
static _lookupDeletedDate (int $ref_id)
 
static _writeTitle (int $obj_id, string $title)
 write title to db (static) More...
 
static _writeDescription (int $obj_id, string $desc)
 write description to db (static) More...
 
static _writeImportId (int $obj_id, string $import_id)
 write import id to db (static) More...
 
static _lookupType (int $id, bool $reference=false)
 
static _isInTrash (int $ref_id)
 
static _hasUntrashedReference (int $obj_id)
 checks whether an object has at least one reference that is not in trash More...
 
static _lookupObjectId (int $ref_id)
 
static _getObjectsDataForType (string $type, bool $omit_trash=false)
 get all objects of a certain type More...
 
static _exists (int $id, bool $reference=false, ?string $type=null)
 checks if an object exists in object_data More...
 
static _getObjectsByType (string $obj_type="", ?int $owner=null)
 
static _prepareCloneSelection (array $ref_ids, string $new_type, bool $show_path=true)
 Prepare copy wizard object selection. More...
 
static getIconForType (string $type)
 
static _getIcon (int $obj_id=0, string $size="big", string $type="", bool $offline=false)
 Get icon for repository item. More...
 
static collectDeletionDependencies (array &$deps, int $ref_id, int $obj_id, string $type, int $depth=0)
 Collect deletion dependencies. More...
 
static getDeletionDependencies (int $obj_id)
 Get deletion dependencies. More...
 
static getLongDescriptions (array $obj_ids)
 
static getAllOwnedRepositoryObjects (int $user_id)
 
static fixMissingTitles ($type, array &$obj_title_map)
 Try to fix missing object titles. More...
 
static _lookupCreationDate (int $obj_id)
 
static _getObjectTypeIdByTitle (string $type, ?\ilDBInterface $ilDB=null)
 

Data Fields

const MAIL_SENDER = 6
 
const OBJECT_OWNER = 6
 
- Data Fields inherited from ilObject
const TITLE_LENGTH = 255
 
const DESC_LENGTH = 128
 
const LONG_DESC_LENGTH = 4000
 
const TABLE_OBJECT_DATA = "object_data"
 
array $objectList
 
string $untranslatedTitle
 

Protected Member Functions

 beforeCreate ()
 If overwritten this method should return true, there is currently no "abort" handling for cases where "false" is returned. More...
 
 getTableName ()
 Get db table name. More...
 
 getECSObjectType ()
 Get ECS resource identifier, e.g. More...
 
 doCreate (bool $clone_mode=false)
 
 doCreateCustomFields (array &$a_fields)
 Add custom fields to db insert. More...
 
 doUpdate ()
 Update remote object. More...
 
 doUpdateCustomFields (array &$a_fields)
 Add custom fields to db update. More...
 
 doDelete ()
 Delete remote object. More...
 
 doRead ()
 
 doReadCustomFields (object $a_row)
 Read custom fields from db row. More...
 
 importMetadataFromJson (object $a_json, ilECSSetting $a_server, array $a_definition, int $a_mapping_mode)
 Add advanced metadata to json (export) More...
 
 updateCustomFromECSContent (ilECSSetting $a_server, $ecs_content)
 update remote object settings from ecs content More...
 
 sendNewContentNotification ($a_server_id)
 send notifications about new EContent More...
 
- Protected Member Functions inherited from ilObject2
 initType ()
 
 doRead ()
 
 doCreate (bool $clone_mode=false)
 
 beforeCreate ()
 If overwritten this method should return true, there is currently no "abort" handling for cases where "false" is returned. More...
 
 doUpdate ()
 
 beforeUpdate ()
 
 doDelete ()
 
 beforeDelete ()
 
 doCloneObject (ilObject2 $new_obj, int $a_target_id, ?int $a_copy_id=null)
 
 beforeCloneObject ()
 
- Protected Member Functions inherited from ilObject
 doMDUpdateListener (string $a_element)
 
 beforeMDUpdateListener (string $a_element)
 
 doCreateMetaData ()
 
 beforeCreateMetaData ()
 
 doUpdateMetaData ()
 
 beforeUpdateMetaData ()
 
 doDeleteMetaData ()
 
 beforeDeleteMetaData ()
 
 handleAutoRating ()
 
 hasAutoRating ()
 

Protected Attributes

string $local_information = null
 
string $remote_link = null
 
string $organization = null
 
int $mid = null
 
string $auth_hash = ''
 
string $realm_plain = ''
 
- Protected Attributes inherited from ilObject
ilLogger $obj_log
 
ILIAS $ilias
 
ilObjectDefinition $obj_definition
 
ilDBInterface $db
 
ilLogger $log
 
ilErrorHandling $error
 
ilTree $tree
 
ilAppEventHandler $app_event_handler
 
ilRbacAdmin $rbac_admin
 
ilRbacReview $rbac_review
 
ilObjUser $user
 
ilLanguage $lng
 
LOMServices $lom_services
 
bool $call_by_reference
 
int $max_title = self::TITLE_LENGTH
 
int $max_desc = self::DESC_LENGTH
 
bool $add_dots = true
 
int $ref_id = null
 
string $type = ""
 
string $title = ""
 
string $desc = ""
 
string $long_desc = ""
 
int $owner = 0
 
string $create_date = ""
 
string $last_update = ""
 
string $import_id = ""
 
bool $register = false
 

Private Attributes

ilLogger $logger
 

Detailed Description

Remote object app base class.

Author
Stefan Meyer meyer.nosp@m.@lei.nosp@m.fos.c.nosp@m.om

Definition at line 26 of file class.ilRemoteObjectBase.php.

Constructor & Destructor Documentation

◆ __construct()

ilRemoteObjectBase::__construct ( int  $a_id = 0,
bool  $a_reference = true 
)

Constructor.

Parameters
int$a_idreference_id or object_id
bool$a_referencetreat the id as reference_id (true) or object_id (false)

Reimplemented from ilObject2.

Definition at line 41 of file class.ilRemoteObjectBase.php.

42 {
43 global $DIC;
44
45 parent::__construct($a_id, $a_call_by_reference);
46
47 $this->logger = $DIC->logger()->wsrv();
48 }
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
global $DIC
Definition: shib_login.php:26

References $DIC, ILIAS\GlobalScreen\Provider\__construct(), and ILIAS\Repository\logger().

+ Here is the call graph for this function:

Member Function Documentation

◆ beforeCreate()

ilRemoteObjectBase::beforeCreate ( )
protected

If overwritten this method should return true, there is currently no "abort" handling for cases where "false" is returned.

Returns
bool

Reimplemented from ilObject2.

Definition at line 87 of file class.ilRemoteObjectBase.php.

87 : bool
88 {
89 $this->setOwner(self::OBJECT_OWNER);
90 return parent::beforeCreate();
91 }
setOwner(int $usr_id)

References ilObject\setOwner().

+ Here is the call graph for this function:

◆ createAuthResource()

ilRemoteObjectBase::createAuthResource ( string  $a_plain_realm)

create authentication resource on ecs server

Definition at line 218 of file class.ilRemoteObjectBase.php.

219 {
220 try {
221 $server_id = ilECSImportManager::getInstance()->lookupServerId($this->getId());
222 $import_info = new ilECSImport($server_id, $this->getId());
223
224 $connector = new ilECSConnector(ilECSSetting::getInstanceByServerId($server_id));
225 $auth = new ilECSAuth();
226 $auth->setPid($import_info->getMID());
227 //TODO URL is deprecated
228 $auth->setUrl($this->getRemoteLink());
229 $realm = sha1($a_plain_realm);
230 $this->logger->info(__METHOD__ . ': Using realm ' . $a_plain_realm);
231 $auth->setRealm($realm);
232 $this->logger->info(__METHOD__ . ' Mid is ' . $this->getMID());
233 //TODO remove @
234 $this->auth_hash = $connector->addAuth(json_encode($auth, JSON_THROW_ON_ERROR), $this->getMID());
235 return $this->auth_hash;
236 } catch (ilECSConnectorException $exc) {
237 $this->logger->info(__METHOD__ . ': Caught error from ECS Auth resource: ' . $exc->getMessage());
238 return false;
239 }
240 }
static getInstance()
Get the singleton instance of this ilECSImportManager.
Storage of ECS imported objects.
static getInstanceByServerId(int $a_server_id)
Get singleton instance per server.

References $auth_hash, ilObject\getId(), ilECSImportManager\getInstance(), ilECSSetting\getInstanceByServerId(), getMID(), getRemoteLink(), and ILIAS\Repository\logger().

Referenced by getFullRemoteLink().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ createFromECSEContent()

ilRemoteObjectBase::createFromECSEContent ( ilECSSetting  $a_server,
object  $a_ecs_content,
int  $a_owner 
)

create remote object from ECSContent object

Parameters
ilECSSetting$a_server
object$a_ecs_contentobject with object settings
int$a_owner

Definition at line 337 of file class.ilRemoteObjectBase.php.

337 : void
338 {
339 $this->create();
340 $this->log->info("Done calling create, creating reference");
341 // won't work for personal workspace
342 $this->createReference();
343 $this->log->info("Done creating reference, setting permissions");
344 $this->setPermissions($a_server->getImportId());
345 $this->log->info("Done setting permissions, putting object in tree");
346
347 $matchable_content = ilECSUtils::getMatchableContent(
348 $this->getECSObjectType(),
349 $a_server->getServerId(),
350 $a_ecs_content,
351 $a_owner
352 );
353
355 $a_server->getServerId(),
356 $matchable_content
357 ));
358 $this->log->info("Done putting object in tree, updateing object");
359
360 $this->updateFromECSContent($a_server, $a_ecs_content, $a_owner);
361 }
static getMatchingCategory(int $a_server_id, array $a_matchable_content)
get matching category
getServerId()
Get current server id.
getImportId()
get import id
static getMatchableContent(string $a_resource_id, int $a_server_id, object $a_ecs_content, int $a_owner)
Convert ECS content to rule matchable values.
setPermissions(int $parent_ref_id)
createReference()
creates reference for object
putInTree(int $parent_ref_id)
maybe this method should be in tree object!?
create()
note: title, description and type should be set when this function is called
updateFromECSContent(ilECSSetting $a_server, object $a_ecs_content, int $a_owner)
update remote object settings from ecs content
getECSObjectType()
Get ECS resource identifier, e.g.

References ilObject\create(), ilObject\createReference(), getECSObjectType(), ilECSSetting\getImportId(), ilECSUtils\getMatchableContent(), ilECSCategoryMapping\getMatchingCategory(), ilECSSetting\getServerId(), ilObject\putInTree(), ilObject\setPermissions(), and updateFromECSContent().

+ Here is the call graph for this function:

◆ doCreate()

ilRemoteObjectBase::doCreate ( bool  $clone_mode = false)
protected

Reimplemented from ilObject2.

Definition at line 242 of file class.ilRemoteObjectBase.php.

242 : void
243 {
244 $fields = array(
245 "obj_id" => array("integer", $this->getId()),
246 "local_information" => array("text", ""),
247 "remote_link" => array("text", ""),
248 "mid" => array("integer", 0),
249 "organization" => array("text", "")
250 );
251
252 $this->doCreateCustomFields($fields);
253
254 $this->db->insert($this->getTableName(), $fields);
255 }
getTableName()
Get db table name.
doCreateCustomFields(array &$a_fields)
Add custom fields to db insert.

References doCreateCustomFields(), ilObject\getId(), and getTableName().

+ Here is the call graph for this function:

◆ doCreateCustomFields()

ilRemoteObjectBase::doCreateCustomFields ( array &  $a_fields)
protected

Add custom fields to db insert.

Reimplemented in ilObjRemoteCourse, ilObjRemoteFile, ilObjRemoteGlossary, ilObjRemoteGroup, ilObjRemoteLearningModule, ilObjRemoteTest, and ilObjRemoteWiki.

Definition at line 260 of file class.ilRemoteObjectBase.php.

260 : void
261 {
262 }

Referenced by doCreate().

+ Here is the caller graph for this function:

◆ doDelete()

ilRemoteObjectBase::doDelete ( )
protected

Delete remote object.

Reimplemented from ilObject2.

Definition at line 293 of file class.ilRemoteObjectBase.php.

293 : void
294 {
295 //put here your module specific stuff
296 ilECSImportManager::getInstance()->_deleteByObjId($this->getId());
297
298 $query = "DELETE FROM " . $this->getTableName() .
299 " WHERE obj_id = " . $this->db->quote($this->getId(), 'integer') . " ";
300 $this->db->manipulate($query);
301 }

References ilObject\getId(), ilECSImportManager\getInstance(), and getTableName().

+ Here is the call graph for this function:

◆ doRead()

ilRemoteObjectBase::doRead ( )
protected

Reimplemented from ilObject2.

Definition at line 303 of file class.ilRemoteObjectBase.php.

303 : void
304 {
305 $query = "SELECT * FROM " . $this->getTableName() .
306 " WHERE obj_id = " . $this->db->quote($this->getId(), 'integer') . " ";
307 $res = $this->db->query($query);
308 while ($row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT)) {
309 if (!is_null($row->local_information)) {
310 $this->setLocalInformation($row->local_information);
311 }
312 if (!is_null($row->remote_link)) {
313 $this->setRemoteLink($row->remote_link);
314 }
315 $this->setMID((int) $row->mid);
316 if (!is_null($row->organization)) {
317 $this->setOrganization($row->organization);
318 }
319 $this->doReadCustomFields($row);
320 }
321 }
setRemoteLink(string $a_link)
set remote link
setLocalInformation(string $a_info)
set local information
doReadCustomFields(object $a_row)
Read custom fields from db row.
setOrganization(string $a_organization)
set organization
$res
Definition: ltiservices.php:69

References $res, doReadCustomFields(), ilDBConstants\FETCHMODE_OBJECT, ilObject\getId(), getTableName(), setLocalInformation(), setMID(), setOrganization(), and setRemoteLink().

+ Here is the call graph for this function:

◆ doReadCustomFields()

ilRemoteObjectBase::doReadCustomFields ( object  $a_row)
protected

Read custom fields from db row.

Definition at line 326 of file class.ilRemoteObjectBase.php.

326 : void
327 {
328 }

Referenced by doRead().

+ Here is the caller graph for this function:

◆ doUpdate()

ilRemoteObjectBase::doUpdate ( )
protected

Update remote object.

Reimplemented from ilObject2.

Definition at line 267 of file class.ilRemoteObjectBase.php.

267 : void
268 {
269 $fields = array(
270 "local_information" => array("text", $this->getLocalInformation()),
271 "remote_link" => array("text", $this->getRemoteLink()),
272 "mid" => array("integer", $this->getMID()),
273 "organization" => array("text", $this->getOrganization())
274 );
275
276 $this->doUpdateCustomFields($fields);
277
278 $where = array("obj_id" => array("integer", $this->getId()));
279
280 $this->db->update($this->getTableName(), $fields, $where);
281 }
doUpdateCustomFields(array &$a_fields)
Add custom fields to db update.
getOrganization()
get organization
getLocalInformation()
get local information

References doUpdateCustomFields(), ilObject\getId(), getLocalInformation(), getMID(), getOrganization(), getRemoteLink(), and getTableName().

+ Here is the call graph for this function:

◆ doUpdateCustomFields()

ilRemoteObjectBase::doUpdateCustomFields ( array &  $a_fields)
protected

Add custom fields to db update.

Reimplemented in ilObjRemoteCourse, ilObjRemoteFile, ilObjRemoteGlossary, ilObjRemoteGroup, ilObjRemoteLearningModule, ilObjRemoteTest, and ilObjRemoteWiki.

Definition at line 286 of file class.ilRemoteObjectBase.php.

286 : void
287 {
288 }

Referenced by doUpdate().

+ Here is the caller graph for this function:

◆ getAllResourceIds()

ilRemoteObjectBase::getAllResourceIds ( ilECSSetting  $a_server,
bool  $a_sender_only = false 
)

Get all available resources.

Definition at line 667 of file class.ilRemoteObjectBase.php.

667 : array
668 {
669 try {
670 $connector = new ilECSConnector($a_server);
671 $connector->addHeader('X-EcsQueryStrings', $a_sender_only ? 'sender=true' : 'all=true'); // #11301
672 $list = $connector->getResourceList($this->getECSObjectType());
673 if ($list instanceof ilECSResult) {
674 return $list->getResult()->getLinkIds();
675 }
676 } catch (ilECSConnectorException $exc) {
677 $this->logger->error(__METHOD__ . ': Error getting resource list for type . ' . $this->getECSObjectType() . ' with message: ' . $exc->getMessage());
678 }
679
680 return [];
681 }

References ILIAS\Repository\logger().

+ Here is the call graph for this function:

◆ getECSObjectType()

ilRemoteObjectBase::getECSObjectType ( )
abstractprotected

Get ECS resource identifier, e.g.

"/campusconnect/courselinks"

Reimplemented in ilObjRemoteCategory, ilObjRemoteCourse, ilObjRemoteFile, ilObjRemoteGlossary, ilObjRemoteGroup, ilObjRemoteLearningModule, ilObjRemoteTest, and ilObjRemoteWiki.

Referenced by createFromECSEContent(), and updateFromECSContent().

+ Here is the caller graph for this function:

◆ getFullRemoteLink()

ilRemoteObjectBase::getFullRemoteLink ( )

get full remote link Including ecs generated hash and auth mode

Exceptions
ilECSConnectorException

Definition at line 188 of file class.ilRemoteObjectBase.php.

188 : string
189 {
190 $server_id = ilECSImportManager::getInstance()->lookupServerId($this->getId());
192 $setting = ilECSParticipantSetting::getInstance($server_id, $this->mid);
193 $user = new ilECSUser($this->user);
194 $ecs_user_data = $user->toGET($setting);
195 $this->logger->info(__METHOD__ . ': Using ecs user data ' . $ecs_user_data);
196
197 // check token mechanism enabled
198 $part = new ilECSParticipantSetting($server_id, $this->getMID());
199 if (!$part->isTokenEnabled()) {
200 return $this->getRemoteLink();
201 }
202
203 $auth_hash = $this->createAuthResource($this->getRemoteLink() . $user->toREALM());
204 $ecs_url_hash = 'ecs_hash_url=' . urlencode($server->getServerURI() . '/sys/auths/' . $auth_hash);
205
206 if (strpos($this->getRemoteLink(), '?')) {
207 $link = $this->getRemoteLink() . '&ecs_hash=' . $auth_hash . $ecs_user_data . '&' . $ecs_url_hash;
208 } else {
209 $link = $this->getRemoteLink() . '?ecs_hash=' . $auth_hash . $ecs_user_data . '&' . $ecs_url_hash;
210 }
211 $this->logger->info(__METHOD__ . ': ECS full link: ' . $link);
212 return $link;
213 }
static getInstance(int $a_server_id, int $mid)
Get instance by server id and mid.
Stores relevant user data.
ilObjUser $user
createAuthResource(string $a_plain_realm)
create authentication resource on ecs server
$server
Definition: shib_login.php:28

References $auth_hash, $server, ilObject\$user, createAuthResource(), ilObject\getId(), ilECSImportManager\getInstance(), ilECSParticipantSetting\getInstance(), ilECSSetting\getInstanceByServerId(), getMID(), getRemoteLink(), ILIAS\Repository\logger(), and ILIAS\Repository\user().

+ Here is the call graph for this function:

◆ getInstanceByEventType()

static ilRemoteObjectBase::getInstanceByEventType ( string  $a_type)
static

Get instance by ilECSEvent(QueueReader) type.

Returns
?ilRemoteObjectBase

Definition at line 55 of file class.ilRemoteObjectBase.php.

56 {
57 switch ($a_type) {
59 return new ilObjRemoteCourse();
60
62 return new ilObjRemoteCategory();
63
65 return new ilObjRemoteFile();
66
68 return new ilObjRemoteGlossary();
69
71 return new ilObjRemoteGroup();
72
74 return new ilObjRemoteLearningModule();
75
77 return new ilObjRemoteWiki();
78
80 return new ilObjRemoteTest();
81
82 default:
83 return null;
84 }
85 }
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.

References ilECSEventQueueReader\TYPE_REMOTE_CATEGORY, ilECSEventQueueReader\TYPE_REMOTE_COURSE, ilECSEventQueueReader\TYPE_REMOTE_FILE, ilECSEventQueueReader\TYPE_REMOTE_GLOSSARY, ilECSEventQueueReader\TYPE_REMOTE_GROUP, ilECSEventQueueReader\TYPE_REMOTE_LEARNING_MODULE, ilECSEventQueueReader\TYPE_REMOTE_TEST, and ilECSEventQueueReader\TYPE_REMOTE_WIKI.

Referenced by ilECSEventQueueReader\getAllResourceIds(), and ilECSTaskScheduler\handleEvents().

+ Here is the caller graph for this function:

◆ getLocalInformation()

ilRemoteObjectBase::getLocalInformation ( )

get local information

Definition at line 131 of file class.ilRemoteObjectBase.php.

131 : string
132 {
133 return $this->local_information ?? '';
134 }

Referenced by doUpdate().

+ Here is the caller graph for this function:

◆ getMID()

ilRemoteObjectBase::getMID ( )

get mid

Definition at line 149 of file class.ilRemoteObjectBase.php.

149 : int
150 {
151 return $this->mid;
152 }

References $mid.

Referenced by createAuthResource(), doUpdate(), and getFullRemoteLink().

+ Here is the caller graph for this function:

◆ getOrganization()

ilRemoteObjectBase::getOrganization ( )

get organization

Definition at line 123 of file class.ilRemoteObjectBase.php.

123 : string
124 {
125 return $this->organization ?? '';
126 }

Referenced by doUpdate().

+ Here is the caller graph for this function:

◆ getRealmPlain()

ilRemoteObjectBase::getRealmPlain ( )

Get realm plain.

Definition at line 107 of file class.ilRemoteObjectBase.php.

107 : string
108 {
109 return $this->realm_plain;
110 }

References $realm_plain.

◆ getRemoteLink()

ilRemoteObjectBase::getRemoteLink ( )

get remote link

Definition at line 177 of file class.ilRemoteObjectBase.php.

177 : string
178 {
179 return $this->remote_link;
180 }

References $remote_link.

Referenced by createAuthResource(), doUpdate(), and getFullRemoteLink().

+ Here is the caller graph for this function:

◆ getTableName()

ilRemoteObjectBase::getTableName ( )
abstractprotected

Get db table name.

Reimplemented in ilObjRemoteCategory, ilObjRemoteCourse, ilObjRemoteFile, ilObjRemoteGlossary, ilObjRemoteGroup, ilObjRemoteLearningModule, ilObjRemoteTest, and ilObjRemoteWiki.

Referenced by doCreate(), doDelete(), doRead(), and doUpdate().

+ Here is the caller graph for this function:

◆ handleCreate()

ilRemoteObjectBase::handleCreate ( ilECSSetting  $a_server,
int  $a_econtent_id,
array  $a_mids 
)

Handle creation.

called by ilTaskScheduler

Definition at line 512 of file class.ilRemoteObjectBase.php.

512 : bool
513 {
514 return $this->handleUpdate($a_server, $a_econtent_id, $a_mids);
515 }
handleUpdate(ilECSSetting $a_server, int $a_econtent_id, array $a_mids)
Handle update event.

◆ handleDelete()

ilRemoteObjectBase::handleDelete ( ilECSSetting  $a_server,
int  $a_econtent_id,
  $a_mid = 0 
)

Handle delete event.

called by ilTaskScheduler

Definition at line 641 of file class.ilRemoteObjectBase.php.

641 : bool
642 {
643 // there is no information about the original mid anymore.
644 // Therefor delete any remote objects with given econtent id
645 $obj_ids = ilECSImportManager::getInstance()->_lookupObjIds($a_server->getServerId(), $a_econtent_id);
646 $this->logger->info(__METHOD__ . ': Received obj_ids ' . print_r($obj_ids, true));
647
648 foreach ($obj_ids as $obj_id) {
649 $references = ilObject::_getAllReferences($obj_id);
650 foreach ($references as $ref_id) {
651 if ($tmp_obj = ilObjectFactory::getInstanceByRefId($ref_id, false)) {
652 $this->logger->info(__METHOD__ . ': Deleting obsolete remote course: ' . $tmp_obj->getTitle());
653 $this->logger->info(print_r($this->tree->getNodeData($ref_id), true));
654 $this->logger->info(print_r($this->tree->getNodeData($tmp_obj->getId()), true));
655 $this->tree->deleteTree($this->tree->getNodeData($ref_id));
656 $tmp_obj->delete();
657 }
658 unset($tmp_obj);
659 }
660 }
661 return true;
662 }
static getInstanceByRefId(int $ref_id, bool $stop_on_error=true)
get an instance of an Ilias object by reference id
static _getAllReferences(int $id)
get all reference ids for object ID

References $ref_id, ilObject\_getAllReferences(), ilECSImportManager\getInstance(), ilObjectFactory\getInstanceByRefId(), ilECSSetting\getServerId(), and ILIAS\Repository\logger().

+ Here is the call graph for this function:

◆ handleUpdate()

ilRemoteObjectBase::handleUpdate ( ilECSSetting  $a_server,
int  $a_econtent_id,
array  $a_mids 
)

Handle update event.

called by ilTaskScheduler

Definition at line 522 of file class.ilRemoteObjectBase.php.

522 : bool
523 {
524 // get content details
526 $a_server->getServerId(),
527 $a_econtent_id,
528 $this->getECSObjectType()
529 );
530 if (!$details instanceof ilECSEContentDetails) {
531 $this->handleDelete($a_server, $a_econtent_id);
532 $this->logger->info(__METHOD__ . ': Handling delete of deprecated remote object. DONE');
533 return true;
534 }
535
536 $this->logger->info(__METHOD__ . ': Receivers are ' . print_r($details->getReceivers(), true));
537 $this->logger->info(__METHOD__ . ': Senders are ' . print_r($details->getSenders(), true));
538
539 // check owner (sender mid)
540 if (!ilECSParticipantSettings::getInstanceByServerId($a_server->getServerId())->isImportAllowed($details->getSenders())) {
541 $this->logger->info('Ignoring disabled participant. MID: ' . $details->getOwner());
542 return true;
543 }
544
545 // new mids
546 foreach (array_intersect($a_mids, $details->getReceivers()) as $mid) {
547 try {
548 $connector = new ilECSConnector($a_server);
549 $res = $connector->getResource($this->getECSObjectType(), $a_econtent_id);
550 if ($res->getHTTPCode() === ilECSConnector::HTTP_CODE_NOT_FOUND) {
551 continue;
552 }
553 $json = $res->getResult();
554 $this->logger->info(__METHOD__ . ': Received json: ' . print_r($json, true));
555 if (!is_object($json)) {
556 // try as array (workaround for invalid content)
557 $json = $json[0];
558 if (!is_object($json)) {
559 throw new ilECSConnectorException('invalid json');
560 }
561 }
562 } catch (ilECSConnectorException $exc) {
563 $this->logger->error(__METHOD__ . ': Error parsing result. ' . $exc->getMessage());
564 $this->logger->logStack(ilLogLevel::ERROR);
565 return false;
566 }
567
568 // Update existing
569
570 // Check receiver mid
571 if ($obj_id = ilECSImportManager::getInstance()->_isImported($a_server->getServerId(), (string) $a_econtent_id, $mid)) {
572 $this->logger->info(__METHOD__ . ': Handling update for existing object');
573 $remote = ilObjectFactory::getInstanceByObjId($obj_id, false);
574 if (!$remote instanceof self) {
575 $this->logger->info(__METHOD__ . ': Cannot instantiate remote object. Got object type ' . $remote->getType());
576 continue;
577 }
578 $remote->updateFromECSContent($a_server, $json, $details->getMySender());
579 } else {
580 $this->logger->info(__METHOD__ . ': my sender ' . $details->getMySender() . 'vs mid' . $mid);
581
582 $this->logger->info(__METHOD__ . ': Handling create for non existing object');
583 $this->createFromECSEContent($a_server, $json, $details->getMySender());
584
585 // update import status
586 $this->logger->info(__METHOD__ . ': Updating import status');
587 $import = new ilECSImport($a_server->getServerId(), $this->getId());
588 $import->setEContentId((string) $a_econtent_id);
589 // Store receiver mid
590 $import->setMID($mid);
591 $import->save();
592
593 $this->logger->info(__METHOD__ . ': Sending notification');
594 $this->sendNewContentNotification($a_server->getServerId());
595 }
596 }
597
598 $this->logger->info(__METHOD__ . ': done');
599 return true;
600 }
Presentation of ecs content details (http://...campusconnect/courselinks/id/details)
static getInstanceFromServer(int $a_server_id, int $a_econtent_id, string $a_resource_type)
Get data from server.
static getInstanceByServerId(int $a_server_id)
Get instance by server id.
static getInstanceByObjId(?int $obj_id, bool $stop_on_error=true)
get an instance of an Ilias object by object id
createFromECSEContent(ilECSSetting $a_server, object $a_ecs_content, int $a_owner)
create remote object from ECSContent object
handleDelete(ilECSSetting $a_server, int $a_econtent_id, $a_mid=0)
Handle delete event.
sendNewContentNotification($a_server_id)
send notifications about new EContent

References $res, ilLogLevel\ERROR, ilECSImportManager\getInstance(), ilObjectFactory\getInstanceByObjId(), ilECSParticipantSettings\getInstanceByServerId(), ilECSEContentDetails\getInstanceFromServer(), ilECSSetting\getServerId(), ilECSConnector\HTTP_CODE_NOT_FOUND, and ILIAS\Repository\logger().

+ Here is the call graph for this function:

◆ importMetadataFromJson()

ilRemoteObjectBase::importMetadataFromJson ( object  $a_json,
ilECSSetting  $a_server,
array  $a_definition,
int  $a_mapping_mode 
)
protected

Add advanced metadata to json (export)

Definition at line 413 of file class.ilRemoteObjectBase.php.

413 : void
414 {
415 $this->logger->info("importing metadata from json: " . print_r($a_json, true));
416
418 $values_records = ilAdvancedMDValues::getInstancesForObjectId($this->getId(), $this->getType());
419 foreach ($values_records as $values_record) {
420 // this correctly binds group and definitions
421 $values_record->read();
422 }
423
424 $do_save = false;
425
426 foreach ($a_definition as $id => $type) {
427 if (is_array($type)) {
428 [$type, $target] = $type;
429 } else {
430 $target = $id;
431 }
432
433 $timePlace = null;
434 if ($field = $mappings->getMappingByECSName($a_mapping_mode, $id)) {
435 // find element in records
436 $adv_md_def = null;
437 foreach ($values_records as $values_record) {
438 $adv_md_defs = $values_record->getDefinitions();
439 if (isset($adv_md_defs[$field])) {
440 $adv_md_def = $adv_md_defs[$field];
441 break;
442 }
443 }
444 if (!$adv_md_def) {
445 continue;
446 }
447 if (property_exists($a_json, $target)){
448 $raw_value = $a_json->{$target};
449 } else {
450 $raw_value = '';
451 }
452
454 if (!is_object($timePlace)) {
455 $timePlace = new ilECSTimePlace();
456 if (is_object($raw_value)) {
457 $timePlace->loadFromJSON($raw_value);
458 }
459 }
460 $raw_value = $timePlace;
461 }
462 if (is_string($raw_value) && $adv_md_def->importFromECS((string) $type, (string) $raw_value, $id)) {
463 $do_save = true;
464 }
465 }
466 }
467
468 if ($do_save) {
469 foreach ($values_records as $values_record) {
470 $additional = array();
471 foreach ($values_record->getADTGroup()->getElements() as $element_id => $element) {
472 if (!$element->isNull()) {
473 $additional[$element_id] = array("disabled" => array("integer", 1));
474 }
475 }
476 $values_record->write($additional);
477 }
478 }
479 }
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
static getInstancesForObjectId(int $a_obj_id, ?string $a_obj_type=null, string $a_sub_type="-", int $a_sub_id=0)
static getInstanceByServerId(int $a_server_id)
Get singleton instance.
Representation of ECS EContent Time Place.
const TYPE_TIMEPLACE
string $type

References $id, ilObject\$type, ilObject\getId(), ilECSDataMappingSettings\getInstanceByServerId(), ilAdvancedMDValues\getInstancesForObjectId(), ilECSSetting\getServerId(), ilObject\getType(), ILIAS\Repository\logger(), and ilECSUtils\TYPE_TIMEPLACE.

Referenced by ilObjRemoteCourse\updateCustomFromECSContent().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isLocalObject()

ilRemoteObjectBase::isLocalObject ( )

Is remote object from same installation?

Returns
boolean

Definition at line 496 of file class.ilRemoteObjectBase.php.

496 : bool
497 {
498 if (ilECSExportManager::getInstance()->_isRemote(
499 ilECSImportManager::getInstance()->lookupServerId($this->getId()),
500 (int) ilECSImportManager::getInstance()->_lookupEContentId($this->getId())
501 )) {
502 return false;
503 }
504 return true;
505 }
static getInstance()
Get the singelton instance of this ilECSExportManager.

References ILIAS\Survey\Mode\getId(), ilECSExportManager\getInstance(), and ilECSImportManager\getInstance().

+ Here is the call graph for this function:

◆ sendNewContentNotification()

ilRemoteObjectBase::sendNewContentNotification (   $a_server_id)
protected

send notifications about new EContent

Definition at line 605 of file class.ilRemoteObjectBase.php.

605 : void
606 {
607 $settings = ilECSSetting::getInstanceByServerId($a_server_id);
608 if (!count($settings->getEContentRecipients())) {
609 return;
610 }
611
613 $lang->loadLanguageModule('ecs');
614
615 $mail = new ilMail(self::MAIL_SENDER);
616 $message = $lang->txt('ecs_' . $this->getType() . '_created_body_a') . "\n\n";
617 $message .= $lang->txt('title') . ': ' . $this->getTitle() . "\n";
618 if ($desc = ($this->getDescription() !== '')) {
619 $message .= $lang->txt('desc') . ': ' . $desc . "\n";
620 }
621
622 $href = ilLink::_getStaticLink($this->getRefId(), $this->getType(), true);
623 $message .= $lang->txt("perma_link") . ': ' . $href . "\n\n";
625
626 $mail->enqueue(
627 $settings->getEContentRecipientsAsString(),
628 '',
629 '',
630 $lang->txt('ecs_new_econtent_subject'),
631 $message,
632 array()
633 );
634 }
static _getLanguage(string $a_lang_key='')
Get language object.
static _getAutoGeneratedMessageString(?ilLanguage $lang=null)
string $desc
$lang
Definition: xapiexit.php:25
$message
Definition: xapiexit.php:31

References $lang, $message, ilMail\_getAutoGeneratedMessageString(), ilLanguageFactory\_getLanguage(), ilLink\_getStaticLink(), ilECSSetting\getInstanceByServerId(), and ILIAS\GlobalScreen\Scope\Footer\Factory\getTitle().

+ Here is the call graph for this function:

◆ setLocalInformation()

ilRemoteObjectBase::setLocalInformation ( string  $a_info)

set local information

Parameters
string$a_info

Definition at line 141 of file class.ilRemoteObjectBase.php.

141 : void
142 {
143 $this->local_information = $a_info;
144 }

Referenced by doRead().

+ Here is the caller graph for this function:

◆ setMID()

ilRemoteObjectBase::setMID ( int  $a_mid)

set mid

Parameters
int$a_midmid

Definition at line 159 of file class.ilRemoteObjectBase.php.

159 : void
160 {
161 $this->mid = $a_mid;
162 }

Referenced by doRead(), and updateFromECSContent().

+ Here is the caller graph for this function:

◆ setOrganization()

ilRemoteObjectBase::setOrganization ( string  $a_organization)

set organization

Definition at line 115 of file class.ilRemoteObjectBase.php.

115 : void
116 {
117 $this->organization = $a_organization;
118 }

Referenced by doRead(), and updateFromECSContent().

+ Here is the caller graph for this function:

◆ setRemoteLink()

ilRemoteObjectBase::setRemoteLink ( string  $a_link)

set remote link

Parameters
string$a_linklink to original object

Definition at line 169 of file class.ilRemoteObjectBase.php.

169 : void
170 {
171 $this->remote_link = $a_link;
172 }

Referenced by doRead(), and updateFromECSContent().

+ Here is the caller graph for this function:

◆ updateCustomFromECSContent()

ilRemoteObjectBase::updateCustomFromECSContent ( ilECSSetting  $a_server,
  $ecs_content 
)
protected

update remote object settings from ecs content

Parameters
ilECSSetting$a_server
object$a_ecs_contentobject with object settings

Reimplemented in ilObjRemoteCourse, ilObjRemoteGroup, ilObjRemoteLearningModule, ilObjRemoteTest, ilObjRemoteWiki, ilObjRemoteFile, and ilObjRemoteGlossary.

Definition at line 487 of file class.ilRemoteObjectBase.php.

487 : void
488 {
489 }

Referenced by updateFromECSContent().

+ Here is the caller graph for this function:

◆ updateFromECSContent()

ilRemoteObjectBase::updateFromECSContent ( ilECSSetting  $a_server,
object  $a_ecs_content,
int  $a_owner 
)

update remote object settings from ecs content

Parameters
object$a_ecs_contentobject with object settings

Definition at line 368 of file class.ilRemoteObjectBase.php.

368 : void
369 {
370 $this->logger->info('updateFromECSContent: ' . print_r($a_ecs_content, true));
371
372 // Get organisation for owner (ObjectListGUI performance)
373 $organisation = null;
374 if ($a_owner) {
375 $organisation = ilECSCommunityReader::getInstanceByServerId($a_server->getServerId())
376 ->getParticipantNameByMid($a_owner);
377 $this->logger->info('found organisation: ' . $organisation);
378 }
379
380 $this->setMID($a_owner); // obsolete?
381 $this->setOrganization($organisation);
382 $this->setTitle($a_ecs_content->title);
383 $this->setDescription($a_ecs_content->abstract);
384 $this->setRemoteLink($a_ecs_content->url);
385
386 $this->logger->info('updateCustomFromECSContent');
387 $this->updateCustomFromECSContent($a_server, $a_ecs_content);
388
389 // we are updating late so custom values can be set
390
391 $this->logger->info('ilObject->update()');
392 $this->update();
393
394 $matchable_content = ilECSUtils::getMatchableContent(
395 $this->getECSObjectType(),
396 $a_server->getServerId(),
397 $a_ecs_content,
398 $a_owner
399 );
400
401 // rule-based category mapping
403 $this->getId(),
404 $a_server->getServerId(),
405 $matchable_content
406 );
407 }
static handleUpdate(int $a_obj_id, int $a_server_id, array $a_matchable_content)
Handle update of ecs content and create references.
static getInstanceByServerId(int $a_server_id)
Get instance by server id.
setTitle(string $title)
setDescription(string $description)
updateCustomFromECSContent(ilECSSetting $a_server, $ecs_content)
update remote object settings from ecs content

References getECSObjectType(), ilObject\getId(), ilECSCommunityReader\getInstanceByServerId(), ilECSUtils\getMatchableContent(), ilECSSetting\getServerId(), ilECSCategoryMapping\handleUpdate(), ILIAS\Repository\logger(), ilObject\setDescription(), setMID(), setOrganization(), setRemoteLink(), ilObject\setTitle(), ilObject2\update(), and updateCustomFromECSContent().

Referenced by createFromECSEContent().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Field Documentation

◆ $auth_hash

string ilRemoteObjectBase::$auth_hash = ''
protected

Definition at line 32 of file class.ilRemoteObjectBase.php.

Referenced by createAuthResource(), and getFullRemoteLink().

◆ $local_information

string ilRemoteObjectBase::$local_information = null
protected

Definition at line 28 of file class.ilRemoteObjectBase.php.

◆ $logger

ilLogger ilRemoteObjectBase::$logger
private

Definition at line 36 of file class.ilRemoteObjectBase.php.

◆ $mid

int ilRemoteObjectBase::$mid = null
protected

Definition at line 31 of file class.ilRemoteObjectBase.php.

Referenced by getMID().

◆ $organization

string ilRemoteObjectBase::$organization = null
protected

Definition at line 30 of file class.ilRemoteObjectBase.php.

◆ $realm_plain

string ilRemoteObjectBase::$realm_plain = ''
protected

Definition at line 34 of file class.ilRemoteObjectBase.php.

Referenced by getRealmPlain().

◆ $remote_link

string ilRemoteObjectBase::$remote_link = null
protected

Definition at line 29 of file class.ilRemoteObjectBase.php.

Referenced by getRemoteLink().

◆ MAIL_SENDER

const ilRemoteObjectBase::MAIL_SENDER = 6

Definition at line 38 of file class.ilRemoteObjectBase.php.

◆ OBJECT_OWNER

const ilRemoteObjectBase::OBJECT_OWNER = 6

Definition at line 39 of file class.ilRemoteObjectBase.php.


The documentation for this class was generated from the following file: