[svn r19808] logic changes - allow sum total time in scorm - (partial FS#3994)

skala
Isaac Flores 16 years ago
parent a7f4466851
commit 9b1fc8c58c
  1. 39
      main/newscorm/learnpathItem.class.php
  2. 4
      main/newscorm/lp_view.php
  3. 60
      main/newscorm/scorm_api.php

@ -1015,6 +1015,7 @@ class learnpathItem{
$table = Database::get_course_table('lp_item_view');
$sql = "SELECT * FROM $table WHERE id = '".$this->db_item_view_id."' AND view_count = '".$this->get_attempt_id()."'";
if($this->debug>2){error_log('New LP - In learnpathItem::get_status() - Checking DB: '.$sql,0);}
//error_log($sql);
$res = api_sql_query($sql);
if(Database::num_rows($res)==1){
$row = Database::fetch_array($res);
@ -2174,10 +2175,25 @@ function get_terms()
*/
function write_to_db()
{
if($this->debug>0){error_log('New LP - In learnpathItem::write_to_db()',0);}
$mode = $this->get_lesson_mode();
$credit = $this->get_credit();
if(($this->type == 'sco') && ($credit == 'no-credit' OR $mode == 'review' OR $mode == 'browse'))
$my_verified_status=$this->get_status(false);
$item_view_table = Database::get_course_table('lp_item_view');
$sql_verified='SELECT status FROM '.$item_view_table.' WHERE lp_item_id="'.$this->db_id.'" AND lp_view_id="'.$this->view_id.'" AND view_count="'.$this->attempt_id.'" ;';
$rs_verified=api_sql_query($sql_verified,__FILE__,__LINE__);
$row_verified=Database::fetch_array($rs_verified);
$my_case_completed=array('completed','passed','browsed');
if (in_array($sql_verified['status'],$my_case_completed)) {
$save=false;
} else {
$save=true;
}
if(($save===false && $this->type == 'sco') ||(($this->type == 'sco') && ($credit == 'no-credit' OR $mode == 'review' OR $mode == 'browse')))
{
//this info shouldn't be saved as the credit or lesson mode info prevent it
if($this->debug>1){error_log('New LP - In learnpathItem::write_to_db() - credit('.$credit.') or lesson_mode('.$mode.') prevent recording!',0);}
@ -2266,8 +2282,7 @@ function get_terms()
$my_type_lp=learnpath::get_type_static($this->lp_id);
// this is a array containing values finished
$case_completed=array('completed','passed','browsed');
$my_status = " status = '".$this->get_status(false)."' ,";
//is not multiple attempts
if ($this->get_prevent_reinit()==1) {
// process of status verified into data base
@ -2279,18 +2294,24 @@ function get_terms()
//get type lp i.e 2=scorm and 1=lp dokeos
// if not is completed or passed or browsed and learnig path is scorm
if(!in_array($this->get_status(false),$case_completed) && $my_type_lp==2) {
$total_time =" total_time = total_time +".$this->get_total_time().", ";
if(!in_array($this->get_status(false),$case_completed) && $my_type_lp==2 ) {//&& $this->type!='dir'
$total_time =" total_time = total_time +".$this->get_total_time().", ";
$my_status = " status = '".$this->get_status(false)."' ,";
} else {
//verified into data base
if (!in_array($row_verified['status'],$case_completed) && $my_type_lp==2) {
if (!in_array($row_verified['status'],$case_completed) && $my_type_lp==2 ) { //&& $this->type!='dir'
$total_time =" total_time = total_time +".$this->get_total_time().", ";
} else {
$my_status = " status = '".$this->get_status(false)."' ,";
} elseif (in_array($row_verified['status'],$case_completed) && $my_type_lp==2 && $this->type!='sco' ) {//&& $this->type!='dir'
$total_time =" total_time = total_time +".$this->get_total_time().", ";
$my_status = " status = '".$this->get_status(false)."' ,";
}else {
//&& !in_array($row_verified['status'],$case_completed)
//is lp dokeos
if ($my_type_lp==1) {
if ($my_type_lp==1 && $this->type!='chapter') {
$total_time =" total_time = total_time + ".$this->get_total_time().", ";
$my_status = " status = '".$this->get_status(false)."' ,";
}
}
@ -2301,9 +2322,11 @@ function get_terms()
//reset zero new attempt ?
} elseif (!in_array($this->get_status(false),$case_completed) && $my_type_lp==2){
$total_time =" total_time = ".$this->get_total_time().", ";
$my_status = " status = '".$this->get_status(false)."' ,";
} else {
//is lp dokeos
$total_time =" total_time = total_time +".$this->get_total_time().", ";
$my_status = " status = '".$this->get_status(false)."' ,";
}
}

@ -273,6 +273,8 @@ if($_SESSION['oLP']->mode == 'fullscreen')
</div>
<div style="color: white;" onClick="cleanlog();">.</div>
</div>
<input type="hidden" id="old_item" name ="old_item" value="0"/>
<input type="hidden" id="current_item_id" name ="current_item_id" value="0" />
</td></tr></table>
<script language="JavaScript" type="text/javascript">
// Need to be called after the <head> to be sure window.oxajax is defined
@ -442,6 +444,8 @@ else
<div style="color: white;" onClick="cleanlog();">.</div>
</div>
</div>
<input type="hidden" id="old_item" name ="old_item" value="0"/>
<input type="hidden" id="current_item_id" name ="current_item_id" value="0" />
</td><td align="left" width="100%" valign="top">
<div id="learningPathRightZone">
<iframe id="content_id" name="content_name" src="<?php echo $src; ?>" border="0" frameborder="0" style="height:600px;width: 100%"></iframe>

@ -1,4 +1,4 @@
<?php // $Id: scorm_api.php 19665 2009-04-08 23:21:32Z juliomontoya $
<?php // $Id: scorm_api.php 19808 2009-04-16 20:01:40Z iflorespaz $
/*
==============================================================================
Dokeos - elearning and course management software
@ -157,6 +157,11 @@ var max_time_allowed = '<?php echo $oItem->get_max_time_allowed();?>';
var interactions = new Array(<?php echo $oItem->get_interactions_js_array();?>);
item_objectives = new Array();
$(document).ready( function() {
$("#current_item_id").attr("value",<?php echo $oItem->get_id();?>);
$("#old_item").attr("value",<?php echo $oItem->get_id();?>);
} );
//Dokeos internal variables
var saved_lesson_status = 'not attempted';
var lms_lp_id = <?php echo $oLP->get_id();?>;
@ -695,21 +700,31 @@ function savedata(origin)
*/
}
}
logit_lms('saving data (status='+lesson_status+' - interactions: '+ interactions.length +')',1);
xajax_save_item(lms_lp_id, lms_user_id, lms_view_id, lms_item_id, score, max, min, lesson_status, session_time, suspend_data, lesson_location, interactions, lms_item_core_exit);
if(item_objectives.length>0)
{
xajax_save_objectives(lms_lp_id,lms_user_id,lms_view_id,lms_item_id,item_objectives);
old_item_id=$("#old_item").val();
xajax_save_item(lms_lp_id, lms_user_id, lms_view_id, old_item_id, score, max, min, lesson_status, session_time, suspend_data, lesson_location, interactions, lms_item_core_exit);
$("#old_item").attr("value",lms_item_id)
if(item_objectives.length>0) {
xajax_save_objectives(lms_lp_id,lms_user_id,lms_view_id,old_item_id,item_objectives);
}
}
function LMSCommit(val) {
logit_scorm('LMSCommit()',0);
G_LastError = G_NoError ;
G_LastErrorMessage = 'No error';
savedata('commit');
commit = false ; //now changes have been commited, no need to update until next SetValue()
G_LastErrorMessage = 'No error';
my_lms_time=LMSGetValue('cmi.core.session_time');
my_lms_status=LMSGetValue('cmi.core.lesson_status');
if (my_lms_time.length!=0 && my_lms_status.length!=0) {
savedata('commit');
}
commit = 'false' ; //now changes have been commited, no need to update until next SetValue()
return('true');
}
@ -722,12 +737,14 @@ function LMSFinish(val) {
G_LastErrorMessage = 'No error';
// why commit==false?
if (( commit == false )) {
logit_scorm('LMSFinish() (no LMSCommit())',1);
logit_scorm('LMSFinish() (no LMSCommit())',1);
}
if ( commit == true ) {
logit_scorm('LMSFinish() called',1);
savedata('finish');
commit = false ;
commit = 'false' ;
}
return('true');
}
@ -1098,7 +1115,7 @@ function switch_item(current_item, next_item){
if(lms_lp_type==1 || lms_item_type=='asset' || session_time == '0' || session_time == '0:00:00'){
xajax_save_item(lms_lp_id, lms_user_id, lms_view_id, lms_item_id, score, max, min, lesson_status, asset_timer, suspend_data, lesson_location,interactions, lms_item_core_exit);
}else{
xajax_save_item(lms_lp_id, lms_user_id, lms_view_id, lms_item_id, score, max, min, lesson_status, session_time, suspend_data, lesson_location,interactions, lms_item_core_exit);
// xajax_save_item(lms_lp_id, lms_user_id, lms_view_id, lms_item_id, score, max, min, lesson_status, session_time, suspend_data, lesson_location,interactions, lms_item_core_exit);
}
if(item_objectives.length>0)
{
@ -1107,7 +1124,24 @@ function switch_item(current_item, next_item){
//(2) Refresh all the values inside this SCORM API object - use AJAX
xajax_switch_item_details(lms_lp_id,lms_user_id,lms_view_id,lms_item_id,next_item);
//alert(lms_next_item);
$my_new_old_item=$("#old_item").val();
$my_new_current_item=$("#current_item_id").val();
if ($my_new_current_item==next_item) {
$("#old_item").attr("value",$my_new_old_item)
} else {
$("#old_item").attr("value",$my_new_current_item)
}
if ($my_new_current_item==next_item) {
$("#old_item").attr("value",$my_new_current_item)
} else {
$("#current_item_id").attr("value",$my_new_old_item)
}
$("#status_old_item").attr("value",lesson_status);
$("#current_item_id").attr("value",next_item);
//(3) open the new item in the content_id frame
switch(next_item){
case 'next':

Loading…
Cancel
Save