[svn r12170] Removed unused method and useless white lines

skala
Yannick Warnier 18 years ago
parent 9bc954e2d8
commit f0b2c1c4c8
  1. 305
      main/newscorm/learnpath.class.php

@ -532,488 +532,203 @@ class learnpath {
return $new_item_id;
}
/**
* Adds an item to the current learnpath
* @param integer Parent ID
* @param integer Previous elem ID (0 if first)
* @param string Resource type to add ('file','dokeos_item')
* @param string Resource ID or path if 'file' or name if 'dokeos_chapter'
* @return integer New element ID
*/
function old_add_item($parent, $previous, $type = 'dokeos_chapter', $id, $title)
{
//TODO
if($this->debug>0){error_log('New LP - In learnpath::add_item('.$parent.','.$previous.','.$type.','.$id.','.$title.')',0);}
$tbl_lp_item = Database::get_course_table('lp_item');
$parent = (int) $parent;
$display_order = 1;
if($previous == -1){
//insert in latest position available
$sql_check = "SELECT MAX(previous_item_id) as prev, id FROM $tbl_lp_item WHERE lp_id = " . $this->get_id() . " AND parent_item_id = " . $parent;
if($this->debug>1){error_log('New LP - checking for latest item at this level: '.$sql_check,0);}
$res = mysql_query($sql_check) or die(mysql_error());
$res_check = api_sql_query($sql_check, __FILE__, __LINE__);
$num = Database::num_rows($res_check);
if($num>0){
$row = Database::fetch_array($res_check);
$previous = $row['id'];
}else{
$previous = 0;
}
}else{
$previous = (int) $previous;
}
$new_item_id = -1;
//check type
switch ($type){
case 'dokeos_step':
$id = $this->escape_string($id);
//check the next item
$sql_check = "SELECT * FROM $tbl_lp_item " .
"WHERE lp_id = ".$this->get_id()." " .
"AND previous_item_id = $previous " .
"AND parent_item_id = $parent";
if($this->debug>2){error_log('New LP - Getting info from the next element: '.$sql_check,0);}
$res_check = api_sql_query($sql_check);
if(Database::num_rows($res_check)){
$row = Database::fetch_array($res_check);
$next = $row['id'];
//TODO check display_order
$display_order = $row['display_order']+1;
}else{
$next = 0;
$display_order = 1;
}
//insert new item
$sql_ins = "INSERT INTO $tbl_lp_item " .
"(lp_id,item_type,ref,title," .
"path,parent_item_id," .
"previous_item_id,next_item_id,display_order)" .
"VALUES" .
"(".$this->get_id().",'$type','','$title','$id'," .
"$parent," .
"$previous,$next,$display_order)";
if($this->debug>2){error_log('New LP - Inserting dokeos_chapter: '.$sql_ins,0);}
$res_ins = api_sql_query($sql_ins);
if($res_ins>0){
$new_item_id = Database::get_last_insert_id($res_ins);
//now update previous item
$sql_upd = "UPDATE $tbl_lp_item " .
"SET next_item_id = $new_item_id " .
"WHERE lp_id = ".$this->get_id()." " .
"AND id = $previous AND parent_item_id = $parent";
if($this->debug>2){error_log('New LP - Updating previous item: '.$sql_upd,0);}
$res_upd = api_sql_query($sql_upd);
//now update next item
$sql_upd = "UPDATE $tbl_lp_item " .
"SET previous_item_id = $new_item_id " .
"WHERE lp_id = ".$this->get_id()." " .
"AND id = $next AND parent_item_id = $parent";
if($this->debug>2){error_log('New LP - Updating next item: '.$sql_upd,0);}
$res_upd = api_sql_query($sql_upd);
}
break;
default:
break;
}
return $new_item_id;
}
/**
* Static admin function allowing addition of a learnpath to a course.
* @param string Course code
* @param string Learnpath name
* @param string Learnpath description string, if provided
* @param string Type of learnpath (default = 'guess', others = 'dokeos', 'aicc',...)
* @param string Type of files origin (default = 'zip', others = 'dir','web_dir',...)
* @param string Zip file containing the learnpath or directory containing the learnpath
* @return integer The new learnpath ID on success, 0 on failure
*/
function add_lp($course,$name,$description='',$learnpath='guess',$origin='zip',$zipname='')
{
//if($this->debug>0){error_log('New LP - In learnpath::add_lp()',0);}
//TODO
$tbl_lp = Database::get_course_table('lp');
//check course code exists
//check lp_name doesn't exist, otherwise append something
$i = 0;
$name = learnpath::escape_string(htmlentities($name)); //Kevin Van Den Haute: added htmlentities()
$check_name = "SELECT * FROM $tbl_lp WHERE name = '$name'";
//if($this->debug>2){error_log('New LP - Checking the name for new LP: '.$check_name,0);}
$res_name = api_sql_query($check_name);
while(Database::num_rows($res_name)){
//there is already one such name, update the current one a bit
$i++;
$name = $name.' - '.$i;
$check_name = "SELECT * FROM $tbl_lp WHERE name = '$name'";
//if($this->debug>2){error_log('New LP - Checking the name for new LP: '.$check_name,0);}
$res_name = api_sql_query($check_name);
}
//new name does not exist yet; keep it
//escape description
$description = learnpath::escape_string(htmlentities($description)); //Kevin: added htmlentities()
$type = 1;
switch($learnpath){
case 'guess':
break;
case 'dokeos':
$type = 1;
break;
case 'aicc':
break;
}
switch($origin){
case 'zip':
//check zipname string. If empty, we are currently creating a new Dokeos learnpath
break;
case 'manual':
$get_max = "SELECT MAX(display_order) FROM $tbl_lp";
$res_max = api_sql_query($get_max);
if(Database::num_rows($res_max)<1){
$dsp = 1;
}else{
$row = Database::fetch_array($res_max);
$dsp = $row[0]+1;
}
$sql_insert = "INSERT INTO $tbl_lp " .
"(lp_type,name,description,path,default_view_mod," .
"default_encoding,display_order,content_maker," .
"content_local,js_lib) " .
"VALUES ($type,'$name','$description','','embedded'," .
"'ISO-8859-1','$dsp','Dokeos'," .
"'local','')";
//if($this->debug>2){error_log('New LP - Inserting new lp '.$sql_insert,0);}
$res_insert = api_sql_query($sql_insert);
$id = Database::get_last_insert_id();
if($id>0){
return $id;
}
break;
}
}
/**
* Appends a message to the message attribute
* @param string Message to append.
*/
function append_message($string)
{
if($this->debug>0){error_log('New LP - In learnpath::append_message()',0);}
$this->message .= $string;
}
/**
* Autocompletes the parents of an item in case it's been completed or passed
* @param integer Optional ID of the item from which to look for parents
*/
function autocomplete_parents($item)
{
if($this->debug>0){error_log('New LP - In learnpath::autocomplete_parents()',0);}
if(empty($item)){
$item = $this->current;
}
$parent_id = $this->items[$item]->get_parent();
if($this->debug>2){error_log('New LP - autocompleting parent of item '.$item.' (item '.$parent_id.')',0);}
if(is_object($this->items[$item]) and !empty($parent_id))
{//if $item points to an object and there is a parent
if($this->debug>2){error_log('New LP - '.$item.' is an item, proceed',0);}
$current_item =& $this->items[$item];
$parent =& $this->items[$parent_id]; //get the parent
//new experiment including failed and browsed in completed status
$current_status = $current_item->get_status();
if($current_item->is_done() || $current_status=='browsed' || $current_status=='failed'){
if($current_item->is_done() || $current_status=='browsed' || $current_status=='failed')
{
//if the current item is completed or passes or succeeded
$completed = true;
if($this->debug>2){error_log('New LP - Status of current item is alright',0);}
foreach($parent->get_children() as $child){
foreach($parent->get_children() as $child)
{
//check all his brothers (his parent's children) for completion status
if($child!= $item){
if($child!= $item)
{
if($this->debug>2){error_log('New LP - Looking at brother with ID '.$child.', status is '.$this->items[$child]->get_status(),0);}
//if($this->items[$child]->status_is(array('completed','passed','succeeded')))
//Trying completing parents of failed and browsed items as well
if($this->items[$child]->status_is(array('completed','passed','succeeded','browsed','failed')))
{
//keep completion status to true
}else{
if($this->debug>2){error_log('New LP - Found one incomplete child of '.$parent_id.': '.$child.' is '.$this->items[$child]->get_status(),0);}
$completed = false;
}
}
}
if($completed == true){ //if all the children were completed
if($completed == true)
{ //if all the children were completed
$parent->set_status('completed');
$parent->save(false);
$this->update_queue[$parent->get_id()] = $parent->get_status();
if($this->debug>2){error_log('New LP - Added parent to update queue '.print_r($this->update_queue,true),0);}
$this->autocomplete_parents($parent->get_id()); //recursive call
}
}else{
//error_log('New LP - status of current item is not enough to get bothered',0);
}
}
}
/**
* Autosaves the current results into the database for the whole learnpath
*/
function autosave()
{
if($this->debug>0){error_log('New LP - In learnpath::autosave()',0);}
//TODO add aditionnal save operations for the learnpath itself
}
/**
* Clears the message attribute
*/
function clear_message()
{
if($this->debug>0){error_log('New LP - In learnpath::clear_message()',0);}
$this->message = '';
}
/**
* Closes the current resource
*
* Stops the timer
* Saves into the database if required
* Clears the current resource data from this object
* @return boolean True on success, false on failure
*/
function close()
{
if($this->debug>0){error_log('New LP - In learnpath::close()',0);}
if(empty($this->lp_id))
{
$this->error = 'Trying to close this learnpath but no ID is set';
return false;
}
$this->current_time_stop = time();
if($this->save)
{
$learnpath_view_table = Database::get_course_table(LEARNPATH_VIEW_TABLE);
$learnpath_view_table = Database::get_course_table(TABLE_LP_VIEW);
/*
$sql = "UPDATE $learnpath_view_table " .
"SET " .
"stop_time = ".$this->current_time_stop.", " .
"score = ".$this->current_score.", ".
"WHERE learnpath_id = '".$this->lp_id."'";
//$res = Database::query($sql);
$res = api_sql_query($res);
if(mysql_affected_rows($res)<1)
{
$this->error = 'Could not update learnpath_view table while closing learnpath';
return false;
}
*/
}
$this->ordered_items = array();
$this->index=0;
unset($this->lp_id);
//unset other stuff
return true;
}
/**

Loading…
Cancel
Save