ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
ilObjSCORM2004LearningModule Class Reference

Class ilObjSCORM2004LearningModule. More...

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

Public Member Functions

 __construct ($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)
 
 getCourseCompletionForUser ($a_user)
 
 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
 __construct ($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 ()
 
 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)
 
 getLastVisited ($user_id)
 
 deleteTrackingDataOfUsers ($a_users)
 
- Public Member Functions inherited from ilObjSAHSLearningModule
 __construct ($a_id=0, $a_call_by_reference=true)
 Constructor @access public. More...
 
 create ($upload=false)
 create file based lm More...
 
 read ()
 read object 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 module version 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)
 
 getMasteryScore ()
 get mastery_score More...
 
 setMasteryScore ($a_mastery_score)
 set mastery_score More...
 
 checkMasteryScoreValues ()
 check mastery_score / min_normalized_measure of SCOs (SCORM 1.2) / objectives (SCORM 2004) More...
 
 getMasteryScoreValues ()
 get mastery_score_values More...
 
 update ()
 update values for mastery_score / min_normalized_measure in database - not requested 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...
 
 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, $a_omit_tree=false)
 Clone scorm object. More...
 
 zipLmForOfflineMode ()
 
- Public Member Functions inherited from ilObject
 __construct ($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 ()
 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 ()
 
 setOwner ($a_owner)
 set object owner More...
 
 getCreateDate ()
 get create date @access public More...
 
 getLastUpdateDate ()
 get last update date @access public More...
 
 getDiskUsage ()
 
 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...
 
 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...
 
 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...
 
 getPossibleSubObjects ($a_filter=true)
 get all possible subobjects of this type the object can decide which types of subobjects are possible jut in time overwrite if the decision distinguish from standard model More...
 

Static Public Member Functions

static _lookupLastAccess ($a_obj_id, $a_usr_id)
 Return the last access timestamp for a given user. More...
 
static _ISODurationToCentisec ($str)
 convert ISO 8601 Timeperiods to centiseconds ta 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 _getTrackingItems ($a_obj_id)
 get all tracking items of scorm object 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 _getTrackingItems ($a_obj_id)
 get all tracking items of scorm object @access static More...
 
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 _getScoresForUser ($a_item_id, $a_user_id)
 
- Static Public Member Functions inherited from ilObjSAHSLearningModule
static _lookupOnline ($a_id)
 check wether scorm module is online More...
 
static getAffectiveLocalization ($a_id)
 Get affective localization. More...
 
static _lookupSubType ($a_obj_id)
 lookup subtype id (scorm, aicc, hacp) More...
 
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 _lookupImportId ($a_obj_id)
 
static _lookupOwnerName ($a_owner_id)
 lookup owner name for owner id More...
 
static _getIdForImportId ($a_import_id)
 get current object id for import id (static) More...
 
static _getAllReferences ($a_id)
 get all reference ids of object More...
 
static _lookupTitle ($a_id)
 lookup object title More...
 
static _lookupOwner ($a_id)
 lookup object owner More...
 
static _getIdsForTitle ($title, $type='', $partialmatch=false)
 
static _lookupDescription ($a_id)
 lookup object description More...
 
static _lookupLastUpdate ($a_id, $a_as_string=false)
 lookup last update More...
 
static _getLastUpdateOfObjects ($a_objs)
 Get last update for a set of media objects. More...
 
static _lookupObjId ($a_id)
 
static _setDeletedDate ($a_ref_id)
 only called in ilTree::saveSubTree More...
 
static setDeletedDates ($a_ref_ids)
 Set deleted date @global type $ilDB. More...
 
static _resetDeletedDate ($a_ref_id)
 only called in ilObjectGUI::insertSavedNodes More...
 
static _lookupDeletedDate ($a_ref_id)
 only called in ilObjectGUI::insertSavedNodes More...
 
static _writeTitle ($a_obj_id, $a_title)
 write title to db (static) More...
 
static _writeDescription ($a_obj_id, $a_desc)
 write description to db (static) More...
 
static _writeImportId ($a_obj_id, $a_import_id)
 write import id to db (static) More...
 
static _lookupType ($a_id, $a_reference=false)
 lookup object type More...
 
static _isInTrash ($a_ref_id)
 checks wether object is in trash More...
 
static _hasUntrashedReference ($a_obj_id)
 checks wether an object has at least one reference that is not in trash More...
 
static _lookupObjectId ($a_ref_id)
 lookup object id More...
 
static _getObjectsDataForType ($a_type, $a_omit_trash=false)
 get all objects of a certain type 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 fixMissingTitles ($a_type, array &$a_obj_title_map)
 Try to fix missing object titles. More...
 
static _lookupCreationDate ($a_id)
 Lookup creation date. 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
 

Detailed Description

Constructor & Destructor Documentation

◆ __construct()

ilObjSCORM2004LearningModule::__construct (   $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)

Reimplemented from ilObjSCORMLearningModule.

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

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

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 783 of file class.ilObjSCORM2004LearningModule.php.

784 {
785 global $ilDB, $ilUser;
786 $scos = array();
787 //get all SCO's of the object
788
789 $val_set = $ilDB->queryF('
790 SELECT cp_node.cp_node_id FROM cp_node,cp_resource,cp_item
791 WHERE cp_item.cp_node_id = cp_node.cp_node_id
792 AND cp_item.resourceid = cp_resource.id
793 AND scormtype = %s
794 AND nodename = %s
795 AND cp_node.slm_id = %s',
796 array('text','text','integer'), array('sco' ,'item',$a_id));
797 while ($val_rec = $ilDB->fetchAssoc($val_set))
798 {
799 array_push($scos,$val_rec['cp_node_id']);
800 }
801
802 $scos_c = $scos;
803 //copy SCO_array
804 //check if all SCO's are completed
805 for ($i=0;$i<count($scos);$i++)
806 {
807
808 $val_set = $ilDB->queryF('
809 SELECT * FROM cmi_node
810 WHERE (user_id= %s
811 AND cp_node_id= %s
812 AND (completion_status = %s OR success_status = %s))',
813 array('integer','integer','text','text'),
814 array($a_user,$scos[$i],'completed','passed'));
815
816 if ($ilDB->numRows($val_set) > 0)
817 {
818 //delete from array
819 $key = array_search($scos[$i], $scos_c);
820 unset ($scos_c[$key]);
821 }
822
823 }
824 //check for completion
825 if (count($scos_c) == 0) {
826 $completion = true;
827 } else {
828 $completion = false;
829 }
830 return $completion;
831 }
global $ilDB
$ilUser
Definition: imgupload.php:18

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 1853 of file class.ilObjSCORM2004LearningModule.php.

1854 {
1855 global $ilDB;
1856
1857 $scos = array();
1858
1859 $result = $ilDB->query(
1860 'SELECT cp_node.cp_node_id '
1861 .'FROM cp_node, cp_resource, cp_item '
1862 .'WHERE cp_item.cp_node_id = cp_node.cp_node_id '
1863 .'AND cp_item.resourceId = cp_resource.id '
1864 .'AND scormType = '.$ilDB->quote('sco', 'text').' '
1865 .'AND nodeName = '.$ilDB->quote('item', 'text').' '
1866 .'AND cp_node.slm_id = '.$ilDB->quote($a_id, 'integer').' '
1867 .'GROUP BY cp_node.cp_node_id'
1868 );
1869
1870 while($row = $ilDB->fetchAssoc($result))
1871 {
1872 array_push($scos, $row['cp_node_id']);
1873 }
1874
1875 $set = 0; //numbers of SCO that set cmi.score.scaled
1876 $max = null;
1877 for($i = 0; $i < count($scos); $i++)
1878 {
1879 $res = $ilDB->queryF(
1880 'SELECT c_max FROM cmi_node WHERE (user_id = %s AND cp_node_id = %s)',
1881 array('integer', 'integer'),
1882 array($a_user, $scos[$i])
1883 );
1884
1885 if($ilDB->numRows($res) > 0)
1886 {
1887 $row = $ilDB->fetchAssoc($res);
1888 if($row['c_max'] != null)
1889 {
1890 $set++;
1891 $max = $row['c_max'];
1892 }
1893 }
1894 }
1895 $retVal = ($set == 1) ? $max : null;
1896
1897 return $retVal;
1898 }
$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 964 of file class.ilObjSCORM2004LearningModule.php.

965 {
966 global $ilDB;
967
968 $status_set = $ilDB->queryF('
969 SELECT * FROM cmi_gobjective
970 WHERE scope_id = %s
971 AND objective_id = %s
972 AND user_id = %s',
973 array('integer','text','integer'),
974 array($a_obj_id,'course_overall_status',$a_user_id)
975 );
976
977 if ($status_rec = $ilDB->fetchAssoc($status_set))
978 {
979 return $status_rec["measure"];
980 }
981
982 return false;
983 }

References $ilDB.

◆ _getSatisfied()

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

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

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

References $ilDB.

◆ _getScores2004ForUser()

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

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

1900 {
1901 global $ilDB;
1902 $retAr = array("raw" => null, "max" => null, "scaled" => null);
1903 $val_set = $ilDB->queryF("SELECT c_raw, c_max, scaled FROM cmi_node WHERE (user_id = %s AND cp_node_id = %s)",
1904 array('integer', 'integer'),
1905 array($a_user, $a_cp_node_id)
1906 );
1907 if ($val_set->numRows()>0)
1908 {
1909 $val_rec = $ilDB->fetchAssoc($val_set);
1910 $retAr["raw"] = $val_rec['c_raw'];
1911 $retAr["max"] = $val_rec['c_max'];
1912 $retAr["scaled"] = $val_rec['scaled'];
1913 if ($val_rec['scaled']==null && $val_rec['c_raw']!=null && $val_rec['c_max']!=null) {
1914 $retAr["scaled"] = ($val_rec['c_raw'] / $val_rec['c_max']);
1915 }
1916 }
1917 return $retAr;
1918 }

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 921 of file class.ilObjSCORM2004LearningModule.php.

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

References $ilDB.

◆ _getTrackingItems()

static ilObjSCORM2004LearningModule::_getTrackingItems (   $a_obj_id)
static

get all tracking items of scorm object

currently a for learning progress only

Reimplemented from ilObjSCORMLearningModule.

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

881 {
882 global $ilDB;
883
884
885 $item_set = $ilDB->queryF('
886 SELECT cp_item.* FROM cp_node, cp_item WHERE slm_id = %s
887 AND cp_node.cp_node_id = cp_item.cp_node_id
888 ORDER BY cp_node.cp_node_id ',
889 array('integer'),
890 array($a_obj_id)
891 );
892
893 $items = array();
894 while ($item_rec = $ilDB->fetchAssoc($item_set))
895 {
896
897 $s2 = $ilDB->queryF('
898 SELECT cp_resource.* FROM cp_node, cp_resource
899 WHERE slm_id = %s
900 AND cp_node.cp_node_id = cp_resource.cp_node_id
901 AND cp_resource.id = %s ',
902 array('integer','text'),
903 array($a_obj_id,$item_rec["resourceid"])
904 );
905
906
907 if ($res = $ilDB->fetchAssoc($s2))
908
909 {
910 if ($res["scormtype"] == "sco")
911 {
912 $items[] = array("id" => $item_rec["cp_node_id"],
913 "title" => $item_rec["title"]);
914 }
915 }
916 }
917
918 return $items;
919 }

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 840 of file class.ilObjSCORM2004LearningModule.php.

841 {
842 global $ilDB, $ilUser;
843 $scos = array();
844
845 $val_set = $ilDB->queryF("SELECT cp_node.cp_node_id FROM cp_node,cp_resource,cp_item WHERE".
846 " 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",
847 array('integer'),
848 array($a_id)
849 );
850 while ($val_rec = $ilDB->fetchAssoc($val_set))
851 {
852 array_push($scos,$val_rec['cp_node_id']);
853 }
854 $set = 0; //numbers of SCO that set cmi.score.scaled
855 $scaled = null;
856 for ($i=0;$i<count($scos);$i++)
857 {
858 $val_set = $ilDB->queryF("SELECT scaled FROM cmi_node WHERE (user_id = %s AND cp_node_id = %s)",
859 array('integer', 'integer'),
860 array($a_user, $scos[$i])
861 );
862 if ($val_set->numRows()>0)
863 {
864 $val_rec = $ilDB->fetchAssoc($val_set);
865 if ($val_rec['scaled']!=NULL) {
866 $set++;
867 $scaled = $val_rec['scaled'];
868 }
869 }
870 }
871 $retVal = ($set == 1) ? $scaled : null ;
872 return $retVal;
873 }

References $ilDB, and $ilUser.

Referenced by ilObjSAHSLearningModule\getPointsInPercent().

+ Here is the caller graph for this function:

◆ _ISODurationToCentisec()

static ilObjSCORM2004LearningModule::_ISODurationToCentisec (   $str)
static

convert ISO 8601 Timeperiods to centiseconds ta

@access static

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

670 {
671 $aV = array(0, 0, 0, 0, 0, 0);
672 $bErr = false;
673 $bTFound = false;
674 if (strpos($str,"P") != 0) {
675 $bErr = true;
676 }
677 if (!$bErr) {
678 $aT = array("Y", "M", "D", "H", "M", "S");
679 $p = 0;
680 $i = 0;
681 $str = substr($str,1);
682 for ($i = 0; $i < count($aT); $i++) {
683 if (strpos($str,"T")===0) {
684 $str = substr($str,1);
685 $i = max($i, 3);
686 $bTFound = true;
687 }
688 $p = strpos($str,$aT[$i]);
689
690 if ($p > -1) {
691 if ($i == 1 && strpos($str,"T") > -1 && strpos($str,"T") < $p) {
692 continue;
693 }
694 if ($aT[$i] == "S") {
695 $aV[$i] = substr($str,0, $p);
696
697 } else {
698 $aV[$i] = intval(substr($str,0, $p));
699 }
700 if (!is_numeric($aV[$i])) {
701 $bErr = true;
702 break;
703 } else if ($i > 2 && !$bTFound) {
704 $bErr = true;
705 break;
706 }
707 $str = substr($str,$p + 1);
708
709 }
710 }
711 if (!$bErr && strlen($str) != 0) {
712 $bErr = true;
713
714 }
715 }
716
717 if ($bErr) {
718 return;
719 }
720 return $aV[0] * 3155760000 + $aV[1] * 262980000 + $aV[2] * 8640000 + $aV[3] * 360000 + $aV[4] * 6000 + round($aV[5] * 100);
721 }

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 985 of file class.ilObjSCORM2004LearningModule.php.

986 {
987 global $ilDB;
988
989 $r = $ilDB->queryF('
990 SELECT * FROM cp_item
991 WHERE cp_node_id = %s',
992 array('integer'),
993 array($a_node_id)
994 );
995
996 if ($i = $ilDB->fetchAssoc($r))
997 {
998 return $i["title"];
999 }
1000 return "";
1001 }
$r
Definition: example_031.php:79

References $ilDB, and $r.

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
$ret
Definition: parser.php:6

References $ilDB, $ilLog, $r, $ret, $schema, 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 1926 of file class.ilObjSCORM2004LearningModule.php.

1927 {
1928 global $ilias;
1929
1930 // set/copy stylesheet
1931 include_once("./Services/Style/Content/classes/class.ilObjStyleSheet.php");
1932 $style_id = $this->getStyleSheetId();
1933 if ($style_id > 0 && !ilObjStyleSheet::_lookupStandard($style_id))
1934 {
1935 $style_obj = $ilias->obj_factory->getInstanceByObjId($style_id);
1936 $new_id = $style_obj->ilClone();
1937 $a_new_obj->setStyleSheetId($new_id);
1938 $a_new_obj->update();
1939 }
1940
1941 $a_new_obj->createScorm2004Tree();
1942 $source_tree = $this->getTree();
1943 $target_tree_root_id = $a_new_obj->getTree()->readRootId();
1944 $childs = $source_tree->getChilds($source_tree->readRootId());
1945 $a_copied_nodes = array();
1946 include_once("./Modules/Scorm2004/classes/class.ilSCORM2004Node.php");
1947 foreach ($childs as $c)
1948 {
1949 ilSCORM2004Node::pasteTree($a_new_obj, $c["child"], $target_tree_root_id,
1950 IL_LAST_NODE, "", $a_copied_nodes, true, false);
1951 }
1952 }
const IL_LAST_NODE
Definition: class.ilTree.php:4
getStyleSheetId()
get ID of assigned style sheet object
static _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, $a_source_parent_type="")
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 1006 of file class.ilObjSCORM2004LearningModule.php.

1007 {
1008 include_once("./Modules/Scorm2004/classes/class.ilSCORM2004Tree.php");
1009 $this->slm_tree = new ilSCORM2004Tree($this->getId());
1010
1011 //$this->slm_tree = new ilTree($this->getId());
1012 //$this->slm_tree->setTreeTablePK("slm_id");
1013 //$this->slm_tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node');
1014 $this->slm_tree->addTree($this->getId(), 1);
1015
1016 //add seqinfo for rootNode
1017 include_once ("./Modules/Scorm2004/classes/seq_editor/class.ilSCORM2004Sequencing.php");
1018 $seq_info = new ilSCORM2004Sequencing($this->getId(),true);
1019 $seq_info->insert();
1020 }
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 include_once("./Services/Tracking/classes/class.ilChangeEvent.php");
391
392 foreach($a_users as $user)
393 {
396 }
397 }
static _deleteReadEventsForUsers($a_obj_id, array $a_user_ids)
static _updateStatus($a_obj_id, $a_usr_id, $a_obj=null, $a_percentage=false, $a_force_raise=false)
Update status.
static removeCMIDataForUserAndPackage($user_id, $packageId)

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

Referenced by importSuccess().

+ Here is the call graph for this function:
+ Here is the caller 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 1061 of file class.ilObjSCORM2004LearningModule.php.

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

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 1822 of file class.ilObjSCORM2004LearningModule.php.

1823 {
1824 include_once("./Modules/File/classes/class.ilObjFile.php");
1825
1826 foreach ($this->file_ids as $file_id)
1827 {
1828 $expLog->write(date("[y-m-d H:i:s] ")."File Item ".$file_id);
1829 $file_obj = new ilObjFile($file_id, false);
1830 $file_obj->export($a_target_dir);
1831 unset($file_obj);
1832 }
1833 }
date( 'd-M-Y', $objPHPExcel->getProperties() ->getCreated())
Class ilObjFile.

References date.

◆ exportHTML()

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

Export SCORM package to HTML.

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

1547 {
1548// $a_xml_writer = new ilXmlWriter;
1549 // set dtd definition
1550// $a_xml_writer->xmlSetDtdDef("<!DOCTYPE ContentObject SYSTEM \"http://www.ilias.de/download/dtd/ilias_co_3_7.dtd\">");
1551
1552 // set generated comment
1553// $a_xml_writer->xmlSetGenCmt("Export of ILIAS Content Module ". $this->getId()." of installation ".$a_inst.".");
1554
1555 // set xml header
1556// $a_xml_writer->xmlHeader();
1557
1558// global $ilBench;
1559
1560// $a_xml_writer->xmlStartTag("ContentObject", array("Type"=>"SCORM2004LearningModule"));
1561
1562// $expLog->write(date("[y-m-d H:i:s] ")."Start Export Sco Objects");
1563 $this->exportHTMLScoObjects($a_inst, $a_target_dir, $expLog, $a_one_file);
1564// $expLog->write(date("[y-m-d H:i:s] ")."Finished Export Sco Objects");
1565
1566// $a_xml_writer->xmlEndTag("ContentObject");
1567
1568
1569 /*$toc_tpl = new ilTemplate("tpl.main.html", true, true, false);
1570 $style_name = $ilUser->prefs["style"].".css";
1571 $tpl->setCurrentBlock("css_file");
1572 $tpl->setVariable("CSS_FILE", $style_name);
1573 $tpl->parseCurrentBlock();*/
1574
1575 if ($a_one_file == "")
1576 {
1577 include_once("./Modules/Scorm2004/classes/class.ilContObjectManifestBuilder.php");
1578 $manifestBuilder = new ilContObjectManifestBuilder($this);
1579 $manifestBuilder->buildManifest('12');
1580
1581 include_once("Services/Frameset/classes/class.ilFramesetGUI.php");
1582 $fs_gui = new ilFramesetGUI();
1583 $fs_gui->setFramesetTitle($this->getTitle());
1584 $fs_gui->setMainFrameSource("");
1585 $fs_gui->setSideFrameSource("toc.html");
1586 $fs_gui->setMainFrameName("content");
1587 $fs_gui->setSideFrameName("toc");
1588 $output = $fs_gui->get();
1589 fputs(fopen($a_target_dir.'/index.html','w+'),$output);
1590
1591 $xsl = file_get_contents("./Modules/Scorm2004/templates/xsl/module.xsl");
1592 $xml = simplexml_load_string($manifestBuilder->writer->xmlDumpMem());
1593 $args = array( '/_xml' => $xml->organizations->organization->asXml(), '/_xsl' => $xsl );
1594 $xh = xslt_create();
1595 $output = xslt_process($xh,"arg:/_xml","arg:/_xsl",NULL,$args,NULL);
1596 xslt_free($xh);
1597 fputs(fopen($a_target_dir.'/toc.html','w+'),$output);
1598 }
1599// $a_xml_writer->_XmlWriter;
1600 }
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
if(!is_dir( $entity_dir)) exit("Fatal Error ([A-Za-z0-9]+)\s+" &#(? foreach( $entity_files as $file) $output
xslt_free(&$proc)
xslt_create()

References $output, 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 1465 of file class.ilObjSCORM2004LearningModule.php.

1466 {
1467 global $ilBench;
1468 $tree = new ilTree($this->getId());
1469 $tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node');
1470 $tree->setTreeTablePK("slm_id");
1471 foreach($tree->getSubTree($tree->getNodeData($tree->getRootId()),true,'sco') as $sco)
1472 {
1473 include_once("./Modules/Scorm2004/classes/class.ilSCORM2004Sco.php");
1474 $sco_folder = $a_target_dir."/".$sco['obj_id'];
1475 ilUtil::makeDir($sco_folder);
1476 $node = new ilSCORM2004Sco($this,$sco['obj_id']);
1477 $node->exportHTML4PDF($a_inst, $sco_folder, $expLog);
1478 }
1479 }
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 1536 of file class.ilObjSCORM2004LearningModule.php.

1537 {
1538 $one_file = fopen($a_target_dir.'/index.html','w+');
1539 $this->exportHTML($a_inst, $a_target_dir, $expLog, $one_file);
1540 fclose($one_file);
1541 }
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 1683 of file class.ilObjSCORM2004LearningModule.php.

1684 {
1685 global $ilBench;
1686
1687 $tree = new ilTree($this->getId());
1688 $tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node');
1689 $tree->setTreeTablePK("slm_id");
1690
1691 // copy all necessary files now
1692 if ($a_one_file != "")
1693 {
1694 $this->prepareHTMLExporter($a_target_dir);
1695
1696 // put header into file
1697 $sco_tpl = new ilTemplate("tpl.sco.html", true, true, "Modules/Scorm2004");
1698 include_once("./Services/COPage/classes/class.ilCOPageHTMLExport.php");
1699 $page_html_export = new ilCOPageHTMLExport($a_target_dir);
1700 $sco_tpl = $page_html_export->getPreparedMainTemplate($sco_tpl);
1701
1702 $sco_tpl->setCurrentBlock("js_file");
1703 $sco_tpl->setVariable("JS_FILE", "./js/pure.js");
1704 $sco_tpl->parseCurrentBlock();
1705 $sco_tpl->setCurrentBlock("js_file");
1706 $sco_tpl->setVariable("JS_FILE", "./js/question_handling.js");
1707 $sco_tpl->parseCurrentBlock();
1708
1709
1710 $sco_tpl->setCurrentBlock("head");
1711 $sco_tpl->parseCurrentBlock();
1712 fputs($a_one_file, $sco_tpl->get("head"));
1713
1714 // toc
1715 include_once("./Modules/Scorm2004/classes/class.ilContObjectManifestBuilder.php");
1716 $manifestBuilder = new ilContObjectManifestBuilder($this);
1717 $manifestBuilder->buildManifest('12');
1718 $xsl = file_get_contents("./Modules/Scorm2004/templates/xsl/module.xsl");
1719 $xml = simplexml_load_string($manifestBuilder->writer->xmlDumpMem());
1720 $args = array( '/_xml' => $xml->organizations->organization->asXml(), '/_xsl' => $xsl );
1721 $xh = xslt_create();
1722 $params = array("one_page" => "y");
1723 $output = xslt_process($xh,"arg:/_xml","arg:/_xsl",NULL,$args,$params);
1724 xslt_free($xh);
1725 fputs($a_one_file, $output);
1726
1727 }
1728
1729 foreach($tree->getSubTree($tree->getNodeData($tree->getRootId()),true,'sco') as $sco)
1730 {
1731 include_once("./Modules/Scorm2004/classes/class.ilSCORM2004Sco.php");
1732 $sco_folder = $a_target_dir."/".$sco['obj_id'];
1733 ilUtil::makeDir($sco_folder);
1734 $node = new ilSCORM2004Sco($this,$sco['obj_id']);
1735
1736 if ($a_one_file == "")
1737 {
1738 $node->exportHTML($a_inst, $sco_folder, $expLog, $a_one_file);
1739 }
1740 else
1741 {
1742 $node->exportHTMLPageObjects($a_inst, $a_target_dir, $expLog, 'full',
1743 "sco", $a_one_file, $sco_tpl);
1744 }
1745 if($this->getAssignedGlossary()!=0)
1746 {
1747 include_once("./Modules/Glossary/classes/class.ilObjGlossary.php");
1748 $glos = new ilObjGlossary($this->getAssignedGlossary(),false);
1749 //$glos->exportHTML($sco_folder."/glossary", $expLog);
1750 }
1751 }
1752
1753 // copy all necessary files now
1754 if ($a_one_file != "")
1755 {
1756 // put tail into file
1757 fputs($a_one_file, $sco_tpl->get("tail"));
1758 }
1759
1760 }
HTML export class for pages.
Class ilObjGlossary.
getAssignedGlossary()
get assigned glossary
prepareHTMLExporter($a_target_dir)
Prepare HTML exporter.
special template class to simplify handling of ITX/PEAR
$params
Definition: example_049.php:96

References $ilBench, $output, $params, ilObjSAHSLearningModule\getAssignedGlossary(), ilObject\getId(), 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 1481 of file class.ilObjSCORM2004LearningModule.php.

1482 {
1483 global $ilBench;
1484 $a_xml_writer = new ilXmlWriter;
1485 $a_xml_writer->xmlStartTag("ContentObject", array("Type"=>"SCORM2004SCO"));
1486 $this->exportXMLMetaData($a_xml_writer);
1487 $tree = new ilTree($this->getId());
1488 $tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node');
1489 $tree->setTreeTablePK("slm_id");
1490 foreach($tree->getSubTree($tree->getNodeData($tree->getRootId()),true,'sco') as $sco)
1491 {
1492 include_once("./Modules/Scorm2004/classes/class.ilSCORM2004Sco.php");
1493 $sco_folder = $a_target_dir."/".$sco['obj_id'];
1494 ilUtil::makeDir($sco_folder);
1495 $node = new ilSCORM2004Sco($this,$sco['obj_id']);
1496 $node->exportPDFPrepareXmlNFiles($a_inst, $a_target_dir, $expLog, $a_xml_writer);
1497 }
1498 if($this->getAssignedGlossary()!=0)
1499 {
1500 ilUtil::makeDir($a_target_dir."/glossary");
1501 include_once("./Modules/Glossary/classes/class.ilObjGlossary.php");
1502 include_once("./Modules/Glossary/classes/class.ilGlossaryExport.php");
1503 $glos = new ilObjGlossary($this->getAssignedGlossary(), false);
1504 $glos_export = new ilGlossaryExport($glos,"xml");
1505 $glos->exportXML($a_xml_writer,$glos_export->getInstId(), $a_target_dir."/glossary", $expLog);
1506 }
1507 $a_xml_writer->xmlEndTag("ContentObject");
1508 include_once 'Services/Transformation/classes/class.ilXML2FO.php';
1509 $xml2FO = new ilXML2FO();
1510 $xml2FO->setXSLTLocation('./Modules/Scorm2004/templates/xsl/contentobject2fo.xsl');
1511 $xml2FO->setXMLString($a_xml_writer->xmlDumpMem());
1512 $xml2FO->setXSLTParams(array ('target_dir' => $a_target_dir));
1513 $xml2FO->transform();
1514 $fo_string = $xml2FO->getFOString();
1515 $fo_xml = simplexml_load_string($fo_string);
1516 $fo_ext = $fo_xml->xpath("//fo:declarations");
1517 $fo_ext = $fo_ext[0];
1518 $results = array();
1519 include_once "./Services/Utilities/classes/class.ilFileUtils.php";
1520 ilFileUtils::recursive_dirscan($a_target_dir."/objects", $results);
1521 if (is_array($results["file"]))
1522 {
1523 foreach ($results["file"] as $key => $value)
1524 {
1525 $e = $fo_ext->addChild("fox:embedded-file","","http://xml.apache.org/fop/extensions");
1526 $e->addAttribute("src",$results[path][$key].$value);
1527 $e->addAttribute("name",$value);
1528 $e->addAttribute("desc","");
1529 }
1530 }
1531 $fo_string = $fo_xml->asXML();
1532 $a_xml_writer->_XmlWriter;
1533 return $fo_string;
1534 }
static 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 1353 of file class.ilObjSCORM2004LearningModule.php.

1354 {
1355
1356 $a_xml_writer = new ilXmlWriter;
1357
1358 // export metadata
1359 $this->exportXMLMetaData($a_xml_writer);
1360 $metadata_xml = $a_xml_writer->xmlDumpMem(false);
1361 $a_xml_writer->_XmlWriter;
1362
1363 $xsl = file_get_contents("./Modules/Scorm2004/templates/xsl/metadata.xsl");
1364 $args = array( '/_xml' => $metadata_xml , '/_xsl' => $xsl );
1365 $xh = xslt_create();
1366 $output = xslt_process($xh,"arg:/_xml","arg:/_xsl",NULL,$args,NULL);
1367 xslt_free($xh);
1368 file_put_contents($a_target_dir.'/indexMD.xml',$output);
1369
1370 // export glossary
1371 if($this->getAssignedGlossary()!=0)
1372 {
1373 ilUtil::makeDir($a_target_dir."/glossary");
1374 include_once("./Modules/Glossary/classes/class.ilObjGlossary.php");
1375 include_once("./Modules/Glossary/classes/class.ilGlossaryExport.php");
1376 $glo_xml_writer = new ilXmlWriter();
1377
1378 $glo_xml_writer->xmlSetDtdDef("<!DOCTYPE ContentObject SYSTEM \"http://www.ilias.de/download/dtd/ilias_co_3_7.dtd\">");
1379 // set xml header
1380 $glo_xml_writer->xmlHeader();
1381 $glos = new ilObjGlossary($this->getAssignedGlossary(), false);
1382 //$glos->exportHTML($a_target_dir."/glossary", $expLog);
1383 $glos_export = new ilGlossaryExport($glos,"xml");
1384 $glos->exportXML($glo_xml_writer,$glos_export->getInstId(), $a_target_dir."/glossary", $expLog);
1385 $glo_xml_writer->xmlDumpFile($a_target_dir."/glossary/glossary.xml");
1386 $glo_xml_writer->_XmlWriter;
1387 }
1388
1389 $a_xml_writer = new ilXmlWriter;
1390 // set dtd definition
1391 $a_xml_writer->xmlSetDtdDef("<!DOCTYPE ContentObject SYSTEM \"http://www.ilias.de/download/dtd/ilias_co_3_7.dtd\">");
1392
1393 // set generated comment
1394 $a_xml_writer->xmlSetGenCmt("Export of ILIAS Content Module ". $this->getId()." of installation ".$a_inst.".");
1395
1396 // set xml header
1397 $a_xml_writer->xmlHeader();
1398
1399 global $ilBench;
1400
1401 $a_xml_writer->xmlStartTag("ContentObject", array("Type"=>"SCORM2004LearningModule"));
1402
1403 // MetaData
1404 $this->exportXMLMetaData($a_xml_writer);
1405
1406 $this->exportXMLStructureObjects($a_xml_writer, $a_inst, $expLog);
1407
1408 // SCO Objects
1409 $expLog->write(date("[y-m-d H:i:s] ")."Start Export Sco Objects");
1410 $this->exportXMLScoObjects($a_inst, $a_target_dir, $ver, $expLog);
1411 $expLog->write(date("[y-m-d H:i:s] ")."Finished Export Sco Objects");
1412
1413 $a_xml_writer->xmlEndTag("ContentObject");
1414 $a_xml_writer->xmlDumpFile($a_target_dir.'/index.xml', false);
1415
1416 if ($ver == "2004 4th") {
1417 $revision ="4th";
1418 $ver = "2004";
1419 }
1420
1421 if ($ver == "2004 3rd") {
1422 $revision ="3rd";
1423 $ver = "2004";
1424 }
1425
1426 // add content css (note: this is also done per item)
1427 $css_dir = $a_target_dir."/ilias_css_4_2";
1428 ilUtil::makeDir($css_dir);
1429 include_once("./Modules/Scorm2004/classes/class.ilScormExportUtil.php");
1430 ilScormExportUtil::exportContentCSS($this, $css_dir);
1431
1432 // add manifest
1433 include_once("./Modules/Scorm2004/classes/class.ilContObjectManifestBuilder.php");
1434 $manifestBuilder = new ilContObjectManifestBuilder($this);
1435 $manifestBuilder->buildManifest($ver,$revision);
1436 $manifestBuilder->dump($a_target_dir);
1437
1438 $xsl = file_get_contents("./Modules/Scorm2004/templates/xsl/module.xsl");
1439 $args = array( '/_xml' => file_get_contents($a_target_dir."/imsmanifest.xml"), '/_xsl' => $xsl );
1440 $xh = xslt_create();
1441 $output = xslt_process($xh,"arg:/_xml","arg:/_xsl",NULL,$args,NULL);
1442 xslt_free($xh);
1443 fputs(fopen($a_target_dir.'/index.html','w+'),$output);
1444 // copy xsd files to target
1445 switch ($ver)
1446 {
1447 case "2004":
1448 if ($revision == "3rd") {
1449 ilUtil::rCopy('./Modules/Scorm2004/templates/xsd/adlcp_130_export_2004',$a_target_dir,false);
1450 }
1451
1452 if ($revision == "4th") {
1453 ilUtil::rCopy('./Modules/Scorm2004/templates/xsd/adlcp_130_export_2004_4th',$a_target_dir,false);
1454 }
1455 break;
1456 case "12":
1457 ilUtil::rCopy('./Modules/Scorm2004/templates/xsd/adlcp_120_export_12',$a_target_dir,false);
1458 break;
1459 }
1460
1461 $a_xml_writer->_XmlWriter;
1462 }
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, $output, date, 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 1608 of file class.ilObjSCORM2004LearningModule.php.

1609 {
1610 include_once("Services/MetaData/classes/class.ilMD2XML.php");
1611 $md2xml = new ilMD2XML($this->getId(), 0, $this->getType());
1612 $md2xml->setExportMode(true);
1613 $md2xml->startExport();
1614 $a_xml_writer->appendXML($md2xml->getXML());
1615 }
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 1650 of file class.ilObjSCORM2004LearningModule.php.

1651 {
1652 global $ilBench;
1653 $tree = new ilTree($this->getId());
1654 $tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node');
1655 $tree->setTreeTablePK("slm_id");
1656 foreach($tree->getSubTree($tree->getNodeData($tree->getRootId()),true,array('sco','ass')) as $sco)
1657 {
1658 if ($sco['type'] == "sco")
1659 {
1660 include_once("./Modules/Scorm2004/classes/class.ilSCORM2004Sco.php");
1661 $sco_folder = $a_target_dir."/".$sco['obj_id'];
1662 ilUtil::makeDir($sco_folder);
1663 $node = new ilSCORM2004Sco($this,$sco['obj_id']);
1664 $node->exportScorm($a_inst, $sco_folder, $ver, $expLog);
1665 }
1666 if ($sco['type'] == "ass")
1667 {
1668 include_once("./Modules/Scorm2004/classes/class.ilSCORM2004Asset.php");
1669 $sco_folder = $a_target_dir."/".$sco['obj_id'];
1670 ilUtil::makeDir($sco_folder);
1671 $node = new ilSCORM2004Asset($this,$sco['obj_id']);
1672 $node->exportScorm($a_inst, $sco_folder, $ver, $expLog);
1673 }
1674
1675 }
1676 }
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 1623 of file class.ilObjSCORM2004LearningModule.php.

1624 {
1625 include_once("Services/MetaData/classes/class.ilMD2XML.php");
1626 $tree = new ilTree($this->getId());
1627 $tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node');
1628 $tree->setTreeTablePK("slm_id");
1629 $a_xml_writer->xmlStartTag("StructureObject");
1630 foreach($tree->getFilteredSubTree($tree->getRootId(),Array('page')) as $obj)
1631 {
1632 if($obj['type']=='') continue;
1633
1634 //$md2xml = new ilMD2XML($obj['obj_id'], 0, $obj['type']);
1635 $md2xml = new ilMD2XML($this->getId(), $obj['obj_id'], $obj['type']);
1636 $md2xml->setExportMode(true);
1637 $md2xml->startExport();
1638 $a_xml_writer->appendXML($md2xml->getXML());
1639 }
1640 $a_xml_writer->xmlEndTag("StructureObject");
1641 }

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 501 of file class.ilObjSCORM2004LearningModule.php.

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

References $ilDB, and ilObject\getId().

+ Here is the call graph for this function:

◆ getCourseCompletionForUser()

ilObjSCORM2004LearningModule::getCourseCompletionForUser (   $a_user)

Reimplemented from ilObjSCORMLearningModule.

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

724 {
725 global $ilDB, $ilUser;
726
727 $scos = array();
728 //get all SCO's of this object
729
730 $val_set = $ilDB->queryF('
731 SELECT cp_node.cp_node_id FROM cp_node,cp_resource,cp_item
732 WHERE cp_item.cp_node_id = cp_node.cp_node_id
733 AND cp_item.resourceid = cp_resource.id
734 AND scormtype = %s
735 AND nodename = %s
736 AND cp_node.slm_id = %s ',
737 array('text','text','integer'),
738 array('sco','item',$this->getId()));
739
740 while ($val_rec = $ilDB->fetchAssoc($val_set))
741 {
742 array_push($scos,$val_rec['cp_node_id']);
743 }
744
745
746 $scos_c = $scos;
747 //copy SCO_array
748 //check if all SCO's are completed
749 for ($i=0;$i<count($scos);$i++)
750 {
751
752 $val_set = $ilDB->queryF('
753 SELECT * FROM cmi_node
754 WHERE (user_id= %s
755 AND cp_node_id= %s
756 AND (completion_status=%s OR success_status=%s))',
757 array('integer','integer','text', 'text'),
758 array($a_user,$scos[$i],'completed','passed')
759 );
760
761 if ($ilDB->numRows($val_set) > 0) {
762 //delete from array
763 $key = array_search($scos[$i], $scos_c);
764 unset ($scos_c[$key]);
765 }
766
767 }
768 //check for completion
769 if (count($scos_c) == 0) {
770 $completion = true;
771 } else {
772 $completion = false;
773 }
774 return $completion;
775 }

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

+ Here is the call graph for this function:

◆ getExportFiles()

ilObjSCORM2004LearningModule::getExportFiles ( )

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

1307 {
1308 $file = array();
1309
1310 require_once("./Modules/Scorm2004/classes/class.ilSCORM2004Export.php");
1311
1312 $export = new ilSCORM2004Export($this);
1313 foreach ($export->getSupportedExportTypes() as $type)
1314 {
1315 $dir = $export->getExportDirectoryForType($type);
1316 // quit if import dir not available
1317 if (!@is_dir($dir) or !is_writeable($dir))
1318 {
1319 continue;
1320 }
1321 // open directory
1322 $cdir = dir($dir);
1323
1324 // get files and save the in the array
1325 while ($entry = $cdir->read())
1326 {
1327 if ($entry != "." and
1328 $entry != ".." and
1329 (
1330 preg_match("~^[0-9]{10}_{2}[0-9]+_{2}(".$this->getType()."_)*[0-9]+\.zip\$~", $entry) or
1331 preg_match("~^[0-9]{10}_{2}[0-9]+_{2}(".$this->getType()."_)*[0-9]+\.pdf\$~", $entry) or
1332 preg_match("~^[0-9]{10}_{2}[0-9]+_{2}(".$this->getType()."_)*[0-9]+\.iso\$~", $entry)
1333 ))
1334 {
1335 $file[$entry.$type] = array("type" => $type, "file" => $entry,
1336 "size" => filesize($dir."/".$entry));
1337 }
1338 }
1339
1340 // close import directory
1341 $cdir->close();
1342 }
1343
1344 // sort files
1345 ksort ($file);
1346 reset ($file);
1347 return $file;
1348 }
if(!file_exists("$old.txt")) if( $old===$new) if(file_exists("$new.txt")) $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 520 of file class.ilObjSCORM2004LearningModule.php.

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

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 1813 of file class.ilObjSCORM2004LearningModule.php.

1814 {
1815 return $this->public_export_file[$a_type];
1816 }
$a_type
Definition: workflow.php:93

References $a_type.

◆ getSequencingSettings()

ilObjSCORM2004LearningModule::getSequencingSettings ( )

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

1030 {
1031
1032 global $ilTabs;
1033 $ilTabs->setTabActive("sequencing");
1034
1035 include_once ("./Modules/Scorm2004/classes/seq_editor/class.ilSCORM2004Sequencing.php");
1036 $control_settings = new ilSCORM2004Sequencing($this->getId(),true);
1037
1038 return $control_settings;
1039 }

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 403 of file class.ilObjSCORM2004LearningModule.php.

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

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 429 of file class.ilObjSCORM2004LearningModule.php.

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

References $data, $ilDB, ilObject\$title, _ISODurationToCentisec(), _lookupItemTitle(), ilDatePresentation\formatDate(), ilObject\getId(), IL_CAL_DATETIME, and ilDatePresentation\secondsToString().

+ Here is the call graph for this function:

◆ getTree()

ilObjSCORM2004LearningModule::getTree ( )

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

1023 {
1024 $this->slm_tree = new ilTree($this->getId());
1025 $this->slm_tree->setTreeTablePK("slm_id");
1026 $this->slm_tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node');
1027 return $this->slm_tree;
1028 }

References ilObject\getId().

Referenced by copyAuthoredContent().

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

◆ importSuccess()

ilObjSCORM2004LearningModule::importSuccess (   $a_file)

Reimplemented from ilObjSCORMLearningModule.

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

543 {
544 global $ilDB, $ilUser;
545 include_once("./Services/Tracking/classes/class.ilLPStatus.php");
546 $scos = array();
547 //get all SCO's of this object ONLY RELEVANT!
548 include_once './Services/Object/classes/class.ilObjectLP.php';
549 $olp = ilObjectLP::getInstance($this->getId());
550 $collection = $olp->getCollectionInstance();
551 if($collection)
552 {
553 $scos = $collection->getItems();
554 }
555
556 $fhandle = fopen($a_file, "r");
557
558 $obj_id = $this->getID();
559 $users = array();
560 $usersToDelete = array();
561 $fields = fgetcsv($fhandle, 4096, ';');
562 while(($csv_rows = fgetcsv($fhandle, 4096, ";")) !== FALSE) {
563 $data = array_combine($fields, $csv_rows);
564 //no check the format - sufficient to import users
565 if ($data["Login"]) $user_id = $this->get_user_id($data["Login"]);
566 if ($data["login"]) $user_id = $this->get_user_id($data["login"]);
567 //add mail in future
568 if ($data["user"] && is_numeric($data["user"])) $user_id = $data["user"];
569 if ($user_id>0) {
570 $last_access = ilUtil::now();
571 if ($data['Date']) {
572 $date_ex = explode('.', $data['Date']);
573 $last_access = implode('-', array($date_ex[2], $date_ex[1], $date_ex[0]));
574 }
575 if ($data['LastAccess']) {
576 $last_access = $data['LastAccess'];
577 }
578
580
581 if ($data["Status"]) {
582 if (is_numeric($data["Status"])) $status = $data["Status"];
586 }
587 $attempts = null;
588 if($data["Attempts"]) $attempts = $data["Attempts"];
589
590 $percentage_completed = 0;
591 if ($status == ilLPStatus::LP_STATUS_COMPLETED_NUM) $percentage_completed = 100;
592 else if ($data['percentageCompletedSCOs']) $percentage_completed = $data['percentageCompletedSCOs'];
593
594 $sco_total_time_sec = null;
595 if ($data['SumTotal_timeSeconds']) $sco_total_time_sec = $data['SumTotal_timeSeconds'];
596
598 $usersToDelete[] = $user_id;
599 } else {
600 $this->importSuccessForSahsUser($user_id, $last_access, $status, $attempts, $percentage_completed, $sco_total_time_sec);
601 $users[] = $user_id;
602 }
603
605 foreach ($scos as $sco_id)
606 {
607 $res = $ilDB->queryF('
608 SELECT completion_status, success_status, user_id FROM cmi_node WHERE cp_node_id = %s AND user_id = %s',
609 array('integer','integer'),
610 array($sco_id,$user_id)
611 );
612
613 if(!$ilDB->numRows($res))
614 {
615 $nextId = $ilDB->nextId('cmi_node');
616 $val_set = $ilDB->manipulateF('INSERT INTO cmi_node
617 (cp_node_id,user_id,completion_status,c_timestamp,cmi_node_id)
618 VALUES(%s,%s,%s,%s,%s)',
619 array('integer','integer','text','timestamp','integer'),
620 array($sco_id,$user_id,'completed',$last_access,$nextId));
621 } else {
622 $doUpdate = false;
623 while ($row = $ilDB->fetchAssoc($res)) {
624 if ( ($row["completion_status"] == "completed" && $row["success_status"] != "failed") || $row["success_status"] == "passed") {
625 if ($doUpdate != true) $doUpdate = false; //note for issue if there are 2 entries for same sco_id
626 } else {
627 $doUpdate = true;
628 }
629 }
630 if ($doUpdate == true) {
631 $ilDB->update('cmi_node',
632 array(
633 'completion_status' => array('text', 'completed'),
634 'success_status' => array('text', ''),
635 'suspend_data' => array('text', ''),
636 'c_timestamp' => array('timestamp', $last_access)
637 ),
638 array(
639 'user_id' => array('integer', $user_id),
640 'cp_node_id' => array('integer', $sco_id)
641 )
642 );
643 }
644 }
645 }
646
647 }
648 } else {
649 //echo "Warning! User $csv_rows[0] does not exist in ILIAS. Data for this user was skipped.\n";
650 }
651 }
652
653 if (count($usersToDelete)>0) {
654 // include_once("./Services/Tracking/classes/class.ilLPMarks.php");
655 // ilLPMarks::_deleteForUsers($this->getId(), $usersToDelete);
656 $this->deleteTrackingDataOfUsers($usersToDelete);
657 }
658 include_once("./Services/Tracking/classes/class.ilLPStatusWrapper.php");
660
661 return 0;
662 }
static _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
deleteTrackingDataOfUsers($a_users)
get all tracked items of current user
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, $row, ilLPStatusWrapper\_refreshStatus(), deleteTrackingDataOfUsers(), 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 1768 of file class.ilObjSCORM2004LearningModule.php.

1769 {
1770 // system style html exporter
1771 include_once("./Services/Style/System/classes/class.ilSystemStyleHTMLExport.php");
1772 $this->sys_style_html_export = new ilSystemStyleHTMLExport($a_target_dir);
1773 $this->sys_style_html_export->export();
1774
1775 // init co page html exporter
1776 include_once("./Services/COPage/classes/class.ilCOPageHTMLExport.php");
1777 $this->co_page_html_export = new ilCOPageHTMLExport($a_target_dir);
1778 include_once("./Services/Style/Content/classes/class.ilObjStyleSheet.php");
1779 $this->co_page_html_export->setContentStyleId(
1781 $this->co_page_html_export->createDirectories();
1782 $this->co_page_html_export->exportStyles();
1783 $this->co_page_html_export->exportSupportScripts();
1784
1785 include_once("./Services/MediaObjects/classes/class.ilPlayerUtil.php");
1786 $this->flv_dir = $a_target_dir."/".ilPlayerUtil::getFlashVideoPlayerDirectory();
1787
1788 ilUtil::makeDir($a_target_dir.'/css/yahoo');
1789 ilUtil::makeDir($a_target_dir.'/objects');
1790 ilUtil::makeDir($a_target_dir.'/players');
1791 ilUtil::makeDir($this->flv_dir);
1792
1793 include_once("./Services/MediaObjects/classes/class.ilPlayerUtil.php");
1794// copy(ilPlayerUtil::getFlashVideoPlayerFilename(true),
1795// $a_target_dir.'/js/'.ilPlayerUtil::getFlashVideoPlayerFilename());
1797
1798 copy('./Modules/Scorm2004/scripts/scorm_2004.js',$a_target_dir.'/js/scorm.js');
1799 copy('./Modules/Scorm2004/scripts/pager.js',$a_target_dir.'/js/pager.js');
1800 copy('./Modules/Scorm2004/scripts/questions/pure.js',$a_target_dir.'/js/pure.js');
1801 copy('./Modules/Scorm2004/scripts/questions/question_handling.js',
1802 $a_target_dir.'/js/question_handling.js');
1803
1804 }
static getEffectiveContentStyleId($a_style_id, $a_type="")
Get effective Style Id.
static getFlashVideoPlayerDirectory()
Get flash video player directory.
static 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 json_encode,json_decode
78 if (!function_exists('json_encode') || !function_exists('json_decode') ) {
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
$_POST["username"]
validate($directory)
Validate all XML-Files in a SCOM-Directory.
redirection script todo: (a better solution should control the processing via a xml file)

References $_POST, $ilDB, ilObject\$ilias, ilObject\$lng, $n, $start, 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 1838 of file class.ilObjSCORM2004LearningModule.php.

1839 {
1840 $this->public_export_file[$a_type] = $a_file;
1841 }

References $a_type.

◆ updateSequencingSettings()

ilObjSCORM2004LearningModule::updateSequencingSettings ( )

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

1041 {
1042 include_once ("./Modules/Scorm2004/classes/seq_editor/class.ilSCORM2004Sequencing.php");
1043
1044 $control_settings = new ilSCORM2004Sequencing($this->getId(),true);
1045 $control_settings->setChoice(ilUtil::yn2tf($_POST["choice"]));
1046 $control_settings->setFlow(ilUtil::yn2tf($_POST["flow"]));
1047 $control_settings->setForwardOnly(ilUtil::yn2tf($_POST["forwardonly"]));
1048 $control_settings->insert();
1049
1050 return true;
1051 }
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: