//
// ------------------------------------------------------------------------ //
// Based on XoopsHP1.01 by Yoshi, aka HowardGee. //
// ------------------------------------------------------------------------ //
// This program is free software; you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation; either version 2 of the License, or //
// (at your option) any later version. //
// //
// You may not change or alter any portion of this comment or credits //
// of supporting developers from this source code or any supporting //
// source code which is considered copyrighted (c) material of the //
// original comment or credit authors. //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details. //
// //
// You should have received a copy of the GNU General Public License //
// along with this program; if not, write to the Free Software //
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA //
// ------------------------------------------------------------------------ //
include 'header.php';
// License check: Add access permission to the guest group if license hasn't been purchased
$groupperm_handler =& xoops_gethandler('groupperm', 'xoopshp');
if (!$xoopsModuleConfig['has_license'] && !$groupperm_handler->checkRight('module_read', $xoopsModule->getVar('mid'), XOOPS_GROUP_ANONYMOUS)) {
// $groupperm_handler->addRight('module_read', $xoopsModule->getVar('mid'), XOOPS_GROUP_ANONYMOUS);
// Heck, can't figure out how to get around the restriction in the kernel, so here's a tentative workaround.
$query ="INSERT INTO ".$xoopsDB->prefix('group_permission')." (gperm_name, gperm_itemid, gperm_groupid, gperm_modid) VALUES (".$xoopsDB->quoteString('module_read').", ".$xoopsModule->getVar('mid').", ".XOOPS_GROUP_ANONYMOUS.", 1)";
$result = $xoopsDB->queryF($query);
}
global $isModAdmin;
if ($xoopsUser && $xoopsUser->isAdmin($xoopsModule->mid())) {
$isModAdmin = true;
} else {
$isModAdmin = false;
}
function listsections() {
global $xoopsConfig, $xoopsModuleConfig, $xoopsDB, $xoopsUser, $xoopsTheme, $xoopsLogger, $xoopsModule, $xoopsTpl, $isModAdmin, $xoopsUserIsAdmin, $xoopsModuleConfig;
include XOOPS_ROOT_PATH.'/header.php';
$myts =& MyTextSanitizer::getInstance();
include 'module_prefix.php';
$result = $xoopsDB->query("SELECT secid, secname, secdesc, display, expire FROM ".$xoopsDB->prefix($module_prefix."_sections")." ORDER BY secname");
echo "
";
echo "
";
printf($xoopsModuleConfig['welcome'],htmlspecialchars($xoopsConfig['sitename'], ENT_QUOTES));
echo "
";
echo "
".$xoopsModuleConfig['welcome_desc'].'
';
echo "
";
echo "
";
echo "
";
echo "";
echo ""._MD_SECNAMEC." | ";
echo ""._MD_SECDESC." | ";
echo ""._MD_SECQNUM." | ";
if ($xoopsUser) {echo ""._MD_SECDNUM." | "; }
echo ""._MD_LT_EXPIRE." | ";
echo "
";
while ( list($secid, $secname, $secdesc, $display, $expire) = $xoopsDB->fetchRow($result) ) {
if ($display) {
$secid = intval($secid);
$secname = $myts->stripSlashesGPC($secname);
$secdesc = $myts->stripSlashesGPC($secdesc);
$expire = $myts->stripSlashesGPC($expire);
$currenttime = formatTimestamp(time(), "Y-m-d H:i:s");
echo "";
if ($expire != '0000-00-00 00:00:00' && $expire < $currenttime) {
echo "".$myts->displayTarea($secname)." | ";
} else {
echo "$secname | ";
}
echo "".$myts->displayTarea($secdesc)." | ";
include 'module_prefix.php';
$result_db = $xoopsDB->prefix($module_prefix.'_results');
include 'module_prefix.php';
$quiz_db = $xoopsDB->prefix($module_prefix.'_quiz');
$qnum = $xoopsDB->query("SELECT * FROM $quiz_db WHERE secid=$secid");
$qnum = $xoopsDB->getRowsNum($qnum);
echo "$qnum | ";
if ($xoopsUser) {
include 'module_prefix.php';
$quiz_db = $xoopsDB->prefix($module_prefix.'_quiz');
if ($isModAdmin) {
$query = "SELECT DISTINCT $result_db.quiz_id, $quiz_db.artid, $quiz_db.secid FROM $result_db, $quiz_db WHERE $quiz_db.artid = $result_db.quiz_id AND $quiz_db.secid = $secid";
} else {
$query = "SELECT DISTINCT $result_db.quiz_id, $quiz_db.artid, $quiz_db.secid FROM $result_db, $quiz_db WHERE $quiz_db.artid = $result_db.quiz_id AND $quiz_db.secid = $secid AND uid=".$xoopsUser->getVar('uid');
}
$results = $xoopsDB->query($query);
$done = $xoopsDB->getRowsNum($results);
echo "$done | ";
}
if ($expire != '0000-00-00 00:00:00') {
if ($expire > $currenttime) {
echo "".$expire." | ";
} else {
echo "".$expire."("._MD_LT_EXPIRED.") | ";
}
} else {
echo "".'-------------------'." | ";
}
echo "
";
}
}
echo "
";
echo "
";
echo "
";
echo "
";
include '../../footer.php';
}
function listarticles($secid) {
global $xoopsConfig, $xoopsModuleConfig, $xoopsUser, $xoopsDB, $xoopsTheme, $xoopsLogger, $xoopsModule, $xoopsTpl, $isModAdmin, $xoopsUserIsAdmin;
include '../../header.php';
$myts =& MyTextSanitizer::getInstance();
$secid = intval($secid);
include 'module_prefix.php';
$result = $xoopsDB->query("SELECT secname, secdesc, display, expire FROM ".$xoopsDB->prefix($module_prefix."_sections")." WHERE secid=$secid");
list($secname, $secdesc, $display, $expire) = $xoopsDB->fetchRow($result);
$secname = $myts->displayTarea($myts->stripSlashesGPC($secname));
$secdesc = $myts->displayTarea($myts->stripSlashesGPC($secdesc));
$display = intval($display);
$expire = $myts->displayTarea($myts->stripSlashesGPC($expire));
// Trap for hidden or expired items
if (!$display) {
redirect_header("index.php", 2, _AM_MSG_ACCESS_ERROR);
} elseif ($expire != '0000-00-00 00:00:00' && $expire < formatTimestamp(time(), "Y-m-d H:i:s")) {
redirect_header("index.php", 2, _AM_MSG_ACCESS_ERROR);
}
include 'module_prefix.php';
$result = $xoopsDB->query("SELECT artid, secid, title, posted, counter, display, expire FROM ".$xoopsDB->prefix($module_prefix."_quiz")." WHERE secid=$secid"." ORDER BY title");
echo "";
echo "
$secname
";
echo "
"._MD_THEFOLLOWING."
";
echo "
";
echo "
";
echo "
";
echo "";
echo ""._MD_LT_TITLE." | ";
echo ""._XD_FB_FINISHED_BY." | ";
if ($isModAdmin) {
echo ""._MD_LT_SITEAVG." | ";
} elseif ($xoopsUser) {
echo ""._MD_LT_MYMAX." | ";
}
echo ""._MD_LT_SITEMAX." | ";
echo ""._MD_LT_EXPIRE." | ";
if ($xoopsUser) { echo ""._MD_LT_ACTION." | "; }
echo "
";
$currenttime = formatTimestamp(time(), "Y-m-d H:i:s");
while ( list($artid, $secid, $title, $posted, $counter, $display, $expire) = $xoopsDB->fetchRow($result) )
{
if ($display) {
$title = $myts->displayTarea($title);
$expire = $myts->stripSlashesGPC($expire);
echo "";
if ($expire != '0000-00-00 00:00:00' && $expire < $currenttime) {
echo "$title | ";
} else {
echo "$title | ";
}
if ($xoopsUser) {
$uid = $xoopsUser->getVar('uid');
include 'module_prefix.php';
$query1 = "SELECT DISTINCT uid FROM ".$xoopsDB->prefix($module_prefix.'_results')." WHERE quiz_id=$artid";
include 'module_prefix.php';
$query2 = "SELECT score FROM ".$xoopsDB->prefix($module_prefix.'_results')." WHERE quiz_id=$artid AND uid=$uid";
if ($isModAdmin) {
$results_exist = $xoopsDB->query($query1);
$done_by = $xoopsDB->query($query1);
} else {
$results_exist = $xoopsDB->query($query2);
$done_by = $xoopsDB->query($query1);
}
$results_exist = $xoopsDB->getRowsNum($results_exist);
} else {
include 'module_prefix.php';
$query1 = "SELECT DISTINCT uid FROM ".$xoopsDB->prefix($module_prefix.'_results')." WHERE quiz_id=$artid";
$done_by = $xoopsDB->query($query1);
}
$done_by = $xoopsDB->getRowsNum($done_by);
echo "$done_by | ";
include 'module_prefix.php';
$site_max = $xoopsDB->query("SELECT MAX(score), AVG(score) FROM ".$xoopsDB->prefix($module_prefix.'_results')." WHERE quiz_id = $artid");
list($site_max, $site_avg) = $xoopsDB->fetchRow($site_max);
if ($isModAdmin) {
echo "".round($site_avg)." | ";
} elseif ($xoopsUser) {
include 'module_prefix.php';
$my_max = $xoopsDB->query("SELECT MAX(score) FROM ".$xoopsDB->prefix($module_prefix.'_results')." WHERE uid = $uid AND quiz_id = $artid");
list($my_max) = $xoopsDB->fetchRow($my_max);
echo "$my_max | ";
}
echo "$site_max | ";
if ($expire != '0000-00-00 00:00:00') {
if ($expire > $currenttime) {
echo "".$expire." | ";
} else {
echo "".$expire."("._MD_LT_EXPIRED.") | ";
}
} else {
echo "".'-------------------'." | ";
}
if ($xoopsUser) {
if ($results_exist) {
echo "". _MD_LT_RESULTS ." | ";
} else {
echo " | ";
}
}
if ($isModAdmin) {
echo "". _MD_EDIT ." | ";
echo "". _MD_DELETE ." | ";
}
echo "
";
}
}
echo "
";
echo "
";
echo "
";
echo "
";
include '../../footer.php';
}
function viewarticle($artid) {
global $xoopsConfig, $xoopsModuleConfig, $xoopsUser, $xoopsDB, $xoopsTpl, $isModAdmin, $xoopsUserIsAdmin;
$myts =& MyTextSanitizer::getInstance();
$artid = intval($artid);
include 'module_prefix.php';
$result=$xoopsDB->query("SELECT secid, title, content, display, expire FROM ".$xoopsDB->prefix($module_prefix."_quiz")." WHERE artid=$artid");
list($secid, $title, $content, $display, $expire) = $xoopsDB->fetchRow($result);
$secid = intval($secid);
$display = intval($display);
$expire = $myts->stripSlashesGPC($expire);
$currenttime = formatTimestamp(time(), "Y-m-d H:i:s");
if ($display) {
include 'module_prefix.php';
$result2=$xoopsDB->query("SELECT display, expire FROM ".$xoopsDB->prefix($module_prefix."_sections")." WHERE secid=$secid");
list($display2, $expire2) = $xoopsDB->fetchRow($result2);
$display2 = intval($display2);
$expire2 = $myts->stripSlashesGPC($expire2);
if ($display2) {
if ($expire2 == '0000-00-00 00:00:00' || $expire2 > $currenttime) {
if ($expire == '0000-00-00 00:00:00' || $expire > $currenttime) {
setcookie("xoopsHP_file_id", $artid);
$title = $myts->displayTarea($title);
// Can't decide an appropriate sanitizer...
//$content = $myts->displayTarea($content, 1);
echo $content;
} else {
redirect_header("index.php", 2, _AM_MSG_ACCESS_ERROR);
}
} else {
redirect_header("index.php", 2, _AM_MSG_ACCESS_ERROR);
}
} else {
redirect_header("index.php", 2, _AM_MSG_ACCESS_ERROR);
}
} else {
redirect_header("index.php", 2, _AM_MSG_ACCESS_ERROR);
}
}
function viewresults($artid, $sort_key) {
global $xoopsConfig, $xoopsModuleConfig, $xoopsUser, $xoopsDB, $xoopsTheme, $xoopsLogger, $xoopsModule, $xoopsTpl, $isModAdmin, $xoopsUserIsAdmin;
include '../../header.php';
$myts =& MyTextSanitizer::getInstance();
//Retrieve table data by users
$artid = intval($artid);
include 'module_prefix.php';
$result2 = $xoopsDB->query("SELECT title, posted, secid FROM ".$xoopsDB->prefix($module_prefix."_quiz")." WHERE artid=$artid");
list($title, $posted, $secid) = $xoopsDB->fetchRow($result2);
$title = $myts->displayTarea($title);
$posted = $myts->displayTarea($posted);
include 'module_prefix.php';
$result_db = $xoopsDB->prefix($module_prefix.'_results');
$users_db = $xoopsDB->prefix('users');
if ($isModAdmin) {
$query = "SELECT $result_db.id, $result_db.quiz_id, $result_db.uid, $result_db.score, $result_db.timestamp, $result_db.comment, $users_db.uname, $users_db.name FROM $result_db, $users_db WHERE $result_db.uid = $users_db.uid AND $result_db.quiz_id = $artid ORDER BY ". $sort_key;
} elseif ($xoopsUser) {
$uid = $xoopsUser->getVar('uid');
$query = "SELECT $result_db.id, $result_db.quiz_id, $result_db.uid, $result_db.score, $result_db.timestamp, $result_db.comment, $users_db.uname, $users_db.name FROM $result_db, $users_db WHERE $result_db.uid = $uid AND $result_db.uid = $users_db.uid AND $result_db.quiz_id = $artid ORDER BY ". $sort_key;
}
$result = $xoopsDB->query($query);
echo "";
echo "
" ._MD_LT_RESULTS. ": $title
";
echo "
";
echo "
";
echo "
";
echo "";
echo ""._MD_LT_STUDENT." | ";
echo ""._MD_LT_SCORE." | ";
echo ""._MD_LT_DATE." | ";
if ($isModAdmin) {echo ""._MD_LT_ACTION." | "; }
echo "
";
while ( list($res_id, $quiz_id, $uid, $score, $timestamp, $comment, $uname, $name) = $xoopsDB->fetchRow($result) ) {
echo "";
if ($xoopsUser) {
echo "".$uname;
if (!empty($name)) {
echo " (".$name.")";
}
echo " | ";
}
echo "$score | ";
echo "$timestamp | ";
if ($isModAdmin) {
echo "". _MD_DELETE ." | ";
}
echo "
";
}
echo "
";
echo "
";
echo "
";
echo "
";
include '../../footer.php';
}
function viewdetails($artid, $sort_key) {
global $xoopsConfig, $xoopsModuleConfig, $xoopsUser, $xoopsDB, $xoopsTheme, $xoopsLogger, $xoopsModule, $xoopsTpl, $isModAdmin, $xoopsUserIsAdmin;
include '../../header.php';
$myts =& MyTextSanitizer::getInstance();
$artid = intval($artid);
$sort_key = $myts->addSlashes($sort_key);
//Retrieve table data by users
include 'module_prefix.php';
$result2 = $xoopsDB->query("SELECT title, posted, secid FROM ".$xoopsDB->prefix($module_prefix."_quiz")." WHERE artid=$artid");
list($title, $posted, $secid) = $xoopsDB->fetchRow($result2);
$title = $myts->displayTarea($title);
$posted = $myts->displayTarea($posted);
$uid = ($xoopsUser) ? $xoopsUser->getVar('uid') : 0;
include 'module_prefix.php';
$result_db = $xoopsDB->prefix($module_prefix.'_results');
$users_db = $xoopsDB->prefix('users');
if ($isModAdmin) {
$query = "SELECT $result_db.id, $result_db.quiz_id, $result_db.uid, $result_db.score, $result_db.start_time, $result_db.end_time, $result_db.timestamp, $result_db.host, $result_db.ip, $result_db.comment, $users_db.uname, $users_db.name FROM $result_db, $users_db WHERE $result_db.uid = $users_db.uid AND $result_db.quiz_id = $artid ORDER BY ". $sort_key;
} elseif ($xoopsUser) {
$query = "SELECT $result_db.id, $result_db.quiz_id, $result_db.uid, $result_db.score, $result_db.start_time, $result_db.end_time, $result_db.timestamp, $result_db.host, $result_db.ip, $result_db.comment, $users_db.uname, $users_db.name FROM $result_db, $users_db WHERE $result_db.uid = $uid AND $result_db.uid = $users_db.uid AND $result_db.quiz_id = $artid ORDER BY ". $sort_key;
}
$result = $xoopsDB->query($query);
echo "";
echo "
". _MD_RESULT_DETAIL.": ".$title."
";
echo "
";
echo "
";
echo "
";
echo "";
echo ""._MD_LT_STUDENT." | ";
echo ""._MD_LT_SCORE." | ";
echo ""._XD_FB_START." | ";
echo ""._XD_FB_END." | ";
echo ""._XD_FB_HOST." | ";
echo ""._XD_FB_IP." | ";
if ($isModAdmin) { echo ""._MD_LT_ACTION." | "; }
echo "
";
while ( list($res_id, $quiz_id, $uid, $score, $start_time, $end_time, $timestamp, $host, $ip, $comment, $uname, $name) = $xoopsDB->fetchRow($result) ) {
echo "";
if ($xoopsUser) {
echo "".$uname;
if (!empty($name)) {
echo " (".$name.")";
}
echo " | ";
}
echo "$score | ";
echo "$start_time | ";
echo "$end_time | ";
echo "$host | ";
echo "$ip | ";
if ($isModAdmin) {
echo "". _MD_DELETE ." | ";
}
echo "
";
}
echo "
";
echo "
";
echo "
";
echo "
";
include '../../footer.php';
}
function portfolio($sort_key, $secid) {
global $xoopsConfig, $xoopsModuleConfig, $xoopsUser, $xoopsDB, $xoopsTheme, $xoopsLogger, $xoopsModule, $xoopsTpl, $isModAdmin, $xoopsUserIsAdmin;
include '../../header.php';
$myts =& MyTextSanitizer::getInstance();
$secid = intval($secid);
$sort_key = $myts->addSlashes($sort_key);
include 'module_prefix.php';
$result_db = $xoopsDB->prefix($module_prefix.'_results');
include 'module_prefix.php';
$quiz_db = $xoopsDB->prefix($module_prefix.'_quiz');
$users_db = $xoopsDB->prefix('users');
if ($secid == 0) {
$section_query = "";
} else {
$section_query ="AND $quiz_db.secid = $secid ";
}
if ($isModAdmin) {
$query = "SELECT $result_db.id, $result_db.quiz_id, $result_db.uid, $result_db.score, $result_db.start_time, $result_db.end_time, $result_db.timestamp, $result_db.host, $result_db.ip, $result_db.comment, $quiz_db.artid, $quiz_db.secid, $quiz_db.title, $users_db.uid, $users_db.uname, $users_db.name FROM $result_db, $quiz_db, $users_db WHERE $quiz_db.artid = $result_db.quiz_id AND $result_db.uid = $users_db.uid ".$section_query." ORDER BY ". $sort_key;
$user_name = "";
} elseif ($xoopsUser) {
$user_id = $xoopsUser->getVar('uid');
$user_name = " (".$xoopsUser->getVar('uname').")";
$query = "SELECT $result_db.id, $result_db.quiz_id, $result_db.uid, $result_db.score, $result_db.start_time, $result_db.end_time, $result_db.timestamp, $result_db.host, $result_db.ip, $result_db.comment, $quiz_db.artid, $quiz_db.secid, $quiz_db.title, $users_db.uid, $users_db.uname, $users_db.name FROM $result_db, $quiz_db, $users_db WHERE $quiz_db.artid = $result_db.quiz_id AND $result_db.uid = $users_db.uid AND $result_db.uid=$user_id ".$section_query." ORDER BY ".$sort_key;
} else {
$user_name = "";
}
$result = $xoopsDB->query($query);
echo "";
echo "
" ._MD_LT_PORTFOLIO. $user_name."
";
echo "
";
echo "
";
echo "
";
echo "";
if ($isModAdmin) { echo ""._MD_LT_STUDENT." | "; }
echo ""._MD_LT_TITLE2." | ";
echo ""._MD_LT_SCORE." | ";
echo ""._MD_LT_DATE." | ";
if ($isModAdmin) { echo ""._MD_LT_ACTION." | "; }
echo "
";
while ( list($res_id, $quiz_id, $uid, $score, $start_time, $end_time, $timestamp, $host, $ip, $comment, $artid, $secid, $title, $uid2, $uname, $name) = $xoopsDB->fetchRow($result) ) {
echo "";
if ($isModAdmin) {
echo "".$uname;
if (!empty($name)) {
echo " (".$name.")";
}
echo " | ";
}
echo "$title | ";
echo "$score | ";
echo "$timestamp | ";
if ($isModAdmin) {
echo "". _MD_DELETE ." | ";
}
echo "
";
}
echo "
";
echo "
";
echo "
";
echo "
";
include '../../footer.php';
}
$op = isset($HTTP_GET_VARS['op']) ? trim($HTTP_GET_VARS['op']) : '';
$secid = isset($HTTP_GET_VARS['secid']) ? intval($HTTP_GET_VARS['secid']) : 0;
$page = isset($HTTP_GET_VARS['page']) ? intval($HTTP_GET_VARS['page']) : 0;
$artid = isset($HTTP_GET_VARS['artid']) ? intval($HTTP_GET_VARS['artid']) : 0;
$uid = isset($HTTP_GET_VARS['uid']) ? intval($HTTP_GET_VARS['uid']) : 0;
$sort_key = isset($HTTP_GET_VARS['sort_key']) ? trim($HTTP_GET_VARS['sort_key']) : "uname";
switch ( $op ) {
case "viewarticle":
viewarticle($artid);
break;
case "listarticles":
listarticles($secid);
break;
case "viewresults":
viewresults($artid, $sort_key);
break;
case "viewdetails":
viewdetails($artid, $sort_key);
break;
case "portfolio":
portfolio($sort_key, $secid);
break;
default:
listsections();
break;
}
?>