Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
chamilo-lms/main/glossary/glossaryfunction.inc.php

317 lines
11 KiB

<?php //$id: $
/* For licensing terms, see /dokeos_license.txt */
/**
* @package dokeos.glossary
* @author Christian Fasanando
* This library enables maintenance of the glossary tool
*/
/**
* This function retrieves glossary details by course
* and order by a type (1 = By Start Date, 2 = By End Date, 3 = By Term Name)
* @return array Array of type ([glossary_id=>w,name=>x,description=>y],[])
* @author Christian Fasanando <christian.fasanando@dokeos.com>,
* @version november 2008, dokeos 1.8.6
*/
function get_glossary_details($type) {
$t_glossary = Database :: get_course_table(TABLE_GLOSSARY);
$t_item_propery = Database :: get_course_table(TABLE_ITEM_PROPERTY);
$safe_type = (int)$type;
if (!empty($safe_type) && $safe_type==1) {
$sql = "SELECT g.glossary_id, g.name, g.description, g.display_order
FROM $t_glossary g,$t_item_propery ip WHERE g.glossary_id=ip.ref AND tool = '".TOOL_GLOSSARY."' ORDER BY ip.insert_date DESC ";
} elseif (!empty($safe_type) && $safe_type==2) {
$sql = "SELECT g.glossary_id, g.name, g.description, g.display_order
FROM $t_glossary g,$t_item_propery ip WHERE g.glossary_id=ip.ref AND tool = '".TOOL_GLOSSARY."' ORDER BY ip.lastedit_date DESC ";
} elseif (!empty($safe_type) && $safe_type==3) {
$sql = "SELECT g.glossary_id, g.name, g.description, g.display_order
FROM $t_glossary g,$t_item_propery ip WHERE g.glossary_id=ip.ref AND tool = '".TOOL_GLOSSARY."' ORDER BY g.name ASC ";
} else {
$sql = "SELECT g.glossary_id, g.name, g.description, g.display_order
FROM $t_glossary g,$t_item_propery ip WHERE g.glossary_id=ip.ref AND tool = '".TOOL_GLOSSARY."' ORDER BY g.display_order,g.name ASC ";
}
$result = api_sql_query($sql, __FILE__, __LINE__);
return $result;
}
/**
* This function add glosary details by course
* @param name type String
* @param description type String
* @return String (message about the results)
* @author Christian Fasanando <christian.fasanando@dokeos.com>,
* @version november 2008, dokeos 1.8.6
*/
function add_glossary_details($name,$description) {
$t_glossary = Database :: get_course_table(TABLE_GLOSSARY);
if (empty($name) || empty($description)) { return false; }
$safe_name = Database::escape_string($name);
$safe_description = Database::escape_string($description);
$get_max = "SELECT MAX(display_order) FROM $t_glossary";
$res_max = api_sql_query($get_max, __FILE__, __LINE__);
$dsp=0;
if (Database::num_rows($res_max)<1) {
$dsp = 1;
} else {
$row = Database::fetch_array($res_max);
$dsp = $row[0]+1;
}
$safe_dsp = (int)$dsp;
// check if term name exists
$sql = "SELECT name FROM $t_glossary WHERE name = '$safe_name'";
$result = @api_sql_query($sql,__FILE__,__LINE__);
$count = Database::num_rows($result);
$msg='';
if ($count > 0) {
$msg='error';
return $msg;
} else {
$sql = "INSERT INTO $t_glossary (name, description,display_order) VALUES('$safe_name', '$safe_description',$safe_dsp)";
$result = api_sql_query($sql, __FILE__, __LINE__);
$id = Database::get_last_insert_id();
if ($id>0) {
//insert into item_property
api_item_property_update(api_get_course_info(),TOOL_GLOSSARY,$id,'GlossaryAdded',api_get_user_id());
}
$msg='ok';
return $msg;
}
}
/**
* This function edit glosary details by course
* @param glossary_id int
* @param name type String
* @param description type String
* @return String (message about the results)
* @author Christian Fasanando <christian.fasanando@dokeos.com>,
* @version november 2008, dokeos 1.8.6
*/
function edit_glossary_details($glossary_id,$name,$description) {
$t_glossary = Database :: get_course_table(TABLE_GLOSSARY);
if (empty($glossary_id) || empty($name) || empty($description)) { return false; }
$safe_name = Database::escape_string($name);
$safe_description = Database::escape_string($description);
$safe_glossary_id = (int)$glossary_id;
// check if term name exists
$sql = "SELECT name FROM $t_glossary WHERE name = '$safe_name' AND glossary_id NOT IN($safe_glossary_id)";
$result = @api_sql_query($sql,__FILE__,__LINE__);
$count = Database::num_rows($result);
$msg='';
if ($count > 0) {
$msg='error';
return $msg;
} else {
$sql = "UPDATE $t_glossary SET name='$safe_name', description='$safe_description' WHERE glossary_id=$safe_glossary_id";
$result = api_sql_query($sql, __FILE__, __LINE__);
//update glossary into item_property
api_item_property_update(api_get_course_info(),TOOL_GLOSSARY,$safe_glossary_id,'GlossaryModified',api_get_user_id());
$msg ='ok';
return $msg;
}
}
/**
* This function delete glossary details by course
* @param glossary_id int
* @return boolean
* @author Christian Fasanando <christian.fasanando@dokeos.com>,
* @version november 2008, dokeos 1.8.6
*/
function delete_glossary_details($glossary_id) {
$t_glossary = Database :: get_course_table(TABLE_GLOSSARY);
$safe_glossary_id = Database::escape_string($glossary_id);
if (empty($glossary_id)) { return false; }
$sql = "DELETE FROM $t_glossary WHERE glossary_id=$safe_glossary_id";
$result = api_sql_query($sql, __FILE__, __LINE__);
// update display_order
$sql = "SELECT * FROM $t_glossary";
$result = api_sql_query($sql, __FILE__, __LINE__);
$dsp=1;
while ($row=Database::fetch_array($result)) {
$id = $row['glossary_id'];
update_display_order($dsp,$id);
$dsp++;
}
//update glossary into item_property
api_item_property_update(api_get_course_info(),TOOL_GLOSSARY,$safe_glossary_id,'GlossaryDeleted',api_get_user_id());
return $result;
}
/**
* This function update glossary display order
* @param $n_order int
* @param $glossary_id int
*
*/
function update_display_order($n_order,$glossary_id) {
$t_glossary = Database::get_course_table(TABLE_GLOSSARY);
$safe_n_order = (int)$n_order;
$safe_glossary_id = (int)$glossary_id;
if (empty($n_order) || empty($glossary_id)) {
return false;
}
$sql = "UPDATE $t_glossary SET display_order = $safe_n_order WHERE glossary_id = $safe_glossary_id";
$result = @api_sql_query($sql,__FILE__,__LINE__);
return $result;
}
/**
* Move a term up (display_order)
* @param integer Glossary ID
*/
function move_up($glossary_id)
{
$tbl_glossary = Database::get_course_table(TABLE_GLOSSARY);
$sql = "SELECT * FROM $tbl_glossary ORDER BY display_order";
$res = api_sql_query($sql, __FILE__, __LINE__);
if ($res === false) {
return false;
}
$gs = array();
$g_order = array();
$num = Database::num_rows($res);
//first check the order is correct, globally (might be wrong because
//of versions < 1.8.4)
if ($num > 0) {
$i = 1;
while ($row = Database::fetch_array($res)) {
if ($row['display_order'] != $i) { //if we find a gap in the order, we need to fix it
$need_fix = true;
$sql_u = "UPDATE $tbl_glossary SET display_order = $i WHERE glossary_id = ".$row['glossary_id'];
$res_u = api_sql_query($sql_u, __FILE__, __LINE__);
}
$row['display_order'] = $i;
$gs[$row['glossary_id']] = $row;
$g_order[$i] = $row['glossary_id'];
$i++;
}
}
if($num>1) {
//if there's only one element, no need to sort
$order = $gs[$glossary_id]['display_order'];
if ($order>1) {
//if it's the first element, no need to move up
$sql_u1 = "UPDATE $tbl_glossary SET display_order = $order WHERE glossary_id = ".$g_order[$order-1];
$res_u1 = api_sql_query($sql_u1, __FILE__, __LINE__);
$sql_u2 = "UPDATE $tbl_glossary SET display_order = ".($order-1)." WHERE glossary_id = ".$glossary_id;
$res_u2 = api_sql_query($sql_u2, __FILE__, __LINE__);
}
}
}
/**
* Move a term down (display_order)
* @param integer Glossary ID
*/
function move_down($glossary_id)
{
$tbl_glossary = Database::get_course_table(TABLE_GLOSSARY);
$sql = "SELECT * FROM $tbl_glossary ORDER BY display_order";
$res = api_sql_query($sql, __FILE__, __LINE__);
if ($res === false) {
return false;
}
$gs = array();
$g_order = array();
$num = Database::num_rows($res);
$max = 0;
//first check the order is correct, globally (might be wrong because
//of versions < 1.8.4)
if ($num>0) {
$i = 1;
while ($row = Database::fetch_array($res)) {
$max = $i;
if ($row['display_order'] != $i) {
//if we find a gap in the order, we need to fix it
$need_fix = true;
$sql_u = "UPDATE $tbl_glossary SET display_order = $i WHERE glossary_id = ".$row['glossary_id'];
$res_u = api_sql_query($sql_u, __FILE__, __LINE__);
}
$row['display_order'] = $i;
$gs[$row['glossary_id']] = $row;
$g_order[$i] = $row['glossary_id'];
$i++;
}
}
if ($num>1) {
//if there's only one element, no need to sort
$order = $gs[$glossary_id]['display_order'];
if($order<$max) {
//if it's the first element, no need to move up
$sql_u1 = "UPDATE $tbl_glossary SET display_order = $order WHERE glossary_id = ".$g_order[$order+1];
$res_u1 = api_sql_query($sql_u1, __FILE__, __LINE__);
$sql_u2 = "UPDATE $tbl_glossary SET display_order = ".($order+1)." WHERE glossary_id = ".$glossary_id;
$res_u2 = api_sql_query($sql_u2, __FILE__, __LINE__);
}
}
}
/**
* returns all the javascript that is required in glossary/index.php
* this goes into the $htmlHeadXtra[] array
*/
function to_javascript_glossary() {
return "<script type=\"text/javascript\">
function confirmation (name)
{
if (confirm(\" ". get_lang("TermConfirmDelete") ." \"+ name + \" ?\"))
{return true;}
else
{return false;}
}
function add_glossary() {
err_msg_term_name = '".get_lang("YouMustEnterATermName")."';
err_msg_term_def = '".get_lang("YouMustEnterATermDefinition")."';
if(document.frm_add_glossary.name_glossary.value=='') {
document.getElementById('err_msg_add_term_name').style.display='block';
document.getElementById('err_msg_add_term_name').innerHTML = err_msg_term_name;
} else if(document.frm_add_glossary.description_glossary.value=='') {
document.getElementById('err_msg_add_term_def').style.display='block';
document.getElementById('err_msg_add_term_def').innerHTML = err_msg_term_def;
} else {
document.frm_add_glossary.submit();
}
}
function edit_glossary() {
err_msg_term_name = '".get_lang("YouMustEnterATermName")."';
err_msg_term_def = '".get_lang("YouMustEnterATermDefinition")."';
if(document.frm_edit_glossary.n_glossary.value=='') {
document.getElementById('err_msg_edit_term_name').style.display='block';
document.getElementById('err_msg_edit_term_name').innerHTML = err_msg_term_name;
} else if(document.frm_edit_glossary.d_glossary.value=='') {
document.getElementById('err_msg_edit_term_def').style.display='block';
document.getElementById('err_msg_edit_term_def').innerHTML = err_msg_term_def;
} else {
document.frm_edit_glossary.submit();
}
}
function add_cancel_glossary(){
document.frm_add_glossary.name_glossary.value='';
document.frm_add_glossary.description_glossary.value='';
document.frm_add_glossary.submit();
}
function edit_cancel_glossary(){
document.frm_edit_glossary.n_glossary.value='';
document.frm_edit_glossary.d_glossary.value='';
document.frm_edit_glossary.g_id.value='';
document.frm_edit_glossary.submit();
}
</script>";
}