ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f870
All Data Structures Namespaces Files Functions Variables Modules Pages
ilObjSCORM2004LearningModule Class Reference

Class ilObjSCORM2004LearningModule. More...

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

Public Member Functions

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

Static Public Member Functions

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

Data Fields

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

Detailed Description

Member Function Documentation

◆ _getCourseCompletionForUser()

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

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

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

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

References $ilDB, and $ilUser.

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

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

◆ _getMaxScoreForUser()

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

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

Parameters
integer$a_id
integer$a_user
Returns
float

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

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

Referenced by ilObjSAHSLearningModule\getMaxPoints().

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

◆ _getMeasure()

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

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

References $ilDB.

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

◆ _getSatisfied()

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

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

References $ilDB.

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

◆ _getScores2004ForUser()

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

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

References $ilDB.

Referenced by ilLPCollectionOfSCOs\getScoresForUserAndCP_Node_Id().

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

◆ _getStatus()

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

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

References $ilDB.

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

◆ _getTrackingItems()

ilObjSCORM2004LearningModule::_getTrackingItems (   $a_obj_id)

get all tracking items of scorm object

currently a for learning progress only

static

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

References $ilDB, and $res.

Referenced by ilLPCollectionOfSCOs\getPossibleItems().

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

◆ _getUniqueScaledScoreForUser()

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

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

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

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

References $ilDB, and $ilUser.

Referenced by ilObjSAHSLearningModule\getPointsInPercent().

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

◆ _ISODurationToCentisec()

ilObjSCORM2004LearningModule::_ISODurationToCentisec (   $str)

convert ISO 8601 Timeperiods to centiseconds ta

static

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

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

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

◆ _lookupItemTitle()

static ilObjSCORM2004LearningModule::_lookupItemTitle (   $a_node_id)
static

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

References $ilDB, and $r.

Referenced by ilLPStatusSCORM\_getStatusInfo().

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

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

References $ilDB, $result, and $row.

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

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  }
$result
global $ilDB
+ 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.

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

Referenced by readObject().

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
global $ilDB
$r
+ 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

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

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

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

◆ createScorm2004Tree()

ilObjSCORM2004LearningModule::createScorm2004Tree ( )

Create Scorm 2004 Tree used by Editor.

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

References ilObject\getId().

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

◆ deleteTrackingDataOfUsers()

ilObjSCORM2004LearningModule::deleteTrackingDataOfUsers (   $a_users)

get all tracked items of current user

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

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

385  {
386  global $ilDB;
387  include_once("./Modules/Scorm2004/classes/class.ilSCORM2004DeleteData.php");
388  include_once("./Services/Tracking/classes/class.ilLPStatusWrapper.php");
389 
390  foreach($a_users as $user)
391  {
393  ilLPStatusWrapper::_updateStatus($this->getId(), $user);
394  }
395  }
static _updateStatus($a_obj_id, $a_usr_id, $a_obj=null, $a_percentage=false, $a_no_raise=false, $a_force_raise=false)
Update status.
removeCMIDataForUserAndPackage($user_id, $packageId)
getId()
get object id public
global $ilDB
+ Here is the call graph for this function:

◆ executeDragDrop()

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

Execute Drag Drop Action.

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

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

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

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

◆ exportFileItems()

ilObjSCORM2004LearningModule::exportFileItems (   $a_target_dir,
$expLog 
)

export files of file itmes

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

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

◆ exportHTML()

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

Export SCORM package to HTML.

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

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

Referenced by exportHTMLOne().

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

◆ exportHTML4PDF()

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

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

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

1446  {
1447  global $ilBench;
1448  $tree = new ilTree($this->getId());
1449  $tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node');
1450  $tree->setTreeTablePK("slm_id");
1451  foreach($tree->getSubTree($tree->getNodeData($tree->getRootId()),true,'sco') as $sco)
1452  {
1453  include_once("./Modules/Scorm2004/classes/class.ilSCORM2004Sco.php");
1454  $sco_folder = $a_target_dir."/".$sco['obj_id'];
1455  ilUtil::makeDir($sco_folder);
1456  $node = new ilSCORM2004Sco($this,$sco['obj_id']);
1457  $node->exportHTML4PDF($a_inst, $sco_folder, $expLog);
1458  }
1459  }
Class ilSCORM2004Sco.
getId()
get object id public
Tree class data representation in hierachical trees using the Nested Set Model with Gaps by Joe Celco...
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
+ Here is the call graph for this function:

◆ exportHTMLOne()

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

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

References exportHTML().

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

◆ exportHTMLScoObjects()

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

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

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

Referenced by exportHTML().

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

◆ exportPDF()

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

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

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

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

◆ exportScorm()

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

Export (authoring) scorm package.

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

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

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

◆ exportXMLMetaData()

ilObjSCORM2004LearningModule::exportXMLMetaData ( $a_xml_writer)

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

Parameters
object$a_xml_writerilXmlWriter object that receives the xml data

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

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

Referenced by exportPDF(), and exportScorm().

1590  {
1591  include_once("Services/MetaData/classes/class.ilMD2XML.php");
1592  $md2xml = new ilMD2XML($this->getId(), 0, $this->getType());
1593  $md2xml->setExportMode(true);
1594  $md2xml->startExport();
1595  $a_xml_writer->appendXML($md2xml->getXML());
1596  }
getId()
get object id public
getType()
get object type public
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ exportXMLScoObjects()

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

export page objects to xml (see ilias_co.dtd)

Parameters
object$a_xml_writerilXmlWriter object that receives the xml data

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

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

Referenced by exportScorm().

1632  {
1633  global $ilBench;
1634  $tree = new ilTree($this->getId());
1635  $tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node');
1636  $tree->setTreeTablePK("slm_id");
1637  foreach($tree->getSubTree($tree->getNodeData($tree->getRootId()),true,array('sco','ass')) as $sco)
1638  {
1639  if ($sco['type'] == "sco")
1640  {
1641  include_once("./Modules/Scorm2004/classes/class.ilSCORM2004Sco.php");
1642  $sco_folder = $a_target_dir."/".$sco['obj_id'];
1643  ilUtil::makeDir($sco_folder);
1644  $node = new ilSCORM2004Sco($this,$sco['obj_id']);
1645  $node->exportScorm($a_inst, $sco_folder, $ver, $expLog);
1646  }
1647  if ($sco['type'] == "ass")
1648  {
1649  include_once("./Modules/Scorm2004/classes/class.ilSCORM2004Asset.php");
1650  $sco_folder = $a_target_dir."/".$sco['obj_id'];
1651  ilUtil::makeDir($sco_folder);
1652  $node = new ilSCORM2004Asset($this,$sco['obj_id']);
1653  $node->exportScorm($a_inst, $sco_folder, $ver, $expLog);
1654  }
1655 
1656  }
1657  }
Class ilSCORM2004Sco.
getId()
get object id public
Tree class data representation in hierachical trees using the Nested Set Model with Gaps by Joe Celco...
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
Class ilSCORM2004Asset.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ exportXMLStructureObjects()

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

export structure objects to xml (see ilias_co.dtd)

Parameters
object$a_xml_writerilXmlWriter object that receives the xml data

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

References ilObject\getId().

Referenced by exportScorm().

1605  {
1606  include_once("Services/MetaData/classes/class.ilMD2XML.php");
1607  $tree = new ilTree($this->getId());
1608  $tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node');
1609  $tree->setTreeTablePK("slm_id");
1610  $a_xml_writer->xmlStartTag("StructureObject");
1611  foreach($tree->getFilteredSubTree($tree->getRootId(),Array('page')) as $obj)
1612  {
1613  if($obj['type']=='') continue;
1614 
1615  //$md2xml = new ilMD2XML($obj['obj_id'], 0, $obj['type']);
1616  $md2xml = new ilMD2XML($this->getId(), $obj['obj_id'], $obj['type']);
1617  $md2xml->setExportMode(true);
1618  $md2xml->startExport();
1619  $a_xml_writer->appendXML($md2xml->getXML());
1620  }
1621  $a_xml_writer->xmlEndTag("StructureObject");
1622  }
getId()
get object id public
Tree class data representation in hierachical trees using the Nested Set Model with Gaps by Joe Celco...
+ 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.

References $out.

Referenced by convert_1_2_to_2004().

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  }
+ Here is the caller graph for this function:

◆ getAttemptsForUser()

ilObjSCORM2004LearningModule::getAttemptsForUser (   $a_user_id)

get number of atttempts for a certain user and package

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

References $ilDB, and ilObject\getId().

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

◆ getCourseCompletionForUser()

ilObjSCORM2004LearningModule::getCourseCompletionForUser (   $a_user)

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

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

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

◆ getExportFiles()

ilObjSCORM2004LearningModule::getExportFiles ( )

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

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

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

Referenced by readObject().

52  {
53  return $this->import_sequencing;
54  }
+ 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

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

References $ilDB, and ilObject\getId().

518  {
519  global $ilDB;
520  $val_set = $ilDB->queryF('SELECT module_version FROM sahs_user WHERE user_id = %s AND obj_id = %s',
521  array('integer','integer'),
522  array($a_user_id, $this->getId()));
523 
524  $val_rec = $ilDB->fetchAssoc($val_set);
525 
526  if ($val_rec["module_version"] == null) {
527  $val_rec["module_version"]="";
528  }
529  return $val_rec["module_version"];
530  }
getId()
get object id public
global $ilDB
+ Here is the call graph for this function:

◆ getPublicExportFile()

ilObjSCORM2004LearningModule::getPublicExportFile (   $a_type)

get public export file

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

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

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

◆ getSequencingSettings()

ilObjSCORM2004LearningModule::getSequencingSettings ( )

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

References ilObject\getId().

1010  {
1011 
1012  global $ilTabs;
1013  $ilTabs->setTabActive("sequencing");
1014 
1015  include_once ("./Modules/Scorm2004/classes/seq_editor/class.ilSCORM2004Sequencing.php");
1016  $control_settings = new ilSCORM2004Sequencing($this->getId(),true);
1017 
1018  return $control_settings;
1019  }
getId()
get object id public
Class ilSCORM2004Sequencing.
+ Here is the call graph for this function:

◆ getTrackedItems()

ilObjSCORM2004LearningModule::getTrackedItems ( )

get all tracked items of current user

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

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

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

◆ getTrackingDataAgg()

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

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

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

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

◆ getTree()

ilObjSCORM2004LearningModule::getTree ( )

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

References ilObject\getId().

Referenced by copyAuthoredContent().

1003  {
1004  $this->slm_tree = new ilTree($this->getId());
1005  $this->slm_tree->setTreeTablePK("slm_id");
1006  $this->slm_tree->setTableNames('sahs_sc13_tree', 'sahs_sc13_tree_node');
1007  return $this->slm_tree;
1008  }
getId()
get object id public
Tree class data representation in hierachical trees using the Nested Set Model with Gaps by Joe Celco...
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ilObjSCORM2004LearningModule()

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

Constructor public.

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

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

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

◆ importSuccess()

ilObjSCORM2004LearningModule::importSuccess (   $a_file)

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

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

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

◆ prepareHTMLExporter()

ilObjSCORM2004LearningModule::prepareHTMLExporter (   $a_target_dir)

Prepare HTML exporter.

Parameters

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

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

Referenced by exportHTMLScoObjects().

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

◆ readObject()

ilObjSCORM2004LearningModule::readObject ( )

read manifest file public

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

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

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

◆ setImportSequencing()

ilObjSCORM2004LearningModule::setImportSequencing (   $a_val)

Set import sequencing.

Parameters
boolean$a_valimport sequencing information

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

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

◆ setPublicExportFile()

ilObjSCORM2004LearningModule::setPublicExportFile (   $a_type,
  $a_file 
)

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

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

◆ updateSequencingSettings()

ilObjSCORM2004LearningModule::updateSequencingSettings ( )

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

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

1021  {
1022  include_once ("./Modules/Scorm2004/classes/seq_editor/class.ilSCORM2004Sequencing.php");
1023 
1024  $control_settings = new ilSCORM2004Sequencing($this->getId(),true);
1025  $control_settings->setChoice(ilUtil::yn2tf($_POST["choice"]));
1026  $control_settings->setFlow(ilUtil::yn2tf($_POST["flow"]));
1027  $control_settings->setForwardOnly(ilUtil::yn2tf($_POST["forwardonly"]));
1028  $control_settings->insert();
1029 
1030  return true;
1031  }
$_POST['username']
Definition: cron.php:12
getId()
get object id public
Class ilSCORM2004Sequencing.
static yn2tf($a_yn)
convert "y"/"n" to true/false
+ Here is the call graph for this function:

◆ validate()

ilObjSCORM2004LearningModule::validate (   $directory)

Validate all XML-Files in a SCOM-Directory.

public

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

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

Referenced by readObject().

63  {
64  //$this->validator =& new ilObjSCORMValidator($directory);
65  //$returnValue = $this->validator->validate();
66  return true;
67  }
+ 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: