diff --git a/auth/cas/CAS/client.php b/auth/cas/CAS/client.php index a793e127800b2..ca846daa68b94 100644 --- a/auth/cas/CAS/client.php +++ b/auth/cas/CAS/client.php @@ -79,12 +79,12 @@ function HTMLFilterOutput($str) function printHTMLHeader($title) { $this->HTMLFilterOutput(str_replace('__TITLE__', - $title, - (empty($this->_output_header) - ? '
Unable to EXPLAIN non-select statement
'; - $save = $this->conn->LogSQL(false); - if ($partial) { - $sqlq = $this->conn->qstr($sql.'%'); - $arr = $this->conn->GetArray("select distinct sql1 from adodb_logsql where sql1 like $sqlq"); - if ($arr) { - foreach($arr as $row) { - $sql = reset($row); - if (crc32($sql) == $partial) break; - } - } - } - $sql = str_replace('?',"''",$sql); - - if ($partial) { - $sqlq = $this->conn->qstr($sql.'%'); - $sql = $this->conn->GetOne("select sql1 from adodb_logsql where sql1 like $sqlq"); - } - - $s = 'Explain: '.htmlspecialchars($sql).'
'; - $rs = $this->conn->Execute('EXPLAIN '.$sql); - $s .= rs2html($rs,false,false,false,false); - $this->conn->LogSQL($save); - $s .= $this->Tracer($sql); - return $s; - } - - function Tables() - { - if (!$this->tablesSQL) return false; - - $rs = $this->conn->Execute($this->tablesSQL); - if (!$rs) return false; - - $html = rs2html($rs,false,false,false,false); - return $html; - } - - function GetReads() - { - global $ADODB_FETCH_MODE; - $save = $ADODB_FETCH_MODE; - $ADODB_FETCH_MODE = ADODB_FETCH_NUM; - if ($this->conn->fetchMode !== false) $savem = $this->conn->SetFetchMode(false); - - $rs = $this->conn->Execute('show status'); - - if (isset($savem)) $this->conn->SetFetchMode($savem); - $ADODB_FETCH_MODE = $save; - - if (!$rs) return 0; - $val = 0; - while (!$rs->EOF) { - switch($rs->fields[0]) { - case 'Com_select': - $val = $rs->fields[1]; - $rs->Close(); - return $val; - } - $rs->MoveNext(); - } - - $rs->Close(); - - return $val; - } - - function GetWrites() - { - global $ADODB_FETCH_MODE; - $save = $ADODB_FETCH_MODE; - $ADODB_FETCH_MODE = ADODB_FETCH_NUM; - if ($this->conn->fetchMode !== false) $savem = $this->conn->SetFetchMode(false); - - $rs = $this->conn->Execute('show status'); - - if (isset($savem)) $this->conn->SetFetchMode($savem); - $ADODB_FETCH_MODE = $save; - - if (!$rs) return 0; - $val = 0.0; - while (!$rs->EOF) { - switch($rs->fields[0]) { - case 'Com_insert': - $val += $rs->fields[1]; break; - case 'Com_delete': - $val += $rs->fields[1]; break; - case 'Com_update': - $val += $rs->fields[1]/2; - $rs->Close(); - return $val; - } - $rs->MoveNext(); - } - - $rs->Close(); - - return $val; - } - - function FindDBHitRatio() - { - // first find out type of table - //$this->conn->debug=1; - - global $ADODB_FETCH_MODE; - $save = $ADODB_FETCH_MODE; - $ADODB_FETCH_MODE = ADODB_FETCH_NUM; - if ($this->conn->fetchMode !== false) $savem = $this->conn->SetFetchMode(false); - - $rs = $this->conn->Execute('show table status'); - - if (isset($savem)) $this->conn->SetFetchMode($savem); - $ADODB_FETCH_MODE = $save; - - if (!$rs) return ''; - $type = strtoupper($rs->fields[1]); - $rs->Close(); - switch($type){ - case 'MYISAM': - case 'ISAM': - return $this->DBParameter('MyISAM cache hit ratio').' (MyISAM)'; - case 'INNODB': - return $this->DBParameter('InnoDB cache hit ratio').' (InnoDB)'; - default: - return $type.' not supported'; - } - - } - - function GetQHitRatio() - { - //Total number of queries = Qcache_inserts + Qcache_hits + Qcache_not_cached - $hits = $this->_DBParameter(array("show status","Qcache_hits")); - $total = $this->_DBParameter(array("show status","Qcache_inserts")); - $total += $this->_DBParameter(array("show status","Qcache_not_cached")); - - $total += $hits; - if ($total) return round(($hits*100)/$total,2); - return 0; - } - - /* - Use session variable to store Hit percentage, because MySQL - does not remember last value of SHOW INNODB STATUS hit ratio - - # 1st query to SHOW INNODB STATUS - 0.00 reads/s, 0.00 creates/s, 0.00 writes/s - Buffer pool hit rate 1000 / 1000 - - # 2nd query to SHOW INNODB STATUS - 0.00 reads/s, 0.00 creates/s, 0.00 writes/s - No buffer pool activity since the last printout - */ - function GetInnoDBHitRatio() - { - global $ADODB_FETCH_MODE; - - $save = $ADODB_FETCH_MODE; - $ADODB_FETCH_MODE = ADODB_FETCH_NUM; - if ($this->conn->fetchMode !== false) $savem = $this->conn->SetFetchMode(false); - - $rs = $this->conn->Execute('show innodb status'); - - if (isset($savem)) $this->conn->SetFetchMode($savem); - $ADODB_FETCH_MODE = $save; - - if (!$rs || $rs->EOF) return 0; - $stat = $rs->fields[0]; - $rs->Close(); - $at = strpos($stat,'Buffer pool hit rate'); - $stat = substr($stat,$at,200); - if (preg_match('!Buffer pool hit rate\s*([0-9]*) / ([0-9]*)!',$stat,$arr)) { - $val = 100*$arr[1]/$arr[2]; - $_SESSION['INNODB_HIT_PCT'] = $val; - return round($val,2); - } else { - if (isset($_SESSION['INNODB_HIT_PCT'])) return $_SESSION['INNODB_HIT_PCT']; - return 0; - } - return 0; - } - - function GetKeyHitRatio() - { - $hits = $this->_DBParameter(array("show status","Key_read_requests")); - $reqs = $this->_DBParameter(array("show status","Key_reads")); - if ($reqs == 0) return 0; - - return round(($hits/($reqs+$hits))*100,2); - } - + + var $tablesSQL = 'show table status'; + + var $createTableSQL = "CREATE TABLE adodb_logsql ( + created datetime NOT NULL, + sql0 varchar(250) NOT NULL, + sql1 text NOT NULL, + params text NOT NULL, + tracer text NOT NULL, + timer decimal(16,6) NOT NULL + )"; + + var $settings = array( + 'Ratios', + 'MyISAM cache hit ratio' => array('RATIO', + '=GetKeyHitRatio', + '=WarnCacheRatio'), + 'InnoDB cache hit ratio' => array('RATIO', + '=GetInnoDBHitRatio', + '=WarnCacheRatio'), + 'data cache hit ratio' => array('HIDE', # only if called + '=FindDBHitRatio', + '=WarnCacheRatio'), + 'sql cache hit ratio' => array('RATIO', + '=GetQHitRatio', + ''), + 'IO', + 'data reads' => array('IO', + '=GetReads', + 'Number of selects (Key_reads is not accurate)'), + 'data writes' => array('IO', + '=GetWrites', + 'Number of inserts/updates/deletes * coef (Key_writes is not accurate)'), + + 'Data Cache', + 'MyISAM data cache size' => array('DATAC', + array("show variables", 'key_buffer_size'), + '' ), + 'BDB data cache size' => array('DATAC', + array("show variables", 'bdb_cache_size'), + '' ), + 'InnoDB data cache size' => array('DATAC', + array("show variables", 'innodb_buffer_pool_size'), + '' ), + 'Memory Usage', + 'read buffer size' => array('CACHE', + array("show variables", 'read_buffer_size'), + '(per session)'), + 'sort buffer size' => array('CACHE', + array("show variables", 'sort_buffer_size'), + 'Size of sort buffer (per session)' ), + 'table cache' => array('CACHE', + array("show variables", 'table_cache'), + 'Number of tables to keep open'), + 'Connections', + 'current connections' => array('SESS', + array('show status','Threads_connected'), + ''), + 'max connections' => array( 'SESS', + array("show variables",'max_connections'), + ''), + + false + ); + + function perf_mysql(&$conn) + { + $this->conn = $conn; + } + + function Explain($sql,$partial=false) + { + + if (strtoupper(substr(trim($sql),0,6)) !== 'SELECT') return 'Unable to EXPLAIN non-select statement
'; + $save = $this->conn->LogSQL(false); + if ($partial) { + $sqlq = $this->conn->qstr($sql.'%'); + $arr = $this->conn->GetArray("select distinct sql1 from adodb_logsql where sql1 like $sqlq"); + if ($arr) { + foreach($arr as $row) { + $sql = reset($row); + if (crc32($sql) == $partial) break; + } + } + } + $sql = str_replace('?',"''",$sql); + + if ($partial) { + $sqlq = $this->conn->qstr($sql.'%'); + $sql = $this->conn->GetOne("select sql1 from adodb_logsql where sql1 like $sqlq"); + } + + $s = 'Explain: '.htmlspecialchars($sql).'
'; + $rs = $this->conn->Execute('EXPLAIN '.$sql); + $s .= rs2html($rs,false,false,false,false); + $this->conn->LogSQL($save); + $s .= $this->Tracer($sql); + return $s; + } + + function Tables() + { + if (!$this->tablesSQL) return false; + + $rs = $this->conn->Execute($this->tablesSQL); + if (!$rs) return false; + + $html = rs2html($rs,false,false,false,false); + return $html; + } + + function GetReads() + { + global $ADODB_FETCH_MODE; + $save = $ADODB_FETCH_MODE; + $ADODB_FETCH_MODE = ADODB_FETCH_NUM; + if ($this->conn->fetchMode !== false) $savem = $this->conn->SetFetchMode(false); + + $rs = $this->conn->Execute('show status'); + + if (isset($savem)) $this->conn->SetFetchMode($savem); + $ADODB_FETCH_MODE = $save; + + if (!$rs) return 0; + $val = 0; + while (!$rs->EOF) { + switch($rs->fields[0]) { + case 'Com_select': + $val = $rs->fields[1]; + $rs->Close(); + return $val; + } + $rs->MoveNext(); + } + + $rs->Close(); + + return $val; + } + + function GetWrites() + { + global $ADODB_FETCH_MODE; + $save = $ADODB_FETCH_MODE; + $ADODB_FETCH_MODE = ADODB_FETCH_NUM; + if ($this->conn->fetchMode !== false) $savem = $this->conn->SetFetchMode(false); + + $rs = $this->conn->Execute('show status'); + + if (isset($savem)) $this->conn->SetFetchMode($savem); + $ADODB_FETCH_MODE = $save; + + if (!$rs) return 0; + $val = 0.0; + while (!$rs->EOF) { + switch($rs->fields[0]) { + case 'Com_insert': + $val += $rs->fields[1]; break; + case 'Com_delete': + $val += $rs->fields[1]; break; + case 'Com_update': + $val += $rs->fields[1]/2; + $rs->Close(); + return $val; + } + $rs->MoveNext(); + } + + $rs->Close(); + + return $val; + } + + function FindDBHitRatio() + { + // first find out type of table + //$this->conn->debug=1; + + global $ADODB_FETCH_MODE; + $save = $ADODB_FETCH_MODE; + $ADODB_FETCH_MODE = ADODB_FETCH_NUM; + if ($this->conn->fetchMode !== false) $savem = $this->conn->SetFetchMode(false); + + $rs = $this->conn->Execute('show table status'); + + if (isset($savem)) $this->conn->SetFetchMode($savem); + $ADODB_FETCH_MODE = $save; + + if (!$rs) return ''; + $type = strtoupper($rs->fields[1]); + $rs->Close(); + switch($type){ + case 'MYISAM': + case 'ISAM': + return $this->DBParameter('MyISAM cache hit ratio').' (MyISAM)'; + case 'INNODB': + return $this->DBParameter('InnoDB cache hit ratio').' (InnoDB)'; + default: + return $type.' not supported'; + } + + } + + function GetQHitRatio() + { + //Total number of queries = Qcache_inserts + Qcache_hits + Qcache_not_cached + $hits = $this->_DBParameter(array("show status","Qcache_hits")); + $total = $this->_DBParameter(array("show status","Qcache_inserts")); + $total += $this->_DBParameter(array("show status","Qcache_not_cached")); + + $total += $hits; + if ($total) return round(($hits*100)/$total,2); + return 0; + } + + /* + Use session variable to store Hit percentage, because MySQL + does not remember last value of SHOW INNODB STATUS hit ratio + + # 1st query to SHOW INNODB STATUS + 0.00 reads/s, 0.00 creates/s, 0.00 writes/s + Buffer pool hit rate 1000 / 1000 + + # 2nd query to SHOW INNODB STATUS + 0.00 reads/s, 0.00 creates/s, 0.00 writes/s + No buffer pool activity since the last printout + */ + function GetInnoDBHitRatio() + { + global $ADODB_FETCH_MODE; + + $save = $ADODB_FETCH_MODE; + $ADODB_FETCH_MODE = ADODB_FETCH_NUM; + if ($this->conn->fetchMode !== false) $savem = $this->conn->SetFetchMode(false); + + $rs = $this->conn->Execute('show innodb status'); + + if (isset($savem)) $this->conn->SetFetchMode($savem); + $ADODB_FETCH_MODE = $save; + + if (!$rs || $rs->EOF) return 0; + $stat = $rs->fields[0]; + $rs->Close(); + $at = strpos($stat,'Buffer pool hit rate'); + $stat = substr($stat,$at,200); + if (preg_match('!Buffer pool hit rate\s*([0-9]*) / ([0-9]*)!',$stat,$arr)) { + $val = 100*$arr[1]/$arr[2]; + $_SESSION['INNODB_HIT_PCT'] = $val; + return round($val,2); + } else { + if (isset($_SESSION['INNODB_HIT_PCT'])) return $_SESSION['INNODB_HIT_PCT']; + return 0; + } + } + + function GetKeyHitRatio() + { + $hits = $this->_DBParameter(array("show status","Key_read_requests")); + $reqs = $this->_DBParameter(array("show status","Key_reads")); + if ($reqs == 0) return 0; + + return round(($hits/($reqs+$hits))*100,2); + } + // start hack var $optimizeTableLow = 'CHECK TABLE %s FAST QUICK'; var $optimizeTableHigh = 'OPTIMIZE TABLE %s'; @@ -312,4 +311,4 @@ function optimizeTable( $table, $mode = ADODB_OPT_LOW) } // end hack } -?> \ No newline at end of file +?> diff --git a/lib/magpie/rss_parse.inc b/lib/magpie/rss_parse.inc index 56d420f097566..65aebef5be6a4 100644 --- a/lib/magpie/rss_parse.inc +++ b/lib/magpie/rss_parse.inc @@ -587,18 +587,18 @@ function map_attrs($k, $v) { // courtesy, Ryan Currie, ryan@digibliss.com if (!function_exists('array_change_key_case')) { - define("CASE_UPPER",1); - define("CASE_LOWER",0); + define("CASE_UPPER",1); + define("CASE_LOWER",0); - function array_change_key_case($array,$case=CASE_LOWER) { - if ($case=CASE_LOWER) $cmd=strtolower; - elseif ($case=CASE_UPPER) $cmd=strtoupper; + function array_change_key_case($array,$case=CASE_LOWER) { + if ($case == CASE_LOWER) $cmd=strtolower; + elseif ($case == CASE_UPPER) $cmd=strtoupper; foreach($array as $key=>$value) { $output[$cmd($key)]=$value; } return $output; - } + } } diff --git a/login/index.php b/login/index.php index dcb3a65af71ad..b4c1b81d51548 100644 --- a/login/index.php +++ b/login/index.php @@ -67,7 +67,7 @@ // Handles the case of another Moodle site linking into a page on this site //TODO: move weblink into own auth plugin include($CFG->dirroot.'/login/weblinkauth.php'); - if (function_exists(weblink_auth)) { + if (function_exists('weblink_auth')) { $user = weblink_auth($SESSION->wantsurl); } if ($user) { diff --git a/mod/lesson/reformat.php b/mod/lesson/reformat.php index 7068d02260f76..e13bc76207858 100644 --- a/mod/lesson/reformat.php +++ b/mod/lesson/reformat.php @@ -108,7 +108,7 @@ function importmodifiedaikenstyle($filename) { // make entry followed by '.' $line[1]='.'; } - elseif ( ($responses AND $answer_found) OR (count(outlines)<=1) ) { + elseif ( ($responses AND $answer_found) OR (count($outlines)<=1) ) { // we have found responses and an answer and the current line is not an answer switch ($line[0]) { case 1: diff --git a/mod/resource/type/file/resource.class.php b/mod/resource/type/file/resource.class.php index e63abaad939c6..af0fa10b68e12 100644 --- a/mod/resource/type/file/resource.class.php +++ b/mod/resource/type/file/resource.class.php @@ -736,7 +736,7 @@ function set_encrypted_parameter() { if (!empty($this->resource->reference) && file_exists($CFG->dirroot ."/mod/resource/type/file/externserverfile.php")) { include $CFG->dirroot ."/mod/resource/type/file/externserverfile.php"; - if (function_exists(extern_server_file)) { + if (function_exists('extern_server_file')) { return extern_server_file($this->resource->reference); } } diff --git a/mod/resource/type/ims/deploy.php b/mod/resource/type/ims/deploy.php index 631d628040bad..af7eda5b82f89 100644 --- a/mod/resource/type/ims/deploy.php +++ b/mod/resource/type/ims/deploy.php @@ -254,7 +254,7 @@ function ims_extract_submanifests($data) { $moresubmanifests = ims_extract_submanifests($submanifest['#']); /// Add them to results array if (!empty($moresubmanifests)) { - $submanifest_object->childs = moresubmanifests; + $submanifest_object->childs = $moresubmanifests; } /// Add submanifest object to results array $submanifests[] = $submanifest_object; diff --git a/mod/resource/type/ims/repository_deploy.php b/mod/resource/type/ims/repository_deploy.php index 4aae690db3246..a206699866a3c 100644 --- a/mod/resource/type/ims/repository_deploy.php +++ b/mod/resource/type/ims/repository_deploy.php @@ -248,7 +248,7 @@ function ims_extract_submanifests($data) { $moresubmanifests = ims_extract_submanifests($submanifest['#']); /// Add them to results array if (!empty($moresubmanifests)) { - $submanifest_object->childs = moresubmanifests; + $submanifest_object->childs = $moresubmanifests; } /// Add submanifest object to results array $submanifests[] = $submanifest_object; diff --git a/mod/resource/type/repository/resource.class.php b/mod/resource/type/repository/resource.class.php index 8fb2e4f90871d..dc665510af871 100644 --- a/mod/resource/type/repository/resource.class.php +++ b/mod/resource/type/repository/resource.class.php @@ -498,7 +498,7 @@ function set_encrypted_parameter() { if (!empty($this->resource->reference) && file_exists($CFG->dirroot ."/mod/resource/type/file/externserverfile.php")) { include $CFG->dirroot ."/mod/resource/type/file/externserverfile.php"; - if (function_exists(extern_server_file)) { + if (function_exists('extern_server_file')) { return extern_server_file($this->resource->reference); } } diff --git a/mod/scorm/datamodels/sequencinglib.php b/mod/scorm/datamodels/sequencinglib.php index 4eee118373f68..a06cddb0d7b3f 100755 --- a/mod/scorm/datamodels/sequencinglib.php +++ b/mod/scorm/datamodels/sequencinglib.php @@ -13,13 +13,13 @@ function scorm_seq_overall ($scoid,$userid,$request,$attempt) { } if ($seq->sequencing != null) { $seq = scorm_seq_sequencing($scoid,$userid,$seq); - if($seq->sequencing == 'exit'){//return the control to the LTS - return 'true'; - } + if($seq->sequencing == 'exit'){//return the control to the LTS + return 'true'; + } } if ($seq->delivery != null) { $seq = scorm_sequencing_delivery($scoid,$userid,$seq); - $seq = scorm_content_delivery_environment ($seq,$userid); + $seq = scorm_content_delivery_environment ($seq,$userid); } } if ($seq->exception != null) { @@ -35,24 +35,24 @@ function scorm_seq_navigation ($scoid,$userid,$request,$attempt=0) { /// Sequencing structure $seq = new stdClass(); $seq->currentactivity = scorm_get_sco($scoid); - $seq->traversaldir = null; - $seq->nextactivity = null; - $seq->deliveryvalid = null; - $seq->attempt = $attempt; - - $seq->identifiedactivity = null; - $seq->delivery = null; - $seq->deliverable = false; + $seq->traversaldir = null; + $seq->nextactivity = null; + $seq->deliveryvalid = null; + $seq->attempt = $attempt; + + $seq->identifiedactivity = null; + $seq->delivery = null; + $seq->deliverable = false; $seq->active = scorm_seq_is('active',$scoid,$userid); $seq->suspended = scorm_seq_is('suspended',$scoid,$userid); $seq->navigation = null; $seq->termination = null; $seq->sequencing = null; $seq->target = null; - $seq->endsession = null; + $seq->endsession = null; $seq->exception = null; - $seq->reachable = true; - $seq->prevact = true; + $seq->reachable = true; + $seq->prevact = true; switch ($request) { case 'start_': @@ -81,10 +81,10 @@ function scorm_seq_navigation ($scoid,$userid,$request,$attempt=0) { $sco = $seq->currentactivity; if ($sco->parent != '/') { if ($parentsco = scorm_get_parent($sco)) { - - if (isset($parentsco->flow) && ($parentsco->flow == true)) {//I think it's parentsco + + if (isset($parentsco->flow) && ($parentsco->flow == true)) {//I think it's parentsco // Current activity is active ! - if (scorm_seq_is('active',$sco->id,$userid)) { + if (scorm_seq_is('active',$sco->id,$userid)) { if ($request == 'continue_') { $seq->navigation = true; $seq->termination = 'exit'; @@ -98,7 +98,7 @@ function scorm_seq_navigation ($scoid,$userid,$request,$attempt=0) { $seq->exception = 'NB.2.1-5'; /// Violates control mode } } - } + } } } @@ -235,7 +235,7 @@ function scorm_seq_termination ($seq,$userid) { } /// Terminate Descendent Attempts Process - + if ($ancestors = scorm_get_ancestors($sco)) { foreach ($ancestors as $ancestor) { scorm_seq_end_attempt($ancestor,$userid,$seq); @@ -245,7 +245,7 @@ function scorm_seq_termination ($seq,$userid) { $seq->active = scorm_seq_is('active',$seq->currentactivity->id,$userid); $seq->termination = true; - $seq->sequencing = exit; + $seq->sequencing = exit; break; case 'suspendall': if (($seq->active) || ($seq->suspended)) { @@ -391,7 +391,7 @@ function scorm_seq_exit_action_rules($seq,$userid) { /// Terminate Descendent Attempts Process if ($commons) { foreach ($commons as $ancestor) { - + scorm_seq_end_attempt($ancestor,$userid,$seq->attempt); $seq->currentactivity = $ancestor; } @@ -427,65 +427,65 @@ function scorm_seq_post_cond_rules($seq,$userid) { function scorm_seq_rules_check ($sco, $action){ global $DB; - $act = null; - if($rules = $DB->get_records('scorm_seq_ruleconds', array('scoid'=>$sco->id,'action'=>$action))) { - foreach ($rules as $rule){ - if($act = scorm_seq_rule_check($sco,$rule)){ - return $act; - } - } - } - return $act; + $act = null; + if($rules = $DB->get_records('scorm_seq_ruleconds', array('scoid'=>$sco->id,'action'=>$action))) { + foreach ($rules as $rule){ + if($act = scorm_seq_rule_check($sco,$rule)){ + return $act; + } + } + } + return $act; } function scorm_seq_rule_check ($sco, $rule){ global $DB; - $bag = Array(); - $cond = ''; - $ruleconds = $DB->get_records('scorm_seq_rulecond', array('scoid'=>$sco->id,'ruleconditionsid'=>$rule->id)); - foreach ($ruleconds as $rulecond){ - if ($rulecond->operator = 'not') { - if ($rulecond->cond != 'unknown' ){ - $rulecond->cond = 'not'.$rulecond; - } - } - $bag [$rule->id] = $rulecond->cond; + $bag = Array(); + $cond = ''; + $ruleconds = $DB->get_records('scorm_seq_rulecond', array('scoid'=>$sco->id,'ruleconditionsid'=>$rule->id)); + foreach ($ruleconds as $rulecond){ + if ($rulecond->operator = 'not') { + if ($rulecond->cond != 'unknown' ){ + $rulecond->cond = 'not'.$rulecond; + } + } + $bag [$rule->id] = $rulecond->cond; - } - if (empty($bag)){ - $cond = 'unknown'; - return $cond; - } - - $size= sizeof($bag); - $i=0; - - if ($rule->conditioncombination = 'all'){ - foreach ($bag as $con){ - $cond = $cond.' and '.$con; - - } - } - else{ - foreach ($bag as $con){ - $cond = $cond.' or '.$con; - } - } - return $cond; + } + if (empty($bag)){ + $cond = 'unknown'; + return $cond; + } + + $size= sizeof($bag); + $i=0; + + if ($rule->conditioncombination = 'all'){ + foreach ($bag as $con){ + $cond = $cond.' and '.$con; + + } + } + else{ + foreach ($bag as $con){ + $cond = $cond.' or '.$con; + } + } + return $cond; } function scorm_seq_overall_rollup($sco,$userid){//Carlos - if ($ancestors = scorm_get_ancestors($sco)) { + if ($ancestors = scorm_get_ancestors($sco)) { foreach ($ancestors as $ancestor) { - if(!scorm_is_leaf($ancestor)){ - scorm_seq_measure_rollup($sco,$userid); - } - scorm_seq_objective_rollup($sco,$userid); - scorm_seq_activity_progress_rollup($sco,$userid); + if(!scorm_is_leaf($ancestor)){ + scorm_seq_measure_rollup($sco,$userid); + } + scorm_seq_objective_rollup($sco,$userid); + scorm_seq_activity_progress_rollup($sco,$userid); } @@ -496,127 +496,127 @@ function scorm_seq_overall_rollup($sco,$userid){//Carlos function scorm_seq_measure_rollup($sco,$userid){ - $totalmeasure = 0; //Check if there is something similar in the database - $valid = false;//Same as in the last line - $countedmeasures = 0;//Same too - $targetobjective = null; - $readable = true;//to check if status and measure weight are readable - $objectives = $DB->get_records('scorm_seq_objective', array('scoid'=>$sco->id)); + $totalmeasure = 0; //Check if there is something similar in the database + $valid = false;//Same as in the last line + $countedmeasures = 0;//Same too + $targetobjective = null; + $readable = true;//to check if status and measure weight are readable + $objectives = $DB->get_records('scorm_seq_objective', array('scoid'=>$sco->id)); foreach ($objectives as $objective){ - if ($objective->primaryobj == true){//Objective contributes to rollup I'm using primaryobj field, but not - $targetobjective = $objective; - break; - } + if ($objective->primaryobj == true){//Objective contributes to rollup I'm using primaryobj field, but not + $targetobjective = $objective; + break; + } - } + } - if ($targetobjective != null){ - $children = scorm_get_children($sco); + if ($targetobjective != null){ + $children = scorm_get_children($sco); foreach ($children as $child){ - $child = scorm_get_sco ($child); - if (!isset($child->tracked) || ($child->tracked == 1)){ - - $rolledupobjective = null;// we set the rolled up activity to undefined - $objectives = $DB->get_records('scorm_seq_objective', array('scoid'=>$child->id)); + $child = scorm_get_sco ($child); + if (!isset($child->tracked) || ($child->tracked == 1)){ + + $rolledupobjective = null;// we set the rolled up activity to undefined + $objectives = $DB->get_records('scorm_seq_objective', array('scoid'=>$child->id)); foreach ($objectives as $objective){ - if ($objective->primaryobj == true){//Objective contributes to rollup I'm using primaryobj field, but not - $rolledupobjective = $objective; - break; - } - } - if ($rolledupobjective != null){ + if ($objective->primaryobj == true){//Objective contributes to rollup I'm using primaryobj field, but not + $rolledupobjective = $objective; + break; + } + } + if ($rolledupobjective != null){ $child = scorm_get_sco($child->id); - - $countedmeasures = $countedmeasures + ($child->measureweight); - if (!scorm_seq_is('objectivemeasurestatus',$sco->id,$userid)) { - $normalizedmeasure = $DB->get_record('scorm_scoes_track', array('scoid'=>$child->id,'userid'=>$userid,'element'=>'objectivenormalizedmeasure')); - $totalmeasure = $totalmeasure + (($normalizedmeasure->value) * ($child->measureweight)); - $valid = true; - } - - + + $countedmeasures = $countedmeasures + ($child->measureweight); + if (!scorm_seq_is('objectivemeasurestatus',$sco->id,$userid)) { + $normalizedmeasure = $DB->get_record('scorm_scoes_track', array('scoid'=>$child->id,'userid'=>$userid,'element'=>'objectivenormalizedmeasure')); + $totalmeasure = $totalmeasure + (($normalizedmeasure->value) * ($child->measureweight)); + $valid = true; + } + + - } - } - } - - - if(!$valid){ - - scorm_seq_set('objectivemeasurestatus',$sco->id,$userid,false); - - } - else{ - if($countedmeasures>0){ - scorm_seq_set('objectivemeasurestatus',$sco->id,$userid); - $val=$totalmeasure/$countedmeasures; - scorm_seq_set('objectivenormalizedmeasure',$sco->id,$userid,$val); - - } - else{ - scorm_seq_set('objectivemeasurestatus',$sco->id,$userid,false); - - } - } - - } - + } + } + } + + + if(!$valid){ + + scorm_seq_set('objectivemeasurestatus',$sco->id,$userid,false); + + } + else{ + if($countedmeasures>0){ + scorm_seq_set('objectivemeasurestatus',$sco->id,$userid); + $val=$totalmeasure/$countedmeasures; + scorm_seq_set('objectivenormalizedmeasure',$sco->id,$userid,$val); + + } + else{ + scorm_seq_set('objectivemeasurestatus',$sco->id,$userid,false); + + } + } + + } + } function scorm_seq_objective_rollup($sco,$userid){ global $DB; - + scorm_seq_objective_rollup_measure($sco,$userid); scorm_seq_objective_rollup_rules($sco,$userid); scorm_seq_objective_rollup_default($sco,$userid); /* - if($targetobjective->satisfiedbymeasure){ - scorm_seq_objective_rollup_measure($sco,$userid); - } - else{ - if ((scorm_seq_rollup_rule_check($sco,$userid,'incomplete'))|| (scorm_seq_rollup_rule_check($sco,$userid,'completed'))){ - scorm_seq_objective_rollup_rules($sco,$userid); - } - else{ + if($targetobjective->satisfiedbymeasure){ + scorm_seq_objective_rollup_measure($sco,$userid); + } + else{ + if ((scorm_seq_rollup_rule_check($sco,$userid,'incomplete'))|| (scorm_seq_rollup_rule_check($sco,$userid,'completed'))){ + scorm_seq_objective_rollup_rules($sco,$userid); + } + else{ $rolluprules = $DB->get_record('scorm_seq_rolluprule', array('scoid'=>$sco->id,'userid'=>$userid)); foreach($rolluprules as $rolluprule){ $rollupruleconds = $DB->get_records('scorm_seq_rolluprulecond', array('rollupruleid'=>$rolluprule->id)); - foreach($rollupruleconds as $rolluprulecond){ + foreach($rollupruleconds as $rolluprulecond){ switch ($rolluprulecond->cond!='satisfied' && $rolluprulecond->cond!='completed' && $rolluprulecond->cond!='attempted'){ - - scorm_seq_set('objectivesatisfiedstatus',$sco->id,$userid, false); + + scorm_seq_set('objectivesatisfiedstatus',$sco->id,$userid, false); - break; - } - } + break; + } + } - - } - } -*/ + + } + } +*/ } function scorm_seq_objective_rollup_measure($sco,$userid){ global $DB; - $targetobjective = null; - + $targetobjective = null; + - $objectives = $DB->get_records('scorm_seq_objective', array('scoid'=>$sco->id)); + $objectives = $DB->get_records('scorm_seq_objective', array('scoid'=>$sco->id)); foreach ($objectives as $objective){ - if ($objective->primaryobj == true){ - $targetobjective = $objective; - break; - } - } - if ($targetobjective != null){ + if ($objective->primaryobj == true){ + $targetobjective = $objective; + break; + } + } + if ($targetobjective != null){ - if($targetobjective->satisfiedbymeasure){ + if($targetobjective->satisfiedbymeasure){ if (!scorm_seq_is('objectiveprogressstatus',$sco->id,$userid)) { @@ -625,454 +625,454 @@ function scorm_seq_objective_rollup_measure($sco,$userid){ } - else{ - if (scorm_seq_is('active',$sco->id,$userid)) { - $isactive = true; - } - else{ - $isactive = false; - } - - $normalizedmeasure = $DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'objectivenormalizedmeasure')); - - $sco = scorm_get_sco ($sco->id); - - if (!$isactive || ($isactive && (!isset($sco->measuresatisfactionifactive) || $sco->measuresatisfactionifactive == true))){ - if($normalizedmeasure->value >= $targetobjective->minnormalizedmeasure){ - scorm_seq_set('objectiveprogressstatus',$sco->id,$userid); - scorm_seq_set('objectivesatisfiedstatus',$sco->id,$userid); - } - else{ - scorm_seq_set('objectiveprogressstatus',$sco->id,$userid); - scorm_seq_set('objectivesatisfiedstatus',$sco->id,$userid,false); - } - } - else{ - - scorm_seq_set('objectiveprogressstatus',$sco->id,$userid,false); - - } - } - } - } + else{ + if (scorm_seq_is('active',$sco->id,$userid)) { + $isactive = true; + } + else{ + $isactive = false; + } + + $normalizedmeasure = $DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'objectivenormalizedmeasure')); + + $sco = scorm_get_sco ($sco->id); + + if (!$isactive || ($isactive && (!isset($sco->measuresatisfactionifactive) || $sco->measuresatisfactionifactive == true))){ + if($normalizedmeasure->value >= $targetobjective->minnormalizedmeasure){ + scorm_seq_set('objectiveprogressstatus',$sco->id,$userid); + scorm_seq_set('objectivesatisfiedstatus',$sco->id,$userid); + } + else{ + scorm_seq_set('objectiveprogressstatus',$sco->id,$userid); + scorm_seq_set('objectivesatisfiedstatus',$sco->id,$userid,false); + } + } + else{ + + scorm_seq_set('objectiveprogressstatus',$sco->id,$userid,false); + + } + } + } + } } function scorm_seq_objective_rollup_default($sco,$userid){ global $DB; - if (!(scorm_seq_rollup_rule_check($sco,$userid,'incomplete')) && !(scorm_seq_rollup_rule_check($sco,$userid,'completed'))){ - + if (!(scorm_seq_rollup_rule_check($sco,$userid,'incomplete')) && !(scorm_seq_rollup_rule_check($sco,$userid,'completed'))){ + $rolluprules = $DB->get_record('scorm_seq_rolluprule', array('scoid'=>$sco->id,'userid'=>$userid)); foreach($rolluprules as $rolluprule){ $rollupruleconds = $DB->get_records('scorm_seq_rolluprulecond', array('rollupruleid'=>$rolluprule->id)); - foreach($rollupruleconds as $rolluprulecond){ + foreach($rollupruleconds as $rolluprulecond){ if ($rolluprulecond->cond!='satisfied' && $rolluprulecond->cond!='completed' && $rolluprulecond->cond!='attempted'){ - - scorm_seq_set('objectivesatisfiedstatus',$sco->id,$userid, false); + + scorm_seq_set('objectivesatisfiedstatus',$sco->id,$userid, false); - break; - } - } + break; + } + } - + } - } - + } + } function scorm_seq_objective_rollup_rules($sco,$userid){ global $DB; - $targetobjective = null; + $targetobjective = null; - $objectives = $DB->get_records('scorm_seq_objective', array('scoid'=>$sco->id)); + $objectives = $DB->get_records('scorm_seq_objective', array('scoid'=>$sco->id)); foreach ($objectives as $objective){ - if ($objective->primaryobj == true){//Objective contributes to rollup I'm using primaryobj field, but not - $targetobjective = $objective; - break; - } - } - if ($targetobjective != null){ + if ($objective->primaryobj == true){//Objective contributes to rollup I'm using primaryobj field, but not + $targetobjective = $objective; + break; + } + } + if ($targetobjective != null){ - if(scorm_seq_rollup_rule_check($sco,$userid,'notsatisfied')){//with not satisfied rollup for the activity + if(scorm_seq_rollup_rule_check($sco,$userid,'notsatisfied')){//with not satisfied rollup for the activity - - scorm_seq_set('objectiveprogressstatus',$sco->id,$userid); - scorm_seq_set('objectivesatisfiedstatus',$sco->id,$userid,false); - } - if(scorm_seq_rollup_rule_check($sco,$userid,'satisfied')){//with satisfied rollup for the activity - scorm_seq_set('objectiveprogressstatus',$sco->id,$userid); - scorm_seq_set('objectivesatisfiedstatus',$sco->id,$userid); - } + + scorm_seq_set('objectiveprogressstatus',$sco->id,$userid); + scorm_seq_set('objectivesatisfiedstatus',$sco->id,$userid,false); + } + if(scorm_seq_rollup_rule_check($sco,$userid,'satisfied')){//with satisfied rollup for the activity + scorm_seq_set('objectiveprogressstatus',$sco->id,$userid); + scorm_seq_set('objectivesatisfiedstatus',$sco->id,$userid); + } - } + } } function scorm_seq_activity_progress_rollup ($sco, $userid){ - if(scorm_seq_rollup_rule_check($sco,$userid,'incomplete')){ - //incomplete rollup action - scorm_seq_set('attemptcompletionstatus',$sco->id,$userid,false,$seq->attempt); - scorm_seq_set('attemptprogressstatus',$sco->id,$userid,true,$seq->attempt); + if(scorm_seq_rollup_rule_check($sco,$userid,'incomplete')){ + //incomplete rollup action + scorm_seq_set('attemptcompletionstatus',$sco->id,$userid,false,$seq->attempt); + scorm_seq_set('attemptprogressstatus',$sco->id,$userid,true,$seq->attempt); - } + } if(scorm_seq_rollup_rule_check($sco,$userid,'completed')){ - //incomplete rollup action - scorm_seq_set('attemptcompletionstatus',$sco->id,true,$userid); - scorm_seq_set('attemptprogressstatus',$sco->id,true,$userid); - } + //incomplete rollup action + scorm_seq_set('attemptcompletionstatus',$sco->id,true,$userid); + scorm_seq_set('attemptprogressstatus',$sco->id,true,$userid); + } } function scorm_seq_rollup_rule_check ($sco,$userid,$action){ global $DB; - if($rolluprules = $DB->get_record('scorm_seq_rolluprule', array('scoid'=>$sco->id,'userid'=>$userid,'action'=>$action))) { + if($rolluprules = $DB->get_record('scorm_seq_rolluprule', array('scoid'=>$sco->id,'userid'=>$userid,'action'=>$action))) { $childrenbag = Array (); - $children = scorm_get_children ($sco); + $children = scorm_get_children ($sco); - foreach($rolluprules as $rolluprule){ + foreach($rolluprules as $rolluprule){ - foreach ($children as $child){ + foreach ($children as $child){ - /*$tracked = $DB->get_records('scorm_scoes_track', array('scoid'=>$child->id,'userid'=>$userid)); - if($tracked && $tracked->attemp != 0){*/ - $child = scorm_get_sco ($child); - if (!isset($child->tracked) || ($child->tracked == 1)){ + /*$tracked = $DB->get_records('scorm_scoes_track', array('scoid'=>$child->id,'userid'=>$userid)); + if($tracked && $tracked->attemp != 0){*/ + $child = scorm_get_sco ($child); + if (!isset($child->tracked) || ($child->tracked == 1)){ - if(scorm_seq_check_child ($child,$action,$userid)){ + if(scorm_seq_check_child ($child,$action,$userid)){ $rollupruleconds = $DB->get_records('scorm_seq_rolluprulecond', array('rollupruleid'=>$rolluprule->id)); - $evaluate = scorm_seq_evaluate_rollupcond($child,$rolluprule->conditioncombination,$rollupruleconds,$userid); - if ($evaluate=='unknown'){ - array_push($childrenbag,'unknown'); - } - else{ - if($evaluate == true){ - array_push($childrenbag,true); - } - else{ - array_push($childrenbag,false); - } - } - } - } - - } - $change = false; - - switch ($rolluprule->childactivityset){ - - case 'all': - if((array_search(false,$childrenbag)===false)&&(array_search('unknown',$childrenbag)===false)){//I think I can use this condition instead equivalent to OR - $change = true; - } - break; - - case 'any': - if(array_search(true,$childrenbag)!==false){//I think I can use this condition instead equivalent to OR - $change = true; - } - break; - - case 'none': - if((array_search(true,$childrenbag)===false)&&(array_search('unknown',$childrenbag)===false)){//I think I can use this condition instead equivalent to OR - $change = true; - } - break; - - case 'atleastcount': - foreach ($childrenbag as $itm){//I think I can use this condition instead equivalent to OR - $cont = 0; - if($itm === true){ - $cont++; - } - if($cont >= $roullprule->minimumcount){ - $change = true; - } - } - break; - - case 'atleastcount': - foreach ($childrenbag as $itm){//I think I can use this condition instead equivalent to OR - $cont = 0; - if($itm === true){ - $cont++; - } - if($cont >= $roullprule->minimumcount){ - $change = true; - } - } - break; - - case 'atleastpercent': - foreach ($childrenbag as $itm){//I think I can use this condition instead equivalent to OR - $cont = 0; - if($itm === true){ - $cont++; - } - if(($cont/sizeof($childrenbag)) >= $roullprule->minimumcount){ - $change = true; - } - } - break; - } - if ($change==true){ - return true; - } - } - } - return false; + $evaluate = scorm_seq_evaluate_rollupcond($child,$rolluprule->conditioncombination,$rollupruleconds,$userid); + if ($evaluate=='unknown'){ + array_push($childrenbag,'unknown'); + } + else{ + if($evaluate == true){ + array_push($childrenbag,true); + } + else{ + array_push($childrenbag,false); + } + } + } + } + + } + $change = false; + + switch ($rolluprule->childactivityset){ + + case 'all': + if((array_search(false,$childrenbag)===false)&&(array_search('unknown',$childrenbag)===false)){//I think I can use this condition instead equivalent to OR + $change = true; + } + break; + + case 'any': + if(array_search(true,$childrenbag)!==false){//I think I can use this condition instead equivalent to OR + $change = true; + } + break; + + case 'none': + if((array_search(true,$childrenbag)===false)&&(array_search('unknown',$childrenbag)===false)){//I think I can use this condition instead equivalent to OR + $change = true; + } + break; + + case 'atleastcount': + foreach ($childrenbag as $itm){//I think I can use this condition instead equivalent to OR + $cont = 0; + if($itm === true){ + $cont++; + } + if($cont >= $roullprule->minimumcount){ + $change = true; + } + } + break; + + case 'atleastcount': + foreach ($childrenbag as $itm){//I think I can use this condition instead equivalent to OR + $cont = 0; + if($itm === true){ + $cont++; + } + if($cont >= $roullprule->minimumcount){ + $change = true; + } + } + break; + + case 'atleastpercent': + foreach ($childrenbag as $itm){//I think I can use this condition instead equivalent to OR + $cont = 0; + if($itm === true){ + $cont++; + } + if(($cont/sizeof($childrenbag)) >= $roullprule->minimumcount){ + $change = true; + } + } + break; + } + if ($change==true){ + return true; + } + } + } + return false; } function scorm_seq_evaluate_rollupcond($sco,$conditioncombination,$rollupruleconds,$userid){ - $bag = Array(); + $bag = Array(); $con = ""; - $val = false; - $unk = false; + $val = false; + $unk = false; foreach($rollupruleconds as $rolluprulecond){ - $condit = scorm_evaluate_cond($rolluprulecond,$sco,$userid); - - if($rule->operator=='not'){// If operator is not, negate the condition - if ($rule->cond != 'unknown'){ - if ($condit){ - $condit = false; - } - else{ - $condit = true; - } - } - else{ - $condit = 'unknown'; - } - array_push($childrenbag,$condit); - } - - } - if (empty($bag)){ - return 'unknown'; - } - else{ - $i = 0; - foreach ($bag as $b){ - - if ($rolluprule->conditioncombination == 'all'){ - - $val = true; - if($b == 'unknown'){ - $unk = true; - } - if($b === false){ - return false; - } - } - - else{ + $condit = scorm_evaluate_cond($rolluprulecond,$sco,$userid); + + if($rule->operator=='not'){// If operator is not, negate the condition + if ($rule->cond != 'unknown'){ + if ($condit){ + $condit = false; + } + else{ + $condit = true; + } + } + else{ + $condit = 'unknown'; + } + array_push($childrenbag,$condit); + } + + } + if (empty($bag)){ + return 'unknown'; + } + else{ + $i = 0; + foreach ($bag as $b){ + + if ($rolluprule->conditioncombination == 'all'){ + + $val = true; + if($b == 'unknown'){ + $unk = true; + } + if($b === false){ + return false; + } + } + + else{ $val = false; - - if($b == 'unknown'){ - $unk = true; - } - if($b === true){ - return true; - } - } - - - } - } - if ($unk){ - return 'unknown'; - } - return $val; + + if($b == 'unknown'){ + $unk = true; + } + if($b === true){ + return true; + } + } + + + } + } + if ($unk){ + return 'unknown'; + } + return $val; } function scorm_evaluate_condition ($rolluprulecond,$sco,$userid){ global $DB; - - $res = false; + + $res = false; switch ($rolluprulecond->cond){ - - case 'satisfied': - if($r=$DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'objectivesatisfiedstatus'))) { - if($r->value == true){ - if ($r=$DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'objectiveprogressstatus'))) { - if($r->value == true){ - $res= true; - } - } - } - } - break; - - case 'objectiveStatusKnown': + + case 'satisfied': + if($r=$DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'objectivesatisfiedstatus'))) { + if($r->value == true){ + if ($r=$DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'objectiveprogressstatus'))) { + if($r->value == true){ + $res= true; + } + } + } + } + break; + + case 'objectiveStatusKnown': if ($r=$DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'objectiveprogressstatus'))) { - if($r->value == true){ - $res= true; - } - } - break; - - case 'objectiveMeasureKnown': - if ($r = $DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'objectivemeasurestatus'))) { - if($r->value == true){ - $res = true; - } - - } - - break; - - case 'completed': - if ($r = $DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'attemptcompletionstatus'))) { - if($r->value){ - if ($r = $DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'attemptprogressstatus'))) { - if($r->value){ - $res = true; - } - - } - } - - } - break; - - case 'attempted': - if ($r = $DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'activityprogressstatus'))) { - if($r->value){ - if ($r = $DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'activityattemptcount'))) { - if($r->value > 0){ - $res = true; - } - - } - } - - } - break; - - - case 'attemptLimitExceeded': - if ($r = $DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'activityprogressstatus'))) { - if($r->value){ - if ($r = $DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'limitconditionattemptlimitcontrol'))) { - if($r->value){ - if ($r = $DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'activityattemptcount')) && $r2 = $DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'limitconditionattemptlimit')) ){ - if($r->value >= $r2->value){ - $res = true; - } - - } - - } - - } - - } - - } - - break; - - case 'activityProgressKnown': - - if ($r = $DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'activityprogressstatus'))) { - if($r->value){ - if ($r = $DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'attemptprogressstatus'))) { - if($r->value){ - $res = true; - } - - } - - } - - } - - break; - } - return $res; + if($r->value == true){ + $res= true; + } + } + break; + + case 'objectiveMeasureKnown': + if ($r = $DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'objectivemeasurestatus'))) { + if($r->value == true){ + $res = true; + } + + } + + break; + + case 'completed': + if ($r = $DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'attemptcompletionstatus'))) { + if($r->value){ + if ($r = $DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'attemptprogressstatus'))) { + if($r->value){ + $res = true; + } + + } + } + + } + break; + + case 'attempted': + if ($r = $DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'activityprogressstatus'))) { + if($r->value){ + if ($r = $DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'activityattemptcount'))) { + if($r->value > 0){ + $res = true; + } + + } + } + + } + break; + + + case 'attemptLimitExceeded': + if ($r = $DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'activityprogressstatus'))) { + if($r->value){ + if ($r = $DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'limitconditionattemptlimitcontrol'))) { + if($r->value){ + if ($r = $DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'activityattemptcount')) && $r2 = $DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'limitconditionattemptlimit')) ){ + if($r->value >= $r2->value){ + $res = true; + } + + } + + } + + } + + } + + } + + break; + + case 'activityProgressKnown': + + if ($r = $DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'activityprogressstatus'))) { + if($r->value){ + if ($r = $DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'attemptprogressstatus'))) { + if($r->value){ + $res = true; + } + + } + + } + + } + + break; + } + return $res; } function scorm_seq_check_child ($sco, $action, $userid){ global $DB; - $included = false; - $sco=scorm_get_sco($sco->id); - $r = $DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'activityattemptcount')); - if ($action == 'satisfied' || $action == 'notsatisfied'){ - if (!$sco->rollupobjectivesatisfied){ - $included = true; - if (($action == 'satisfied' && $sco->requiredforsatisfied == 'ifnotsuspended') || ($action == 'notsatisfied' && $sco->requiredfornotsatisfied == 'ifnotsuspended')){ - - if (!scorm_seq_is('activityprogressstatus',$sco->id,$userid) || ((($r->value)>0)&& !scorm_seq_is('suspended',$sco->id,$userid))){ - $included = false; - } - - } - else{ - if (($action == 'satisfied' && $sco->requiredforsatisfied == 'ifattempted') || ($action == 'notsatisfied' && $sco->requiredfornotsatisfied == 'ifattempted')){ - if (!scorm_seq_is('activityprogressstatus',$sco->id,$userid) || (($r->value) == 0)){ - $included = false; - } + $included = false; + $sco=scorm_get_sco($sco->id); + $r = $DB->get_record('scorm_scoes_track', array('scoid'=>$sco->id,'userid'=>$userid,'element'=>'activityattemptcount')); + if ($action == 'satisfied' || $action == 'notsatisfied'){ + if (!$sco->rollupobjectivesatisfied){ + $included = true; + if (($action == 'satisfied' && $sco->requiredforsatisfied == 'ifnotsuspended') || ($action == 'notsatisfied' && $sco->requiredfornotsatisfied == 'ifnotsuspended')){ + + if (!scorm_seq_is('activityprogressstatus',$sco->id,$userid) || ((($r->value)>0)&& !scorm_seq_is('suspended',$sco->id,$userid))){ + $included = false; + } + + } + else{ + if (($action == 'satisfied' && $sco->requiredforsatisfied == 'ifattempted') || ($action == 'notsatisfied' && $sco->requiredfornotsatisfied == 'ifattempted')){ + if (!scorm_seq_is('activityprogressstatus',$sco->id,$userid) || (($r->value) == 0)){ + $included = false; + } + } + else{ + if (($action == 'satisfied' && $sco->requiredforsatisfied == 'ifnotskipped') || ($action == 'notsatisfied' && $sco->requiredfornotsatisfied == 'ifnotskipped')){ + $rulch = scorm_seq_rules_check($sco, 'skip'); + if ($rulch != null){ + $included = false; + } + } } - else{ - if (($action == 'satisfied' && $sco->requiredforsatisfied == 'ifnotskipped') || ($action == 'notsatisfied' && $sco->requiredfornotsatisfied == 'ifnotskipped')){ - $rulch = scorm_seq_rules_check($sco, 'skip'); - if ($rulch != null){ - $included = false; - } - } - } - } + } } - } + } if ($action == 'completed' || $action == 'incomplete'){ - if (!$sco->rollupprogresscompletion){ - $included = true; + if (!$sco->rollupprogresscompletion){ + $included = true; if (($action == 'completed' && $sco->requiredforcompleted == 'ifnotsuspended') || ($action == 'incomplete' && $sco->requiredforincomplete == 'ifnotsuspended')){ - if (!scorm_seq_is('activityprogressstatus',$sco->id,$userid) || ( (($r->value)>0)&& !scorm_seq_is('suspended',$sco->id,$userid))){ - $included = false; - } - - } - else{ - - if (($action == 'completed' && $sco->requiredforcompleted == 'ifattempted') || ($action == 'incomplete' && $sco->requiredforincomplete == 'ifattempted')){ - if (!scorm_seq_is('activityprogressstatus',$sco->id,$userid) || (($r->value)==0)){ - $included = false; - } - - } - else{ - if (($action == 'completed' && $sco->requiredforsatisfied == 'ifnotskipped') || ($action == 'incomplete' && $sco->requiredfornotsatisfied == 'ifnotskipped')){ - $rulch = scorm_seq_rules_check($sco, 'skip'); - if ($rulch != null){ - $included = false; - } - } - } - - - } - - } - } + if (!scorm_seq_is('activityprogressstatus',$sco->id,$userid) || ( (($r->value)>0)&& !scorm_seq_is('suspended',$sco->id,$userid))){ + $included = false; + } + + } + else{ + + if (($action == 'completed' && $sco->requiredforcompleted == 'ifattempted') || ($action == 'incomplete' && $sco->requiredforincomplete == 'ifattempted')){ + if (!scorm_seq_is('activityprogressstatus',$sco->id,$userid) || (($r->value)==0)){ + $included = false; + } + + } + else{ + if (($action == 'completed' && $sco->requiredforsatisfied == 'ifnotskipped') || ($action == 'incomplete' && $sco->requiredfornotsatisfied == 'ifnotskipped')){ + $rulch = scorm_seq_rules_check($sco, 'skip'); + if ($rulch != null){ + $included = false; + } + } + } + + + } + + } + } return $included; @@ -1083,23 +1083,23 @@ function scorm_seq_sequencing ($scoid,$userid,$seq) { case 'start': //TODO: undefined $sco! - $seq = scorm_seq_start_sequencing($sco,$userid,$seq); //We'll see the parameters we have to send, this should update delivery and end - $seq->sequencing = true; + $seq = scorm_seq_start_sequencing($sco,$userid,$seq); //We'll see the parameters we have to send, this should update delivery and end + $seq->sequencing = true; - - break; - + + break; + case 'resumeall': - $seq = scorm_seq_resume_sequencing($sco,$userid,$seq); //We'll see the parameters we have to send, this should update delivery and end - $seq->sequencing = true; - - + $seq = scorm_seq_resume_sequencing($sco,$userid,$seq); //We'll see the parameters we have to send, this should update delivery and end + $seq->sequencing = true; + + break; case 'exit': - $seq = scorm_seq_exit_sequencing($sco,$userid,$seq); //We'll see the parameters we have to send, this should update delivery and end - $seq->sequencing = true; + $seq = scorm_seq_exit_sequencing($sco,$userid,$seq); //We'll see the parameters we have to send, this should update delivery and end + $seq->sequencing = true; @@ -1108,32 +1108,32 @@ function scorm_seq_sequencing ($scoid,$userid,$seq) { case 'retry': $seq = scorm_seq_retry_sequencing($sco,$userid,$seq); //We'll see the parameters we have to send, this should update delivery and end $seq->sequencing = true; - + break; - case 'previous': - $seq = scorm_seq_previous_sequencing($sco,$userid,$seq);// We'll see the parameters we have to send, this should update delivery and end - $seq->sequencing = true; + case 'previous': + $seq = scorm_seq_previous_sequencing($sco,$userid,$seq);// We'll see the parameters we have to send, this should update delivery and end + $seq->sequencing = true; break; - case 'choice': - $seq = scorm_seq_choice_sequencing($sco,$userid,$seq);// We'll see the parameters we have to send, this should update delivery and end + case 'choice': + $seq = scorm_seq_choice_sequencing($sco,$userid,$seq);// We'll see the parameters we have to send, this should update delivery and end $seq->sequencing = true; - + - break; + break; } - if ($seq->exception != null){ - $seq->sequencing = false; - return $seq; - } - - $seq->sequencing= true; + if ($seq->exception != null){ + $seq->sequencing = false; + return $seq; + } + + $seq->sequencing= true; return $seq; } @@ -1141,383 +1141,383 @@ function scorm_seq_sequencing ($scoid,$userid,$seq) { function scorm_seq_start_sequencing($scoid,$userid,$seq){ global $DB; - if (!empty($seq->currentactivity)) { - $seq->delivery = null; - $seq->exception = 'SB.2.5-1'; - return $seq; - } - $sco = $DB->get_record('scorm_scoes', array('scoid'=>$scoid,'userid'=>$userid)); - if (($sco->parent == '/') && scorm_is_leaf($sco)) {//if the activity is the root and is leaf - $seq->delivery = $sco; - } - else{ - $ancestors = scorm_get_ancestors($sco); - $ancestorsroot = array_reverse($ancestors); - $res = scorm_seq_flow($ancestorsroot[0],'forward',$seq,true,$userid); - if($res){ - return $res; - } - else{ - //return end and exception - } - } + if (!empty($seq->currentactivity)) { + $seq->delivery = null; + $seq->exception = 'SB.2.5-1'; + return $seq; + } + $sco = $DB->get_record('scorm_scoes', array('scoid'=>$scoid,'userid'=>$userid)); + if (($sco->parent == '/') && scorm_is_leaf($sco)) {//if the activity is the root and is leaf + $seq->delivery = $sco; + } + else{ + $ancestors = scorm_get_ancestors($sco); + $ancestorsroot = array_reverse($ancestors); + $res = scorm_seq_flow($ancestorsroot[0],'forward',$seq,true,$userid); + if($res){ + return $res; + } + else{ + //return end and exception + } + } } function scorm_seq_resume_all_sequencing($scoid,$userid,$seq){ global $DB; - if (!empty($seq->currentactivity)){ - $seq->delivery = null; - $seq->exception = 'SB.2.6-1'; - return $seq; - } - $track = $DB->get_record('scorm_scoes_track', array('scoid'=>$scoid,'userid'=>$userid,'element'=>'suspendedactivity')); + if (!empty($seq->currentactivity)){ + $seq->delivery = null; + $seq->exception = 'SB.2.6-1'; + return $seq; + } + $track = $DB->get_record('scorm_scoes_track', array('scoid'=>$scoid,'userid'=>$userid,'element'=>'suspendedactivity')); if (!$track) { - $seq->delivery = null; - $seq->exception = 'SB.2.6-2'; - return $seq; - } - $seq->delivery = $DB->get_record('scorm_scoes', array('scoid'=>$scoid,'userid'=>$userid));//we assign the sco to the delivery - + $seq->delivery = null; + $seq->exception = 'SB.2.6-2'; + return $seq; + } + $seq->delivery = $DB->get_record('scorm_scoes', array('scoid'=>$scoid,'userid'=>$userid));//we assign the sco to the delivery + } function scorm_seq_continue_sequencing($scoid,$userid,$seq){ - if (empty($seq->currentactivity)) { - $seq->delivery = null; - $seq->exception = 'SB.2.7-1'; - return $seq; - } - $currentact= $seq->currentactivity; - if ($currentact->parent != '/') {//if the activity is the root and is leaf - $parent = scorm_get_parent ($currentact); - - if (!isset($parent->flow) || ($parent->flow == false)) { - $seq->delivery = null; - $seq->exception = 'SB.2.7-2'; - return $seq; - } - - $res = scorm_seq_flow($currentact,'forward',$seq,false,$userid); - if($res){ - return $res; - } - else{ - //return end and exception - } - - } -} - -function scorm_seq_previous_sequencing($scoid,$userid,$seq){ - if (empty($seq->currentactivity)) { - $seq->delivery = null; - $seq->exception = 'SB.2.8-1'; - return $seq; - } - - $currentact= $seq->currentactivity; - if ($currentact->parent != '/') {//if the activity is the root and is leaf - $parent = scorm_get_parent ($activity); // TODO: undefined!! - if (!isset($parent->flow) || ($parent->flow == false)) { - $seq->delivery = null; - $seq->exception = 'SB.2.8-2'; - return $seq; - } - - $res = scorm_seq_flow($currentact,'backward',$seq,false,$userid); - if($res){ - return $res; - } - else{ - //return end and exception - } - - } + if (empty($seq->currentactivity)) { + $seq->delivery = null; + $seq->exception = 'SB.2.7-1'; + return $seq; + } + $currentact= $seq->currentactivity; + if ($currentact->parent != '/') {//if the activity is the root and is leaf + $parent = scorm_get_parent ($currentact); + + if (!isset($parent->flow) || ($parent->flow == false)) { + $seq->delivery = null; + $seq->exception = 'SB.2.7-2'; + return $seq; + } + + $res = scorm_seq_flow($currentact,'forward',$seq,false,$userid); + if($res){ + return $res; + } + else{ + //return end and exception + } + + } +} + +function scorm_seq_previous_sequencing($scoid,$userid,$seq){ + if (empty($seq->currentactivity)) { + $seq->delivery = null; + $seq->exception = 'SB.2.8-1'; + return $seq; + } + + $currentact= $seq->currentactivity; + if ($currentact->parent != '/') {//if the activity is the root and is leaf + $parent = scorm_get_parent ($activity); // TODO: undefined!! + if (!isset($parent->flow) || ($parent->flow == false)) { + $seq->delivery = null; + $seq->exception = 'SB.2.8-2'; + return $seq; + } + + $res = scorm_seq_flow($currentact,'backward',$seq,false,$userid); + if($res){ + return $res; + } + else{ + //return end and exception + } + + } } function scorm_seq_exit_sequencing($scoid,$userid,$seq){ - if (empty($seq->currentactivity)) { - $seq->delivery = null; - $seq->exception = 'SB.2.11-1'; - return $seq; - } - - if ($seq->active){ - $seq->endsession = false; - $seq->exception = 'SB.2.11-2'; - return $seq; - } - $currentact= $seq->currentactivity; - if ($currentact->parent == '/'){ - $seq->endsession = true; - return $seq; - } - - $seq->endsession = false; - return $seq; + if (empty($seq->currentactivity)) { + $seq->delivery = null; + $seq->exception = 'SB.2.11-1'; + return $seq; + } + + if ($seq->active){ + $seq->endsession = false; + $seq->exception = 'SB.2.11-2'; + return $seq; + } + $currentact= $seq->currentactivity; + if ($currentact->parent == '/'){ + $seq->endsession = true; + return $seq; + } + + $seq->endsession = false; + return $seq; } function scorm_seq_retry_sequencing($scoid,$userid,$seq){ - if (empty($seq->currentactivity)) { - $seq->delivery = null; - $seq->exception = 'SB.2.10-1'; - return $seq; - } - if ($seq->active || $seq->suspended){ - $seq->delivery = null; - $seq->exception = 'SB.2.10-2'; - return $seq; - } - - if (!scorm_is_leaf($seq->currentactivity)){ - $res = scorm_seq_flow($seq->currentactivity,'forward',$seq,true,$userid); - if($res != null){ - return $res; - //return deliver - } - else{ - $seq->delivery = null; - $seq->exception = 'SB.2.10-3'; - return $seq; - } - } - else{ - $seq->delivery = $seq->currentactivity; - return $seq; - } + if (empty($seq->currentactivity)) { + $seq->delivery = null; + $seq->exception = 'SB.2.10-1'; + return $seq; + } + if ($seq->active || $seq->suspended){ + $seq->delivery = null; + $seq->exception = 'SB.2.10-2'; + return $seq; + } + + if (!scorm_is_leaf($seq->currentactivity)){ + $res = scorm_seq_flow($seq->currentactivity,'forward',$seq,true,$userid); + if($res != null){ + return $res; + //return deliver + } + else{ + $seq->delivery = null; + $seq->exception = 'SB.2.10-3'; + return $seq; + } + } + else{ + $seq->delivery = $seq->currentactivity; + return $seq; + } } function scorm_seq_flow ($candidate,$direction,$seq,$childrenflag,$userid){ - //$PREVDIRECTION NOT DEFINED YET - - $activity=$candidate; - $deliverable=false; - $previdirection = null; - $seq = scorm_seq_flow_tree_traversal ($activity,$direction,$childrenflag,$prevdirection,$seq,$userid); // TODO: undefined - if($seq->identifiedactivity == null){//if identifies - $seq->identifiedactivity = $candidate; - $seq->deliverable = false; - return $seq; - } - else{ - $activity = $seq->identifiedactivity; - $seq = scorm_seq_flow_activity_traversal($activity,$userid,$direction,$childrenflag,$prevdirection,$seq,$userid);// - return $seq; - - } + //$PREVDIRECTION NOT DEFINED YET + + $activity=$candidate; + $deliverable=false; + $previdirection = null; + $seq = scorm_seq_flow_tree_traversal ($activity,$direction,$childrenflag,$prevdirection,$seq,$userid); // TODO: undefined + if($seq->identifiedactivity == null){//if identifies + $seq->identifiedactivity = $candidate; + $seq->deliverable = false; + return $seq; + } + else{ + $activity = $seq->identifiedactivity; + $seq = scorm_seq_flow_activity_traversal($activity,$userid,$direction,$childrenflag,$prevdirection,$seq,$userid);// + return $seq; + + } } function scorm_seq_flow_activity_traversal ($activity, $userid, $direction, $childrenflag, $prevdirection, $seq,$userid){//returns the next activity on the tree, traversal direction, control returned to the LTS, (may) exception $activity = scorm_get_sco ($activity); $parent = scorm_get_parent ($activity); if (!isset($parent->flow) || ($parent->flow == false)) { - $seq->deliverable = false; - $seq->exception = 'SB.2.2-1'; - $seq->nextactivity = $activity; - return $seq; - } + $seq->deliverable = false; + $seq->exception = 'SB.2.2-1'; + $seq->nextactivity = $activity; + return $seq; + } $rulch = scorm_seq_rules_check($sco, 'skipped'); // TODO: undefined - if ($rulch != null){ - $seq = scorm_seq_flow_tree_traversal ($activity, $direction, false, $prevdirection, $seq,$userid);//endsession and exception - if ($seq->identifiedactivity == null){ - $seq->deliverable = false; - $seq->nextactivity = $activity; - return $seq; - } - else{ - - if ($prevdirection = 'backward' && $seq->traversaldir == 'backward'){ - $seq = scorm_seq_flow_tree_traversal ($activity,$direction,false,null,$seq,$userid); - $seq = scorm_seq_flow_activity($seq->identifiedactivity, $userid, $direction, $childrenflag, $prevdirection, $seq,$userid); - } - else{ - $seq = scorm_seq_flow_tree_traversal ($activity,$direction,false,null,$seq,$userid); - $seq = scorm_seq_flow_activity($seq->identifiedactivity, $userid, $direction, $childrenflag, $prevdirection, $seq,$userid); - } - return $seq; - } - } - - $ch=scorm_check_activity ($activity,$userid); - - if ($ch){ - - $seq->deliverable = false; - $seq->exception = 'SB.2.2-2'; - $seq->nextactivity = $activity; - return $seq; - - } - - if (!scorm_is_leaf($activity)){ - - $seq = scorm_seq_flow_tree_traversal ($activity,$direction,true,null,$seq,$userid); - - if ($seq->identifiedactivity == null){ - $seq->deliverable = false; - $seq->nextactivity = $activity; - return $seq; - } - - else{ - if($direction == 'backward' && $seq->traversaldir == 'forward'){ - $seq = scorm_seq_flow_activity($seq->identifiedactivity, $userid, 'forward', $childrenflag, 'backward', $seq,$userid); - } - else{ - scorm_seq_flow_activity($seq->identifiedactivity, $userid, $direction, $childrenflag, null, $seq,$userid); - } - return $seq; - } - - } + if ($rulch != null){ + $seq = scorm_seq_flow_tree_traversal ($activity, $direction, false, $prevdirection, $seq,$userid);//endsession and exception + if ($seq->identifiedactivity == null){ + $seq->deliverable = false; + $seq->nextactivity = $activity; + return $seq; + } + else{ + + if ($prevdirection = 'backward' && $seq->traversaldir == 'backward'){ + $seq = scorm_seq_flow_tree_traversal ($activity,$direction,false,null,$seq,$userid); + $seq = scorm_seq_flow_activity($seq->identifiedactivity, $userid, $direction, $childrenflag, $prevdirection, $seq,$userid); + } + else{ + $seq = scorm_seq_flow_tree_traversal ($activity,$direction,false,null,$seq,$userid); + $seq = scorm_seq_flow_activity($seq->identifiedactivity, $userid, $direction, $childrenflag, $prevdirection, $seq,$userid); + } + return $seq; + } + } + + $ch=scorm_check_activity ($activity,$userid); + + if ($ch){ + + $seq->deliverable = false; + $seq->exception = 'SB.2.2-2'; + $seq->nextactivity = $activity; + return $seq; + + } + + if (!scorm_is_leaf($activity)){ + + $seq = scorm_seq_flow_tree_traversal ($activity,$direction,true,null,$seq,$userid); + + if ($seq->identifiedactivity == null){ + $seq->deliverable = false; + $seq->nextactivity = $activity; + return $seq; + } + + else{ + if($direction == 'backward' && $seq->traversaldir == 'forward'){ + $seq = scorm_seq_flow_activity($seq->identifiedactivity, $userid, 'forward', $childrenflag, 'backward', $seq,$userid); + } + else{ + scorm_seq_flow_activity($seq->identifiedactivity, $userid, $direction, $childrenflag, null, $seq,$userid); + } + return $seq; + } + + } $seq->deliverable = true; - $seq->nextactivity = $activity; + $seq->nextactivity = $activity; return $seq; } function scorm_seq_flow_tree_traversal ($activity,$direction,$childrenflag,$prevdirection,$seq,$userid){ - $revdirection = false; - $parent = scorm_get_parent ($activity); - $children = scorm_get_available_children ($parent); - $siz = sizeof ($children); + $revdirection = false; + $parent = scorm_get_parent ($activity); + $children = scorm_get_available_children ($parent); + $siz = sizeof ($children); if (($prevdirection != null && $prevdirection == 'backward') && ($children[$siz-1]->id == $activity->id)){ - $direction = 'backward'; - $children[0] = $activity; - $revdirection = true; - } - - if($direction = 'forward'){ - $ancestors = scorm_get_ancestors($activity); - $ancestorsroot = array_reverse($ancestors); - $preorder = scorm_get_preorder ($ancestorsroot); - $siz= sizeof ($preorder); - if (($activity->id == $preorder[$siz-1]->id) || (($activity->parent == '/') && !($childrenflag))){ - scorm_seq_terminate_descent($ancestorsroot,$userid); - $seq->endsession = true; - $seq->nextactivity = null; - return $seq; - } - if (scorm_is_leaf ($activity) || !$childrenflag){ - if ($children[$siz-1]->id == $activity->id){ - - $seq = scorm_seq_flow_tree_traversal ($parent, $direction, false, null, $seq,$userid); - // I think it's not necessary to do a return in here - } - else{ - $parent = scorm_get_parent($activity); - $children = scorm_get_available_children($parent); - $seq->traversaldir = $direction; - $sib = scorm_get_siblings($activity); - $pos = array_search($sib, $activity); - if ($pos !== false) { - if ($pos != sizeof ($sib)){ - $seq->nextactivity = $sib [$pos+1]; - return $seq; - } - else{ - $ch = scorm_get_children($sib[0]); - $seq->nextactivity = $ch[0]; - return $seq; - } - } - } - } - else{ - if (!empty ($children)){ - $seq->traversaldir = $direction; + $direction = 'backward'; + $children[0] = $activity; + $revdirection = true; + } + + if($direction = 'forward'){ + $ancestors = scorm_get_ancestors($activity); + $ancestorsroot = array_reverse($ancestors); + $preorder = scorm_get_preorder ($ancestorsroot); + $siz= sizeof ($preorder); + if (($activity->id == $preorder[$siz-1]->id) || (($activity->parent == '/') && !($childrenflag))){ + scorm_seq_terminate_descent($ancestorsroot,$userid); + $seq->endsession = true; + $seq->nextactivity = null; + return $seq; + } + if (scorm_is_leaf ($activity) || !$childrenflag){ + if ($children[$siz-1]->id == $activity->id){ + + $seq = scorm_seq_flow_tree_traversal ($parent, $direction, false, null, $seq,$userid); + // I think it's not necessary to do a return in here + } + else{ + $parent = scorm_get_parent($activity); + $children = scorm_get_available_children($parent); + $seq->traversaldir = $direction; + $sib = scorm_get_siblings($activity); + $pos = array_search($sib, $activity); + if ($pos !== false) { + if ($pos != sizeof ($sib)){ + $seq->nextactivity = $sib [$pos+1]; + return $seq; + } + else{ + $ch = scorm_get_children($sib[0]); + $seq->nextactivity = $ch[0]; + return $seq; + } + } + } + } + else{ + if (!empty ($children)){ + $seq->traversaldir = $direction; $seq->nextactivity = $children[0]; - return $seq; - } - else{ - $seq->traversaldir = null; + return $seq; + } + else{ + $seq->traversaldir = null; $seq->nextactivity = $children[0]; - $seq->exception = 'SB.2.1-2'; - return $seq; - } - } - - } - if($direction = 'backward'){ - - if ($activity->parent == '/'){ - $seq->traversaldir = null; + $seq->exception = 'SB.2.1-2'; + return $seq; + } + } + + } + if($direction = 'backward'){ + + if ($activity->parent == '/'){ + $seq->traversaldir = null; $seq->nextactivity = null; - $seq->exception = 'SB.2.1-3'; - return $seq; - } - if (scorm_is_leaf ($activity) || !$childrenflag){ - if (!$revdirection){ - if (isset($parent->forwardonly) && ($parent->forwardonly == true)) { - $seq->traversaldir = null; + $seq->exception = 'SB.2.1-3'; + return $seq; + } + if (scorm_is_leaf ($activity) || !$childrenflag){ + if (!$revdirection){ + if (isset($parent->forwardonly) && ($parent->forwardonly == true)) { + $seq->traversaldir = null; $seq->nextactivity = null; - $seq->exception = 'SB.2.1-4'; - return $seq; - } - } - if ($children[0]->id == $activity->id){ - $seq = scorm_seq_flow_tree_traversal ($parent, 'backward', false, null, $seq); - return $seq; - } - else{ - $ancestors = scorm_get_ancestors($activity); - $ancestorsroot = array_reverse ($ancestors); - $preorder = scorm_get_preorder ($ancestorsroot); - $pos = array_search($preorder, $children[$siz]); - $preord = array_slice($preorder, 0, $pos-1); - $revpreorder = array_reverse($preord); - $position = array_search($revpreorder, $activity); - $seq->nextactivity = $revpreorder[$pos+1]; - $seq->traversaldir = $direction; - return $seq; - } - } - else{ - if (!empty($children)){ - $activity = scorm_get_sco($activity->id); - if (isset($parent->flow) && ($parent->flow == true)) { - $children = scorm_get_children ($activity); - $seq->traversaldir = 'forward'; + $seq->exception = 'SB.2.1-4'; + return $seq; + } + } + if ($children[0]->id == $activity->id){ + $seq = scorm_seq_flow_tree_traversal ($parent, 'backward', false, null, $seq); + return $seq; + } + else{ + $ancestors = scorm_get_ancestors($activity); + $ancestorsroot = array_reverse ($ancestors); + $preorder = scorm_get_preorder ($ancestorsroot); + $pos = array_search($preorder, $children[$siz]); + $preord = array_slice($preorder, 0, $pos-1); + $revpreorder = array_reverse($preord); + $position = array_search($revpreorder, $activity); + $seq->nextactivity = $revpreorder[$pos+1]; + $seq->traversaldir = $direction; + return $seq; + } + } + else{ + if (!empty($children)){ + $activity = scorm_get_sco($activity->id); + if (isset($parent->flow) && ($parent->flow == true)) { + $children = scorm_get_children ($activity); + $seq->traversaldir = 'forward'; $seq->nextactivity = $children[0]; - return $seq; - - } - else{ - $children = scorm_get_children ($activity); - $seq->traversaldir = 'backward'; + return $seq; + + } + else{ + $children = scorm_get_children ($activity); + $seq->traversaldir = 'backward'; $seq->nextactivity = $children[sizeof($children)-1]; - return $seq; - } + return $seq; + } - } - else{ - - $seq->traversaldir = null; + } + else{ + + $seq->traversaldir = null; $seq->nextactivity = null; - $seq->exception = 'SB.2.1-2'; - return $seq; - } - } + $seq->exception = 'SB.2.1-2'; + return $seq; + } + } - } + } } function scorm_check_activity ($activity,$userid){ - $act = scorm_seq_rules_check($activity,'disabled'); - if ($act != null){ - return true; - } + $act = scorm_seq_rules_check($activity,'disabled'); + if ($act != null){ + return true; + } if(scorm_limit_cond_check ($activity,$userid)){ - return true; - } - return false; + return true; + } + return false; } @@ -1526,69 +1526,69 @@ function scorm_limit_cond_check ($activity,$userid){ global $DB; if (isset($activity->tracked) && ($activity->tracked == 0)){ - - return false; - } - - if (scorm_seq_is('active',$activity->id,$userid) || scorm_seq_is('suspended',$activity->id,$userid)){ - return false; - } - - if (!isset($activity->limitcontrol) || ($activity->limitcontrol == 1)){ - $r = $DB->get_record('scorm_scoes_track', array('scoid'=>$activity->id,'userid'=>$userid,'element'=>'activityattemptcount')); - if (scorm_seq_is('activityprogressstatus',$activity->id,$userid) && ($r->value >=$activity->limitattempt)){ - return true; - } - } - - if (!isset($activity->limitabsdurcontrol) || ($activity->limitabsdurcontrol == 1)){ - $r = $DB->get_record('scorm_scoes_track', array('scoid'=>$activity->id,'userid'=>$userid,'element'=>'activityabsoluteduration')); - if (scorm_seq_is('activityprogressstatus',$activity->id,$userid) && ($r->value >=$activity->limitabsduration)){ - return true; - } - } - - if (!isset($activity->limitexpdurcontrol) || ($activity->limitexpdurcontrol == 1)){ - $r = $DB->get_record('scorm_scoes_track', array('scoid'=>$activity->id,'userid'=>$userid,'element'=>'activityexperiencedduration')); - if (scorm_seq_is('activityprogressstatus',$activity->id,$userid) && ($r->value >=$activity->limitexpduration)){ - return true; - } - } + + return false; + } + + if (scorm_seq_is('active',$activity->id,$userid) || scorm_seq_is('suspended',$activity->id,$userid)){ + return false; + } + + if (!isset($activity->limitcontrol) || ($activity->limitcontrol == 1)){ + $r = $DB->get_record('scorm_scoes_track', array('scoid'=>$activity->id,'userid'=>$userid,'element'=>'activityattemptcount')); + if (scorm_seq_is('activityprogressstatus',$activity->id,$userid) && ($r->value >=$activity->limitattempt)){ + return true; + } + } + + if (!isset($activity->limitabsdurcontrol) || ($activity->limitabsdurcontrol == 1)){ + $r = $DB->get_record('scorm_scoes_track', array('scoid'=>$activity->id,'userid'=>$userid,'element'=>'activityabsoluteduration')); + if (scorm_seq_is('activityprogressstatus',$activity->id,$userid) && ($r->value >=$activity->limitabsduration)){ + return true; + } + } + + if (!isset($activity->limitexpdurcontrol) || ($activity->limitexpdurcontrol == 1)){ + $r = $DB->get_record('scorm_scoes_track', array('scoid'=>$activity->id,'userid'=>$userid,'element'=>'activityexperiencedduration')); + if (scorm_seq_is('activityprogressstatus',$activity->id,$userid) && ($r->value >=$activity->limitexpduration)){ + return true; + } + } - if (!isset($activity->limitattabsdurcontrol) || ($activity->limitattabsdurcontrol == 1)){ - $r = $DB->get_record('scorm_scoes_track', array('scoid'=>$activity->id,'userid'=>$userid,'element'=>'attemptabsoluteduration')); - if (scorm_seq_is('activityprogressstatus',$activity->id,$userid) && ($r->value >=$activity->limitattabsduration)){ - return true; - } - } - - if (!isset($activity->limitattexpdurcontrol) || ($activity->limitattexpdurcontrol == 1)){ - $r = $DB->get_record('scorm_scoes_track', array('scoid'=>$activity->id,'userid'=>$userid,'element'=>'attemptexperiencedduration')); - if (scorm_seq_is('activityprogressstatus',$activity->id,$userid) && ($r->value >=$activity->limitattexpduration)){ - return true; - } - } - - if (!isset($activity->limitbegincontrol) || ($activity->limitbegincontrol == 1)){ - $r = $DB->get_record('scorm_scoes_track', array('scoid'=>$activity->id,'userid'=>$userid,'element'=>'begintime')); - if (time()>=$activity->limitbegintime){ - return true; - } - } - - if (!isset($activity->limitbegincontrol) || ($activity->limitbegincontrol == 1)){ - if (time()<$activity->limitbegintime){ - return true; - } - } - - if (!isset($activity->limitendcontrol) || ($activity->limitendcontrol == 1)){ - - if (time()>$activity->limitendtime){ - return true; - } - } - return false; + if (!isset($activity->limitattabsdurcontrol) || ($activity->limitattabsdurcontrol == 1)){ + $r = $DB->get_record('scorm_scoes_track', array('scoid'=>$activity->id,'userid'=>$userid,'element'=>'attemptabsoluteduration')); + if (scorm_seq_is('activityprogressstatus',$activity->id,$userid) && ($r->value >=$activity->limitattabsduration)){ + return true; + } + } + + if (!isset($activity->limitattexpdurcontrol) || ($activity->limitattexpdurcontrol == 1)){ + $r = $DB->get_record('scorm_scoes_track', array('scoid'=>$activity->id,'userid'=>$userid,'element'=>'attemptexperiencedduration')); + if (scorm_seq_is('activityprogressstatus',$activity->id,$userid) && ($r->value >=$activity->limitattexpduration)){ + return true; + } + } + + if (!isset($activity->limitbegincontrol) || ($activity->limitbegincontrol == 1)){ + $r = $DB->get_record('scorm_scoes_track', array('scoid'=>$activity->id,'userid'=>$userid,'element'=>'begintime')); + if (time()>=$activity->limitbegintime){ + return true; + } + } + + if (!isset($activity->limitbegincontrol) || ($activity->limitbegincontrol == 1)){ + if (time()<$activity->limitbegintime){ + return true; + } + } + + if (!isset($activity->limitendcontrol) || ($activity->limitendcontrol == 1)){ + + if (time()>$activity->limitendtime){ + return true; + } + } + return false; } @@ -1596,361 +1596,361 @@ function scorm_limit_cond_check ($activity,$userid){ function scorm_seq_choice_sequencing($sco,$userid,$seq){ - $avchildren = Array (); - $comancestor = null; - $traverse = null; + $avchildren = Array (); + $comancestor = null; + $traverse = null; - if ($sco == null){ - $seq->delivery = null; - $seq->exception = 'SB.2.9-1'; - return $seq; - } + if ($sco == null){ + $seq->delivery = null; + $seq->exception = 'SB.2.9-1'; + return $seq; + } $ancestors = scorm_get_ancestors($sco); $arrpath = array_reverse($ancestors); - array_push ($arrpath,$sco);//path from the root to the target + array_push ($arrpath,$sco);//path from the root to the target - foreach ($arrpath as $activity){ + foreach ($arrpath as $activity){ if ($activity->parent != '/') { - $avchildren = scorm_get_available_children (scorm_get_parent($activity)); - $position = array_search($avchildren, $activity); + $avchildren = scorm_get_available_children (scorm_get_parent($activity)); + $position = array_search($avchildren, $activity); if ($position !== false){ - $seq->delivery = null; - $seq->exception = 'SB.2.9-2'; - return $seq; - } - } + $seq->delivery = null; + $seq->exception = 'SB.2.9-2'; + return $seq; + } + } - if (scorm_seq_rules_check($activity,'hidefromchoice' != null)){ + if (scorm_seq_rules_check($activity,'hidefromchoice' != null)){ - $seq->delivery = null; - $seq->exception = 'SB.2.9-3'; - return $seq; + $seq->delivery = null; + $seq->exception = 'SB.2.9-3'; + return $seq; - } + } - } + } - if ($sco->parent != '/') { - $parent = scorm_sco_get_parent ($sco); - if ( isset($parent->choice) && ($parent->choice == false)){ - $seq->delivery = null; - $seq->exception = 'SB.2.9-4'; - return $seq; - } - } + if ($sco->parent != '/') { + $parent = scorm_sco_get_parent ($sco); + if ( isset($parent->choice) && ($parent->choice == false)){ + $seq->delivery = null; + $seq->exception = 'SB.2.9-4'; + return $seq; + } + } - if ($seq->currentactivity != null){ + if ($seq->currentactivity != null){ $commonpos = scorm_find_common_ancestor($ancestors,$seq->currentactivity); - $comancestor = $arrpath [$commonpos]; - } - else{ - $comancestor = $arrpath [0]; - } + $comancestor = $arrpath [$commonpos]; + } + else{ + $comancestor = $arrpath [0]; + } - if($seq->currentactivity === $sco) { + if($seq->currentactivity === $sco) { break; - } + } - $sib = scorm_get_siblings($seq->currentactivity); - $pos = array_search($sib, $sco); + $sib = scorm_get_siblings($seq->currentactivity); + $pos = array_search($sib, $sco); - if (pos !== false){ + if ($pos !== false){ - $siblings = array_slice($sib, 0, $pos-1); + $siblings = array_slice($sib, 0, $pos-1); - if (empty($siblings)){ + if (empty($siblings)){ - $seq->delivery = null; - $seq->exception = 'SB.2.9-5'; - return $seq; + $seq->delivery = null; + $seq->exception = 'SB.2.9-5'; + return $seq; - } + } - $children = scorm_get_children (scorm_get_parent ($sco)); - $pos1 = array_search($children, $sco); - $pos2 = array_search($seq->currentactivity, $sco); - if ($pos1>$pos2){ - $traverse = 'forward'; - } - else{ - $traverse = 'backward'; - } - - foreach ($siblings as $sibling){ - $seq = scorm_seq_choice_activity_traversal($sibling,$userid,$seq,$traverse); - if(!$seq->reachable){ - $seq->delivery = null; - return $seq; - } - } - break; - - } + $children = scorm_get_children (scorm_get_parent ($sco)); + $pos1 = array_search($children, $sco); + $pos2 = array_search($seq->currentactivity, $sco); + if ($pos1>$pos2){ + $traverse = 'forward'; + } + else{ + $traverse = 'backward'; + } + + foreach ($siblings as $sibling){ + $seq = scorm_seq_choice_activity_traversal($sibling,$userid,$seq,$traverse); + if(!$seq->reachable){ + $seq->delivery = null; + return $seq; + } + } + break; + + } if($seq->currentactivity == null || $seq->currentactivity == $comancestor){ - $commonpos = scorm_find_common_ancestor($ancestors,$seq->currentactivity); - $comtarget = array_slice($ancestors, 1,$commonpos-1);//path from the common ancestor to the target activity - $comtarget = array_reverse($comtarget); - - if (empty($comtarget)){ - $seq->delivery = null; - $seq->exception = 'SB.2.9-5'; - return $seq; - } - foreach ($comtarget as $act){ - $seq = scorm_seq_choice_activity_traversal($act,$userid,$seq,'forward'); - if(!$seq->reachable){ - $seq->delivery = null; - return $seq; - } + $commonpos = scorm_find_common_ancestor($ancestors,$seq->currentactivity); + $comtarget = array_slice($ancestors, 1,$commonpos-1);//path from the common ancestor to the target activity + $comtarget = array_reverse($comtarget); + + if (empty($comtarget)){ + $seq->delivery = null; + $seq->exception = 'SB.2.9-5'; + return $seq; + } + foreach ($comtarget as $act){ + $seq = scorm_seq_choice_activity_traversal($act,$userid,$seq,'forward'); + if(!$seq->reachable){ + $seq->delivery = null; + return $seq; + } $act = scorm_get_sco ($acti->id); - if(scorm_seq_is('active',$act->id,$userid) && ($act->id != $comancestor->id && $act->preventactivation)){//adlseq:can i write it like another property for the $seq object? - $seq->delivery = null; - $seq->exception = 'SB.2.9-6'; - return $seq; - } - } - break; + if(scorm_seq_is('active',$act->id,$userid) && ($act->id != $comancestor->id && $act->preventactivation)){//adlseq:can i write it like another property for the $seq object? + $seq->delivery = null; + $seq->exception = 'SB.2.9-6'; + return $seq; + } + } + break; - } + } - if ($comancestor->id == $sco->id){ + if ($comancestor->id == $sco->id){ $ancestorscurrent = scorm_get_ancestors($seq->currentactivity); - $possco = array_search ($ancestorscurrent, $sco); - $curtarget = array_slice($ancestorscurrent,0,$possco);//path from the current activity to the target - - if (empty($curtarget)){ - $seq->delivery = null; - $seq->exception = 'SB.2.9-5'; - return $seq; - } + $possco = array_search ($ancestorscurrent, $sco); + $curtarget = array_slice($ancestorscurrent,0,$possco);//path from the current activity to the target + + if (empty($curtarget)){ + $seq->delivery = null; + $seq->exception = 'SB.2.9-5'; + return $seq; + } $i=0; - foreach ($curtarget as $activ){ - $i++; - if ($i != sizeof($curtarget)){ - if ( isset($activ->choiceexit) && ($activ->choiceexit == false)){ - $seq->delivery = null; - $seq->exception = 'SB.2.9-7'; - return $seq; - } - } - } - break; - } - - if (array_search ($ancestors, $comancestor)!== false){ - $ancestorscurrent = scorm_get_ancestors($seq->currentactivity); - $commonpos = scorm_find_common_ancestor($ancestors,$sco); - $curcommon = array_slice($ancestorscurrent,0,$commonpos-1); - if(empty($curcommon)){ - $seq->delivery = null; - $seq->exception = 'SB.2.9-5'; - return $seq; - } - - $constrained = null; - foreach ($curcommon as $acti){ - $acti = scorm_get_sco($acti->id); - if ( isset($acti->choiceexit) && ($acti->choiceexit == false)){ - $seq->delivery = null; - $seq->exception = 'SB.2.9-7'; - return $seq; - } - if ($constrained == null){ - if($acti->constrainchoice == true){ - $constrained = $acti; - } - } - } - if ($constrained != null){ + foreach ($curtarget as $activ){ + $i++; + if ($i != sizeof($curtarget)){ + if ( isset($activ->choiceexit) && ($activ->choiceexit == false)){ + $seq->delivery = null; + $seq->exception = 'SB.2.9-7'; + return $seq; + } + } + } + break; + } + + if (array_search ($ancestors, $comancestor)!== false){ + $ancestorscurrent = scorm_get_ancestors($seq->currentactivity); + $commonpos = scorm_find_common_ancestor($ancestors,$sco); + $curcommon = array_slice($ancestorscurrent,0,$commonpos-1); + if(empty($curcommon)){ + $seq->delivery = null; + $seq->exception = 'SB.2.9-5'; + return $seq; + } + + $constrained = null; + foreach ($curcommon as $acti){ + $acti = scorm_get_sco($acti->id); + if ( isset($acti->choiceexit) && ($acti->choiceexit == false)){ + $seq->delivery = null; + $seq->exception = 'SB.2.9-7'; + return $seq; + } + if ($constrained == null){ + if($acti->constrainchoice == true){ + $constrained = $acti; + } + } + } + if ($constrained != null){ $fwdir = scorm_get_preorder($constrained); - if(array_search ($fwdir, $sco)!== false){ - $traverse = 'forward'; - } - else{ - $traverse = 'backward'; - } - $seq = scorm_seq_choice_flow ($constrained, $traverse, $seq); - $actconsider = $seq->identifiedactivity; - $avdescendents = Array(); - $avdescendents= scorm_get_available_descendents ($actconsider); - if (array_search ($avdescendents, $sco) !== false && $sco->id != $actconsider->id && $constrained->id != $sco->id ){ - $seq->delivery = null; - $seq->exception = 'SB.2.9-8'; - return $seq; - } + if(array_search ($fwdir, $sco)!== false){ + $traverse = 'forward'; + } + else{ + $traverse = 'backward'; + } + $seq = scorm_seq_choice_flow ($constrained, $traverse, $seq); + $actconsider = $seq->identifiedactivity; + $avdescendents = Array(); + $avdescendents= scorm_get_available_descendents ($actconsider); + if (array_search ($avdescendents, $sco) !== false && $sco->id != $actconsider->id && $constrained->id != $sco->id ){ + $seq->delivery = null; + $seq->exception = 'SB.2.9-8'; + return $seq; + } //CONTINUE 11.5.5 - } + } - $commonpos = scorm_find_common_ancestor($ancestors,$seq->currentactivity); - $comtarget = array_slice($ancestors, 1,$commonpos-1);//path from the common ancestor to the target activity - $comtarget = array_reverse($comtarget); + $commonpos = scorm_find_common_ancestor($ancestors,$seq->currentactivity); + $comtarget = array_slice($ancestors, 1,$commonpos-1);//path from the common ancestor to the target activity + $comtarget = array_reverse($comtarget); - if (empty($comtarget)){ - $seq->delivery = null; - $seq->exception = 'SB.2.9-5'; - return $seq; - } + if (empty($comtarget)){ + $seq->delivery = null; + $seq->exception = 'SB.2.9-5'; + return $seq; + } - $fwdir = scorm_get_preorder($seq->currentactivity); + $fwdir = scorm_get_preorder($seq->currentactivity); - if(array_search ($fwdir, $sco)!== false){ + if(array_search ($fwdir, $sco)!== false){ - foreach ($comtarget as $act){ - $seq = scorm_seq_choice_activity_traversal($act,$userid,$seq,'forward'); - if(!$seq->reachable){ - $seq->delivery = null; - return $seq; - } + foreach ($comtarget as $act){ + $seq = scorm_seq_choice_activity_traversal($act,$userid,$seq,'forward'); + if(!$seq->reachable){ + $seq->delivery = null; + return $seq; + } $act = scorm_get_sco($act->id); - if(scorm_seq_is('active',$act->id,$userid) && ($act->id != $comancestor->id && ($act->preventactivation == true))){ - $seq->delivery = null; - $seq->exception = 'SB.2.9-6'; - return $seq; - } - } - - } - else{ - foreach ($comtarget as $act){ - $act = scorm_get_sco($act->id); - if(scorm_seq_is('active',$act->id,$userid) && ($act->id != $comancestor->id && ($act->preventactivation==true))){ - $seq->delivery = null; - $seq->exception = 'SB.2.9-6'; - return $seq; - } - } - } - break; - } - - if(scorm_is_leaf ($sco)){ - $seq->delivery = $sco; - $seq->exception = 'SB.2.9-6'; - return $seq; - } + if(scorm_seq_is('active',$act->id,$userid) && ($act->id != $comancestor->id && ($act->preventactivation == true))){ + $seq->delivery = null; + $seq->exception = 'SB.2.9-6'; + return $seq; + } + } + + } + else{ + foreach ($comtarget as $act){ + $act = scorm_get_sco($act->id); + if(scorm_seq_is('active',$act->id,$userid) && ($act->id != $comancestor->id && ($act->preventactivation==true))){ + $seq->delivery = null; + $seq->exception = 'SB.2.9-6'; + return $seq; + } + } + } + break; + } + + if(scorm_is_leaf ($sco)){ + $seq->delivery = $sco; + $seq->exception = 'SB.2.9-6'; + return $seq; + } $seq = scorm_seq_flow ($sco,'forward',$seq,true,$userid); if ($seq->deliverable == false){ - scorm_terminate_descendent_attempts($comancestor,$userid,$seq); - scorm_seq_end_attempt($comancestor,$userid,$seq->attempt); - $seq->currentactivity = $sco; - $seq->delivery = null; - $seq->exception = 'SB.2.9-9'; - return $seq; - - } - else{ - return $seq; - } + scorm_terminate_descendent_attempts($comancestor,$userid,$seq); + scorm_seq_end_attempt($comancestor,$userid,$seq->attempt); + $seq->currentactivity = $sco; + $seq->delivery = null; + $seq->exception = 'SB.2.9-9'; + return $seq; + + } + else{ + return $seq; + } } function scorm_seq_choice_flow ($constrained, $traverse, $seq){ - $seq = scorm_seq_choice_flow_tree ($constrained, $traverse, $seq); - if ($seq->identifiedactivity == null){ + $seq = scorm_seq_choice_flow_tree ($constrained, $traverse, $seq); + if ($seq->identifiedactivity == null){ $seq->identifiedactivity = $constrained; - return $seq; - } - else{ - return $seq; - } + return $seq; + } + else{ + return $seq; + } } function scorm_seq_choice_flow_tree ($constrained, $traverse, $seq){ - $islast = false; - $parent = scorm_get_parent ($constrained); - if ($traverse== 'forward'){ - $preord = scorm_get_preorder ($constrained); - if (sizeof($preorder) == 0 || (sizeof($preorder) == 0 && $preorder[0]->id = $constrained->id)){ // TODO: undefined - $islast = true;//the function is the last activity available - } - if ($constrained->parent == '/' || $islast){ - $seq->nextactivity = null; - return $seq; - } - $avchildren = scorm_get_available_children ($parent);//available children - if ($avchildren [sizeof($avchildren)-1]->id == $constrained->id){ - $seq = scorm_seq_choice_flow_tree ($parent, 'forward', $seq); - return $seq; - } - else{ - $i=0; - while(i < sizeof($avchildren)){ - if ($avchildren [i]->id == $constrained->id){ - $seq->nextactivity = $avchildren [i+1]; - return $seq; - } - else{ - $i++; - } - } - } - - } - - if ($traverse== 'backward'){ - if($constrained->parent == '/' ){ - $seq->nextactivity = null; - return $seq; - } - - $avchildren = scorm_get_available_children ($parent);//available children - if ($avchildren [0]->id == $constrained->id){ - $seq = scorm_seq_choice_flow_tree ($parent, 'backward', $seq); - return $seq; - } - else{ - $i=sizeof($avchildren)-1; - while($i >=0){ - if ($avchildren [i]->id == $constrained->id){ - $seq->nextactivity = $avchildren [i-1]; - return $seq; - } - else{ - $i--; - } - } - } - } + $islast = false; + $parent = scorm_get_parent ($constrained); + if ($traverse== 'forward'){ + $preord = scorm_get_preorder ($constrained); + if (sizeof($preorder) == 0 || (sizeof($preorder) == 0 && $preorder[0]->id = $constrained->id)){ // TODO: undefined + $islast = true;//the function is the last activity available + } + if ($constrained->parent == '/' || $islast){ + $seq->nextactivity = null; + return $seq; + } + $avchildren = scorm_get_available_children ($parent);//available children + if ($avchildren [sizeof($avchildren)-1]->id == $constrained->id){ + $seq = scorm_seq_choice_flow_tree ($parent, 'forward', $seq); + return $seq; + } + else{ + $i=0; + while($i < sizeof($avchildren)){ + if ($avchildren [$i]->id == $constrained->id){ + $seq->nextactivity = $avchildren [$i+1]; + return $seq; + } + else{ + $i++; + } + } + } + + } + + if ($traverse== 'backward'){ + if($constrained->parent == '/' ){ + $seq->nextactivity = null; + return $seq; + } + + $avchildren = scorm_get_available_children ($parent);//available children + if ($avchildren [0]->id == $constrained->id){ + $seq = scorm_seq_choice_flow_tree ($parent, 'backward', $seq); + return $seq; + } + else{ + $i=sizeof($avchildren)-1; + while($i >=0){ + if ($avchildren [$i]->id == $constrained->id){ + $seq->nextactivity = $avchildren [$i-1]; + return $seq; + } + else{ + $i--; + } + } + } + } } function scorm_seq_choice_activity_traversal($activity,$userid,$seq,$direction){ - if($direction == 'forward'){ - - $act = scorm_seq_rules_check($activity,'stopforwardtraversal'); - - if($act != null){ - $seq->reachable = false; - $seq->exception = 'SB.2.4-1'; - return $seq; - } - $seq->reachable = false; - return $seq; - } - - if($direction == 'backward'){ - $parentsco = scorm_get_parent($activity); - if($parentsco!= null){ - if (isset($parentsco->forwardonly) && ($parentsco->forwardonly == true)){ - $seq->reachable = false; - $seq->exception = 'SB.2.4-2'; - return $seq; - } - else{ - $seq->reachable = false; - $seq->exception = 'SB.2.4-3'; - return $seq; - } - } - } - $seq->reachable = true; - return $seq; + if($direction == 'forward'){ + + $act = scorm_seq_rules_check($activity,'stopforwardtraversal'); + + if($act != null){ + $seq->reachable = false; + $seq->exception = 'SB.2.4-1'; + return $seq; + } + $seq->reachable = false; + return $seq; + } + + if($direction == 'backward'){ + $parentsco = scorm_get_parent($activity); + if($parentsco!= null){ + if (isset($parentsco->forwardonly) && ($parentsco->forwardonly == true)){ + $seq->reachable = false; + $seq->exception = 'SB.2.4-2'; + return $seq; + } + else{ + $seq->reachable = false; + $seq->exception = 'SB.2.4-3'; + return $seq; + } + } + } + $seq->reachable = true; + return $seq; } @@ -1958,417 +1958,417 @@ function scorm_seq_choice_activity_traversal($activity,$userid,$seq,$direction){ function scorm_sequencing_delivery($scoid,$userid,$seq){ - if(!scorm_is_leaf ($seq->delivery)){ - $seq->deliveryvalid = false; - $seq->exception = 'DB.1.1-1'; - return $seq; - } - $ancestors = scorm_get_ancestors($seq->delivery); + if(!scorm_is_leaf ($seq->delivery)){ + $seq->deliveryvalid = false; + $seq->exception = 'DB.1.1-1'; + return $seq; + } + $ancestors = scorm_get_ancestors($seq->delivery); $arrpath = array_reverse($ancestors); - array_push ($arrpath,$seq->delivery);//path from the root to the target + array_push ($arrpath,$seq->delivery);//path from the root to the target - if (empty($arrpath)){ - $seq->deliveryvalid = false; - $seq->exception = 'DB.1.1-2'; - return $seq; - } + if (empty($arrpath)){ + $seq->deliveryvalid = false; + $seq->exception = 'DB.1.1-2'; + return $seq; + } - foreach ($arrpath as $activity){ - if(scorm_check_activity ($activity,$userid)){ - $seq->deliveryvalid = false; - $seq->exception = 'DB.1.1-3'; - return $seq; - } - } + foreach ($arrpath as $activity){ + if(scorm_check_activity ($activity,$userid)){ + $seq->deliveryvalid = false; + $seq->exception = 'DB.1.1-3'; + return $seq; + } + } - $seq->deliveryvalid = true; - return $seq; + $seq->deliveryvalid = true; + return $seq; } function scorm_content_delivery_environment ($seq,$userid){ global $DB; - $act = $seq->currentactivity; - if(scorm_seq_is('active',$act->id,$userid)){ - $seq->exception = 'DB.2-1'; - return $seq; - } - $track = $DB->get_record('scorm_scoes_track', array('scoid'=>$act->id,'userid'=>$userid,'element'=>'suspendedactivity')); - if ($track != null){ - $seq = scorm_clear_suspended_activity($seq->delivery, $seq); - - } - $seq = scorm_terminate_descendent_attempts ($seq->delivery,$userid,$seq); - $ancestors = scorm_get_ancestors($seq->delivery); + $act = $seq->currentactivity; + if(scorm_seq_is('active',$act->id,$userid)){ + $seq->exception = 'DB.2-1'; + return $seq; + } + $track = $DB->get_record('scorm_scoes_track', array('scoid'=>$act->id,'userid'=>$userid,'element'=>'suspendedactivity')); + if ($track != null){ + $seq = scorm_clear_suspended_activity($seq->delivery, $seq); + + } + $seq = scorm_terminate_descendent_attempts ($seq->delivery,$userid,$seq); + $ancestors = scorm_get_ancestors($seq->delivery); $arrpath = array_reverse($ancestors); - array_push ($arrpath,$seq->delivery); - foreach ($arrpath as $activity){ - if(!scorm_seq_is('active',$activity->id,$userid)){ - if(!isset($activity->tracked) || ($activity->tracked == 1)){ - if(!scorm_seq_is('suspended',$activity->id,$userid)){ - $r = $DB->get_record('scorm_scoes_track', array('scoid'=>$activity->id,'userid'=>$userid,'element'=>'activityattemptcount')); - $r->value = ($r->value)+1; - $DB->update_record ('scorm_scoes_track',$r); - if ($r->value == 1){ - scorm_seq_set('activityprogressstatus', $activity->id, $userid, 'true'); - } - scorm_insert_track($userid, $activity->scorm, $activity->id, 0, 'objectiveprogressstatus', 'false'); - scorm_insert_track($userid, $activity->scorm, $activity->id, 0, 'objectivesatisfiedstatus', 'false'); - scorm_insert_track($userid, $activity->scorm, $activity->id, 0, 'objectivemeasurestatus', 'false'); - scorm_insert_track($userid, $activity->scorm, $activity->id, 0, 'objectivenormalizedmeasure', 0.0); - - scorm_insert_track($userid, $activity->scorm, $activity->id, 0, 'attemptprogressstatus', 'false'); - scorm_insert_track($userid, $activity->scorm, $activity->id, 0, 'attemptcompletionstatus', 'false'); - scorm_insert_track($userid, $activity->scorm, $activity->id, 0, 'attemptabsoluteduration', 0.0); - scorm_insert_track($userid, $activity->scorm, $activity->id, 0, 'attemptexperiencedduration', 0.0); - scorm_insert_track($userid, $activity->scorm, $activity->id, 0, 'attemptcompletionamount', 0.0); - } - } + array_push ($arrpath,$seq->delivery); + foreach ($arrpath as $activity){ + if(!scorm_seq_is('active',$activity->id,$userid)){ + if(!isset($activity->tracked) || ($activity->tracked == 1)){ + if(!scorm_seq_is('suspended',$activity->id,$userid)){ + $r = $DB->get_record('scorm_scoes_track', array('scoid'=>$activity->id,'userid'=>$userid,'element'=>'activityattemptcount')); + $r->value = ($r->value)+1; + $DB->update_record ('scorm_scoes_track',$r); + if ($r->value == 1){ + scorm_seq_set('activityprogressstatus', $activity->id, $userid, 'true'); + } + scorm_insert_track($userid, $activity->scorm, $activity->id, 0, 'objectiveprogressstatus', 'false'); + scorm_insert_track($userid, $activity->scorm, $activity->id, 0, 'objectivesatisfiedstatus', 'false'); + scorm_insert_track($userid, $activity->scorm, $activity->id, 0, 'objectivemeasurestatus', 'false'); + scorm_insert_track($userid, $activity->scorm, $activity->id, 0, 'objectivenormalizedmeasure', 0.0); + + scorm_insert_track($userid, $activity->scorm, $activity->id, 0, 'attemptprogressstatus', 'false'); + scorm_insert_track($userid, $activity->scorm, $activity->id, 0, 'attemptcompletionstatus', 'false'); + scorm_insert_track($userid, $activity->scorm, $activity->id, 0, 'attemptabsoluteduration', 0.0); + scorm_insert_track($userid, $activity->scorm, $activity->id, 0, 'attemptexperiencedduration', 0.0); + scorm_insert_track($userid, $activity->scorm, $activity->id, 0, 'attemptcompletionamount', 0.0); + } + } scorm_seq_set('active', $activity->id, $userid, 'true'); - } - } - $seq->delivery = $seq->currentactivity; - scorm_seq_set('suspendedactivity', $activity->id, $userid, 'false'); + } + } + $seq->delivery = $seq->currentactivity; + scorm_seq_set('suspendedactivity', $activity->id, $userid, 'false'); - //ONCE THE DELIVERY BEGINS (How should I check that?) + //ONCE THE DELIVERY BEGINS (How should I check that?) if(isset($activity->tracked) || ($activity->tracked == 0)){ - //How should I track the info and what should I do to not record the information for the activity during delivery? - $atabsdur = $DB->get_record('scorm_scoes_track', array('scoid'=>$activity->id,'userid'=>$userid,'element'=>'attemptabsoluteduration')); - $atexpdur = $DB->get_record('scorm_scoes_track', array('scoid'=>$activity->id,'userid'=>$userid,'element'=>'attemptexperiencedduration')); - } - return $seq; + //How should I track the info and what should I do to not record the information for the activity during delivery? + $atabsdur = $DB->get_record('scorm_scoes_track', array('scoid'=>$activity->id,'userid'=>$userid,'element'=>'attemptabsoluteduration')); + $atexpdur = $DB->get_record('scorm_scoes_track', array('scoid'=>$activity->id,'userid'=>$userid,'element'=>'attemptexperiencedduration')); + } + return $seq; } function scorm_clear_suspended_activity($act,$seq){ global $DB; - $currentact= $seq->currentactivity; - $track = $DB->get_record('scorm_scoes_track', array('scoid'=>$currentact->id,'userid'=>$userid,'element'=>'suspendedactivity')); // TODO: undefined - if ($track != null){ - $ancestors = scorm_get_ancestors($act); + $currentact= $seq->currentactivity; + $track = $DB->get_record('scorm_scoes_track', array('scoid'=>$currentact->id,'userid'=>$userid,'element'=>'suspendedactivity')); // TODO: undefined + if ($track != null){ + $ancestors = scorm_get_ancestors($act); $commonpos = scorm_find_common_ancestor($ancestors,$currentact); if ($commonpos !== false) { if ($activitypath = array_slice($ancestors,0,$commonpos)) { - if (!empty ($activitypath)){ + if (!empty ($activitypath)){ foreach ($activitypath as $activity) { - if (scorm_is_leaf($activity)){ - scorm_seq_set('suspended',$activity->id,$userid,false); - } - else{ - $children = scorm_get_children($activity); - $bool= false; - foreach ($children as $child){ - if(scorm_seq_is('suspended',$child->id,$userid)){ - $bool= true; - } - } + if (scorm_is_leaf($activity)){ + scorm_seq_set('suspended',$activity->id,$userid,false); + } + else{ + $children = scorm_get_children($activity); + $bool= false; + foreach ($children as $child){ + if(scorm_seq_is('suspended',$child->id,$userid)){ + $bool= true; + } + } if(!$bool){ - scorm_seq_set('suspended',$activity->id,$userid,false); - } - } - } - } - } - } - scorm_seq_set('suspendedactivity',$act->id,$userid,false); - - } + scorm_seq_set('suspended',$activity->id,$userid,false); + } + } + } + } + } + } + scorm_seq_set('suspendedactivity',$act->id,$userid,false); + + } } function scorm_select_children_process($scoid,$userid){ global $DB; - $sco = scorm_get_sco($scoid); + $sco = scorm_get_sco($scoid); if (!scorm_is_leaf($sco)){ - if(!scorm_seq_is('suspended',$scoid,$userid) && !scorm_seq_is('active',$scoid,$userid)){ - $r = $DB->get_record('scorm_scoes_track', array('scoid'=>$scoid,'userid'=>$userid,'element'=>'selectiontiming')); + if(!scorm_seq_is('suspended',$scoid,$userid) && !scorm_seq_is('active',$scoid,$userid)){ + $r = $DB->get_record('scorm_scoes_track', array('scoid'=>$scoid,'userid'=>$userid,'element'=>'selectiontiming')); switch($r->value) { case 'oneachnewattempt': - case 'never': + case 'never': break; case 'once': if(!scorm_seq_is('activityprogressstatus',$scoid,$userid)){ - if(scorm_seq_is('selectioncountsstatus',$scoid,$userid)){ - $childlist = ''; - $res = $DB->get_record('scorm_scoes_track', array('scoid'=>$scoid,'userid'=>$userid,'element'=>'selectioncount')); - $i = ($res->value)-1; - $children = scorm_get_children ($sco); - - while (i>=0){ - $pos = array_rand($children); - array_push($childlist,$children [$pos]); - array_splice($children,$pos,1); - $i--; - } - sort ($childlist); - $clist = serialize ($childlist); - scorm_seq_set('availablechildren', $scoid, $userid, false); - scorm_seq_set('availablechildren', $scoid, $userid, $clist); - - - } - } + if(scorm_seq_is('selectioncountsstatus',$scoid,$userid)){ + $childlist = ''; + $res = $DB->get_record('scorm_scoes_track', array('scoid'=>$scoid,'userid'=>$userid,'element'=>'selectioncount')); + $i = ($res->value)-1; + $children = scorm_get_children ($sco); + + while ($i>=0){ + $pos = array_rand($children); + array_push($childlist,$children [$pos]); + array_splice($children,$pos,1); + $i--; + } + sort ($childlist); + $clist = serialize ($childlist); + scorm_seq_set('availablechildren', $scoid, $userid, false); + scorm_seq_set('availablechildren', $scoid, $userid, $clist); + + + } + } break; } - } - } + } + } } function scorm_randomize_children_process($scoid,$userid){ global $DB; - $sco = scorm_get_sco($scoid); + $sco = scorm_get_sco($scoid); if (!scorm_is_leaf($sco)){ - if(!scorm_seq_is('suspended',$scoid,$userid) && !scorm_seq_is('active',$scoid,$userid)){ - $r = $DB->get_record('scorm_scoes_track', array('scoid'=>$scoid,'userid'=>$userid,'element'=>'randomizationtiming')); + if(!scorm_seq_is('suspended',$scoid,$userid) && !scorm_seq_is('active',$scoid,$userid)){ + $r = $DB->get_record('scorm_scoes_track', array('scoid'=>$scoid,'userid'=>$userid,'element'=>'randomizationtiming')); switch($r->value) { - case 'never': + case 'never': break; case 'oneachnewattempt': case 'once': if(!scorm_seq_is('activityprogressstatus',$scoid,$userid)){ - if(scorm_seq_is('randomizechildren',$scoid,$userid)){ - $childlist = array(); - $res = scorm_get_available_children($sco); - $i = sizeof($res)-1; - $children = $res->value; - - while (i>=0){ - $pos = array_rand($children); - array_push($childlist,$children [$pos]); - array_splice($children,$pos,1); - $i--; - } - - $clist = serialize ($childlist); - scorm_seq_set('availablechildren', $scoid, $userid, false); - scorm_seq_set('availablechildren', $scoid, $userid, $clist); - - - } - } + if(scorm_seq_is('randomizechildren',$scoid,$userid)){ + $childlist = array(); + $res = scorm_get_available_children($sco); + $i = sizeof($res)-1; + $children = $res->value; + + while ($i>=0){ + $pos = array_rand($children); + array_push($childlist,$children [$pos]); + array_splice($children,$pos,1); + $i--; + } + + $clist = serialize ($childlist); + scorm_seq_set('availablechildren', $scoid, $userid, false); + scorm_seq_set('availablechildren', $scoid, $userid, $clist); + + + } + } break; - + + - } - } - } + } + } } function scorm_terminate_descendent_attempts ($activity,$userid,$seq){ - $ancestors = scorm_get_ancestors($seq->currentactivity); + $ancestors = scorm_get_ancestors($seq->currentactivity); $commonpos = scorm_find_common_ancestor($ancestors,$activity); if ($commonpos !== false) { if ($activitypath = array_slice($ancestors,1,$commonpos-2)) { - if (!empty ($activitypath)){ + if (!empty ($activitypath)){ foreach ($activitypath as $sco) { - scorm_seq_end_attempt($sco,$userid,$seq->attempt); - - } - } - } - } + scorm_seq_end_attempt($sco,$userid,$seq->attempt); + + } + } + } + } } function scorm_sequencing_exception($seq){ if($seq->exception != null){ - switch($seq->exception){ + switch($seq->exception){ - case 'NB.2.1-1': + case 'NB.2.1-1': notify("Sequencing session has already begun"); break; case 'NB.2.1-2': notify("Sequencing session has not begun"); break; - case 'NB.2.1-3': + case 'NB.2.1-3': notify("Suspended activity is not defined"); break; - case 'NB.2.1-4': + case 'NB.2.1-4': notify("Flow Sequencing Control Model Violation"); break; - case 'NB.2.1-5': + case 'NB.2.1-5': notify("Flow or Forward only Sequencing Control Model Violation"); break; - case 'NB.2.1-6': + case 'NB.2.1-6': notify("No activity is previous to the root"); break; - case 'NB.2.1-7': + case 'NB.2.1-7': notify("Unsupported Navigation Request"); break; - case 'NB.2.1-8': + case 'NB.2.1-8': notify("Choice Exit Sequencing Control Model Violation"); break; - case 'NB.2.1-9': + case 'NB.2.1-9': notify("No activities to consider"); break; - case 'NB.2.1-10': + case 'NB.2.1-10': notify("Choice Sequencing Control Model Violation"); break; - case 'NB.2.1-11': + case 'NB.2.1-11': notify("Target Activity does not exist"); break; - case 'NB.2.1-12': + case 'NB.2.1-12': notify("Current Activity already terminated"); break; - case 'NB.2.1-13': + case 'NB.2.1-13': notify("Undefined Navigation Request"); break; - case 'TB.2.3-1': + case 'TB.2.3-1': notify("Current Activity already terminated"); break; - case 'TB.2.3-2': + case 'TB.2.3-2': notify("Current Activity already terminated"); break; - case 'TB.2.3-4': + case 'TB.2.3-4': notify("Current Activity already terminated"); break; - case 'TB.2.3-5': + case 'TB.2.3-5': notify("Nothing to suspend; No active activities"); break; - case 'TB.2.3-6': + case 'TB.2.3-6': notify("Nothing to abandon; No active activities"); break; - case 'SB.2.1-1': + case 'SB.2.1-1': notify("Last activity in the tree"); break; case 'SB.2.1-2': notify("Cluster has no available children"); break; - case 'SB.2.1-3': + case 'SB.2.1-3': notify("No activity is previous to the root"); break; - case 'SB.2.1-4': + case 'SB.2.1-4': notify("Forward Only Sequencing Control Model Violation"); break; - case 'SB.2.2-1': + case 'SB.2.2-1': notify("Flow Sequencing Control Model Violation"); break; - case 'SB.2.2-2': + case 'SB.2.2-2': notify("Activity unavailable"); break; - case 'SB.2.3-1': + case 'SB.2.3-1': notify("Forward Traversal Blocked"); break; case 'SB.2.3-2': notify("Forward Only Sequencing Control Model Violation"); break; - case 'SB.2.3-3': + case 'SB.2.3-3': notify("No activity is previous to the root"); break; - case 'SB.2.5-1': + case 'SB.2.5-1': notify("Sequencing session has already begun"); break; - case 'SB.2.6-1': + case 'SB.2.6-1': notify("Sequencing session has already begun"); break; - case 'SB.2.6-2': + case 'SB.2.6-2': notify("No Suspended activity is defined"); break; case 'SB.2.7-1': notify("Sequencing session has not begun"); break; - case 'SB.2.7-2': + case 'SB.2.7-2': notify("Flow Sequencing Control Model Violation"); break; - case 'SB.2.8-1': + case 'SB.2.8-1': notify("Sequencing session has not begun"); break; - case 'SB.2.8-2': + case 'SB.2.8-2': notify("Flow Sequencing Control Model Violation"); break; - case 'SB.2.9-1': + case 'SB.2.9-1': notify("No target for Choice"); break; - case 'SB.2.9-2': + case 'SB.2.9-2': notify("Target Activity does not exist or is unavailable"); break; - case 'SB.2.9-3': + case 'SB.2.9-3': notify("Target Activity hidden from choice"); break; - case 'SB.2.9-4': + case 'SB.2.9-4': notify("Choice Sequencing Control Model Violation"); break; - case 'SB.2.9-5': + case 'SB.2.9-5': notify("No activities to consider"); break; - case 'SB.2.9-6': + case 'SB.2.9-6': notify("Unable to activate target; target is not a child of the Current Activity"); break; - case 'SB.2.9-7': + case 'SB.2.9-7': notify("Choice Exit Sequencing Control Model Violation"); break; - case 'SB.2.9-8': + case 'SB.2.9-8': notify("Unable to choose target activity - constrained choice"); break; - case 'SB.2.9-9': + case 'SB.2.9-9': notify("Choice Request Prevented by Flow-only Activity"); break; - case 'SB.2.10-1': + case 'SB.2.10-1': notify("Sequencing session has not begun"); break; - case 'SB.2.10-2': + case 'SB.2.10-2': notify("Current Activity is active or suspended"); break; - case 'SB.2.10-3': + case 'SB.2.10-3': notify("Flow Sequencing Control Model Violation"); break; case 'SB.2.11-1': notify("Sequencing session has not begun"); break; - case 'SB.2.11-2': + case 'SB.2.11-2': notify("Current Activity has not been terminated"); break; - case 'SB.2.12-2': + case 'SB.2.12-2': notify("Undefined Sequencing Request"); break; - case 'DB.1.1-1': + case 'DB.1.1-1': notify("Cannot deliver a non-leaf activity"); break; - case 'DB.1.1-2': + case 'DB.1.1-2': notify("Nothing to deliver"); break; - case 'DB.1.1-3': + case 'DB.1.1-3': notify("Activity unavailable"); break; - case 'DB.2-1': + case 'DB.2-1': notify("Identified activity is already active"); break; - - } + + } - } + } } -?> \ No newline at end of file +?>