ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f870
ilObjSCORM2004LearningModule Class Reference

Class ilObjSCORM2004LearningModule. More...

+ Inheritance diagram for ilObjSCORM2004LearningModule:
+ Collaboration diagram for ilObjSCORM2004LearningModule:

Public Member Functions

 ilObjSCORM2004LearningModule ($a_id=0, $a_call_by_reference=true)
 Constructor @access public. More...
 
 setImportSequencing ($a_val)
 Set import sequencing. More...
 
 getImportSequencing ()
 Get import sequencing. More...
 
 validate ($directory)
 Validate all XML-Files in a SCOM-Directory. More...
 
 readObject ()
 read manifest file @access public More...
 
 fixReload ()
 
 convert_1_2_to_2004 ($manifest)
 
 deleteTrackingDataOfUsers ($a_users)
 get all tracked items of current user More...
 
 getTrackedItems ()
 get all tracked items of current user More...
 
 getTrackingDataAgg ($a_user_id, $raw=false)
 
 getAttemptsForUser ($a_user_id)
 get number of atttempts for a certain user and package More...
 
 getModuleVersionForUser ($a_user_id)
 get module version that tracking data for a user was recorded on More...
 
 importSuccess ($a_file)
 
 _ISODurationToCentisec ($str)
 convert ISO 8601 Timeperiods to centiseconds ta More...
 
 getCourseCompletionForUser ($a_user)
 
 _getTrackingItems ($a_obj_id)
 get all tracking items of scorm object More...
 
 createScorm2004Tree ()
 Create Scorm 2004 Tree used by Editor. More...
 
 getTree ()
 
 getSequencingSettings ()
 
 updateSequencingSettings ()
 
 executeDragDrop ($source_id, $target_id, $first_child, $as_subitem=false, $movecopy="move")
 Execute Drag Drop Action. More...
 
 getExportFiles ()
 
 exportScorm ($a_inst, $a_target_dir, $ver, &$expLog)
 Export (authoring) scorm package. More...
 
 exportHTML4PDF ($a_inst, $a_target_dir, &$expLog)
 
 exportPDF ($a_inst, $a_target_dir, &$expLog)
 
 exportHTMLOne ($a_inst, $a_target_dir, &$expLog)
 
 exportHTML ($a_inst, $a_target_dir, &$expLog, $a_one_file="")
 Export SCORM package to HTML. More...
 
 exportXMLMetaData (&$a_xml_writer)
 export content objects meta data to xml (see ilias_co.dtd) More...
 
 exportXMLStructureObjects (&$a_xml_writer, $a_inst, &$expLog)
 export structure objects to xml (see ilias_co.dtd) More...
 
 exportXMLScoObjects ($a_inst, $a_target_dir, $ver, &$expLog)
 export page objects to xml (see ilias_co.dtd) More...
 
 exportHTMLScoObjects ($a_inst, $a_target_dir, &$expLog, $a_one_file="")
 
 prepareHTMLExporter ($a_target_dir)
 Prepare HTML exporter. More...
 
 getPublicExportFile ($a_type)
 get public export file More...
 
 exportFileItems ($a_target_dir, &$expLog)
 export files of file itmes More...
 
 setPublicExportFile ($a_type, $a_file)
 
 copyAuthoredContent ($a_new_obj)
 Copy authored content (everything done with the editor. More...
 
- Public Member Functions inherited from ilObjSCORMLearningModule
 ilObjSCORMLearningModule ($a_id=0, $a_call_by_reference=true)
 Constructor @access public. More...
 
 validate ($directory)
 Validate all XML-Files in a SCOM-Directory. More...
 
 getValidationSummary ()
 
 getTrackingItems ()
 
 _getTrackingItems ($a_obj_id)
 get all tracking items of scorm object @access static More...
 
 readObject ()
 read manifest file @access public More...
 
 setLearningProgressSettingsAtUpload ()
 set settings for learning progress determination per default at upload More...
 
 getTrackedItems ()
 get all tracked items of current user More...
 
 getTrackedUsers ($a_search)
 
 getAttemptsForUsers ()
 Get attempts for all users @global ilDB $ilDB. More...
 
 getAttemptsForUser ($a_user_id)
 get number of atttempts for a certain user and package More...
 
 getModuleVersionForUsers ()
 Get module version for users. More...
 
 getModuleVersionForUser ($a_user_id)
 get module version that tracking data for a user was recorded on More...
 
 getTrackingDataPerUser ($a_sco_id, $a_user_id)
 Get tracking data per user @global ilDB $ilDB. More...
 
 getTrackingDataAgg ($a_user_id)
 
 getTrackingDataAggSco ($a_sco_id)
 
 exportSelected ($a_all, $a_users=array())
 Export selected user tracking data @global ilDB $ilDB @global ilObjUser $ilUser. More...
 
 importTrackingData ($a_file)
 
 importSuccess ($a_file)
 
 importSuccessForSahsUser ($user_id, $last_access, $status, $attempts=null, $percentage_completed=null, $sco_total_time_sec=null)
 
 decreaseAttemptsForUser ($a_user_id)
 Decrease attempts for user @global ilDB $ilDB. More...
 
 get_user_id ($a_login)
 
 getUserIdEmail ($a_mail)
 assumes that only one account exists for a mailadress More...
 
 sendExportFile ($a_header, $a_content)
 send export file to browser More...
 
 getAllScoIds ()
 
 getStatusForUser ($a_user, $a_allScoIds, $a_numerical=false)
 
 getCourseCompletionForUser ($a_user)
 
 _getScoresForUser ($a_item_id, $a_user_id)
 
 getLastVisited ($user_id)
 
 deleteTrackingDataOfUsers ($a_users)
 
- Public Member Functions inherited from ilObjSAHSLearningModule
 ilObjSAHSLearningModule ($a_id=0, $a_call_by_reference=true)
 Constructor @access public. More...
 
 create ($upload=false)
 create file based lm More...
 
 read ()
 read object More...
 
 _lookupOnline ($a_id)
 check wether scorm module is online More...
 
 getAffectiveLocalization ($a_id)
 Get affective localization. More...
 
 _lookupSubType ($a_obj_id)
 lookup subtype id (scorm, aicc, hacp) More...
 
 setEditable ($a_editable)
 Set Editable. More...
 
 getEditable ()
 Get Editable. More...
 
 setTries ($a_tries)
 Set default tries for questions. More...
 
 getTries ()
 Get Tries. More...
 
 setLocalization ($a_val)
 Set localization. More...
 
 getLocalization ()
 Get localization. More...
 
 getDiskUsage ()
 Gets the disk usage of the object in bytes. More...
 
 createDataDirectory ()
 creates data directory for package files ("./data/lm_data/lm_<id>") More...
 
 getDataDirectory ($mode="filesystem")
 get data directory of lm More...
 
 getAPIAdapterName ()
 get api adapter name More...
 
 setAPIAdapterName ($a_api)
 set api adapter name More...
 
 getAPIFunctionsPrefix ()
 get api functions prefix More...
 
 setAPIFunctionsPrefix ($a_prefix)
 set api functions prefix More...
 
 getCreditMode ()
 get credit mode More...
 
 setCreditMode ($a_credit_mode)
 set credit mode More...
 
 setDefaultLessonMode ($a_lesson_mode)
 set default lesson mode More...
 
 getDefaultLessonMode ()
 get default lesson mode More...
 
 getStyleSheetId ()
 get ID of assigned style sheet object More...
 
 setStyleSheetId ($a_style_id)
 set ID of assigned style sheet object More...
 
 setAutoReview ($a_auto_review)
 set auto review as true/false for SCORM 1.2, HACP, SAHS, AICC More...
 
 getAutoReview ()
 get auto review as true/false for SCORM 1.2, HACP, SAHS, AICC More...
 
 setAutoReviewChar ($a_auto_review)
 set auto review as Char for SCORM 2004 More...
 
 getAutoReviewChar ()
 get auto review as Char for SCORM 2004 More...
 
 getMaxAttempt ()
 get max attempt More...
 
 setMaxAttempt ($a_max_attempt)
 set max attempt More...
 
 getModuleVersion ()
 get max attempt More...
 
 getAssignedGlossary ()
 get assigned glossary More...
 
 setAssignedGlossary ($a_assigned_glossary)
 set assigned glossary More...
 
 setModuleVersion ($a_module_version)
 set max attempt More...
 
 getSession ()
 get session setting More...
 
 setSession ($a_session)
 set session setting More...
 
 getNoMenu ()
 disable menu More...
 
 setNoMenu ($a_no_menu)
 disable menu More...
 
 getHideNavig ()
 hide navigation tree More...
 
 setHideNavig ($a_hide_navig)
 disable menu More...
 
 getCacheDeactivated ()
 BrowserCacheDisabled for SCORM 2004 / ENABLE_JS_DEBUG. More...
 
 getSessionDeactivated ()
 sessionDisabled for SCORM 2004 More...
 
 getDebugActivated ()
 debugActivated More...
 
 getIe_compatibility ()
 set compatibility mode for Internet Exlorer manually More...
 
 setIe_compatibility ($a_ie_compatibility)
 
 getIe_force_render ()
 force Internet Explorer to render again after some Milliseconds - useful for learning Modules with a lot of iframesor frames and IE >=10 More...
 
 setIe_force_render ($a_ie_force_render)
 
 getFourth_Edition ()
 SCORM 2004 4th edition features. More...
 
 setFourth_edition ($a_fourth_edition)
 
 getSequencing ()
 sequencing More...
 
 setSequencing ($a_sequencing)
 
 getInteractions ()
 interactions More...
 
 setInteractions ($a_interactions)
 
 getObjectives ()
 objectives More...
 
 setObjectives ($a_objectives)
 
 getComments ()
 comments More...
 
 setComments ($a_comments)
 
 getTime_from_lms ()
 time_from_lms More...
 
 setTime_from_lms ($a_time_from_lms)
 
 getCheck_values ()
 check_values More...
 
 setCheck_values ($a_check_values)
 
 getOfflineMode ()
 offlineMode More...
 
 setOfflineMode ($a_offline_mode)
 
 getDebug ()
 debug More...
 
 setDebug ($a_debug)
 debug More...
 
 getDebugPw ()
 debug pw More...
 
 setDebugPw ($a_debug_pw)
 debug pw More...
 
 setAutoContinue ($a_auto_continue)
 get auto continue More...
 
 getAutoContinue ()
 set auto continue More...
 
 getAuto_last_visited ()
 auto_last_visited More...
 
 setAuto_last_visited ($a_auto_last_visited)
 
 setSequencingExpertMode ($a_val)
 Set sequencing expert mode. More...
 
 getSequencingExpertMode ()
 Get sequencing expert mode. More...
 
 setAutoSuspend ($a_auto_suspend)
 get auto continue More...
 
 getAutoSuspend ()
 set auto continue More...
 
 getOpenMode ()
 open_mode 0: in Tab/new Window like in previous versions 1: in iFrame with width=100% and heigth=100% 2: in iFrame with specified width and height 3: 4: 5: in new Window without specified width and height 6: in new Window with specified width and height More...
 
 setOpenMode ($a_open_mode)
 
 getWidth ()
 width More...
 
 setWidth ($a_width)
 
 getHeight ()
 height More...
 
 setHeight ($a_height)
 
 update ()
 update meta data only More...
 
 setOnline ($a_online)
 get online More...
 
 getOnline ()
 set online More...
 
 setSubType ($a_sub_type)
 get sub type More...
 
 getSubType ()
 set sub type More...
 
 delete ()
 delete SCORM learning module and all related data More...
 
 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 happend, each object may decide how it reacts. More...
 
 getPointsInPercent ()
 Returns the points in percent for the learning module This is called by the certificate generator if [SCORM_POINTS] is inserted. More...
 
 getMaxPoints ()
 Returns score.max for the learning module, refered to the last sco where score.max is set. More...
 
 populateByDirectoy ($a_dir, $a_filename="")
 Populate by directory. More...
 
 cloneObject ($a_target_id, $a_copy_id=0)
 Clone scorm object. More...
 
 zipLmForOfflineMode ()
 
- Public Member Functions inherited from ilObject
 ilObject ($a_id=0, $a_reference=true)
 Constructor @access public. More...
 
 withReferences ()
 determines wehter objects are referenced or not (got ref ids or not) More...
 
 read ($a_force_db=false)
 read object data from db into object More...
 
 getId ()
 get object id @access public More...
 
 setId ($a_id)
 set object id @access public More...
 
 setRefId ($a_id)
 set reference id @access public More...
 
 getRefId ()
 get reference id @access public More...
 
 getType ()
 get object type @access public More...
 
 setType ($a_type)
 set object type @access public More...
 
 getPresentationTitle ()
 get presentation title Normally same as title Overwritten for sessions More...
 
 getTitle ()
 get object title @access public More...
 
 getUntranslatedTitle ()
 get untranslated object title @access public More...
 
 setTitle ($a_title)
 set object title More...
 
 getDescription ()
 get object description More...
 
 setDescription ($a_desc)
 set object description More...
 
 getLongDescription ()
 get object long description (stored in object_description) More...
 
 getImportId ()
 get import id More...
 
 setImportId ($a_import_id)
 set import id More...
 
 getOwner ()
 get object owner More...
 
 getOwnerName ()
 
 _lookupOwnerName ($a_owner_id)
 lookup owner name for owner id More...
 
 setOwner ($a_owner)
 set object owner More...
 
 getCreateDate ()
 get create date @access public More...
 
 getLastUpdateDate ()
 get last update date @access public More...
 
 getDiskUsage ()
 
 setObjDataRecord ($a_record)
 set object_data record (note: this method should only be called from the ilObjectFactory class) More...
 
 create ()
 create More...
 
 update ()
 update object in db More...
 
 MDUpdateListener ($a_element)
 Meta data update listener. More...
 
 createMetaData ()
 create meta data entry More...
 
 updateMetaData ()
 update meta data entry More...
 
 deleteMetaData ()
 delete meta data entry More...
 
 updateOwner ()
 update owner of object in db More...
 
 _getIdForImportId ($a_import_id)
 get current object id for import id (static) More...
 
 _lookupOwner ($a_id)
 lookup object owner More...
 
 _lookupLastUpdate ($a_id, $a_as_string=false)
 lookup last update More...
 
 _getLastUpdateOfObjects ($a_objs)
 Get last update for a set of media objects. More...
 
 _setDeletedDate ($a_ref_id)
 only called in ilTree::saveSubTree More...
 
 _resetDeletedDate ($a_ref_id)
 only called in ilObjectGUI::insertSavedNodes More...
 
 _lookupDeletedDate ($a_ref_id)
 only called in ilObjectGUI::insertSavedNodes More...
 
 _writeTitle ($a_obj_id, $a_title)
 write title to db (static) More...
 
 _writeDescription ($a_obj_id, $a_desc)
 write description to db (static) More...
 
 _writeImportId ($a_obj_id, $a_import_id)
 write import id to db (static) More...
 
 _isInTrash ($a_ref_id)
 checks wether object is in trash More...
 
 _hasUntrashedReference ($a_obj_id)
 checks wether an object has at least one reference that is not in trash More...
 
 _getObjectsDataForType ($a_type, $a_omit_trash=false)
 get all objects of a certain type More...
 
 putInTree ($a_parent_ref)
 maybe this method should be in tree object!? More...
 
 setPermissions ($a_parent_ref)
 set permissions of object More...
 
 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. More...
 
 createReference ()
 creates reference for object More...
 
 countReferences ()
 count references of object More...
 
 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 If you want to setup default local roles you MUST overwrite this method in derived object classes (see ilObjForum for an example) @access public More...
 
 applyDidacticTemplate ($a_tpl_id)
 Apply template. More...
 
 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. More...
 
 setRegisterMode ($a_bool)
 
 isUserRegistered ($a_user_id=0)
 
 requireRegistration ()
 
 getXMLZip ()
 
 getHTMLDirectory ()
 
 cloneObject ($a_target_id, $a_copy_id=0, $a_omit_tree=false)
 Clone object permissions, put in tree ... More...
 
 appendCopyInfo ($a_target_id, $a_copy_id)
 Prepend Copy info if object with same name exists in that container. More...
 
 cloneDependencies ($a_target_id, $a_copy_id)
 Clone object dependencies. More...
 
 cloneMetaData ($target_obj)
 Copy meta data. More...
 
 _lookupCreationDate ($a_id)
 Lookup creation date. More...
 

Static Public Member Functions

static _lookupLastAccess ($a_obj_id, $a_usr_id)
 Return the last access timestamp for a given user. More...
 
static _getCourseCompletionForUser ($a_id, $a_user)
 Get the completion of a SCORM module for a given user. More...
 
static _getUniqueScaledScoreForUser ($a_id, $a_user)
 Get the Unique Scaled Score of a course Conditions: Only one SCO may set cmi.score.scaled. More...
 
static _getStatus ($a_obj_id, $a_user_id)
 
static _getSatisfied ($a_obj_id, $a_user_id)
 
static _getMeasure ($a_obj_id, $a_user_id)
 
static _lookupItemTitle ($a_node_id)
 
static _getMaxScoreForUser ($a_id, $a_user)
 Returns score.max for the learning module, refered to the last sco where score.max is set. More...
 
static _getScores2004ForUser ($a_cp_node_id, $a_user)
 
- Static Public Member Functions inherited from ilObjSCORMLearningModule
static _lookupLastAccess ($a_obj_id, $a_usr_id)
 Return the last access timestamp for a given user. More...
 
static _getAllScoIds ($a_id)
 Get an array of id's for all Sco's in the module. More...
 
static _getStatusForUser ($a_id, $a_user, $a_allScoIds, $a_numerical=false)
 Get the status of a SCORM module for a given user. More...
 
static _getCourseCompletionForUser ($a_id, $a_user)
 Get the completion of a SCORM module for a given user. More...
 
static _removeTrackingDataForUser ($user_id)
 
- Static Public Member Functions inherited from ilObjSAHSLearningModule
static _getTries ($a_id)
 
static getScormModulesForGlossary ($a_glo_id)
 Get SCORM modules that assign a certain glossary. More...
 
static lookupAssignedGlossary ($a_slm_id)
 Get SCORM modules that assign a certain glossary. More...
 
- Static Public Member Functions inherited from ilObject
static _lookupObjIdByImportId ($a_import_id)
 
static _getAllReferences ($a_id)
 get all reference ids of object More...
 
static _lookupTitle ($a_id)
 lookup object title More...
 
static _getIdsForTitle ($title, $type='', $partialmatch=false)
 
static _lookupDescription ($a_id)
 lookup object description More...
 
static _lookupObjId ($a_id)
 
static setDeletedDates ($a_ref_ids)
 Set deleted date @global type $ilDB. More...
 
static _lookupType ($a_id, $a_reference=false)
 lookup object type More...
 
static _lookupObjectId ($a_ref_id)
 lookup object id More...
 
static _exists ($a_id, $a_reference=false, $a_type=null)
 checks if an object exists in object_data@access public More...
 
static _getObjectsByType ($a_obj_type="", $a_owner="")
 Get objects by type. More...
 
static _prepareCloneSelection ($a_ref_ids, $new_type, $show_path=true)
 Prepare copy wizard object selection. More...
 
static _getIcon ($a_obj_id="", $a_size="big", $a_type="", $a_offline=false)
 Get icon for repository item. More...
 
static collectDeletionDependencies (&$deps, $a_ref_id, $a_obj_id, $a_type, $a_depth=0)
 Collect deletion dependencies. More...
 
static getDeletionDependencies ($a_obj_id)
 Get deletion dependencies. More...
 
static getLongDescriptions (array $a_obj_ids)
 Get long description data. More...
 
static getAllOwnedRepositoryObjects ($a_user_id)
 Get all ids of objects user owns. More...
 
static hasAutoRating ($a_type, $a_ref_id)
 Check if auto rating is active for parent group/course. More...
 

Data Fields

 $validator
 
const CONVERT_XSL = './Modules/Scorm2004/templates/xsl/op/scorm12To2004.xsl'
 
const WRAPPER_HTML = './Modules/Scorm2004/scripts/converter/GenericRunTimeWrapper1.0_aadlc/GenericRunTimeWrapper.htm'
 
const WRAPPER_JS = './Modules/Scorm2004/scripts/converter/GenericRunTimeWrapper1.0_aadlc/SCOPlayerWrapper.js'
 
- Data Fields inherited from ilObjSCORMLearningModule
 $validator
 
- Data Fields inherited from ilObjSAHSLearningModule
 $validator
 
- Data Fields inherited from ilObject
const TITLE_LENGTH = 255
 max length of object title More...
 
const DESC_LENGTH = 128
 
 $ilias
 
 $lng
 
 $id
 
 $ref_id
 
 $type
 
 $title
 
 $untranslatedTitle
 
 $desc
 
 $long_desc
 
 $owner
 
 $create_date
 
 $last_update
 
 $import_id
 
 $register = false
 
 $referenced
 
 $objectList
 
 $max_title
 
 $max_desc
 
 $add_dots
 
 $obj_data_record
 object_data record More...
 

Detailed Description

Member Function Documentation

◆ _getCourseCompletionForUser()

static ilObjSCORM2004LearningModule::_getCourseCompletionForUser (   $a_id,
  $a_user 
)
static

Get the completion of a SCORM module for a given user.

Parameters
int$a_idObject id
int$a_userUser id
Returns
boolean Completion status

Reimplemented from ilObjSCORMLearningModule.

Definition at line 760 of file class.ilObjSCORM2004LearningModule.php.

761 {
762 global $ilDB, $ilUser;
763 $scos = array();
764 //get all SCO's of the object
765
766 $val_set = $ilDB->queryF('
767 SELECT cp_node.cp_node_id FROM cp_node,cp_resource,cp_item
768 WHERE cp_item.cp_node_id = cp_node.cp_node_id
769 AND cp_item.resourceid = cp_resource.id
770 AND scormtype = %s
771 AND nodename = %s
772 AND cp_node.slm_id = %s',
773 array('text','text','integer'), array('sco' ,'item',$a_id));
774 while ($val_rec = $ilDB->fetchAssoc($val_set))
775 {
776 array_push($scos,$val_rec['cp_node_id']);
777 }
778
779 $scos_c = $scos;
780 //copy SCO_array
781 //check if all SCO's are completed
782 for ($i=0;$i<count($scos);$i++)
783 {
784
785 $val_set = $ilDB->queryF('
786 SELECT * FROM cmi_node
787 WHERE (user_id= %s
788 AND cp_node_id= %s
789 AND (completion_status = %s OR success_status = %s))',
790 array('integer','integer','text','text'),
791 array($a_user,$scos[$i],'completed','passed'));
792
793 if ($ilDB->numRows($val_set) > 0)
794 {
795 //delete from array
796 $key = array_search($scos[$i], $scos_c);
797 unset ($scos_c[$key]);
798 }
799
800 }
801 //check for completion
802 if (count($scos_c) == 0) {
803 $completion = true;
804 } else {
805 $completion = false;
806 }
807 return $completion;
808 }
global $ilDB
global $ilUser
Definition: imgupload.php:15

References $ilDB, and $ilUser.

Referenced by ilObjSAHSLearningModuleAccess\_lookupUserCertificate(), and ilSCORMVerificationTableGUI\getItems().

+ Here is the caller graph for this function:

◆ _getMaxScoreForUser()

static ilObjSCORM2004LearningModule::_getMaxScoreForUser (   $a_id,
  $a_user 
)
static

Returns score.max for the learning module, refered to the last sco where score.max is set.

Parameters
integer$a_id
integer$a_user
Returns
float

Definition at line 1833 of file class.ilObjSCORM2004LearningModule.php.

1834 {
1835 global $ilDB;
1836
1837 $scos = array();
1838
1839 $result = $ilDB->query(
1840 'SELECT cp_node.cp_node_id '
1841 .'FROM cp_node, cp_resource, cp_item '
1842 .'WHERE cp_item.cp_node_id = cp_node.cp_node_id '
1843 .'AND cp_item.resourceId = cp_resource.id '
1844 .'AND scormType = '.$ilDB->quote('sco', 'text').' '
1845 .'AND nodeName = '.$ilDB->quote('item', 'text').' '
1846 .'AND cp_node.slm_id = '.$ilDB->quote($a_id, 'integer').' '
1847 .'GROUP BY cp_node.cp_node_id'
1848 );
1849
1850 while($row = $ilDB->fetchAssoc($result))
1851 {
1852 array_push($scos, $row['cp_node_id']);
1853 }
1854
1855 $set = 0; //numbers of SCO that set cmi.score.scaled
1856 $max = null;
1857 for($i = 0; $i < count($scos); $i++)
1858 {
1859 $res = $ilDB->queryF(
1860 'SELECT c_max FROM cmi_node WHERE (user_id = %s AND cp_node_id = %s)',
1861 array('integer', 'integer'),
1862 array($a_user, $scos[$i])
1863 );
1864
1865 if($ilDB->numRows($res) > 0)
1866 {
1867 $row = $ilDB->fetchAssoc($res);
1868 if($row['c_max'] != null)
1869 {
1870 $set++;
1871 $max = $row['c_max'];
1872 }
1873 }
1874 }
1875 $retVal = ($set == 1) ? $max : null;
1876
1877 return $retVal;
1878 }
$result

References $ilDB, $res, $result, and $row.

Referenced by ilObjSAHSLearningModule\getMaxPoints().

+ Here is the caller graph for this function:

◆ _getMeasure()

static ilObjSCORM2004LearningModule::_getMeasure (   $a_obj_id,
  $a_user_id 
)
static

Definition at line 944 of file class.ilObjSCORM2004LearningModule.php.

945 {
946 global $ilDB;
947
948 $status_set = $ilDB->queryF('
949 SELECT * FROM cmi_gobjective
950 WHERE scope_id = %s
951 AND objective_id = %s
952 AND user_id = %s',
953 array('integer','text','integer'),
954 array($a_obj_id,'course_overall_status',$a_user_id)
955 );
956
957 if ($status_rec = $ilDB->fetchAssoc($status_set))
958 {
959 return $status_rec["measure"];
960 }
961
962 return false;
963 }

References $ilDB.

◆ _getSatisfied()

static ilObjSCORM2004LearningModule::_getSatisfied (   $a_obj_id,
  $a_user_id 
)
static

Definition at line 922 of file class.ilObjSCORM2004LearningModule.php.

923 {
924 global $ilDB;
925
926
927 $status_set = $ilDB->queryF('
928 SELECT * FROM cmi_gobjective
929 WHERE scope_id = %s
930 AND objective_id = %s
931 AND user_id = %s',
932 array('integer','text','integer'),
933 array($a_obj_id,'course_overall_status',$a_user_id)
934 );
935
936 if ($status_rec = $ilDB->fetchAssoc($status_set))
937 {
938 return $status_rec["satisfied"];
939 }
940
941 return false;
942 }

References $ilDB.

◆ _getScores2004ForUser()

static ilObjSCORM2004LearningModule::_getScores2004ForUser (   $a_cp_node_id,
  $a_user 
)
static

Definition at line 1880 of file class.ilObjSCORM2004LearningModule.php.

1880 {
1881 global $ilDB;
1882 $retAr = array("raw" => null, "max" => null, "scaled" => null);
1883 $val_set = $ilDB->queryF("SELECT c_raw, c_max, scaled FROM cmi_node WHERE (user_id = %s AND cp_node_id = %s)",
1884 array('integer', 'integer'),
1885 array($a_user, $a_cp_node_id)
1886 );
1887 if ($val_set->numRows()>0)
1888 {
1889 $val_rec = $ilDB->fetchAssoc($val_set);
1890 $retAr["raw"] = $val_rec['c_raw'];
1891 $retAr["max"] = $val_rec['c_max'];
1892 $retAr["scaled"] = $val_rec['scaled'];
1893 if ($val_rec['scaled']==null && $val_rec['c_raw']!=null && $val_rec['c_max']!=null) {
1894 $retAr["scaled"] = ($val_rec['c_raw'] / $val_rec['c_max']);
1895 }
1896 }
1897 return $retAr;
1898 }

References $ilDB.

Referenced by ilLPCollectionOfSCOs\getScoresForUserAndCP_Node_Id().

+ Here is the caller graph for this function:

◆ _getStatus()

static ilObjSCORM2004LearningModule::_getStatus (   $a_obj_id,
  $a_user_id 
)
static

Definition at line 901 of file class.ilObjSCORM2004LearningModule.php.

902 {
903 global $ilDB;
904
905 $status_set = $ilDB->queryF('
906 SELECT * FROM cmi_gobjective
907 WHERE scope_id = %s
908 AND objective_id = %s
909 AND user_id = %s',
910 array('integer','text','integer'),
911 array($a_obj_id,'course_overall_status',$a_user_id)
912 );
913
914 if ($status_rec = $ilDB->fetchAssoc($status_set))
915 {
916 return $status_rec["status"];
917 }
918
919 return false;
920 }

References $ilDB.

◆ _getTrackingItems()

ilObjSCORM2004LearningModule::_getTrackingItems (   $a_obj_id)

get all tracking items of scorm object

currently a for learning progress only

@access static

Reimplemented from ilObjSCORMLearningModule.

Definition at line 860 of file class.ilObjSCORM2004LearningModule.php.

861 {
862 global $ilDB;
863
864
865 $item_set = $ilDB->queryF('
866 SELECT cp_item.* FROM cp_node, cp_item WHERE slm_id = %s
867 AND cp_node.cp_node_id = cp_item.cp_node_id
868 ORDER BY cp_node.cp_node_id ',
869 array('integer'),
870 array($a_obj_id)
871 );
872
873 $items = array();
874 while ($item_rec = $ilDB->fetchAssoc($item_set))
875 {
876
877 $s2 = $ilDB->queryF('
878 SELECT cp_resource.* FROM cp_node, cp_resource
879 WHERE slm_id = %s
880 AND cp_node.cp_node_id = cp_resource.cp_node_id
881 AND cp_resource.id = %s ',
882 array('integer','text'),
883 array($a_obj_id,$item_rec["resourceid"])
884 );
885
886
887 if ($res = $ilDB->fetchAssoc($s2))
888
889 {
890 if ($res["scormtype"] == "sco")
891 {
892 $items[] = array("id" => $item_rec["cp_node_id"],
893 "title" => $item_rec["title"]);
894 }
895 }
896 }
897
898 return $items;
899 }

References $ilDB, and $res.

Referenced by ilLPCollectionOfSCOs\getPossibleItems().

+ Here is the caller graph for this function:

◆ _getUniqueScaledScoreForUser()

static ilObjSCORM2004LearningModule::_getUniqueScaledScoreForUser (   $a_id,
  $a_user 
)
static

Get the Unique Scaled Score of a course Conditions: Only one SCO may set cmi.score.scaled.

Parameters
int$a_idObject id
int$a_userUser id
Returns
float scaled score, -1 if not unique

Definition at line 817 of file class.ilObjSCORM2004LearningModule.php.

818 {
819 global $ilDB, $ilUser;
820 $scos = array();
821
822 $val_set = $ilDB->queryF("SELECT cp_node.cp_node_id FROM cp_node,cp_resource,cp_item WHERE".
823 " cp_item.cp_node_id=cp_node.cp_node_id AND cp_item.resourceId = cp_resource.id AND scormType='sco' AND nodeName='item' AND cp_node.slm_id = %s GROUP BY cp_node.cp_node_id",
824 array('integer'),
825 array($a_id)
826 );
827 while ($val_rec = $ilDB->fetchAssoc($val_set))
828 {
829 array_push($scos,$val_rec['cp_node_id']);
830 }
831 $set = 0; //numbers of SCO that set cmi.score.scaled
832 $scaled = null;
833 for ($i=0;$i<count($scos);$i++)
834 {
835 $val_set = $ilDB->queryF("SELECT scaled FROM cmi_node WHERE (user_id = %s AND cp_node_id = %s)",
836 array('integer', 'integer'),
837 array($a_user, $scos[$i])
838 );
839 if ($val_set->numRows()>0)
840 {
841 $val_rec = $ilDB->fetchAssoc($val_set);
842 if ($val_rec['scaled']!=NULL) {
843 $set++;
844 $scaled = $val_rec['scaled'];
845 }
846 }
847 }
848 $retVal = ($set == 1) ? $scaled : null ;
849 return $retVal;
850 }

References $ilDB, and $ilUser.

Referenced by ilObjSAHSLearningModule\getPointsInPercent().

+ Here is the caller graph for this function:

◆ _ISODurationToCentisec()

ilObjSCORM2004LearningModule::_ISODurationToCentisec (   $str)

convert ISO 8601 Timeperiods to centiseconds ta

@access static

Definition at line 647 of file class.ilObjSCORM2004LearningModule.php.

647 {
648 $aV = array(0, 0, 0, 0, 0, 0);
649 $bErr = false;
650 $bTFound = false;
651 if (strpos($str,"P") != 0) {
652 $bErr = true;
653 }
654 if (!$bErr) {
655 $aT = array("Y", "M", "D", "H", "M", "S");
656 $p = 0;
657 $i = 0;
658 $str = substr($str,1);
659 for ($i = 0; $i < count($aT); $i++) {
660 if (strpos($str,"T")===0) {
661 $str = substr($str,1);
662 $i = max($i, 3);
663 $bTFound = true;
664 }
665 $p = strpos($str,$aT[$i]);
666
667 if ($p > -1) {
668 if ($i == 1 && strpos($str,"T") > -1 && strpos($str,"T") < $p) {
669 continue;
670 }
671 if ($aT[$i] == "S") {
672 $aV[$i] = substr($str,0, $p);
673
674 } else {
675 $aV[$i] = intval(substr($str,0, $p));
676 }
677 if (!is_numeric($aV[$i])) {
678 $bErr = true;
679 break;
680 } else if ($i > 2 && !$bTFound) {
681 $bErr = true;
682 break;
683 }
684 $str = substr($str,$p + 1);
685
686 }
687 }
688 if (!$bErr && strlen($str) != 0) {
689 $bErr = true;
690
691 }
692 }
693
694 if ($bErr) {
695 return;
696 }
697 return $aV[0] * 3155760000 + $aV[1] * 262980000 + $aV[2] * 8640000 + $aV[3] * 360000 + $aV[4] * 6000 + round($aV[5] * 100);
698 }

Referenced by ilSCORM2004TrackingItems\exportSelectedCore(), ilSCORM2004TrackingItems\exportSelectedInteractions(), ilSCORM2004Tracking\getSumTotalTimeSecondsFromScos(), getTrackingDataAgg(), and ilSCORM2004TrackingItems\tracInteractionUser().

+ Here is the caller graph for this function:

◆ _lookupItemTitle()

static ilObjSCORM2004LearningModule::_lookupItemTitle (   $a_node_id)
static

Definition at line 965 of file class.ilObjSCORM2004LearningModule.php.

966 {
967 global $ilDB;
968
969 $r = $ilDB->queryF('
970 SELECT * FROM cp_item
971 WHERE cp_node_id = %s',
972 array('integer'),
973 array($a_node_id)
974 );
975
976 if ($i = $ilDB->fetchAssoc($r))
977 {
978 return $i["title"];
979 }
980 return "";
981 }

References $ilDB.

Referenced by ilLPStatusSCORM\_getStatusInfo(), getTrackedItems(), and getTrackingDataAgg().

+ Here is the caller graph for this function:

◆ _lookupLastAccess()

static ilObjSCORM2004LearningModule::_lookupLastAccess (   $a_obj_id,
  $a_usr_id 
)
static

Return the last access timestamp for a given user.

Parameters
int$a_obj_idobject id
int$user_iduser id
Returns
timestamp

Reimplemented from ilObjSCORMLearningModule.

Definition at line 315 of file class.ilObjSCORM2004LearningModule.php.

316 {
317 global $ilDB;
318
319 $result = $ilDB->queryF('
320 SELECT MAX(c_timestamp) last_access
321 FROM cmi_node, cp_node
322 WHERE cmi_node.cp_node_id = cp_node.cp_node_id
323 AND cp_node.slm_id = %s
324 AND user_id = %s
325 GROUP BY c_timestamp',
326 array('integer', 'integer'),
327 array($a_obj_id, $a_usr_id));
328 if ($ilDB->numRows($result))
329 {
330 $row = $ilDB->fetchAssoc($result);
331 return $row["last_access"];
332 }
333
334 return "";
335 }

References $ilDB, $result, and $row.

Referenced by ilObjSCORMVerification\createFromSCORMLM(), and ilSCORMPresentationGUI\downloadCertificate().

+ Here is the caller graph for this function:

◆ convert_1_2_to_2004()

ilObjSCORM2004LearningModule::convert_1_2_to_2004 (   $manifest)

Definition at line 240 of file class.ilObjSCORM2004LearningModule.php.

240 {
241 global $ilDB, $ilLog;
242
243 ##check manifest-file for version. Check for schemaversion as this is a required element for SCORM 2004
244 ##accept 2004 3rd Edition an CAM 1.3 as valid schemas
245
246 //set variables
247 $this->packageFolder=$this->getDataDirectory();
248 $this->imsmanifestFile=$manifest;
249 $doc = new DomDocument();
250
251 //fix reload errors before loading
252 $this->fixReload();
253 $doc->load($this->imsmanifestFile);
254 $elements = $doc->getElementsByTagName("schemaversion");
255 $schema=$elements->item(0)->nodeValue;
256 if (strtolower(trim($schema))=="cam 1.3" || strtolower(trim($schema))=="2004 3rd edition" || strtolower(trim($schema))=="2004 4th edition") {
257 //no conversion
258 $this->converted=false;
259 return true;
260
261 } else {
262 $this->converted=true;
263 //convert to SCORM 2004
264
265 //check for broken SCORM 1.2 manifest file (missing organization default-common error in a lot of manifest files)
266 $organizations = $doc->getElementsByTagName("organizations");
267 //first check if organizations is in manifest
268 if ($organizations->item(0)==null) die("organizations missing in manifest");
269 $default=$organizations->item(0)->getAttribute("default");
270 if ($default=="" || $default==null) {
271 //lookup identifier
272 $organization = $doc->getElementsByTagName("organization");
273 $ident=$organization->item(0)->getAttribute("identifier");
274 $organizations->item(0)->setAttribute("default",$ident);
275 }
276
277 //validate the fixed mainfest. If it's still not valid, don't transform an throw error
278
279
280 //first copy wrappers
281 $wrapperdir=$this->packageFolder."/GenericRunTimeWrapper1.0_aadlc";
282 mkdir($wrapperdir);
283 copy(self::WRAPPER_HTML,$wrapperdir."/GenericRunTimeWrapper.htm");
284 copy(self::WRAPPER_JS,$wrapperdir."/SCOPlayerWrapper.js");
285
286 //backup manifestfile
287 $this->backupManifest=$this->packageFolder."/imsmanifest.xml.back";
288 $ret=copy($this->imsmanifestFile,$this->backupManifest);
289
290 //transform manifest file
291 $this->totransform = $doc;
292 $ilLog->write("SCORM: about to transform to SCORM 2004");
293
294 $xsl = new DOMDocument;
295 $xsl->async = false;
296 $xsl->load(self::CONVERT_XSL);
297 $prc = new XSLTProcessor;
298 $r = @$prc->importStyleSheet($xsl);
299
300 file_put_contents($this->imsmanifestFile, $prc->transformToXML($this->totransform));
301
302 $ilLog->write("SCORM: Transformation completed");
303 return true;
304 }
305
306 }
getDataDirectory($mode="filesystem")
get data directory of lm

References $ilDB, $ilLog, $ret, fixReload(), and ilObjSAHSLearningModule\getDataDirectory().

Referenced by readObject().

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

◆ copyAuthoredContent()

ilObjSCORM2004LearningModule::copyAuthoredContent (   $a_new_obj)

Copy authored content (everything done with the editor.

Parameters

return

Definition at line 1906 of file class.ilObjSCORM2004LearningModule.php.

1907 {
1908 global $ilias;
1909
1910 // set/copy stylesheet
1911 include_once("./Services/Style/classes/class.ilObjStyleSheet.php");
1912 $style_id = $this->getStyleSheetId();
1913 if ($style_id > 0 && !ilObjStyleSheet::_lookupStandard($style_id))
1914 {
1915 $style_obj = $ilias->obj_factory->getInstanceByObjId($style_id);
1916 $new_id = $style_obj->ilClone();
1917 $a_new_obj->setStyleSheetId($new_id);
1918 $a_new_obj->update();
1919 }
1920
1921 $a_new_obj->createScorm2004Tree();
1922 $source_tree = $this->getTree();
1923 $target_tree_root_id = $a_new_obj->getTree()->readRootId();
1924 $childs = $source_tree->getChilds($source_tree->readRootId());
1925 $a_copied_nodes = array();
1926 include_once("./Modules/Scorm2004/classes/class.ilSCORM2004Node.php");
1927 foreach ($childs as $c)
1928 {
1929 ilSCORM2004Node::pasteTree($a_new_obj, $c["child"], $target_tree_root_id,
1930 IL_LAST_NODE, "", $a_copied_nodes, true, false);
1931 }
1932 }
const IL_LAST_NODE
Definition: class.ilTree.php:4
getStyleSheetId()
get ID of assigned style sheet object
_lookupStandard($a_id)
Lookup standard flag.
static pasteTree($a_target_slm, $a_item_id, $a_parent_id, $a_target, $a_insert_time, &$a_copied_nodes, $a_as_copy=false, $a_from_clipboard=true)
Paste item (tree) from clipboard or other learning module to target scorm learning module.

References ilObject\$ilias, ilObjStyleSheet\_lookupStandard(), ilObjSAHSLearningModule\getStyleSheetId(), getTree(), IL_LAST_NODE, and ilSCORM2004Node\pasteTree().

+ Here is the call graph for this function:

◆ createScorm2004Tree()

ilObjSCORM2004LearningModule::createScorm2004Tree ( )

Create Scorm 2004 Tree used by Editor.

Definition at line 986 of file class.ilObjSCORM2004LearningModule.php.

987 {
988 include_once("./Modules/Scorm2004/classes/class.ilSCORM2004Tree.php");
989 $this->slm_tree = new ilSCORM2004Tree($this->getId());
990
991 //$this->slm_tree =& new ilTree($this->getId());
992 //$this->slm_tree->setTreeTablePK("slm_id");
993 //$this->slm_tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node');
994 $this->slm_tree->addTree($this->getId(), 1);
995
996 //add seqinfo for rootNode
997 include_once ("./Modules/Scorm2004/classes/seq_editor/class.ilSCORM2004Sequencing.php");
998 $seq_info = new ilSCORM2004Sequencing($this->getId(),true);
999 $seq_info->insert();
1000 }
getId()
get object id @access public
Class ilSCORM2004Sequencing.
SCORM 2004 Editing tree.

References ilObject\getId().

+ Here is the call graph for this function:

◆ deleteTrackingDataOfUsers()

ilObjSCORM2004LearningModule::deleteTrackingDataOfUsers (   $a_users)

get all tracked items of current user

Reimplemented from ilObjSCORMLearningModule.

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

385 {
386 global $ilDB;
387 include_once("./Modules/Scorm2004/classes/class.ilSCORM2004DeleteData.php");
388 include_once("./Services/Tracking/classes/class.ilLPStatusWrapper.php");
389
390 foreach($a_users as $user)
391 {
394 }
395 }
static _updateStatus($a_obj_id, $a_usr_id, $a_obj=null, $a_percentage=false, $a_no_raise=false, $a_force_raise=false)
Update status.
removeCMIDataForUserAndPackage($user_id, $packageId)

References $ilDB, ilLPStatusWrapper\_updateStatus(), ilObject\getId(), and ilSCORM2004DeleteData\removeCMIDataForUserAndPackage().

+ Here is the call graph for this function:

◆ executeDragDrop()

ilObjSCORM2004LearningModule::executeDragDrop (   $source_id,
  $target_id,
  $first_child,
  $as_subitem = false,
  $movecopy = "move" 
)

Execute Drag Drop Action.

Parameters
string$source_idSource element ID
string$target_idTarget element ID
string$first_childInsert as first child of target
string$movecopyPosition ("move" | "copy")

Definition at line 1041 of file class.ilObjSCORM2004LearningModule.php.

1042 {
1043 $this->slm_tree = new ilTree($this->getId());
1044 $this->slm_tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node');
1045 $this->slm_tree->setTreeTablePK("slm_id");
1046
1047 require_once("./Modules/Scorm2004/classes/class.ilSCORM2004NodeFactory.php");
1048
1049 $source_obj = ilSCORM2004NodeFactory::getInstance($this, $source_id, true);
1050 //$source_obj->setLMId($this->getId());
1051
1052 if (!$first_child)
1053 {
1054 $target_obj = ilSCORM2004NodeFactory::getInstance($this, $target_id, true);
1055 //$target_obj->setLMId($this->getId());
1056 $target_parent = $this->slm_tree->getParentId($target_id);
1057 }
1058//echo "-".$source_obj->getType()."-";
1059 // handle pages
1060 if ($source_obj->getType() == "page")
1061 {
1062 if ($this->slm_tree->isInTree($source_obj->getId()))
1063 {
1064 $node_data = $this->slm_tree->getNodeData($source_obj->getId());
1065
1066 // cut on move
1067 if ($movecopy == "move")
1068 {
1069 $parent_id = $this->slm_tree->getParentId($source_obj->getId());
1070 $this->slm_tree->deleteTree($node_data);
1071
1072 // write history entry
1073/* require_once("./Services/History/classes/class.ilHistory.php");
1074 ilHistory::_createEntry($source_obj->getId(), "cut",
1075 array(ilLMObject::_lookupTitle($parent_id), $parent_id),
1076 $this->getType().":pg");
1077 ilHistory::_createEntry($parent_id, "cut_page",
1078 array(ilLMObject::_lookupTitle($source_obj->getId()), $source_obj->getId()),
1079 $this->getType().":st");
1080*/
1081 }
1082/* else // this is not implemented here
1083 {
1084 // copy page
1085 $new_page =& $source_obj->copy();
1086 $source_id = $new_page->getId();
1087 $source_obj =& $new_page;
1088 }
1089*/
1090
1091 // paste page
1092 if(!$this->slm_tree->isInTree($source_obj->getId()))
1093 {
1094 if ($first_child) // as first child
1095 {
1096 $target_pos = IL_FIRST_NODE;
1097 $parent = $target_id;
1098 }
1099 else if ($as_subitem) // as last child
1100 {
1101 $parent = $target_id;
1102 $target_pos = IL_FIRST_NODE;
1103 $pg_childs = $this->slm_tree->getChildsByType($parent, "page");
1104 if (count($pg_childs) != 0)
1105 {
1106 $target_pos = $pg_childs[count($pg_childs) - 1]["obj_id"];
1107 }
1108 }
1109 else // at position
1110 {
1111 $target_pos = $target_id;
1112 $parent = $target_parent;
1113 }
1114
1115 // insert page into tree
1116 $this->slm_tree->insertNode($source_obj->getId(),
1117 $parent, $target_pos);
1118
1119 // write history entry
1120/* if ($movecopy == "move")
1121 {
1122 // write history comments
1123 include_once("./Services/History/classes/class.ilHistory.php");
1124 ilHistory::_createEntry($source_obj->getId(), "paste",
1125 array(ilLMObject::_lookupTitle($parent), $parent),
1126 $this->getType().":pg");
1127 ilHistory::_createEntry($parent, "paste_page",
1128 array(ilLMObject::_lookupTitle($source_obj->getId()), $source_obj->getId()),
1129 $this->getType().":st");
1130 }
1131*/
1132
1133 }
1134 }
1135 }
1136
1137 // handle scos
1138 if ($source_obj->getType() == "sco" || $source_obj->getType() == "ass")
1139 {
1140//echo "2";
1141 $source_node = $this->slm_tree->getNodeData($source_id);
1142 $subnodes = $this->slm_tree->getSubtree($source_node);
1143
1144 // check, if target is within subtree
1145 foreach ($subnodes as $subnode)
1146 {
1147 if($subnode["obj_id"] == $target_id)
1148 {
1149 return;
1150 }
1151 }
1152
1153 $target_pos = $target_id;
1154
1155 if ($first_child) // as first sco
1156 {
1157 $target_pos = IL_FIRST_NODE;
1158 $target_parent = $target_id;
1159
1160 $pg_childs = $this->slm_tree->getChildsByType($target_parent, "page");
1161 if (count($pg_childs) != 0)
1162 {
1163 $target_pos = $pg_childs[count($pg_childs) - 1]["obj_id"];
1164 }
1165 }
1166 else if ($as_subitem) // as last sco
1167 {
1168 $target_parent = $target_id;
1169 $target_pos = IL_FIRST_NODE;
1170 $childs = $this->slm_tree->getChilds($target_parent);
1171 if (count($childs) != 0)
1172 {
1173 $target_pos = $childs[count($childs) - 1]["obj_id"];
1174 }
1175 }
1176
1177 // delete source tree
1178 if ($movecopy == "move")
1179 {
1180 $this->slm_tree->deleteTree($source_node);
1181 }
1182/* else
1183 {
1184 // copy chapter (incl. subcontents)
1185 $new_chapter =& $source_obj->copy($this->slm_tree, $target_parent, $target_pos);
1186 }
1187*/
1188
1189 if (!$this->slm_tree->isInTree($source_id))
1190 {
1191 $this->slm_tree->insertNode($source_id, $target_parent, $target_pos);
1192
1193 // insert moved tree
1194 if ($movecopy == "move")
1195 {
1196 foreach ($subnodes as $node)
1197 {
1198 if($node["obj_id"] != $source_id)
1199 {
1200 $this->slm_tree->insertNode($node["obj_id"], $node["parent"]);
1201 }
1202 }
1203 }
1204 }
1205
1206 // check the tree
1207// $this->checkTree();
1208 }
1209
1210 // handle chapters
1211 if ($source_obj->getType() == "chap")
1212 {
1213//echo "2";
1214 $source_node = $this->slm_tree->getNodeData($source_id);
1215 $subnodes = $this->slm_tree->getSubtree($source_node);
1216
1217 // check, if target is within subtree
1218 foreach ($subnodes as $subnode)
1219 {
1220 if($subnode["obj_id"] == $target_id)
1221 {
1222 return;
1223 }
1224 }
1225
1226 $target_pos = $target_id;
1227
1228 if ($first_child) // as first chapter
1229 {
1230 $target_pos = IL_FIRST_NODE;
1231 $target_parent = $target_id;
1232
1233 //$sco_childs = $this->slm_tree->getChildsByType($target_parent, "sco");
1234 //if (count($sco_childs) != 0)
1235 //{
1236 // $target_pos = $sco_childs[count($sco_childs) - 1]["obj_id"];
1237 //}
1238 }
1239 else if ($as_subitem) // as last chapter
1240 {
1241 $target_parent = $target_id;
1242 $target_pos = IL_FIRST_NODE;
1243 $childs = $this->slm_tree->getChilds($target_parent);
1244 if (count($childs) != 0)
1245 {
1246 $target_pos = $childs[count($childs) - 1]["obj_id"];
1247 }
1248 }
1249
1250 // delete source tree
1251 if ($movecopy == "move")
1252 {
1253 $this->slm_tree->deleteTree($source_node);
1254 }
1255/* else
1256 {
1257 // copy chapter (incl. subcontents)
1258 $new_chapter =& $source_obj->copy($this->slm_tree, $target_parent, $target_pos);
1259 }
1260*/
1261
1262 if (!$this->slm_tree->isInTree($source_id))
1263 {
1264 $this->slm_tree->insertNode($source_id, $target_parent, $target_pos);
1265
1266 // insert moved tree
1267 if ($movecopy == "move")
1268 {
1269 foreach ($subnodes as $node)
1270 {
1271 if($node["obj_id"] != $source_id)
1272 {
1273 $this->slm_tree->insertNode($node["obj_id"], $node["parent"]);
1274 }
1275 }
1276 }
1277 }
1278
1279 // check the tree
1280// $this->checkTree();
1281 }
1282
1283// $this->checkTree();
1284 }
const IL_FIRST_NODE
Definition: class.ilTree.php:5
static getInstance($a_slm_object, $a_id=0, $a_halt=true)
Tree class data representation in hierachical trees using the Nested Set Model with Gaps by Joe Celco...
$target_id
Definition: goto.php:88

References $target_id, ilObject\getId(), ilSCORM2004NodeFactory\getInstance(), and IL_FIRST_NODE.

+ Here is the call graph for this function:

◆ exportFileItems()

ilObjSCORM2004LearningModule::exportFileItems (   $a_target_dir,
$expLog 
)

export files of file itmes

Definition at line 1802 of file class.ilObjSCORM2004LearningModule.php.

1803 {
1804 include_once("./Modules/File/classes/class.ilObjFile.php");
1805
1806 foreach ($this->file_ids as $file_id)
1807 {
1808 $expLog->write(date("[y-m-d H:i:s] ")."File Item ".$file_id);
1809 $file_obj = new ilObjFile($file_id, false);
1810 $file_obj->export($a_target_dir);
1811 unset($file_obj);
1812 }
1813 }
Class ilObjFile.

◆ exportHTML()

ilObjSCORM2004LearningModule::exportHTML (   $a_inst,
  $a_target_dir,
$expLog,
  $a_one_file = "" 
)

Export SCORM package to HTML.

Definition at line 1526 of file class.ilObjSCORM2004LearningModule.php.

1527 {
1528
1529// $a_xml_writer = new ilXmlWriter;
1530 // set dtd definition
1531// $a_xml_writer->xmlSetDtdDef("<!DOCTYPE ContentObject SYSTEM \"http://www.ilias.de/download/dtd/ilias_co_3_7.dtd\">");
1532
1533 // set generated comment
1534// $a_xml_writer->xmlSetGenCmt("Export of ILIAS Content Module ". $this->getId()." of installation ".$a_inst.".");
1535
1536 // set xml header
1537// $a_xml_writer->xmlHeader();
1538
1539// global $ilBench;
1540
1541// $a_xml_writer->xmlStartTag("ContentObject", array("Type"=>"SCORM2004LearningModule"));
1542
1543// $expLog->write(date("[y-m-d H:i:s] ")."Start Export Sco Objects");
1544 $this->exportHTMLScoObjects($a_inst, $a_target_dir, $expLog, $a_one_file);
1545// $expLog->write(date("[y-m-d H:i:s] ")."Finished Export Sco Objects");
1546
1547// $a_xml_writer->xmlEndTag("ContentObject");
1548
1549
1550 /*$toc_tpl = new ilTemplate("tpl.main.html", true, true, false);
1551 $style_name = $ilUser->prefs["style"].".css";
1552 $tpl->setCurrentBlock("css_file");
1553 $tpl->setVariable("CSS_FILE", $style_name);
1554 $tpl->parseCurrentBlock();*/
1555
1556 if ($a_one_file == "")
1557 {
1558 include_once("./Modules/Scorm2004/classes/class.ilContObjectManifestBuilder.php");
1559 $manifestBuilder = new ilContObjectManifestBuilder($this);
1560 $manifestBuilder->buildManifest('12');
1561
1562 include_once("Services/Frameset/classes/class.ilFramesetGUI.php");
1563 $fs_gui = new ilFramesetGUI();
1564 $fs_gui->setFramesetTitle($this->getTitle());
1565 $fs_gui->setMainFrameSource("");
1566 $fs_gui->setSideFrameSource("toc.html");
1567 $fs_gui->setMainFrameName("content");
1568 $fs_gui->setSideFrameName("toc");
1569 $output = $fs_gui->get();
1570 fputs(fopen($a_target_dir.'/index.html','w+'),$output);
1571
1572 $xsl = file_get_contents("./Modules/Scorm2004/templates/xsl/module.xsl");
1573 $xml = simplexml_load_string($manifestBuilder->writer->xmlDumpMem());
1574 $args = array( '/_xml' => $xml->organizations->organization->asXml(), '/_xsl' => $xsl );
1575 $xh = xslt_create();
1576 $output = xslt_process($xh,"arg:/_xml","arg:/_xsl",NULL,$args,NULL);
1577 xslt_free($xh);
1578 fputs(fopen($a_target_dir.'/toc.html','w+'),$output);
1579 }
1580// $a_xml_writer->_XmlWriter;
1581 }
Content Object (ILIAS native learning module / digilib book) Manifest export class.
Class ilFramesetGUI.
exportHTMLScoObjects($a_inst, $a_target_dir, &$expLog, $a_one_file="")
getTitle()
get object title @access public
xslt_free(&$proc)
xslt_create()

References exportHTMLScoObjects(), ilObject\getTitle(), xslt_create(), and xslt_free().

Referenced by exportHTMLOne().

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

◆ exportHTML4PDF()

ilObjSCORM2004LearningModule::exportHTML4PDF (   $a_inst,
  $a_target_dir,
$expLog 
)

Definition at line 1445 of file class.ilObjSCORM2004LearningModule.php.

1446 {
1447 global $ilBench;
1448 $tree = new ilTree($this->getId());
1449 $tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node');
1450 $tree->setTreeTablePK("slm_id");
1451 foreach($tree->getSubTree($tree->getNodeData($tree->getRootId()),true,'sco') as $sco)
1452 {
1453 include_once("./Modules/Scorm2004/classes/class.ilSCORM2004Sco.php");
1454 $sco_folder = $a_target_dir."/".$sco['obj_id'];
1455 ilUtil::makeDir($sco_folder);
1456 $node = new ilSCORM2004Sco($this,$sco['obj_id']);
1457 $node->exportHTML4PDF($a_inst, $sco_folder, $expLog);
1458 }
1459 }
Class ilSCORM2004Sco.
static makeDir($a_dir)
creates a new directory and inherits all filesystem permissions of the parent directory You may pass ...
global $ilBench
Definition: ilias.php:18

References $ilBench, ilObject\getId(), and ilUtil\makeDir().

+ Here is the call graph for this function:

◆ exportHTMLOne()

ilObjSCORM2004LearningModule::exportHTMLOne (   $a_inst,
  $a_target_dir,
$expLog 
)

Definition at line 1516 of file class.ilObjSCORM2004LearningModule.php.

1517 {
1518 $one_file = fopen($a_target_dir.'/index.html','w+');
1519 $this->exportHTML($a_inst, $a_target_dir, $expLog, $one_file);
1520 fclose($one_file);
1521 }
exportHTML($a_inst, $a_target_dir, &$expLog, $a_one_file="")
Export SCORM package to HTML.

References exportHTML().

+ Here is the call graph for this function:

◆ exportHTMLScoObjects()

ilObjSCORM2004LearningModule::exportHTMLScoObjects (   $a_inst,
  $a_target_dir,
$expLog,
  $a_one_file = "" 
)

Definition at line 1664 of file class.ilObjSCORM2004LearningModule.php.

1665 {
1666 global $ilBench;
1667
1668 $tree = new ilTree($this->getId());
1669 $tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node');
1670 $tree->setTreeTablePK("slm_id");
1671
1672 // copy all necessary files now
1673 if ($a_one_file != "")
1674 {
1675 $this->prepareHTMLExporter($a_target_dir);
1676
1677 // put header into file
1678 $sco_tpl = new ilTemplate("tpl.sco.html", true, true, "Modules/Scorm2004");
1679 include_once("./Services/COPage/classes/class.ilCOPageHTMLExport.php");
1681
1682 $sco_tpl->setCurrentBlock("js_file");
1683 $sco_tpl->setVariable("JS_FILE", "./js/pure.js");
1684 $sco_tpl->parseCurrentBlock();
1685 $sco_tpl->setCurrentBlock("js_file");
1686 $sco_tpl->setVariable("JS_FILE", "./js/question_handling.js");
1687 $sco_tpl->parseCurrentBlock();
1688
1689
1690 $sco_tpl->setCurrentBlock("head");
1691 $sco_tpl->parseCurrentBlock();
1692 fputs($a_one_file, $sco_tpl->get("head"));
1693
1694 // toc
1695 include_once("./Modules/Scorm2004/classes/class.ilContObjectManifestBuilder.php");
1696 $manifestBuilder = new ilContObjectManifestBuilder($this);
1697 $manifestBuilder->buildManifest('12');
1698 $xsl = file_get_contents("./Modules/Scorm2004/templates/xsl/module.xsl");
1699 $xml = simplexml_load_string($manifestBuilder->writer->xmlDumpMem());
1700 $args = array( '/_xml' => $xml->organizations->organization->asXml(), '/_xsl' => $xsl );
1701 $xh = xslt_create();
1702 $params = array("one_page" => "y");
1703 $output = xslt_process($xh,"arg:/_xml","arg:/_xsl",NULL,$args,$params);
1704 xslt_free($xh);
1705 fputs($a_one_file, $output);
1706
1707 }
1708
1709 foreach($tree->getSubTree($tree->getNodeData($tree->getRootId()),true,'sco') as $sco)
1710 {
1711 include_once("./Modules/Scorm2004/classes/class.ilSCORM2004Sco.php");
1712 $sco_folder = $a_target_dir."/".$sco['obj_id'];
1713 ilUtil::makeDir($sco_folder);
1714 $node = new ilSCORM2004Sco($this,$sco['obj_id']);
1715
1716 if ($a_one_file == "")
1717 {
1718 $node->exportHTML($a_inst, $sco_folder, $expLog, $a_one_file);
1719 }
1720 else
1721 {
1722 $node->exportHTMLPageObjects($a_inst, $a_target_dir, $expLog, 'full',
1723 "sco", $a_one_file, $sco_tpl);
1724 }
1725 if($this->getAssignedGlossary()!=0)
1726 {
1727 include_once("./Modules/Glossary/classes/class.ilObjGlossary.php");
1728 $glos = new ilObjGlossary($this->getAssignedGlossary(),false);
1729 //$glos->exportHTML($sco_folder."/glossary", $expLog);
1730 }
1731 }
1732
1733 // copy all necessary files now
1734 if ($a_one_file != "")
1735 {
1736 // put tail into file
1737 fputs($a_one_file, $sco_tpl->get("tail"));
1738 }
1739
1740 }
getPreparedMainTemplate($a_tpl="")
Get prepared main template.
Class ilObjGlossary.
getAssignedGlossary()
get assigned glossary
prepareHTMLExporter($a_target_dir)
Prepare HTML exporter.
special template class to simplify handling of ITX/PEAR

References $ilBench, ilObjSAHSLearningModule\getAssignedGlossary(), ilObject\getId(), ilCOPageHTMLExport\getPreparedMainTemplate(), ilUtil\makeDir(), prepareHTMLExporter(), xslt_create(), and xslt_free().

Referenced by exportHTML().

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

◆ exportPDF()

ilObjSCORM2004LearningModule::exportPDF (   $a_inst,
  $a_target_dir,
$expLog 
)

Definition at line 1461 of file class.ilObjSCORM2004LearningModule.php.

1462 {
1463 global $ilBench;
1464 $a_xml_writer = new ilXmlWriter;
1465 $a_xml_writer->xmlStartTag("ContentObject", array("Type"=>"SCORM2004SCO"));
1466 $this->exportXMLMetaData($a_xml_writer);
1467 $tree = new ilTree($this->getId());
1468 $tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node');
1469 $tree->setTreeTablePK("slm_id");
1470 foreach($tree->getSubTree($tree->getNodeData($tree->getRootId()),true,'sco') as $sco)
1471 {
1472 include_once("./Modules/Scorm2004/classes/class.ilSCORM2004Sco.php");
1473 $sco_folder = $a_target_dir."/".$sco['obj_id'];
1474 ilUtil::makeDir($sco_folder);
1475 $node = new ilSCORM2004Sco($this,$sco['obj_id']);
1476 $node->exportPDFPrepareXmlNFiles($a_inst, $a_target_dir, $expLog, $a_xml_writer);
1477 }
1478 if($this->getAssignedGlossary()!=0)
1479 {
1480 ilUtil::makeDir($a_target_dir."/glossary");
1481 include_once("./Modules/Glossary/classes/class.ilObjGlossary.php");
1482 include_once("./Modules/Glossary/classes/class.ilGlossaryExport.php");
1483 $glos = new ilObjGlossary($this->getAssignedGlossary(), false);
1484 $glos_export = new ilGlossaryExport($glos,"xml");
1485 $glos->exportXML($a_xml_writer,$glos_export->getInstId(), $a_target_dir."/glossary", $expLog);
1486 }
1487 $a_xml_writer->xmlEndTag("ContentObject");
1488 include_once 'Services/Transformation/classes/class.ilXML2FO.php';
1489 $xml2FO = new ilXML2FO();
1490 $xml2FO->setXSLTLocation('./Modules/Scorm2004/templates/xsl/contentobject2fo.xsl');
1491 $xml2FO->setXMLString($a_xml_writer->xmlDumpMem());
1492 $xml2FO->setXSLTParams(array ('target_dir' => $a_target_dir));
1493 $xml2FO->transform();
1494 $fo_string = $xml2FO->getFOString();
1495 $fo_xml = simplexml_load_string($fo_string);
1496 $fo_ext = $fo_xml->xpath("//fo:declarations");
1497 $fo_ext = $fo_ext[0];
1498 $results = array();
1499 include_once "./Services/Utilities/classes/class.ilFileUtils.php";
1500 ilFileUtils::recursive_dirscan($a_target_dir."/objects", $results);
1501 if (is_array($results["file"]))
1502 {
1503 foreach ($results["file"] as $key => $value)
1504 {
1505 $e = $fo_ext->addChild("fox:embedded-file","","http://xml.apache.org/fop/extensions");
1506 $e->addAttribute("src",$results[path][$key].$value);
1507 $e->addAttribute("name",$value);
1508 $e->addAttribute("desc","");
1509 }
1510 }
1511 $fo_string = $fo_xml->asXML();
1512 $a_xml_writer->_XmlWriter;
1513 return $fo_string;
1514 }
recursive_dirscan($dir, &$arr)
Recursively scans a given directory and writes path and filename into referenced array.
Export class for content objects.
exportXMLMetaData(&$a_xml_writer)
export content objects meta data to xml (see ilias_co.dtd)
XML writer class.
xmlStartTag($tag, $attrs=NULL, $empty=FALSE, $encode=TRUE, $escape=TRUE)
Writes a starttag.
$results

References $ilBench, $results, exportXMLMetaData(), ilObjSAHSLearningModule\getAssignedGlossary(), ilObject\getId(), ilUtil\makeDir(), ilFileUtils\recursive_dirscan(), and ilXmlWriter\xmlStartTag().

+ Here is the call graph for this function:

◆ exportScorm()

ilObjSCORM2004LearningModule::exportScorm (   $a_inst,
  $a_target_dir,
  $ver,
$expLog 
)

Export (authoring) scorm package.

Definition at line 1333 of file class.ilObjSCORM2004LearningModule.php.

1334 {
1335
1336 $a_xml_writer = new ilXmlWriter;
1337
1338 // export metadata
1339 $this->exportXMLMetaData($a_xml_writer);
1340 $metadata_xml = $a_xml_writer->xmlDumpMem(false);
1341 $a_xml_writer->_XmlWriter;
1342
1343 $xsl = file_get_contents("./Modules/Scorm2004/templates/xsl/metadata.xsl");
1344 $args = array( '/_xml' => $metadata_xml , '/_xsl' => $xsl );
1345 $xh = xslt_create();
1346 $output = xslt_process($xh,"arg:/_xml","arg:/_xsl",NULL,$args,NULL);
1347 xslt_free($xh);
1348 file_put_contents($a_target_dir.'/indexMD.xml',$output);
1349
1350 // export glossary
1351 if($this->getAssignedGlossary()!=0)
1352 {
1353 ilUtil::makeDir($a_target_dir."/glossary");
1354 include_once("./Modules/Glossary/classes/class.ilObjGlossary.php");
1355 include_once("./Modules/Glossary/classes/class.ilGlossaryExport.php");
1356 $glo_xml_writer = new ilXmlWriter();
1357
1358 $glo_xml_writer->xmlSetDtdDef("<!DOCTYPE ContentObject SYSTEM \"http://www.ilias.de/download/dtd/ilias_co_3_7.dtd\">");
1359 // set xml header
1360 $glo_xml_writer->xmlHeader();
1361 $glos = new ilObjGlossary($this->getAssignedGlossary(), false);
1362 //$glos->exportHTML($a_target_dir."/glossary", $expLog);
1363 $glos_export = new ilGlossaryExport($glos,"xml");
1364 $glos->exportXML($glo_xml_writer,$glos_export->getInstId(), $a_target_dir."/glossary", $expLog);
1365 $glo_xml_writer->xmlDumpFile($a_target_dir."/glossary/glossary.xml");
1366 $glo_xml_writer->_XmlWriter;
1367 }
1368
1369 $a_xml_writer = new ilXmlWriter;
1370 // set dtd definition
1371 $a_xml_writer->xmlSetDtdDef("<!DOCTYPE ContentObject SYSTEM \"http://www.ilias.de/download/dtd/ilias_co_3_7.dtd\">");
1372
1373 // set generated comment
1374 $a_xml_writer->xmlSetGenCmt("Export of ILIAS Content Module ". $this->getId()." of installation ".$a_inst.".");
1375
1376 // set xml header
1377 $a_xml_writer->xmlHeader();
1378
1379 global $ilBench;
1380
1381 $a_xml_writer->xmlStartTag("ContentObject", array("Type"=>"SCORM2004LearningModule"));
1382
1383 // MetaData
1384 $this->exportXMLMetaData($a_xml_writer);
1385
1386 $this->exportXMLStructureObjects($a_xml_writer, $a_inst, $expLog);
1387
1388 // SCO Objects
1389 $expLog->write(date("[y-m-d H:i:s] ")."Start Export Sco Objects");
1390 $this->exportXMLScoObjects($a_inst, $a_target_dir, $ver, $expLog);
1391 $expLog->write(date("[y-m-d H:i:s] ")."Finished Export Sco Objects");
1392
1393 $a_xml_writer->xmlEndTag("ContentObject");
1394 $a_xml_writer->xmlDumpFile($a_target_dir.'/index.xml', false);
1395
1396 if ($ver == "2004 4th") {
1397 $revision ="4th";
1398 $ver = "2004";
1399 }
1400
1401 if ($ver == "2004 3rd") {
1402 $revision ="3rd";
1403 $ver = "2004";
1404 }
1405
1406 // add content css (note: this is also done per item)
1407 $css_dir = $a_target_dir."/ilias_css_4_2";
1408 ilUtil::makeDir($css_dir);
1409 include_once("./Modules/Scorm2004/classes/class.ilScormExportUtil.php");
1410 ilScormExportUtil::exportContentCSS($this, $css_dir);
1411
1412 // add manifest
1413 include_once("./Modules/Scorm2004/classes/class.ilContObjectManifestBuilder.php");
1414 $manifestBuilder = new ilContObjectManifestBuilder($this);
1415 $manifestBuilder->buildManifest($ver,$revision);
1416 $manifestBuilder->dump($a_target_dir);
1417
1418 $xsl = file_get_contents("./Modules/Scorm2004/templates/xsl/module.xsl");
1419 $args = array( '/_xml' => file_get_contents($a_target_dir."/imsmanifest.xml"), '/_xsl' => $xsl );
1420 $xh = xslt_create();
1421 $output = xslt_process($xh,"arg:/_xml","arg:/_xsl",NULL,$args,NULL);
1422 xslt_free($xh);
1423 fputs(fopen($a_target_dir.'/index.html','w+'),$output);
1424 // copy xsd files to target
1425 switch ($ver)
1426 {
1427 case "2004":
1428 if ($revision == "3rd") {
1429 ilUtil::rCopy('./Modules/Scorm2004/templates/xsd/adlcp_130_export_2004',$a_target_dir,false);
1430 }
1431
1432 if ($revision == "4th") {
1433 ilUtil::rCopy('./Modules/Scorm2004/templates/xsd/adlcp_130_export_2004_4th',$a_target_dir,false);
1434 }
1435 break;
1436 case "12":
1437 ilUtil::rCopy('./Modules/Scorm2004/templates/xsd/adlcp_120_export_12',$a_target_dir,false);
1438 break;
1439 }
1440
1441 $a_xml_writer->_XmlWriter;
1442 }
exportXMLStructureObjects(&$a_xml_writer, $a_inst, &$expLog)
export structure objects to xml (see ilias_co.dtd)
exportXMLScoObjects($a_inst, $a_target_dir, $ver, &$expLog)
export page objects to xml (see ilias_co.dtd)
static exportContentCSS($a_slm_object, $a_target_dir)
Export lm content css to a directory.
static rCopy($a_sdir, $a_tdir, $preserveTimeAttributes=false)
Copies content of a directory $a_sdir recursively to a directory $a_tdir.
xmlSetDtdDef($dtdDef)
Sets dtd definition.

References $ilBench, ilScormExportUtil\exportContentCSS(), exportXMLMetaData(), exportXMLScoObjects(), exportXMLStructureObjects(), ilObjSAHSLearningModule\getAssignedGlossary(), ilObject\getId(), ilUtil\makeDir(), ilUtil\rCopy(), ilXmlWriter\xmlSetDtdDef(), xslt_create(), and xslt_free().

+ Here is the call graph for this function:

◆ exportXMLMetaData()

ilObjSCORM2004LearningModule::exportXMLMetaData ( $a_xml_writer)

export content objects meta data to xml (see ilias_co.dtd)

Parameters
object$a_xml_writerilXmlWriter object that receives the xml data

Definition at line 1589 of file class.ilObjSCORM2004LearningModule.php.

1590 {
1591 include_once("Services/MetaData/classes/class.ilMD2XML.php");
1592 $md2xml = new ilMD2XML($this->getId(), 0, $this->getType());
1593 $md2xml->setExportMode(true);
1594 $md2xml->startExport();
1595 $a_xml_writer->appendXML($md2xml->getXML());
1596 }
getType()
get object type @access public

References ilObject\getId(), and ilObject\getType().

Referenced by exportPDF(), and exportScorm().

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

◆ exportXMLScoObjects()

ilObjSCORM2004LearningModule::exportXMLScoObjects (   $a_inst,
  $a_target_dir,
  $ver,
$expLog 
)

export page objects to xml (see ilias_co.dtd)

Parameters
object$a_xml_writerilXmlWriter object that receives the xml data

Definition at line 1631 of file class.ilObjSCORM2004LearningModule.php.

1632 {
1633 global $ilBench;
1634 $tree = new ilTree($this->getId());
1635 $tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node');
1636 $tree->setTreeTablePK("slm_id");
1637 foreach($tree->getSubTree($tree->getNodeData($tree->getRootId()),true,array('sco','ass')) as $sco)
1638 {
1639 if ($sco['type'] == "sco")
1640 {
1641 include_once("./Modules/Scorm2004/classes/class.ilSCORM2004Sco.php");
1642 $sco_folder = $a_target_dir."/".$sco['obj_id'];
1643 ilUtil::makeDir($sco_folder);
1644 $node = new ilSCORM2004Sco($this,$sco['obj_id']);
1645 $node->exportScorm($a_inst, $sco_folder, $ver, $expLog);
1646 }
1647 if ($sco['type'] == "ass")
1648 {
1649 include_once("./Modules/Scorm2004/classes/class.ilSCORM2004Asset.php");
1650 $sco_folder = $a_target_dir."/".$sco['obj_id'];
1651 ilUtil::makeDir($sco_folder);
1652 $node = new ilSCORM2004Asset($this,$sco['obj_id']);
1653 $node->exportScorm($a_inst, $sco_folder, $ver, $expLog);
1654 }
1655
1656 }
1657 }
Class ilSCORM2004Asset.

References $ilBench, ilObject\getId(), and ilUtil\makeDir().

Referenced by exportScorm().

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

◆ exportXMLStructureObjects()

ilObjSCORM2004LearningModule::exportXMLStructureObjects ( $a_xml_writer,
  $a_inst,
$expLog 
)

export structure objects to xml (see ilias_co.dtd)

Parameters
object$a_xml_writerilXmlWriter object that receives the xml data

Definition at line 1604 of file class.ilObjSCORM2004LearningModule.php.

1605 {
1606 include_once("Services/MetaData/classes/class.ilMD2XML.php");
1607 $tree = new ilTree($this->getId());
1608 $tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node');
1609 $tree->setTreeTablePK("slm_id");
1610 $a_xml_writer->xmlStartTag("StructureObject");
1611 foreach($tree->getFilteredSubTree($tree->getRootId(),Array('page')) as $obj)
1612 {
1613 if($obj['type']=='') continue;
1614
1615 //$md2xml = new ilMD2XML($obj['obj_id'], 0, $obj['type']);
1616 $md2xml = new ilMD2XML($this->getId(), $obj['obj_id'], $obj['type']);
1617 $md2xml->setExportMode(true);
1618 $md2xml->startExport();
1619 $a_xml_writer->appendXML($md2xml->getXML());
1620 }
1621 $a_xml_writer->xmlEndTag("StructureObject");
1622 }

References ilObject\getId().

Referenced by exportScorm().

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

◆ fixReload()

ilObjSCORM2004LearningModule::fixReload ( )

Definition at line 231 of file class.ilObjSCORM2004LearningModule.php.

231 {
232 $out = file_get_contents($this->imsmanifestFile);
233 $check ='/xmlns="http:\/\/www.imsglobal.org\/xsd\/imscp_v1p1"/';
234 $replace="xmlns=\"http://www.imsproject.org/xsd/imscp_rootv1p1p2\"";
235 $out=preg_replace($check, $replace, $out);
236 file_put_contents($this->imsmanifestFile, $out);
237 }

References $out.

Referenced by convert_1_2_to_2004().

+ Here is the caller graph for this function:

◆ getAttemptsForUser()

ilObjSCORM2004LearningModule::getAttemptsForUser (   $a_user_id)

get number of atttempts for a certain user and package

Reimplemented from ilObjSCORMLearningModule.

Definition at line 499 of file class.ilObjSCORM2004LearningModule.php.

499 {
500 global $ilDB;
501 $val_set = $ilDB->queryF('SELECT package_attempts FROM sahs_user WHERE user_id = %s AND obj_id = %s',
502 array('integer','integer'),
503 array($a_user_id, $this->getId()));
504
505 $val_rec = $ilDB->fetchAssoc($val_set);
506
507 if ($val_rec["package_attempts"] == null) {
508 $val_rec["package_attempts"]="";
509 }
510
511 return $val_rec["package_attempts"];
512 }

References $ilDB, and ilObject\getId().

+ Here is the call graph for this function:

◆ getCourseCompletionForUser()

ilObjSCORM2004LearningModule::getCourseCompletionForUser (   $a_user)

Reimplemented from ilObjSCORMLearningModule.

Definition at line 700 of file class.ilObjSCORM2004LearningModule.php.

701 {
702 global $ilDB, $ilUser;
703
704 $scos = array();
705 //get all SCO's of this object
706
707 $val_set = $ilDB->queryF('
708 SELECT cp_node.cp_node_id FROM cp_node,cp_resource,cp_item
709 WHERE cp_item.cp_node_id = cp_node.cp_node_id
710 AND cp_item.resourceid = cp_resource.id
711 AND scormtype = %s
712 AND nodename = %s
713 AND cp_node.slm_id = %s ',
714 array('text','text','integer'),
715 array('sco','item',$this->getId()));
716
717 while ($val_rec = $ilDB->fetchAssoc($val_set))
718 {
719 array_push($scos,$val_rec['cp_node_id']);
720 }
721
722
723 $scos_c = $scos;
724 //copy SCO_array
725 //check if all SCO's are completed
726 for ($i=0;$i<count($scos);$i++)
727 {
728
729 $val_set = $ilDB->queryF('
730 SELECT * FROM cmi_node
731 WHERE (user_id= %s
732 AND cp_node_id= %s
733 AND (completion_status=%s OR success_status=%s))',
734 array('integer','integer','text', 'text'),
735 array($a_user,$scos[$i],'completed','passed')
736 );
737
738 if ($ilDB->numRows($val_set) > 0) {
739 //delete from array
740 $key = array_search($scos[$i], $scos_c);
741 unset ($scos_c[$key]);
742 }
743
744 }
745 //check for completion
746 if (count($scos_c) == 0) {
747 $completion = true;
748 } else {
749 $completion = false;
750 }
751 return $completion;
752 }

References $ilDB, $ilUser, and ilObject\getId().

+ Here is the call graph for this function:

◆ getExportFiles()

ilObjSCORM2004LearningModule::getExportFiles ( )

Definition at line 1286 of file class.ilObjSCORM2004LearningModule.php.

1287 {
1288 $file = array();
1289
1290 require_once("./Modules/Scorm2004/classes/class.ilSCORM2004Export.php");
1291
1292 $export = new ilSCORM2004Export($this);
1293 foreach ($export->getSupportedExportTypes() as $type)
1294 {
1295 $dir = $export->getExportDirectoryForType($type);
1296 // quit if import dir not available
1297 if (!@is_dir($dir) or !is_writeable($dir))
1298 {
1299 continue;
1300 }
1301 // open directory
1302 $cdir = dir($dir);
1303
1304 // get files and save the in the array
1305 while ($entry = $cdir->read())
1306 {
1307 if ($entry != "." and
1308 $entry != ".." and
1309 (
1310 ereg("^[0-9]{10}_{2}[0-9]+_{2}(".$this->getType()."_)*[0-9]+\.zip\$", $entry) or
1311 ereg("^[0-9]{10}_{2}[0-9]+_{2}(".$this->getType()."_)*[0-9]+\.pdf\$", $entry) or
1312 ereg("^[0-9]{10}_{2}[0-9]+_{2}(".$this->getType()."_)*[0-9]+\.iso\$", $entry)
1313 ))
1314 {
1315 $file[$entry.$type] = array("type" => $type, "file" => $entry,
1316 "size" => filesize($dir."/".$entry));
1317 }
1318 }
1319
1320 // close import directory
1321 $cdir->close();
1322 }
1323
1324 // sort files
1325 ksort ($file);
1326 reset ($file);
1327 return $file;
1328 }
print $file

References $file, ilObject\$type, and ilObject\getType().

+ Here is the call graph for this function:

◆ getImportSequencing()

ilObjSCORM2004LearningModule::getImportSequencing ( )

Get import sequencing.

Returns
boolean import sequencing information

Definition at line 51 of file class.ilObjSCORM2004LearningModule.php.

52 {
53 return $this->import_sequencing;
54 }

Referenced by readObject().

+ Here is the caller graph for this function:

◆ getModuleVersionForUser()

ilObjSCORM2004LearningModule::getModuleVersionForUser (   $a_user_id)

get module version that tracking data for a user was recorded on

Reimplemented from ilObjSCORMLearningModule.

Definition at line 518 of file class.ilObjSCORM2004LearningModule.php.

518 {
519 global $ilDB;
520 $val_set = $ilDB->queryF('SELECT module_version FROM sahs_user WHERE user_id = %s AND obj_id = %s',
521 array('integer','integer'),
522 array($a_user_id, $this->getId()));
523
524 $val_rec = $ilDB->fetchAssoc($val_set);
525
526 if ($val_rec["module_version"] == null) {
527 $val_rec["module_version"]="";
528 }
529 return $val_rec["module_version"];
530 }

References $ilDB, and ilObject\getId().

+ Here is the call graph for this function:

◆ getPublicExportFile()

ilObjSCORM2004LearningModule::getPublicExportFile (   $a_type)

get public export file

Parameters
string$a_typetype ("xml" / "html")
Returns
string $a_file file name

Definition at line 1793 of file class.ilObjSCORM2004LearningModule.php.

1794 {
1795 return $this->public_export_file[$a_type];
1796 }

◆ getSequencingSettings()

ilObjSCORM2004LearningModule::getSequencingSettings ( )

Definition at line 1010 of file class.ilObjSCORM2004LearningModule.php.

1010 {
1011
1012 global $ilTabs;
1013 $ilTabs->setTabActive("sequencing");
1014
1015 include_once ("./Modules/Scorm2004/classes/seq_editor/class.ilSCORM2004Sequencing.php");
1016 $control_settings = new ilSCORM2004Sequencing($this->getId(),true);
1017
1018 return $control_settings;
1019 }

References ilObject\getId().

+ Here is the call graph for this function:

◆ getTrackedItems()

ilObjSCORM2004LearningModule::getTrackedItems ( )

get all tracked items of current user

Reimplemented from ilObjSCORMLearningModule.

Definition at line 401 of file class.ilObjSCORM2004LearningModule.php.

402 {
403 global $ilUser, $ilDB, $ilUser;
404
405 $sco_set = $ilDB->queryF('
406 SELECT DISTINCT cmi_node.cp_node_id id
407 FROM cp_node, cmi_node
408 WHERE slm_id = %s
409 AND cp_node.cp_node_id = cmi_node.cp_node_id
410 ORDER BY cp_node.cp_node_id ',
411 array('integer'),
412 array($this->getId()));
413
414 $items = array();
415
416 while($sco_rec = $ilDB->fetchAssoc($sco_set))
417 {
418 $item['id']=$sco_rec["id"];
419 $item['title']=self::_lookupItemTitle($sco_rec["id"]);
420 $items[count($items)] =$item;
421
422 }
423 return $items;
424 }

References $ilDB, $ilUser, _lookupItemTitle(), and ilObject\getId().

+ Here is the call graph for this function:

◆ getTrackingDataAgg()

ilObjSCORM2004LearningModule::getTrackingDataAgg (   $a_user_id,
  $raw = false 
)

Definition at line 427 of file class.ilObjSCORM2004LearningModule.php.

428 {
429 global $ilDB;
430
431 $scos = array();
432 $data = array();
433 //get all SCO's of this object
434
435 $val_set = $ilDB->queryF(
436 'SELECT cp_node_id FROM cp_node
437 WHERE nodename = %s
438 AND cp_node.slm_id = %s',
439 array('text', 'integer'),
440 array('item',$this->getId())
441 );
442 while($val_rec = $ilDB->fetchAssoc($val_set))
443 {
444 array_push($scos,$val_rec['cp_node_id']);
445 }
446
447 foreach ($scos as $sco)
448 {
449 $data_set = $ilDB->queryF('
450 SELECT c_timestamp last_access, total_time, success_status, completion_status,
451 c_raw, scaled, cp_node_id
452 FROM cmi_node
453 WHERE cp_node_id = %s
454 AND user_id = %s',
455 array('integer','integer'),
456 array($sco,$a_user_id)
457 );
458
459 while($data_rec = $ilDB->fetchAssoc($data_set))
460 {
461 if ($data_rec["success_status"]!="" && $data_rec["success_status"]!="unknown") {
462 $status = $data_rec["success_status"];
463 } else {
464 if ($data_rec["completion_status"]=="") {
465 $status="unknown";
466 } else {
467 $status = $data_rec["completion_status"];
468 }
469 }
470 if(!$raw)
471 {
472 $time = ilFormat::_secondsToString(self::_ISODurationToCentisec($data_rec["total_time"])/100);
473 $score = "";
474 if ($data_rec["c_raw"] != null) {
475 $score = $data_rec["c_raw"];
476 if ($data_rec["scaled"] != null) $score .= " = ";
477 }
478 if ($data_rec["scaled"] != null) $score .= ($data_rec["scaled"]*100)."%";
479 $title = self::_lookupItemTitle($data_rec["cp_node_id"]);
480 $last_access=ilDatePresentation::formatDate(new ilDateTime($data_rec['last_access'],IL_CAL_UNIX));
481 $data[] = array("user_id" => $data_rec["user_id"], "sco_id"=>$data_rec["cp_node_id"],
482 "score" => $score, "time" => $time, "status" => $status,"last_access"=>$last_access,"title"=>$title);
483 }
484 else
485 {
486 $data_rec["total_time"] = self::_ISODurationToCentisec($data_rec["total_time"])/100;
487 $data[$data_rec["cp_node_id"]] = $data_rec;
488 }
489 }
490 }
491
492
493 return $data;
494 }
const IL_CAL_UNIX
static formatDate(ilDateTime $date)
Format a date @access public.
@classDescription Date and time handling
_secondsToString($seconds, $force_with_seconds=false, $a_lng=null)
converts seconds to string: Long: 7 days 4 hour(s) ...
_ISODurationToCentisec($str)
convert ISO 8601 Timeperiods to centiseconds ta

References $data, $ilDB, ilObject\$title, _ISODurationToCentisec(), _lookupItemTitle(), ilFormat\_secondsToString(), ilDatePresentation\formatDate(), ilObject\getId(), and IL_CAL_UNIX.

+ Here is the call graph for this function:

◆ getTree()

ilObjSCORM2004LearningModule::getTree ( )

Definition at line 1002 of file class.ilObjSCORM2004LearningModule.php.

1003 {
1004 $this->slm_tree = new ilTree($this->getId());
1005 $this->slm_tree->setTreeTablePK("slm_id");
1006 $this->slm_tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node');
1007 return $this->slm_tree;
1008 }

References ilObject\getId().

Referenced by copyAuthoredContent().

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

◆ ilObjSCORM2004LearningModule()

ilObjSCORM2004LearningModule::ilObjSCORM2004LearningModule (   $a_id = 0,
  $a_call_by_reference = true 
)

Constructor @access public.

Parameters
integerreference_id or object_id
booleantreat the id as reference_id (true) or object_id (false)

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

31 {
32 $this->type = "sahs";
33 parent::ilObject($a_id,$a_call_by_reference);
34 }

◆ importSuccess()

ilObjSCORM2004LearningModule::importSuccess (   $a_file)

Reimplemented from ilObjSCORMLearningModule.

Definition at line 541 of file class.ilObjSCORM2004LearningModule.php.

541 {
542 global $ilDB, $ilUser;
543 include_once("./Services/Tracking/classes/class.ilLPStatus.php");
544 $scos = array();
545 //get all SCO's of this object ONLY RELEVANT!
546 include_once './Services/Object/classes/class.ilObjectLP.php';
547 $olp = ilObjectLP::getInstance($this->getId());
548 $collection = $olp->getCollectionInstance();
549 if($collection)
550 {
551 $scos = $collection->getItems();
552 }
553
554 $fhandle = fopen($a_file, "r");
555
556 $obj_id = $this->getID();
557 $users = array();
558
559 $fields = fgetcsv($fhandle, 4096, ';');
560 while(($csv_rows = fgetcsv($fhandle, 4096, ";")) !== FALSE) {
561 $data = array_combine($fields, $csv_rows);
562 //no check the format - sufficient to import users
563 if ($data["Login"]) $user_id = $this->get_user_id($data["Login"]);
564 if ($data["login"]) $user_id = $this->get_user_id($data["login"]);
565 //add mail in future
566 if ($data["user"] && is_int($data["user"])) $user_id = $data["user"];
567 if ($user_id>0) {
568 $last_access = ilUtil::now();
569 if ($data['Date']) {
570 $date_ex = explode('.', $data['Date']);
571 $last_access = implode('-', array($date_ex[2], $date_ex[1], $date_ex[0]));
572 }
573 if ($data['LastAccess']) {
574 $last_access = $data['LastAccess'];
575 }
576
578 // $users[] = $user_id;
579 if ($data["Status"]) {
580 if (is_int($data["Status"])) $status = $data["Status"];
584 }
585 $attempts = null;
586 if($data["Attempts"]) $attempts = $data["Attempts"];
587
588 $percentage_completed = 0;
589 if ($status == ilLPStatus::LP_STATUS_COMPLETED_NUM) $percentage_completed = 100;
590 if ($data['percentageCompletedSCOs']) $percentage_completed = $data['percentageCompletedSCOs'];
591
592 $sco_total_time_sec = null;
593 if ($data['SumTotal_timeSeconds']) $sco_total_time_sec = $data['SumTotal_timeSeconds'];
594
595 $this->importSuccessForSahsUser($user_id, $last_access, $status, $attempts, $percentage_completed, $sco_total_time_sec);
596
598 foreach ($scos as $sco_id)
599 {
600 $res = $ilDB->queryF('
601 SELECT * FROM cmi_node WHERE cp_node_id = %s AND user_id = %s AND (completion_status = %s OR success_status = %s)',
602 array('integer','integer','text','text'),
603 array($sco_id,$user_id,'completed','passed'));
604
605 if(!$ilDB->numRows($res))
606 {
607 $nextId = $ilDB->nextId('cmi_node');
608 $val_set = $ilDB->manipulateF('INSERT INTO cmi_node
609 (cp_node_id,user_id,completion_status,c_timestamp,cmi_node_id)
610 VALUES(%s,%s,%s,%s,%s)',
611 array('integer','integer','text','timestamp','integer'),
612 array($sco_id,$user_id,'completed',$last_access,$nextId));
613 } else {
614 $ilDB->update('cmi_node',
615 array(
616 'completion_status' => array('text', 'completed'),
617 'success_status' => array('text', ''),
618 'c_timestamp' => array('timestamp', $last_access)
619 ),
620 array(
621 'user_id' => array('integer', $user_id),
622 'cp_node_id' => array('integer', $sco_id)
623 )
624 );
625 }
626 }
627
628 }
629 } else {
630 //echo "Warning! User $csv_rows[0] does not exist in ILIAS. Data for this user was skipped.\n";
631 }
632 }
633
634 // update learning progress
635 include_once("./Services/Tracking/classes/class.ilLPStatusWrapper.php");
637
638 return 0;
639 }
_refreshStatus($a_obj_id, $a_users=null)
Set dirty.
const LP_STATUS_COMPLETED_NUM
const LP_STATUS_FAILED
const LP_STATUS_IN_PROGRESS_NUM
const LP_STATUS_NOT_ATTEMPTED_NUM
const LP_STATUS_FAILED_NUM
const LP_STATUS_NOT_ATTEMPTED
const LP_STATUS_IN_PROGRESS
importSuccessForSahsUser($user_id, $last_access, $status, $attempts=null, $percentage_completed=null, $sco_total_time_sec=null)
static getInstance($a_obj_id)
static now()
Return current timestamp in Y-m-d H:i:s format.

References $data, $ilDB, $ilUser, $res, ilLPStatusWrapper\_refreshStatus(), ilObjSCORMLearningModule\get_user_id(), ilObject\getId(), ilObjectLP\getInstance(), ilObjSCORMLearningModule\importSuccessForSahsUser(), ilLPStatus\LP_STATUS_COMPLETED_NUM, ilLPStatus\LP_STATUS_FAILED, ilLPStatus\LP_STATUS_FAILED_NUM, ilLPStatus\LP_STATUS_IN_PROGRESS, ilLPStatus\LP_STATUS_IN_PROGRESS_NUM, ilLPStatus\LP_STATUS_NOT_ATTEMPTED, ilLPStatus\LP_STATUS_NOT_ATTEMPTED_NUM, and ilUtil\now().

+ Here is the call graph for this function:

◆ prepareHTMLExporter()

ilObjSCORM2004LearningModule::prepareHTMLExporter (   $a_target_dir)

Prepare HTML exporter.

Parameters

return

Definition at line 1748 of file class.ilObjSCORM2004LearningModule.php.

1749 {
1750 // system style html exporter
1751 include_once("./Services/Style/classes/class.ilSystemStyleHTMLExport.php");
1752 $this->sys_style_html_export = new ilSystemStyleHTMLExport($a_target_dir);
1753 $this->sys_style_html_export->export();
1754
1755 // init co page html exporter
1756 include_once("./Services/COPage/classes/class.ilCOPageHTMLExport.php");
1757 $this->co_page_html_export = new ilCOPageHTMLExport($a_target_dir);
1758 include_once("./Services/Style/classes/class.ilObjStyleSheet.php");
1759 $this->co_page_html_export->setContentStyleId(
1761 $this->co_page_html_export->createDirectories();
1762 $this->co_page_html_export->exportStyles();
1763 $this->co_page_html_export->exportSupportScripts();
1764
1765 include_once("./Services/MediaObjects/classes/class.ilPlayerUtil.php");
1766 $this->flv_dir = $a_target_dir."/".ilPlayerUtil::getFlashVideoPlayerDirectory();
1767
1768 ilUtil::makeDir($a_target_dir.'/css/yahoo');
1769 ilUtil::makeDir($a_target_dir.'/objects');
1770 ilUtil::makeDir($a_target_dir.'/players');
1771 ilUtil::makeDir($this->flv_dir);
1772
1773 include_once("./Services/MediaObjects/classes/class.ilPlayerUtil.php");
1774// copy(ilPlayerUtil::getFlashVideoPlayerFilename(true),
1775// $a_target_dir.'/js/'.ilPlayerUtil::getFlashVideoPlayerFilename());
1777
1778 copy('./Modules/Scorm2004/scripts/scorm_2004.js',$a_target_dir.'/js/scorm.js');
1779 copy('./Modules/Scorm2004/scripts/pager.js',$a_target_dir.'/js/pager.js');
1780 copy('./Modules/Scorm2004/scripts/questions/pure.js',$a_target_dir.'/js/pure.js');
1781 copy('./Modules/Scorm2004/scripts/questions/question_handling.js',
1782 $a_target_dir.'/js/question_handling.js');
1783
1784 }
HTML export class for pages.
static getEffectiveContentStyleId($a_style_id, $a_type="")
Get effective Style Id.
static getFlashVideoPlayerDirectory()
Get flash video player directory.
copyPlayerFilesToTargetDirectory($a_target_dir)
Copy css files to target dir.
HTML export class for system styles.

References ilPlayerUtil\copyPlayerFilesToTargetDirectory(), ilObjStyleSheet\getEffectiveContentStyleId(), ilPlayerUtil\getFlashVideoPlayerDirectory(), ilObjSAHSLearningModule\getStyleSheetId(), and ilUtil\makeDir().

Referenced by exportHTMLScoObjects().

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

◆ readObject()

ilObjSCORM2004LearningModule::readObject ( )

read manifest file @access public

Reimplemented from ilObjSCORMLearningModule.

Definition at line 73 of file class.ilObjSCORM2004LearningModule.php.

74 {
75 global $ilias, $lng ,$ilDB;
76
77 //check for MYSQL 4.1 and json_encode,json_decode
78 if (!function_exists('json_encode') || !function_exists('json_decode') || ($ilDB->getDBType() == 'mysql' && !$ilDB->isMysql4_1OrHigher())) {
79 $ilias->raiseError($lng->txt('scplayer_phpmysqlcheck'),$ilias->error_obj->WARNING);
80 }
81
82 $needs_convert = false;
83
84 // convert imsmanifest.xml file in iso to utf8 if needed
85
86 $manifest_file = $this->getDataDirectory()."/imsmanifest.xml";
87
88 // check if manifestfile exists and space left on device...
89 $check_for_manifest_file = is_file($manifest_file);
90
91
92
93 // if no manifestfile
94 if (!$check_for_manifest_file)
95 {
96 $this->ilias->raiseError($this->lng->txt("Manifestfile $manifest_file not found!"), $this->ilias->error_obj->MESSAGE);
97 return;
98 }
99
100
101 if ($check_for_manifest_file)
102 {
103 $manifest_file_array = file($manifest_file);
104
105 foreach($manifest_file_array as $mfa)
106 {
107 // if (seems_not_utf8($mfa))
108 if (@iconv('UTF-8', 'UTF-8', $mfa) != $mfa)
109 {
110 $needs_convert = true;
111 break;
112 }
113 }
114
115
116
117 // to copy the file we need some extraspace, counted in bytes *2 ... we need 2 copies....
118 $estimated_manifest_filesize = filesize($manifest_file) * 2;
119
120 // i deactivated this, because it seems to fail on some windows systems (see bug #1795)
121 //$check_disc_free = disk_free_space($this->getDataDirectory()) - $estimated_manifest_filesize;
122 $check_disc_free = 2;
123 }
124
125
126 // if $manifest_file needs to be converted to UTF8
127 if ($needs_convert)
128 {
129 // if file exists and enough space left on device
130 if ($check_for_manifest_file && ($check_disc_free > 1))
131 {
132
133 // create backup from original
134 if (!copy($manifest_file, $manifest_file.".old"))
135 {
136 echo "Failed to copy $manifest_file...<br>\n";
137 }
138
139 // read backupfile, convert each line to utf8, write line to new file
140 // php < 4.3 style
141 $f_write_handler = fopen($manifest_file.".new", "w");
142 $f_read_handler = fopen($manifest_file.".old", "r");
143 while (!feof($f_read_handler))
144 {
145 $zeile = fgets($f_read_handler);
146 //echo mb_detect_encoding($zeile);
147 fputs($f_write_handler, utf8_encode($zeile));
148 }
149 fclose($f_read_handler);
150 fclose($f_write_handler);
151
152 // copy new utf8-file to imsmanifest.xml
153 if (!copy($manifest_file.".new", $manifest_file))
154 {
155 echo "Failed to copy $manifest_file...<br>\n";
156 }
157
158 if (!@is_file($manifest_file))
159 {
160 $this->ilias->raiseError($this->lng->txt("cont_no_manifest"),
161 $this->ilias->error_obj->WARNING);
162 }
163 }
164 else
165 {
166 // gives out the specific error
167
168 if (!($check_disc_free > 1))
169 $this->ilias->raiseError($this->lng->txt("Not enough space left on device!"),$this->ilias->error_obj->MESSAGE);
170 return;
171 }
172
173 }
174 else
175 {
176 // check whether file starts with BOM (that confuses some sax parsers, see bug #1795)
177 $hmani = fopen($manifest_file, "r");
178 $start = fread($hmani, 3);
179 if (strtolower(bin2hex($start)) == "efbbbf")
180 {
181 $f_write_handler = fopen($manifest_file.".new", "w");
182 while (!feof($hmani))
183 {
184 $n = fread($hmani, 900);
185 fputs($f_write_handler, $n);
186 }
187 fclose($f_write_handler);
188 fclose($hmani);
189
190 // copy new utf8-file to imsmanifest.xml
191 if (!copy($manifest_file.".new", $manifest_file))
192 {
193 echo "Failed to copy $manifest_file...<br>\n";
194 }
195 }
196 else
197 {
198 fclose($hmani);
199 }
200 }
201
202 //validate the XML-Files in the SCORM-Package
203 if ($_POST["validate"] == "y")
204 {
205 if (!$this->validate($this->getDataDirectory()))
206 {
207 $this->ilias->raiseError("<b>Validation Error(s):</b><br>".$this->getValidationSummary(),
208 $this->ilias->error_obj->WARNING);
209 }
210 }
211
212
213 //check for SCORM 1.2
214 $this->convert_1_2_to_2004($manifest_file);
215
216 // start SCORM 2004 package parser/importer
217 include_once ("./Modules/Scorm2004/classes/ilSCORM13Package.php");
218 $newPack = new ilSCORM13Package();
219 if ($this->getEditable())
220 {
221 return $newPack->il_importLM($this,$this->getDataDirectory(),
222 $this->getImportSequencing());
223 }
224 else
225 {
226 return $newPack->il_import($this->getDataDirectory(),$this->getId(),$this->ilias,$_POST["validate"]);
227 }
228 }
$n
Definition: RandomTest.php:80
validate($directory)
Validate all XML-Files in a SCOM-Directory.
$_POST['username']
Definition: cron.php:12
redirection script todo: (a better solution should control the processing via a xml file)

References $_POST, $ilDB, ilObject\$ilias, ilObject\$lng, $n, convert_1_2_to_2004(), ilObjSAHSLearningModule\getDataDirectory(), ilObjSAHSLearningModule\getEditable(), ilObject\getId(), getImportSequencing(), ilObjSCORMLearningModule\getValidationSummary(), and validate().

+ Here is the call graph for this function:

◆ setImportSequencing()

ilObjSCORM2004LearningModule::setImportSequencing (   $a_val)

Set import sequencing.

Parameters
boolean$a_valimport sequencing information

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

42 {
43 $this->import_sequencing = $a_val;
44 }

◆ setPublicExportFile()

ilObjSCORM2004LearningModule::setPublicExportFile (   $a_type,
  $a_file 
)

Definition at line 1818 of file class.ilObjSCORM2004LearningModule.php.

1819 {
1820 $this->public_export_file[$a_type] = $a_file;
1821 }

◆ updateSequencingSettings()

ilObjSCORM2004LearningModule::updateSequencingSettings ( )

Definition at line 1021 of file class.ilObjSCORM2004LearningModule.php.

1021 {
1022 include_once ("./Modules/Scorm2004/classes/seq_editor/class.ilSCORM2004Sequencing.php");
1023
1024 $control_settings = new ilSCORM2004Sequencing($this->getId(),true);
1025 $control_settings->setChoice(ilUtil::yn2tf($_POST["choice"]));
1026 $control_settings->setFlow(ilUtil::yn2tf($_POST["flow"]));
1027 $control_settings->setForwardOnly(ilUtil::yn2tf($_POST["forwardonly"]));
1028 $control_settings->insert();
1029
1030 return true;
1031 }
static yn2tf($a_yn)
convert "y"/"n" to true/false

References $_POST, ilObject\getId(), and ilUtil\yn2tf().

+ Here is the call graph for this function:

◆ validate()

ilObjSCORM2004LearningModule::validate (   $directory)

Validate all XML-Files in a SCOM-Directory.

@access public

Returns
boolean true if all XML-Files are wellfomred and valid

Reimplemented from ilObjSCORMLearningModule.

Definition at line 62 of file class.ilObjSCORM2004LearningModule.php.

63 {
64 //$this->validator =& new ilObjSCORMValidator($directory);
65 //$returnValue = $this->validator->validate();
66 return true;
67 }

Referenced by readObject().

+ Here is the caller graph for this function:

Field Documentation

◆ $validator

ilObjSCORM2004LearningModule::$validator

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

◆ CONVERT_XSL

const ilObjSCORM2004LearningModule::CONVERT_XSL = './Modules/Scorm2004/templates/xsl/op/scorm12To2004.xsl'

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

◆ WRAPPER_HTML

const ilObjSCORM2004LearningModule::WRAPPER_HTML = './Modules/Scorm2004/scripts/converter/GenericRunTimeWrapper1.0_aadlc/GenericRunTimeWrapper.htm'

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

◆ WRAPPER_JS

const ilObjSCORM2004LearningModule::WRAPPER_JS = './Modules/Scorm2004/scripts/converter/GenericRunTimeWrapper1.0_aadlc/SCOPlayerWrapper.js'

Definition at line 22 of file class.ilObjSCORM2004LearningModule.php.


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