ILIAS  Release_5_0_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
ilRemoteObjectBase Class Reference

Remote object app base class. More...

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

Public Member Functions

 __construct ($a_id=0, $a_call_by_reference=true)
 Constructor.
 beforeCreate ()
 getRealmPlain ()
 Get realm plain.
 setOrganization ($a_organization)
 set organization
 getOrganization ()
 get organization
 getLocalInformation ()
 get local information
 setLocalInformation ($a_info)
 set local information
 getMID ()
 get mid
 setMID ($a_mid)
 set mid
 setRemoteLink ($a_link)
 set remote link
 getRemoteLink ()
 get remote link
 getFullRemoteLink ()
 get full remote link Including ecs generated hash and auth mode
 createAuthResource ($a_plain_realm)
 create authentication resource on ecs server
 doCreate ()
 Create remote object.
 doUpdate ()
 Update remote object.
 doDelete ()
 Delete remote object.
 doRead ()
 read settings
 createFromECSEContent (ilECSSetting $a_server, $a_ecs_content, $a_owner)
 create remote object from ECSContent object
 updateFromECSContent (ilECSSetting $a_server, $a_ecs_content, $a_owner)
 update remote object settings from ecs content
 isLocalObject ()
 Is remote object from same installation?
 handleCreate (ilECSSetting $a_server, $a_econtent_id, array $a_mids)
 Handle creation.
 handleUpdate (ilECSSetting $a_server, $a_econtent_id, array $a_mids)
 Handle update event.
 handleDelete (ilECSSetting $a_server, $a_econtent_id, $a_mid=0)
 Handle delete event.
 getAllResourceIds (ilECSSetting $a_server, $a_sender_only=false)
 Get all available resources.
- Public Member Functions inherited from ilObject2
 withReferences ()
 determines wehter objects are referenced or not (got ref ids or not)
 read ($a_force_db=false)
 Read data from db.
 getId ()
 get object id public
 setId ($a_id)
 set object id public
 setRefId ($a_id)
 set reference id public
 getRefId ()
 get reference id public
 getType ()
 get object type public
 setType ($a_type)
 set object type public
 getPresentationTitle ()
 get presentation title Normally same as title Overwritten for sessions
 getTitle ()
 get object title public
 getUntranslatedTitle ()
 get untranslated object title public
 setTitle ($a_title)
 set object title
 getDescription ()
 get object description
 setDescription ($a_desc)
 set object description
 getLongDescription ()
 get object long description (stored in object_description)
 getImportId ()
 get import id
 setImportId ($a_import_id)
 set import id
 getOwner ()
 get object owner
 getOwnerName ()
 _lookupOwnerName ($a_owner_id)
 lookup owner name for owner id
 setOwner ($a_owner)
 set object owner
 getCreateDate ()
 get create date public
 getLastUpdateDate ()
 get last update date public
 setObjDataRecord ($a_record)
 set object_data record (note: this method should only be called from the ilObjectFactory class)
 create ($a_clone_mode=false)
 update ()
 update object in db
 MDUpdateListener ($a_element)
 Meta data update listener.
 createMetaData ()
 create meta data entry
 updateMetaData ()
 update meta data entry
 deleteMetaData ()
 delete meta data entry
 updateOwner ()
 update owner of object in db
 _getIdForImportId ($a_import_id)
 get current object id for import id (static)
 _lookupOwner ($a_id)
 lookup object owner
 _lookupLastUpdate ($a_id, $a_as_string=false)
 lookup last update
 _getLastUpdateOfObjects ($a_objs)
 Get last update for a set of media objects.
 _setDeletedDate ($a_ref_id)
 only called in ilTree::saveSubTree
 _resetDeletedDate ($a_ref_id)
 only called in ilObjectGUI::insertSavedNodes
 _lookupDeletedDate ($a_ref_id)
 only called in ilObjectGUI::insertSavedNodes
 _writeTitle ($a_obj_id, $a_title)
 write title to db (static)
 _writeDescription ($a_obj_id, $a_desc)
 write description to db (static)
 _writeImportId ($a_obj_id, $a_import_id)
 write import id to db (static)
 _isInTrash ($a_ref_id)
 checks wether object is in trash
 _hasUntrashedReference ($a_obj_id)
 checks wether an object has at least one reference that is not in trash
 _getObjectsDataForType ($a_type, $a_omit_trash=false)
 get all objects of a certain type
 putInTree ($a_parent_ref)
 maybe this method should be in tree object!?
 setPermissions ($a_parent_ref)
 set permissions of object
 createReference ()
 creates reference for object
 countReferences ()
 count references of object
 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!!
 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 If you want to setup default local roles you MUST overwrite this method in derived object classes (see ilObjForum for an example) public
 notify ($a_event, $a_ref_id, $a_parent_non_rbac_id, $a_node_id, $a_params=0)
 notifys an object about an event occured Based on the event passed, each object may decide how it reacts.
 setRegisterMode ($a_bool)
 isUserRegistered ($a_user_id=0)
 requireRegistration ()
 appendCopyInfo ($a_target_id, $a_copy_id)
 Prepend Copy info if object with same name exists in that container.
 cloneMetaData ($target_obj)
 Copy meta data.
 cloneObject ($a_target_id, $a_copy_id=null, $a_omit_tree=false)
 Clone object permissions, put in tree ...
 cloneDependencies ($a_target_id, $a_copy_id)
 Clone object dependencies.
- Public Member Functions inherited from ilObject
 ilObject ($a_id=0, $a_reference=true)
 Constructor public.
 getDiskUsage ()
 Gets the disk usage of the object in bytes.
 create ()
 create
 setParentRolePermissions ($a_parent_ref)
 Initialize the permissions of parent roles (local roles of categories, global roles...) This method is overwritten in e.g courses, groups for building permission intersections with non_member templates.
 applyDidacticTemplate ($a_tpl_id)
 Apply template.
 getXMLZip ()
 getHTMLDirectory ()
 _lookupCreationDate ($a_id)
 Lookup creation date.

Static Public Member Functions

static getInstanceByEventType ($a_type)
 Get instance by ilECSEvent(QueueReader) type.
static _lookupOrganization ($a_obj_id, $a_table)
 lookup organization
static _lookupMID ($a_obj_id, $a_table)
 lookup owner mid
- Static Public Member Functions inherited from ilObject2
static _lookupObjIdByImportId ($a_import_id)
static _getAllReferences ($a_id)
 get all reference ids of object
static _lookupTitle ($a_id)
 lookup object title
static _getIdsForTitle ($title, $type= '', $partialmatch=false)
static _lookupDescription ($a_id)
 lookup object description
static _lookupObjId ($a_id)
static _lookupType ($a_id, $a_reference=false)
 lookup object type
static _lookupObjectId ($a_ref_id)
 lookup object id
static _exists ($a_id, $a_reference=false)
static _getObjectsByType ($a_obj_type="", $a_owner="")
 Get objects by type.
static _prepareCloneSelection ($a_ref_ids, $new_type)
static _getIcon ($a_obj_id="", $a_size="big", $a_type="", $a_offline=false)
 Get icon for repository item.
- Static Public Member Functions inherited from ilObject
static setDeletedDates ($a_ref_ids)
 Set deleted date type $ilDB.
static _exists ($a_id, $a_reference=false, $a_type=null)
 checks if an object exists in object_data
static _prepareCloneSelection ($a_ref_ids, $new_type, $show_path=true)
 Prepare copy wizard object selection.
static collectDeletionDependencies (&$deps, $a_ref_id, $a_obj_id, $a_type, $a_depth=0)
 Collect deletion dependencies.
static getDeletionDependencies ($a_obj_id)
 Get deletion dependencies.
static getLongDescriptions (array $a_obj_ids)
 Get long description data.
static getAllOwnedRepositoryObjects ($a_user_id)
 Get all ids of objects user owns.
static hasAutoRating ($a_type, $a_ref_id)
 Check if auto rating is active for parent group/course.

Data Fields

const MAIL_SENDER = 6
const OBJECT_OWNER = 6

Protected Member Functions

 getTableName ()
 Get db table name.
 getECSObjectType ()
 Get ECS resource identifier, e.g.
 doCreateCustomFields (array &$a_fields)
 Add custom fields to db insert.
 doUpdateCustomFields (array &$a_fields)
 Add custom fields to db update.
 doReadCustomFields ($a_row)
 Read custom fields from db row.
 importMetadataFromJson ($a_json, ilECSSetting $a_server, array $a_definition, $a_mapping_mode)
 Add advanced metadata to json (export)
 updateCustomFromECSContent (ilECSSetting $a_server, $ecs_content)
 update remote object settings from ecs content
 sendNewContentNotification ($a_server_id)
 send notifications about new EContent
- Protected Member Functions inherited from ilObject2
 initType ()
 beforeUpdate ()
 doMDUpdateListener ($a_element)
 beforeMDUpdateListener ($a_element)
 doCreateMetaData ()
 beforeCreateMetaData ()
 doUpdateMetaData ()
 beforeUpdateMetaData ()
 beforeDelete ()
 doCloneObject ($new_obj, $a_target_id, $a_copy_id=null)
 beforeCloneObject ()

Protected Attributes

 $local_information
 $remote_link
 $organization
 $mid
 $auth_hash = ''
 $realm_plain = ''

Detailed Description

Remote object app base class.

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

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

Constructor & Destructor Documentation

ilRemoteObjectBase::__construct (   $a_id = 0,
  $a_call_by_reference = true 
)

Constructor.

Parameters
int$a_id
bool$a_call_by_reference
Returns
ilObject

Reimplemented from ilObject2.

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

References $ilDB.

{
global $ilDB;
parent::__construct($a_id,$a_call_by_reference);
$this->db = $ilDB;
}

Member Function Documentation

static ilRemoteObjectBase::_lookupMID (   $a_obj_id,
  $a_table 
)
static

lookup owner mid

Parameters
int$a_obj_idobj_id
string$a_table
Returns
int

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

References $ilDB, $query, $res, $row, and DB_FETCHMODE_OBJECT.

{
global $ilDB;
$query = "SELECT mid FROM ".$a_table.
" WHERE obj_id = ".$ilDB->quote($a_obj_id ,'integer')." ";
$res = $ilDB->query($query);
while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
{
return $row->mid;
}
return 0;
}
static ilRemoteObjectBase::_lookupOrganization (   $a_obj_id,
  $a_table 
)
static

lookup organization

Parameters
int$a_obj_id
string$a_table
Returns
string

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

References $ilDB, $query, $res, $row, and DB_FETCHMODE_OBJECT.

{
global $ilDB;
$query = "SELECT organization FROM ".$a_table.
" WHERE obj_id = ".$ilDB->quote($a_obj_id ,'integer')." ";
$res = $ilDB->query($query);
while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
{
return $row->organization;
}
return '';
}
ilRemoteObjectBase::beforeCreate ( )

Reimplemented from ilObject2.

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

References ilObject2\setOwner().

{
$this->setOwner(self::OBJECT_OWNER);
}

+ Here is the call graph for this function:

ilRemoteObjectBase::createAuthResource (   $a_plain_realm)

create authentication resource on ecs server

Returns
bool
Exceptions
ilECSConnectorException

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

References $auth, $auth_hash, $GLOBALS, $ilLog, ilObject2\getId(), ilECSSetting\getInstanceByServerId(), getMID(), getRemoteLink(), and ilECSImport\lookupServerId().

Referenced by getFullRemoteLink().

{
global $ilLog;
include_once './Services/WebServices/ECS/classes/class.ilECSAuth.php';
include_once './Services/WebServices/ECS/classes/class.ilECSConnector.php';
include_once './Services/WebServices/ECS/classes/class.ilECSImport.php';
include_once './Services/WebServices/ECS/classes/class.ilECSSetting.php';
try
{
$server_id = ilECSImport::lookupServerId($this->getId());
$import_info = new ilECSImport($server_id, $this->getId());
$connector = new ilECSConnector(ilECSSetting::getInstanceByServerId($server_id));
$auth = new ilECSAuth();
$auth->setPid($import_info->getMID());
// URL is deprecated
$auth->setUrl($this->getRemoteLink());
$realm = sha1($a_plain_realm);
$GLOBALS['ilLog']->write(__METHOD__.': Using realm '.$a_plain_realm);
$auth->setRealm($realm);
$GLOBALS['ilLog']->write(__METHOD__.' Mid is '.$this->getMID());
$this->auth_hash = $connector->addAuth(@json_encode($auth),$this->getMID());
}
{
$ilLog->write(__METHOD__.': Caught error from ECS Auth resource: '.$exc->getMessage());
return false;
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilRemoteObjectBase::createFromECSEContent ( ilECSSetting  $a_server,
  $a_ecs_content,
  $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 432 of file class.ilRemoteObjectBase.php.

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

Referenced by handleUpdate().

{
$this->create();
// won't work for personal workspace
$this->createReference();
$this->setPermissions($a_server->getImportId());
include_once './Services/WebServices/ECS/classes/class.ilECSUtils.php';
$matchable_content = ilECSUtils::getMatchableContent($this->getECSObjectType(),
$a_server->getServerId(), $a_ecs_content, $a_owner);
include_once './Services/WebServices/ECS/classes/class.ilECSCategoryMapping.php';
$matchable_content));
$this->updateFromECSContent($a_server, $a_ecs_content, $a_owner);
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilRemoteObjectBase::doCreate ( )

Create remote object.

Reimplemented from ilObject2.

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

References $ilDB, doCreateCustomFields(), ilObject2\getId(), and getTableName().

{
global $ilDB;
$fields = array(
"obj_id" => array("integer", $this->getId()),
"local_information" => array("text", ""),
"remote_link" => array("text", ""),
"mid" => array("integer", 0),
"organization" => array("text", "")
);
$this->doCreateCustomFields($fields);
$ilDB->insert($this->getTableName(), $fields);
}

+ Here is the call graph for this function:

ilRemoteObjectBase::doCreateCustomFields ( array &  $a_fields)
protected

Add custom fields to db insert.

Parameters
array$a_fields

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

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

Referenced by doCreate().

{
}

+ Here is the caller graph for this function:

ilRemoteObjectBase::doDelete ( )

Delete remote object.

Reimplemented from ilObject2.

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

References $ilDB, $query, ilECSImport\_deleteByObjId(), and ilObject2\getId().

{
global $ilDB;
//put here your module specific stuff
include_once('./Services/WebServices/ECS/classes/class.ilECSImport.php');
$query = "DELETE FROM ".$this->getTableName().
" WHERE obj_id = ".$this->db->quote($this->getId() ,'integer')." ";
$ilDB->manipulate($query);
}

+ Here is the call graph for this function:

ilRemoteObjectBase::doRead ( )

read settings

Reimplemented from ilObject2.

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

References $query, $res, $row, DB_FETCHMODE_OBJECT, doReadCustomFields(), ilObject2\getId(), setLocalInformation(), setMID(), setOrganization(), and setRemoteLink().

{
$query = "SELECT * FROM ".$this->getTableName().
" WHERE obj_id = ".$this->db->quote($this->getId() ,'integer')." ";
$res = $this->db->query($query);
while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
{
$this->setLocalInformation($row->local_information);
$this->setRemoteLink($row->remote_link);
$this->setMID($row->mid);
$this->setOrganization($row->organization);
}
}

+ Here is the call graph for this function:

ilRemoteObjectBase::doReadCustomFields (   $a_row)
protected

Read custom fields from db row.

Parameters
object$a_row

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

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

Referenced by doRead().

{
}

+ Here is the caller graph for this function:

ilRemoteObjectBase::doUpdate ( )

Update remote object.

Reimplemented from ilObject2.

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

References $ilDB, doUpdateCustomFields(), ilObject2\getId(), getLocalInformation(), getMID(), getOrganization(), getRemoteLink(), and getTableName().

{
global $ilDB;
$fields = array(
"local_information" => array("text", $this->getLocalInformation()),
"remote_link" => array("text", $this->getRemoteLink()),
"mid" => array("integer", $this->getMID()),
"organization" => array("text", $this->getOrganization())
);
$this->doUpdateCustomFields($fields);
$where = array("obj_id" => array("integer", $this->getId()));
$ilDB->update($this->getTableName(), $fields, $where);
}

+ Here is the call graph for this function:

ilRemoteObjectBase::doUpdateCustomFields ( array &  $a_fields)
protected

Add custom fields to db update.

Parameters
array$a_fields

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

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

Referenced by doUpdate().

{
}

+ Here is the caller graph for this function:

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

Get all available resources.

Parameters
ilECSSetting$a_server
bool$a_sender_only
Returns
array

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

References $ilLog, and getECSObjectType().

{
global $ilLog;
try
{
include_once './Services/WebServices/ECS/classes/class.ilECSConnector.php';
$connector = new ilECSConnector($a_server);
$connector->addHeader('X-EcsQueryStrings', $a_sender_only ? 'sender=true' : 'all=true'); // #11301
$list = $connector->getResourceList($this->getECSObjectType());
if($list instanceof ilECSResult)
{
return $list->getResult()->getLinkIds();
}
}
{
$ilLog->write(__METHOD__ . ': Error getting resource list. '.$exc->getMessage());
}
}

+ Here is the call graph for this function:

ilRemoteObjectBase::getECSObjectType ( )
abstractprotected

Get ECS resource identifier, e.g.

"/campusconnect/courselinks"

Returns
string

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

Referenced by createFromECSEContent(), getAllResourceIds(), handleUpdate(), and updateFromECSContent().

+ Here is the caller graph for this function:

ilRemoteObjectBase::getFullRemoteLink ( )

get full remote link Including ecs generated hash and auth mode

Returns
string
Exceptions
ilECSConnectorException

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

References $auth_hash, $GLOBALS, $ilUser, $server, createAuthResource(), ilObject2\getId(), ilECSSetting\getInstanceByServerId(), getMID(), getRemoteLink(), and ilECSImport\lookupServerId().

{
global $ilUser;
include_once './Services/WebServices/ECS/classes/class.ilECSImport.php';
$server_id = ilECSImport::lookupServerId($this->getId());
include_once('./Services/WebServices/ECS/classes/class.ilECSUser.php');
$user = new ilECSUser($ilUser);
$ecs_user_data = $user->toGET();
$GLOBALS['ilLog']->write(__METHOD__.': Using ecs user data '.$ecs_user_data);
// check token mechanism enabled
include_once './Services/WebServices/ECS/classes/class.ilECSParticipantSetting.php';
$part = new ilECSParticipantSetting($server_id,$this->getMID());
if(!$part->isTokenEnabled())
{
return $this->getRemoteLink();
}
$auth_hash = $this->createAuthResource($this->getRemoteLink().$user->toREALM());
$ecs_url_hash = 'ecs_hash_url='.urlencode($server->getServerURI().'/sys/auths/'.$auth_hash);
if(strpos($this->getRemoteLink(), '?'))
{
$link = $this->getRemoteLink().'&ecs_hash='.$auth_hash.$ecs_user_data.'&'.$ecs_url_hash;
}
else
{
$link = $this->getRemoteLink().'?ecs_hash='.$auth_hash.$ecs_user_data.'&'.$ecs_url_hash;
}
$GLOBALS['ilLog']->write(__METHOD__.': ECS full link: '. $link);
return $link;
}

+ Here is the call graph for this function:

static ilRemoteObjectBase::getInstanceByEventType (   $a_type)
static

Get instance by ilECSEvent(QueueReader) type.

Parameters
int$a_type
Returns
ilRemoteObjectBase

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

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().

{
switch($a_type)
{
include_once 'Modules/RemoteCourse/classes/class.ilObjRemoteCourse.php';
return new ilObjRemoteCourse();
include_once 'Modules/RemoteCategory/classes/class.ilObjRemoteCategory.php';
return new ilObjRemoteCategory();
include_once 'Modules/RemoteFile/classes/class.ilObjRemoteFile.php';
return new ilObjRemoteFile();
include_once 'Modules/RemoteGlossary/classes/class.ilObjRemoteGlossary.php';
return new ilObjRemoteGlossary();
include_once 'Modules/RemoteGroup/classes/class.ilObjRemoteGroup.php';
return new ilObjRemoteGroup();
include_once 'Modules/RemoteLearningModule/classes/class.ilObjRemoteLearningModule.php';
include_once 'Modules/RemoteWiki/classes/class.ilObjRemoteWiki.php';
return new ilObjRemoteWiki();
include_once 'Modules/RemoteTest/classes/class.ilObjRemoteTest.php';
return new ilObjRemoteTest();
}
}

+ Here is the caller graph for this function:

ilRemoteObjectBase::getLocalInformation ( )

get local information

Returns
string

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

References $local_information.

Referenced by doUpdate().

+ Here is the caller graph for this function:

ilRemoteObjectBase::getMID ( )

get mid

Returns
int

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

References $mid.

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

{
return $this->mid;
}

+ Here is the caller graph for this function:

ilRemoteObjectBase::getOrganization ( )

get organization

Returns
string

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

References $organization.

Referenced by doUpdate().

{
}

+ Here is the caller graph for this function:

ilRemoteObjectBase::getRealmPlain ( )

Get realm plain.

Returns
type

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

References $realm_plain.

{
}
ilRemoteObjectBase::getRemoteLink ( )

get remote link

Returns
string

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

References $remote_link.

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

{
}

+ Here is the caller graph for this function:

ilRemoteObjectBase::getTableName ( )
abstractprotected

Get db table name.

Returns
string

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

Referenced by doCreate(), and doUpdate().

+ Here is the caller graph for this function:

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

Handle creation.

called by ilTaskScheduler

Parameters
ilECSSetting$a_server
type$a_econtent_id
array$a_mids

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

References handleUpdate().

{
return $this->handleUpdate($a_server, $a_econtent_id, $a_mids);
}

+ Here is the call graph for this function:

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

Handle delete event.

called by ilTaskScheduler

Parameters
ilECSSetting$a_server
int$a_econtent_id
int$a_mid
Returns
boolean

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

References $ilLog, ilObject\$ref_id, ilObject2\_getAllReferences(), ilECSImport\_lookupObjIds(), ilObjectFactory\getInstanceByRefId(), and ilECSSetting\getServerId().

Referenced by handleUpdate().

{
global $tree, $ilLog;
include_once('./Services/WebServices/ECS/classes/class.ilECSImport.php');
// there is no information about the original mid anymore.
// Therefor delete any remote objects with given econtent id
$obj_ids = ilECSImport::_lookupObjIds($a_server->getServerId(),$a_econtent_id);
$ilLog->write(__METHOD__.': Received obj_ids '.print_r($obj_ids,true));
foreach($obj_ids as $obj_id)
{
$references = ilObject::_getAllReferences($obj_id);
foreach($references as $ref_id)
{
if($tmp_obj = ilObjectFactory::getInstanceByRefId($ref_id,false))
{
$ilLog->write(__METHOD__.': Deleting obsolete remote course: '.$tmp_obj->getTitle());
$tmp_obj->delete();
$tree->deleteTree($tree->getNodeData($ref_id));
}
unset($tmp_obj);
}
}
return true;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Handle update event.

called by ilTaskScheduler

Parameters
ilECSSetting$a_server
int$a_econtent_id
array$a_mids
Returns
boolean

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

References $GLOBALS, $ilLog, $mid, $res, ilECSImport\_isImported(), createFromECSEContent(), getECSObjectType(), ilObject2\getId(), ilECSEContentDetails\getInstance(), ilObjectFactory\getInstanceByObjId(), ilECSParticipantSettings\getInstanceByServerId(), ilECSSetting\getServerId(), handleDelete(), ilECSConnector\HTTP_CODE_NOT_FOUND, sendNewContentNotification(), and ilECSImport\setEContentId().

Referenced by handleCreate(), and updateFromECSContent().

{
global $ilLog;
// get content details
include_once('./Services/WebServices/ECS/classes/class.ilECSEContentDetails.php');
$a_econtent_id, $this->getECSObjectType());
if(!$details instanceof ilECSEContentDetails)
{
$this->handleDelete($a_server, $a_econtent_id);
$ilLog->write(__METHOD__.': Handling delete of deprecated remote object. DONE');
return;
}
$ilLog->write(__METHOD__.': Receivers are '. print_r($details->getReceivers(),true));
$ilLog->write(__METHOD__.': Senders are '. print_r($details->getSenders(),true));
// check owner (sender mid)
include_once('./Services/WebServices/ECS/classes/class.ilECSParticipantSettings.php');
if(!ilECSParticipantSettings::getInstanceByServerId($a_server->getServerId())->isImportAllowed($details->getSenders()))
{
$ilLog->write('Ignoring disabled participant. MID: '.$details->getOwner());
return true;
}
// new mids
include_once 'Services/WebServices/ECS/classes/class.ilECSImport.php';
include_once 'Services/WebServices/ECS/classes/class.ilECSConnector.php';
foreach(array_intersect($a_mids,$details->getReceivers()) as $mid)
{
try
{
$connector = new ilECSConnector($a_server);
$res = $connector->getResource($this->getECSObjectType(), $a_econtent_id);
{
continue;
}
$json = $res->getResult();
$GLOBALS['ilLog']->write(__METHOD__.': Received json: '.print_r($json,true));
if(!is_object($json))
{
// try as array (workaround for invalid content)
$json = $json[0];
if(!is_object($json))
{
throw new ilECSConnectorException('invalid json');
}
}
}
{
$ilLog->write(__METHOD__ . ': Error parsing result. '.$exc->getMessage());
$ilLog->logStack();
return false;
}
// Update existing
// Check receiver mid
if($obj_id = ilECSImport::_isImported($a_server->getServerId(),$a_econtent_id,$mid))
{
$ilLog->write(__METHOD__.': Handling update for existing object');
$remote = ilObjectFactory::getInstanceByObjId($obj_id,false);
if(!$remote instanceof ilRemoteObjectBase)
{
$ilLog->write(__METHOD__.': Cannot instantiate remote object. Got object type '.$remote->getType());
continue;
}
$remote->updateFromECSContent($a_server,$json,$details->getMySender());
}
else
{
$GLOBALS['ilLog']->write(__METHOD__.': my sender '. $details->getMySender().'vs mid'. $mid);
$ilLog->write(__METHOD__.': Handling create for non existing object');
$this->createFromECSEContent($a_server,$json,$details->getMySender());
// update import status
$ilLog->write(__METHOD__.': Updating import status');
include_once('./Services/WebServices/ECS/classes/class.ilECSImport.php');
$import = new ilECSImport($a_server->getServerId(),$this->getId());
$import->setEContentId($a_econtent_id);
// Store receiver mid
$import->setMID($mid);
$import->save();
$ilLog->write(__METHOD__.': Sending notification');
$this->sendNewContentNotification($a_server->getServerId());
}
}
$ilLog->write(__METHOD__.': done');
return true;
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Add advanced metadata to json (export)

Parameters
object$a_json
ilECSSetting$a_server
array$a_definition
int$a_mapping_mode

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

References $additional, ilObject\$id, $ilLog, ilObject\$type, ilObject2\getId(), ilECSDataMappingSettings\getInstanceByServerId(), ilAdvancedMDValues\getInstancesForObjectId(), ilECSSetting\getServerId(), ilObject2\getType(), and ilECSUtils\TYPE_TIMEPLACE.

Referenced by ilObjRemoteCourse\updateCustomFromECSContent().

{
global $ilLog;
$ilLog->write("importing metadata from json: ".print_r($a_json, true));
include_once('./Services/WebServices/ECS/classes/class.ilECSDataMappingSettings.php');
include_once('./Services/AdvancedMetaData/classes/class.ilAdvancedMDValues.php');
include_once('./Services/AdvancedMetaData/classes/class.ilAdvancedMDFieldDefinition.php');
$values_records = ilAdvancedMDValues::getInstancesForObjectId($this->getId(), $this->getType());
foreach($values_records as $values_record)
{
// this correctly binds group and definitions
$values_record->read();
}
$do_save = false;
foreach($a_definition as $id => $type)
{
if(is_array($type))
{
$target = $type[1];
$type = $type[0];
}
else
{
$target = $id;
}
$timePlace = null;
if($field = $mappings->getMappingByECSName($a_mapping_mode, $id))
{
// find element in records
$adv_md_def = null;
foreach($values_records as $values_record)
{
$adv_md_defs = $values_record->getDefinitions();
if(isset($adv_md_defs[$field]))
{
$adv_md_def = $adv_md_defs[$field];
break;
}
}
if(!$adv_md_def)
{
continue;
}
$raw_value = $a_json->$target;
{
if(!is_object($timePlace))
{
include_once('./Services/WebServices/ECS/classes/class.ilECSTimePlace.php');
if(is_object($raw_value))
{
$timePlace = new ilECSTimePlace();
$timePlace->loadFromJSON($raw_value);
}
else
{
$timePlace = new ilECSTimePlace();
}
}
$raw_value = $timePlace;
}
if($adv_md_def->importFromECS($type, $raw_value, $id))
{
$do_save = true;
}
}
}
if($do_save)
{
foreach($values_records as $values_record)
{
$additional = array();
foreach($values_record->getADTGroup()->getElements() as $element_id => $element)
{
if(!$element->isNull())
{
$additional[$element_id] = array("disabled"=>array("integer", 1));
}
}
$values_record->write($additional);
}
}
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilRemoteObjectBase::isLocalObject ( )

Is remote object from same installation?

Returns
boolean

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

References ilECSExport\_isRemote(), ilECSImport\_lookupEContentId(), ilObject2\getId(), and ilECSImport\lookupServerId().

{
include_once('./Services/WebServices/ECS/classes/class.ilECSExport.php');
include_once('./Services/WebServices/ECS/classes/class.ilECSImport.php');
{
return false;
}
return true;
}

+ Here is the call graph for this function:

ilRemoteObjectBase::sendNewContentNotification (   $a_server_id)
protected

send notifications about new EContent

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

References ilObject\$desc, $lang, ilMail\_getAutoGeneratedMessageString(), ilLanguageFactory\_getLanguage(), ilLink\_getStaticLink(), ilObject2\getDescription(), ilECSSetting\getInstanceByServerId(), ilObject2\getRefId(), ilObject2\getTitle(), and ilObject2\getType().

Referenced by handleUpdate().

{
include_once('Services/WebServices/ECS/classes/class.ilECSSetting.php');
$settings = ilECSSetting::getInstanceByServerId($a_server_id);
if(!count($rcps = $settings->getEContentRecipients()))
{
return;
}
include_once('./Services/Mail/classes/class.ilMail.php');
include_once('./Services/Language/classes/class.ilLanguageFactory.php');
$lang->loadLanguageModule('ecs');
$mail = new ilMail(self::MAIL_SENDER);
$message = $lang->txt('ecs_'.$this->getType().'_created_body_a')."\n\n";
$message .= $lang->txt('title').': '.$this->getTitle()."\n";
if(strlen($desc = $this->getDescription()))
{
$message .= $lang->txt('desc').': '.$desc."\n";
}
include_once('./Services/Link/classes/class.ilLink.php');
$href = ilLink::_getStaticLink($this->getRefId(),$this->getType(),true);
$message .= $lang->txt("perma_link").': '.$href."\n\n";
$mail->sendMail($settings->getEContentRecipientsAsString(),
'','',
$lang->txt('ecs_new_econtent_subject'),
$message,array(),array('normal'));
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

ilRemoteObjectBase::setLocalInformation (   $a_info)

set local information

Parameters
string$a_info

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

Referenced by doRead().

{
$this->local_information = $a_info;
}

+ Here is the caller graph for this function:

ilRemoteObjectBase::setMID (   $a_mid)

set mid

Parameters
int$a_midmid

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

Referenced by doRead(), and updateFromECSContent().

{
$this->mid = $a_mid;
}

+ Here is the caller graph for this function:

ilRemoteObjectBase::setOrganization (   $a_organization)

set organization

Parameters
string$a_organization

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

Referenced by doRead(), and updateFromECSContent().

{
$this->organization = $a_organization;
}

+ Here is the caller graph for this function:

ilRemoteObjectBase::setRemoteLink (   $a_link)

set remote link

Parameters
string$a_linklink to original object

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

Referenced by doRead(), and updateFromECSContent().

{
$this->remote_link = $a_link;
}

+ Here is the caller graph for this function:

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 ilObjRemoteGroup, ilObjRemoteCourse, ilObjRemoteTest, ilObjRemoteGlossary, ilObjRemoteLearningModule, ilObjRemoteWiki, and ilObjRemoteFile.

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

Referenced by updateFromECSContent().

{
}

+ Here is the caller graph for this function:

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

update remote object settings from ecs content

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

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

References $ilLog, getECSObjectType(), ilObject2\getId(), ilECSUtils\getMatchableContent(), ilECSSetting\getServerId(), handleUpdate(), ilECSUtils\lookupParticipantName(), ilObject2\setDescription(), setMID(), setOrganization(), setRemoteLink(), ilObject2\setTitle(), ilObject2\update(), and updateCustomFromECSContent().

Referenced by createFromECSEContent().

{
global $ilLog;
$ilLog->write('updateFromECSContent: '.print_r($a_ecs_content, true));
// Get organisation for owner (ObjectListGUI performance)
$organisation = null;
if($a_owner)
{
include_once './Services/WebServices/ECS/classes/class.ilECSUtils.php';
$organisation = ilECSUtils::lookupParticipantName($a_owner, $a_server->getServerId());
$ilLog->write('found organisation: '.$organisation);
}
$this->setMID($a_owner); // obsolete?
$this->setOrganization($organisation);
$this->setTitle($a_ecs_content->title);
$this->setDescription($a_ecs_content->abstract);
$this->setRemoteLink($a_ecs_content->url);
$ilLog->write('updateCustomFromECSContent');
$this->updateCustomFromECSContent($a_server, $a_ecs_content);
// we are updating late so custom values can be set
$ilLog->write('ilObject->update()');
$this->update();
include_once './Services/WebServices/ECS/classes/class.ilECSUtils.php';
$matchable_content = ilECSUtils::getMatchableContent($this->getECSObjectType(),
$a_server->getServerId(), $a_ecs_content, $a_owner);
// rule-based category mapping
include_once './Services/WebServices/ECS/classes/class.ilECSCategoryMapping.php';
$matchable_content);
}

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Field Documentation

ilRemoteObjectBase::$auth_hash = ''
protected

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

Referenced by createAuthResource(), and getFullRemoteLink().

ilRemoteObjectBase::$local_information
protected

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

Referenced by getLocalInformation().

ilRemoteObjectBase::$mid
protected

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

Referenced by getMID(), and handleUpdate().

ilRemoteObjectBase::$organization
protected

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

Referenced by getOrganization().

ilRemoteObjectBase::$realm_plain = ''
protected

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

Referenced by getRealmPlain().

ilRemoteObjectBase::$remote_link
protected

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

Referenced by getRemoteLink().

const ilRemoteObjectBase::MAIL_SENDER = 6

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

const ilRemoteObjectBase::OBJECT_OWNER = 6

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


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