* @desc Record information for open event (when homepage is opened) */ function event_open() { global $_configuration; global $TABLETRACK_OPEN; // if tracking is disabled record nothing if (!$_configuration['tracking_enabled']) { return 0; } // @getHostByAddr($_SERVER['REMOTE_ADDR']) : will provide host and country information // $_SERVER['HTTP_USER_AGENT'] : will provide browser and os information // $_SERVER['HTTP_REFERER'] : provide information about refering url $referer = $_SERVER['HTTP_REFERER']; // record informations only if user comes from another site //if(!eregi($_configuration['root_web'],$referer)) $pos = strpos($referer, $_configuration['root_web']); if ($pos === false) { $remhost = @ getHostByAddr($_SERVER['REMOTE_ADDR']); if ($remhost == $_SERVER['REMOTE_ADDR']) $remhost = "Unknown"; // don't change this $reallyNow = time(); $sql = "INSERT INTO `".$TABLETRACK_OPEN."` (`open_remote_host`, `open_agent`, `open_referer`, `open_date`) VALUES ('".$remhost."', '".$_SERVER['HTTP_USER_AGENT']."', '".$referer."', FROM_UNIXTIME($reallyNow) )"; $res = api_sql_query($sql,__FILE__,__LINE__); //$mysql_query($sql); } return 1; } /** * @author Sebastien Piraux * @desc Record information for login event * (when an user identifies himself with username & password) */ function event_login() { global $_configuration; global $_user; global $TABLETRACK_LOGIN; // if tracking is disabled record nothing if (!$_configuration['tracking_enabled']) { return 0; } $reallyNow = time(); $sql = "INSERT INTO `".$TABLETRACK_LOGIN."` (`login_user_id`, `login_ip`, `login_date`) VALUES ('".$_user['user_id']."', '".$_SERVER['REMOTE_ADDR']."', FROM_UNIXTIME(".$reallyNow."))"; $res = api_sql_query($sql,__FILE__,__LINE__); //$mysql_query($sql); //return 0; } /** * @param tool name of the tool (name in mainDb.accueil table) * @author Sebastien Piraux * @desc Record information for access event for courses */ function event_access_course() { global $_configuration; global $_user; global $_cid; global $TABLETRACK_ACCESS; global $TABLETRACK_LASTACCESS; //for "what's new" notification // if tracking is disabled record nothing if (!$_configuration['tracking_enabled']) { return 0; } if(api_get_setting('use_session_mode')=='true' && isset($_SESSION['id_session'])) { $id_session = intval($_SESSION['id_session']); } else { $id_session = 0; } $reallyNow = time(); if ($_user['user_id']) { $user_id = "'".$_user['user_id']."'"; } else // anonymous { $user_id = "NULL"; } $sql = "INSERT INTO `".$TABLETRACK_ACCESS."` (`access_user_id`, `access_cours_code`, `access_date`) VALUES (".$user_id.", '".$_cid."', FROM_UNIXTIME(".$reallyNow."))"; $res = api_sql_query($sql,__FILE__,__LINE__); // added for "what's new" notification $sql = " UPDATE `$TABLETRACK_LASTACCESS` SET access_date = FROM_UNIXTIME($reallyNow) WHERE `access_user_id` = ".$user_id." AND `access_cours_code` = '".$_cid."' AND `access_tool` IS NULL AND `access_session_id`=".$id_session; $res = api_sql_query($sql,__FILE__,__LINE__); if (mysql_affected_rows() == 0) { $sql = " INSERT INTO `$TABLETRACK_LASTACCESS` (`access_user_id`,`access_cours_code`,`access_date`, access_session_id) VALUES (".$user_id.", '".$_cid."', FROM_UNIXTIME($reallyNow), ".$id_session.")"; $res = api_sql_query($sql,__FILE__,__LINE__); } // end "what's new" notification return 1; } /** * @param tool name of the tool (name in mainDb.accueil table) * @author Sebastien Piraux * @desc Record information for access event for tools * * $tool can take this values : * Links, Calendar, Document, Announcements, * Group, Video, Works, Users, Exercices, Course Desc * ... * Values can be added if new modules are created (15char max) * I encourage to use $nameTool as $tool when calling this function * * Functionality for "what's new" notification is added by Toon Van Hoecke */ function event_access_tool($tool, $id_session=0) { global $_configuration; // if tracking is disabled record nothing // if( ! $_configuration['tracking_enabled'] ) return 0; //commented because "what's new" notification must always occur global $_user; global $_cid; global $TABLETRACK_ACCESS; global $_configuration; global $_course; global $TABLETRACK_LASTACCESS; //for "what's new" notification if(api_get_setting('use_session_mode')=='true' && isset($_SESSION['id_session'])) { $id_session = intval($_SESSION['id_session']); } else { $id_session = 0; } $reallyNow = time(); $user_id = $_user['user_id'] ? "'".$_user['user_id']."'" : "NULL"; // "NULL" is anonymous // record information // only if user comes from the course $_cid //if( eregi($_configuration['root_web'].$_cid,$_SERVER['HTTP_REFERER'] ) ) //$pos = strpos($_SERVER['HTTP_REFERER'],$_configuration['root_web'].$_cid); $pos = strpos(strtolower($_SERVER['HTTP_REFERER']), strtolower(api_get_path(WEB_COURSE_PATH).$_course['path'])); // added for "what's new" notification $pos2 = strpos(strtolower($_SERVER['HTTP_REFERER']), strtolower($_configuration['root_web']."index")); // end "what's new" notification if ($_configuration['tracking_enabled'] && ($pos !== false || $pos2 !== false)) { $sql = "INSERT INTO `".$TABLETRACK_ACCESS."` (`access_user_id`, `access_cours_code`, `access_tool`, `access_date`) VALUES (".$user_id.",".// Don't add ' ' around value, it's already done. "'".$_cid."' , '".htmlspecialchars($tool, ENT_QUOTES)."', FROM_UNIXTIME(".$reallyNow."))"; $res = api_sql_query($sql,__FILE__,__LINE__); } // "what's new" notification $sql = " UPDATE `$TABLETRACK_LASTACCESS` SET access_date = FROM_UNIXTIME($reallyNow) WHERE `access_user_id` = ".$user_id." AND `access_cours_code` = '".$_cid."' AND `access_tool` = '".htmlspecialchars($tool, ENT_QUOTES)."' AND `access_session_id`=".$id_session; $res = api_sql_query($sql,__FILE__,__LINE__); if (mysql_affected_rows() == 0) { $sql = "INSERT INTO `$TABLETRACK_LASTACCESS` (`access_user_id`,`access_cours_code`,`access_tool`, `access_date`, `access_session_id`) VALUES (".$user_id.", '".$_cid."' , '".htmlspecialchars($tool, ENT_QUOTES)."', FROM_UNIXTIME($reallyNow), $id_session)"; $res = api_sql_query($sql,__FILE__,__LINE__); } return 1; } /** * @param doc_id id of document (id in mainDb.document table) * @author Sebastien Piraux * @desc Record information for download event * (when an user click to d/l a document) * it will be used in a redirection page * bug fixed: Roan Embrechts * Roan: * The user id is put in single quotes, * (why? perhaps to prevent sql insertion hacks?) * and later again. * Doing this twice causes an error, I remove one of them. */ function event_download($doc_url) { global $_configuration; global $_user; global $_cid; global $TABLETRACK_DOWNLOADS; // if tracking is disabled record nothing if (!$_configuration['tracking_enabled']) { return 0; } $reallyNow = time(); if ($_user['user_id']) { $user_id = "'".$_user['user_id']."'"; } else // anonymous { $user_id = "NULL"; } $sql = "INSERT INTO `".$TABLETRACK_DOWNLOADS."` ( `down_user_id`, `down_cours_id`, `down_doc_path`, `down_date` ) VALUES ( ".$user_id.", '".$_cid."', '".htmlspecialchars($doc_url, ENT_QUOTES)."', FROM_UNIXTIME(".$reallyNow.") )"; $res = api_sql_query($sql,__FILE__,__LINE__); //$mysql_query($sql); return 1; } /** * @param doc_id id of document (id in mainDb.document table) * @author Sebastien Piraux * @desc Record information for upload event * used in the works tool to record informations when * an user upload 1 work */ function event_upload($doc_id) { global $_configuration; global $_user; global $_cid; global $TABLETRACK_UPLOADS; // if tracking is disabled record nothing if (!$_configuration['tracking_enabled']) { return 0; } $reallyNow = time(); if ($_user['user_id']) { $user_id = "'".$_user['user_id']."'"; } else // anonymous { $user_id = "NULL"; } $sql = "INSERT INTO `".$TABLETRACK_UPLOADS."` ( `upload_user_id`, `upload_cours_id`, `upload_work_id`, `upload_date` ) VALUES ( ".$user_id.", '".$_cid."', '".$doc_id."', FROM_UNIXTIME(".$reallyNow.") )"; $res = api_sql_query($sql,__FILE__,__LINE__); //$mysql_query($sql); return 1; } /** * @param link_id (id in coursDb liens table) * @author Sebastien Piraux * @desc Record information for link event (when an user click on an added link) * it will be used in a redirection page */ function event_link($link_id) { global $_configuration; global $_user; global $_cid; global $TABLETRACK_LINKS; // if tracking is disabled record nothing if (!$_configuration['tracking_enabled']) { return 0; } $reallyNow = time(); if ($_user['user_id']) { $user_id = "'".$_user['user_id']."'"; } else // anonymous { $user_id = "NULL"; } $sql = "INSERT INTO `".$TABLETRACK_LINKS."` ( `links_user_id`, `links_cours_id`, `links_link_id`, `links_date` ) VALUES ( ".$user_id.", '".$_cid."', '".$link_id."', FROM_UNIXTIME(".$reallyNow.") )"; $res = api_sql_query($sql,__FILE__,__LINE__); //$mysql_query($sql); return 1; } /** * @param exo_id ( id in courseDb exercices table ) * @param result ( score @ exercice ) * @param weighting ( higher score ) * @author Sebastien Piraux * @desc Record result of user when an exercice was done */ function event_exercice($exo_id, $score, $weighting) { global $_configuration; global $_user; global $_cid; global $TABLETRACK_EXERCICES; global $origin, $learnpath_id, $learnpath_item_id; // if tracking is disabled record nothing if (!$_configuration['tracking_enabled']) { return 0; } $reallyNow = time(); if ($_user['user_id']) { $user_id = "'".$_user['user_id']."'"; } else // anonymous { $user_id = "NULL"; } $sql = "INSERT INTO `".$TABLETRACK_EXERCICES."` ( `exe_user_id`, `exe_cours_id`, `exe_exo_id`, `exe_result`, `exe_weighting`, `exe_date` ) VALUES ( ".$user_id.", '".$_cid."', '".$exo_id."', '".$score."', '".$weighting."', FROM_UNIXTIME(".$reallyNow.") )"; /* SEE WHAT WE DO WITH THAT $tbl_learnpath_user = Database::get_course_table(TABLE_LEARNPATH_USER); if ($origin == 'learnpath') { if ($user_id == "NULL") { $user_id = '0'; } $sql2 = "update $tbl_learnpath_user set score='$score' where (user_id=$user_id and learnpath_id='$learnpath_id' and learnpath_item_id='$learnpath_item_id')"; $res2 = api_sql_query($sql2,__FILE__,__LINE__); } */ $res = api_sql_query($sql,__FILE__,__LINE__); //$mysql_query($sql); //return 0; } function exercise_attempt($score,$answer,$quesId,$exeId,$j) { global $_configuration; global $_user; global $_cid; global $TABLETRACK_ATTEMPT; global $origin, $learnpath_id, $learnpath_item_id; // if tracking is disabled record nothing if (!$_configuration['tracking_enabled']) { return 0; } $reallyNow = time(); if ($_user['user_id']) { $user_id = "'".$_user['user_id']."'"; } else // anonymous { $user_id = "NULL"; } $sql = "INSERT INTO `".$TABLETRACK_ATTEMPT."` (`exe_id`, `user_id`, `question_id`, `answer`, `marks`, `course_code`, `position` ) VALUES ( ".$exeId.", ".$user_id.", '".$quesId."', '".addslashes($answer)."', '".$score."', '".$_cid."', '".$j."' )"; /* SEE WHAT WE DO WITH THAT $tbl_learnpath_user = Database::get_course_table(TABLE_LEARNPATH_USER); if ($origin == 'learnpath') { if ($user_id == "NULL") { $user_id = '0'; } $sql2 = "update $tbl_learnpath_user set score='$score' where (user_id=$user_id and learnpath_id='$learnpath_id' and learnpath_item_id='$learnpath_item_id')"; $res2 = api_sql_query($sql2,__FILE__,__LINE__); } */ //$res = api_sql_query($sql,__FILE__,__LINE__); $res = mysql_query($sql) or die(mysql_error()); //return 0; } ?>