123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317 |
- <?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>";
- }
|