
PK 
<?php
ob_start();
//error_reporting(E_ALL ^ E_NOTICE);
@session_start();
ini_set('allow_url_include',1);
date_default_timezone_set("Asia/Kolkata");
set_time_limit(600);
ini_set('max_execution_time',600);
require_once 'admin/includes/settings/PDODB.php';
include 'admin/includes/modules/functions.php';
$function = new FUNCTIONS();
if(empty($_SESSION['userId'])){
header("Location: index.php");
exit();
}
$user = $function->getUsers($_SESSION['userId'],NULL,NULL,1);
?>
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<title>Coforge</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- <meta http-equiv="refresh" content="50"> -->
<link rel='stylesheet' href='css/bootstrap.min.css'>
<link rel='stylesheet' href='css/style.css'>
<link href="images/favicon.png" rel="shortcut icon" type="image/png">
<style type="text/css">
body { background-color: #082340;}
.d-none { display:none; }
.error {color: red;}
.navbar{
background: rgb(8 34 64);
box-shadow: rgba(33, 35, 38, 0.1) 0px 10px 10px -10px;
}
ul.join-social {
margin: 0;
padding: 0;
}
ul {
list-style: none;
width: auto;
display: inline-block;
vertical-align: middle;}
.join-social li {
display: inline-block;
margin-left: 7px;
vertical-align: middle;
}
.frame{
padding: 3px 15px;
background: #f15b40;
border-radius: 2px;
text-align: left;
color: #fff;
letter-spacing: 1.5px;
font-size: 16px;
font-weight: bold;
line-height: 24px;
}
.comment-form{
background: #e7e7e7;
padding:1%;
margin-bottom: 1%;
}
.poll-question{
background: #e7e7e7;
padding:1%;
}
.quiz-question{
background: #e7e7e7;
padding:1%;
}
.feedbackform{
background: #e7e7e7;
padding:2%;
}
.form-control {
border-color: #e7e7e7;
}
.form-check-input {
}
input:checked {
background: #a69837;
}
label{
}
.nav-tabs{
background: #f15b40;
color: #ffffff;
}
.nav-link{
color: #ffffff;
}
#feedback-form-wrapper #floating-icon > button {
position: fixed;
right: 0;
top: 50%;
transform: rotate(-90deg) translate(50%, -50%);
transform-origin: right;
}
#feedback-form-wrapper .rating-input-wrapper input[type="radio"] {
display: none;
}
#feedback-form-wrapper .rating-input-wrapper input[type="radio"] ~ span {
cursor: pointer;
}
#feedback-form-wrapper .rating-input-wrapper input[type="radio"]:checked ~ span {
background-color: #4261dc;
color: #fff;
}
#feedback-form-wrapper .rating-labels > label{
font-size: 14px;
color: #777;
}
/* Star Rating Styles */
.star-rating {
direction: rtl;
display: inline-flex;
font-size: 2rem;
cursor: pointer;
}
.star-rating input {
display: none;
}
.star-rating label {
color: #ccc;
transition: color 0.2s;
}
.star-rating input:checked ~ label,
.star-rating label:hover,
.star-rating label:hover ~ label {
color: gold;
}
</style>
</head>
<body>
<nav class="navbar">
<div class="container-fluid">
<a class="navbar-brand" href="#" target="_blank">
<img src="images/logo.png" alt="" width="150" class="img-fluid">
</a>
<div class="content">
<ul class="join-social">
<li><a class="logout-btn" href="logout.php">Logout:</a></li>
</ul>
</div>
</div>
</nav>
<div class="container-fluid py-5">
<div class="row my-2">
<div class="col-6"> </div>
<div class="col-md-6">
<p class="points-btn pull-right" style="float: right;">
POINTS: <span id="userPoints">Loading...</span>
</p>
</div>
</div>
<div class="row justify-content-center">
<div class="col-md-8">
<div class="ratio ratio-16x9 mb-5">
<iframe src="https://player.castr.com/live_ed443440425811efb232999121a03e72" title="Multistreaming with Restream.io" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
</div>
<div class="col-md-4">
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="quiz-tab" data-bs-toggle="tab" data-bs-target="#quiz" type="button" role="tab" aria-controls="quiz" aria-selected="true">Quiz</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="home-tab" data-bs-toggle="tab" data-bs-target="#home" type="button" role="tab" aria-controls="home" aria-selected="false">Ask Question</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="contact-tab" data-bs-toggle="tab" data-bs-target="#contact" type="button" role="tab" aria-controls="contact" aria-selected="false">Feedback</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile" type="button" role="tab" aria-controls="profile" aria-selected="false">Poll</button>
</li>
</ul>
<div class="tab-content" id="myTabContent">
<div class="tab-pane fade show active" id="quiz" role="tabpanel" aria-labelledby="quiz-tab">
<div id="quiz-container">
<div class="text-center py-5 text-white">
<div class="spinner-border text-primary" role="status">
<span class="visually-hidden">Loading...</span>
</div>
<p>Loading quiz question...</p>
</div>
</div>
<div id="quiz-results" class="my-3"></div>
<div class="quiz-navigation d-flex justify-content-between mt-3">
<span id="question-counter" class="text-white align-self-center" style="display: none;">
Question <span id="current-question">1</span> of <span id="total-questions">0</span>
</span>
<button id="submit-quiz" class="btn btn-success" disabled>
<i class="bi bi-check-circle"></i> Submit Answer
</button>
</div>
<div id="quiz-restart" class="text-center mt-3 d-none">
<button id="restart-quiz" class="btn btn-info">
<i class="bi bi-arrow-repeat"></i> Restart Quiz
</button>
</div>
</div>
<div class="tab-pane fade" id="home" role="tabpanel" aria-labelledby="home-tab">
<!-- <div class="frame">ASK QUESTIONS</div>-->
<form class="comment-form" id="askQstndForm" method="POST" action="">
<div class="mb-3">
<div class="form-floating">
<textarea class="form-control" placeholder="Leave a comment here" id="question" name="question" style="height: 130px"></textarea>
<label for="question">Type your comments</label>
</div>
</div>
<div id="message"></div>
<center>
<!-- <button type="submit" id="askQuestionBtn" name="askQuestionBtn" onclick="askQForm();" class="btn btn-lg">Submit</button> -->
<input class="btn btn-lg" type="button" onclick="askQForm();" name="save_contact" value="Submit" />
</center>
</form>
</div>
<div class="tab-pane fade" id="contact" role="tabpanel" aria-labelledby="contact-tab">
<div id="session-info-container">
<div class="alert alert-info" id="session-info" style="display: none; font-size: 1.2rem;">
You're providing feedback for: <strong id="current-session-name"></strong>
</div>
<div class="alert alert-warning" id="no-session-info" style="display: none;">
No active session found to provide feedback for.
</div>
</div>
<form class="feedbackform" method="POST" action="" id="feedbackForm" style="display: none;">
<input type="hidden" name="event_name" id="event-name-input">
<div class="form-group">
<label for="exampleFormControlTextarea1" class="form-label">How would you rate this session?</label><br>
<div class="star-rating">
<input type="radio" id="star5" name="rating" value="5"><label for="star5">★</label>
<input type="radio" id="star4" name="rating" value="4"><label for="star4">★</label>
<input type="radio" id="star3" name="rating" value="3"><label for="star3">★</label>
<input type="radio" id="star2" name="rating" value="2"><label for="star2">★</label>
<input type="radio" id="star1" name="rating" value="1"><label for="star1">★</label>
</div>
</div>
<div class="mb-3">
<label for="exampleFormControlTextarea1" class="form-label">Would you like to say something?</label>
<textarea class="form-control" name="comment" id="comment" rows="3"></textarea>
</div>
<div id="feedbackmessage"></div>
<center><input class="btn btn-lg" type="button" onclick="feedBForm();" name="feedBackBtn" value="Submit" /></center>
</form>
</div>
<div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">
<?php
$pollQuestion = $function->getPollQuestion($id=NULL,$isActive=1);
if (!empty($pollQuestion)) {
$question = $pollQuestion[0]['title'];
$max_vote = $pollQuestion[0]['max_vote'];
$questionOptiondata = $function->getQuestionOption($id=NULL,$q_id=$pollQuestion[0]['id'],$isActive=1);
$pollingdata = $function->getPolllinglist($id=NULL,$uid=$_SESSION['userId'],$q_id=$pollQuestion[0]['id'],$isActive=1);
//print_r($pollingdata[0]['option_id']); //exit;
if ($pollingdata == true) { ?>
<form class="poll-question" style="min-height: 200px;" id="pollForm">
<h4 class="question"><?=(!empty($question))?$question:'';?></h4>
<div class="mb-3">
<?php for($i=0;$i<count($questionOptiondata);$i++){ ?>
<div class="form-check">
<input class="form-check-input" disabled type="radio" name="polloption" id="polloption" value="<?=$questionOptiondata[$i]['id'];?>" <?=($questionOptiondata[$i]['id']==$pollingdata[0]['option_id'])?'checked':'';?>>
<label class="form-check-label" for="exampleRadios1">
<?=$questionOptiondata[$i]['description']." (".$questionOptiondata[$i]['vote_count'].")";?>
</label>
<progress id="file" value="<?=$questionOptiondata[$i]['vote_count'];?>" max="<?=$max_vote;?>"> <?=$questionOptiondata[$i]['vote_count'];?> </progress>
</div>
<?php } ?>
</div>
<h5 class="question">You have already voted for this Poll.</h5>
</form>
<?php } else { ?>
<form class="poll-question" method="POST" id="pollForm">
<h4 class="question"><?=(!empty($question))?$question:'';?></h4>
<div class="mb-3">
<?php for($i=0;$i<count($questionOptiondata);$i++){ ?>
<div class="form-check">
<input class="form-check-input" type="radio" name="polloption" id="polloption" value="<?=$questionOptiondata[$i]['id'];?>">
<label class="form-check-label" for="exampleRadios1">
<?=$questionOptiondata[$i]['description'];?>
</label>
</div>
<?php } ?>
</div>
<p style="color:red; text-align: center;"><?=(!empty($poll_msg))?$poll_msg:'';?></p>
<input type="hidden" value="<?=$pollQuestion[0]['id'];?>" id="q_id" name="q_id" />
<input type="hidden" value="<?=$_SESSION['userId'];?>" id="uid" name="uid" />
<div id="pollQmessage"></div>
<center><button type="submit" name="pollQuestionBtn" class="btn btn-lg" onclick="pollQForm(event);">Submit</button></center>
</form>
<?php } ?>
<?php }else { ?>
<form class="poll-question" style="min-height: 200px;">
<h4 class="question"></h4>
</form>
<?php } ?>
</div>
</div>
</div>
</div>
</div>
<!-- partial -->
<script type='text/javascript' src='//code.jquery.com/jquery-1.8.3.js'></script>
<script type="text/javascript" src="//code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<link rel="stylesheet" type="text/css" href="//code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css">
<script type='text/javascript' src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/jquery.validate.js"></script>
<script type='text/javascript' src="//jqueryvalidation.org/files/dist/additional-methods.min.js"></script>
<script src='js/bootstrap.bundle.min.js'></script>
<!-- ajax start -->
<script type="text/javascript">
$(document).ready(function() {
function askQForm() {
var question = $('textarea[name=question]').val().trim();
if (question !== '') {
var formData = {question: question};
$('#message').html('<span style="color: red">Processing form. . . please wait. . .</span>');
$.ajax({
url: "post.php",
type: 'POST',
data: formData,
success: function(response) {
try {
var res = JSON.parse(response);
if (res.success == true) {
document.getElementById("askQstndForm").reset();
$('#message').html('<span id="successmsg" style="color: green">Submitted successfully</span>');
$("#successmsg").delay(5000).fadeOut(); // Will hide after 5 seconds
} else {
$('#message').html('<span id="failmsg" style="color: red">Form not submitted. Some error in running the database query.</span>');
$("#failmsg").delay(5000).fadeOut(); // Will hide after 5 seconds
}
} catch (e) {
$('#message').html('<span id="failmsg" style="color: red">Error processing response</span>');
$("#failmsg").delay(5000).fadeOut(); // Will hide after 5 seconds
}
},
error: function() {
$('#message').html('<span id="failmsg" style="color: red">Error submitting the form. Please try again later.</span>');
$("#failmsg").delay(5000).fadeOut(); // Will hide after 5 seconds
}
});
} else {
$('#message').html('<span id="requiredmsg" style="color: red">Please type your feedback</span>');
$("#requiredmsg").delay(5000).fadeOut();
}
}
window.askQForm = askQForm; // Ensure the function is available globally
});
</script>
<!-- Feedback -->
<script>
$(document).ready(function() {
// Fetch active session when the tab is shown
$('#contact-tab').on('shown.bs.tab', function() {
fetchActiveSession();
});
// Also fetch when page loads if this tab is active
if($('#contact-tab').hasClass('active')) {
fetchActiveSession();
}
});
function fetchActiveSession() {
$.ajax({
url: 'get_active_session.php',
type: 'GET',
dataType: 'json',
success: function(response) {
if(response.success) {
$('#current-session-name').text(response.event_name);
$('#event-name-input').val(response.event_name);
$('#session-info').show();
$('#no-session-info').hide();
$('#feedbackForm').show();
} else {
$('#session-info').hide();
$('#no-session-info').show();
$('#feedbackForm').hide();
}
},
error: function() {
$('#session-info').hide();
$('#no-session-info').text('Error fetching session information').show();
$('#feedbackForm').hide();
}
});
}
function feedBForm() {
var comment = $('textarea[name=comment]').val();
var rating = $('input[name=rating]:checked').val();
var event_name = $('#event-name-input').val();
if(comment != '' && rating!= '') {
var formData = {
comment: comment,
rating: rating,
event_name: event_name
};
$('#feedbackmessage').html('<span style="color: red">Processing form. . . please wait. . .</span>');
$.ajax({
url: "post.php",
type: 'POST',
data: formData,
success: function(response) {
var res = JSON.parse(response);
if(res.success == true){
document.getElementById("feedbackForm").reset();
$('#feedbackmessage').html('<span id="successmsg" style="color: green">Your Feedback successfully submitted</span>');
$("#successmsg").delay(5000).fadeOut();
} else {
$('#feedbackmessage').html('<span id="failmsg" style="color: red">Form not submitted. Some error in running the database query.</span>');
$("#failmsg").delay(5000).fadeOut();
}
}
});
}
else {
$('#feedbackmessage').html('<span id="reuiredmsg" style="color: red">Please type your question</span>');
$("#reuiredmsg").delay(5000).fadeOut();
}
}
// Call loadPollQuestion every 10 seconds
setInterval(fetchActiveSession, 2000);
</script>
<!-- Polling -->
<script type="text/javascript">
function pollQForm(event) {
event.preventDefault();
var q_id = $('input[name=q_id]').val();
var polloption = $('input[name=polloption]:checked').val();
if(q_id != '' && polloption!= '') {
var formData = {q_id: q_id, polloption: polloption};
$('#pollQmessage').html('<span style="color: red">Processing form. . . please wait. . .</span>');
$.ajax({
url: "post.php",
type: 'POST',
data: formData,
success: function(response) {
var res = JSON.parse(response);
if(res.success == true) {
$('#pollQmessage').html('<span id="successmsg" style="color: green">Your Feedback successfully submitted</span>');
$("#successmsg").delay(5000).fadeOut();
// Reload the poll question
loadPollQuestion();
} else {
$('#pollQmessage').html('<span id="failmsg" style="color: red">Form not submitted. Some error in running the database query.</span>');
$("#failmsg").delay(5000).fadeOut();
}
}
});
} else {
$('#pollQmessage').html('<span id="reuiredmsg" style="color: red">Please select an option</span>');
$("#reuiredmsg").delay(5000).fadeOut();
}
}
function loadPollQuestion() {
$.ajax({
url: 'get_poll_question.php',
type: 'GET',
success: function(response) {
var res = JSON.parse(response);
if (res.success) {
$('#profile').html(res.html);
} else {
$('#profile').html('<form class="poll-question" style="min-height: 200px;"><h4 class="question"></h4></form>');
}
}
});
}
// Call loadPollQuestion every 10 seconds
setInterval(loadPollQuestion, 5000);
</script>
<!-- quiz -->
<script>
document.addEventListener('DOMContentLoaded', function() {
// State management
const quizState = {
currentIndex: 0,
totalQuestions: 0,
currentQuestion: null,
userAnswers: {},
answeredIds: new Set(),
isSubmitting: false,
refreshTimer: null,
lastUpdate: null
};
// DOM elements
const elements = {
container: document.getElementById('quiz-container'),
submitBtn: document.getElementById('submit-quiz'),
currentQ: document.getElementById('current-question'),
totalQ: document.getElementById('total-questions'),
results: document.getElementById('quiz-results'),
restartContainer: document.getElementById('quiz-restart'),
restartBtn: document.getElementById('restart-quiz'),
navigation: document.querySelector('.quiz-navigation')
};
// Initialize quiz
function initQuiz() {
resetQuizState();
showLoading();
fetchQuestion(quizState.currentIndex);
startRefreshCycle();
// Ensure buttons are in correct initial state
elements.submitBtn.classList.remove('d-none');
elements.restartContainer.classList.add('d-none');
elements.navigation.classList.remove('d-none');
}
function resetQuizState() {
quizState.currentIndex = 0;
quizState.currentQuestion = null;
quizState.userAnswers = {};
quizState.answeredIds = new Set();
clearRefreshTimer();
}
// Refresh logic
function startRefreshCycle() {
clearRefreshTimer();
const refreshInterval = quizState.currentQuestion ? 120000 : 20000;
console.log(`Setting refresh for ${refreshInterval/1000} seconds`);
quizState.refreshTimer = setTimeout(() => {
if (!quizState.isSubmitting) {
console.log('Auto-refreshing...');
showLoading();
fetchQuestion(quizState.currentIndex);
}
startRefreshCycle();
}, refreshInterval);
}
function clearRefreshTimer() {
if (quizState.refreshTimer) {
clearTimeout(quizState.refreshTimer);
quizState.refreshTimer = null;
}
}
// UI functions
function showLoading() {
elements.container.innerHTML = `
<div class="text-center py-5 text-white">
<div class="spinner-border text-primary" role="status">
<span class="visually-hidden">Loading...</span>
</div>
<p>Loading quiz question...</p>
</div>
`;
elements.submitBtn.disabled = true;
}
function showError(message) {
elements.container.innerHTML = `
<div class="alert alert-danger">
${message}<br>
Will try again shortly...
</div>
`;
}
// Data functions
async function fetchQuestion(index) {
try {
const response = await fetch(`get_quiz_question.php?question_id=${index}&t=${Date.now()}`);
if (!response.ok) {
throw new Error(`Server returned ${response.status}`);
}
const data = await response.json();
if (!data.success) {
throw new Error(data.message || 'Invalid question data');
}
// Skip if already answered
if (quizState.answeredIds.has(data.question.qid.toString())) {
moveToNextQuestion();
return;
}
// Update state
quizState.currentQuestion = data.question;
quizState.totalQuestions = data.total;
quizState.lastUpdate = new Date();
renderQuestion();
startRefreshCycle();
} catch (error) {
console.error('Fetch error:', error);
quizState.currentQuestion = null;
showError(error.message);
startRefreshCycle();
}
}
function renderQuestion() {
const q = quizState.currentQuestion;
// Clear previous results when loading new question
elements.results.innerHTML = '';
elements.container.innerHTML = `
<form class="quiz-question">
<input type="hidden" name="question_id" value="${q.qid}">
<h4 class="mb-3">${q.question}</h4>
<div class="mb-3">
${['ans1', 'ans2', 'ans3', 'ans4'].map((ans, i) => `
<div class="form-check">
<input class="form-check-input" type="radio" name="quizoption"
id="quizoption-${q.qid}-${i}"
value="${q[ans]}">
<label class="form-check-label" for="quizoption-${q.qid}-${i}">
${String.fromCharCode(65 + i)}. ${q[ans]}
</label>
</div>
`).join('')}
</div>
</form>
`;
// Restore selected answer if exists
if (quizState.userAnswers[q.qid]) {
document.querySelector(`input[value="${quizState.userAnswers[q.qid]}"]`).checked = true;
}
updateCounter();
elements.submitBtn.disabled = false;
elements.submitBtn.classList.remove('d-none');
}
function updateCounter() {
elements.currentQ.textContent = quizState.currentIndex + 1;
elements.totalQ.textContent = quizState.totalQuestions;
}
// Question navigation
function moveToNextQuestion() {
// Clear results before moving to next question
elements.results.innerHTML = '';
quizState.currentIndex++;
if (quizState.currentIndex >= quizState.totalQuestions) {
showEndScreen();
} else {
fetchQuestion(quizState.currentIndex);
}
}
// Answer submission
async function submitAnswer() {
const form = document.querySelector('.quiz-question');
if (!form) return;
const questionId = form.querySelector('input[name="question_id"]').value;
const selectedOption = form.querySelector('input[name="quizoption"]:checked');
if (!selectedOption) {
elements.results.innerHTML = `<div class="alert alert-warning">Please select an answer</div>`;
return;
}
quizState.isSubmitting = true;
const userAnswer = selectedOption.value;
// Update state
quizState.userAnswers[questionId] = userAnswer;
quizState.answeredIds.add(questionId);
// UI feedback
elements.submitBtn.disabled = true;
elements.submitBtn.innerHTML = `<span class="spinner-border spinner-border-sm"></span> Submitting...`;
try {
const response = await fetch('submit_quiz.php', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
question_id: questionId,
user_answer: userAnswer
})
});
const data = await response.json();
if (!data.success) {
throw new Error(data.message || 'Submission failed');
}
showResult(data.is_correct, userAnswer, data.correct_answer);
} catch (error) {
console.error('Submission error:', error);
elements.results.innerHTML = `<div class="alert alert-danger">Error: ${error.message}</div>`;
quizState.answeredIds.delete(questionId); // Rollback
} finally {
quizState.isSubmitting = false;
elements.submitBtn.innerHTML = `<i class="bi bi-check-circle"></i> Submit Answer`;
startRefreshCycle();
}
}
function showResult(isCorrect, userAnswer, correctAnswer) {
const q = quizState.currentQuestion;
const options = [q.ans1, q.ans2, q.ans3, q.ans4];
const isLastQuestion = quizState.currentIndex >= quizState.totalQuestions - 1;
const userIndex = options.indexOf(userAnswer);
const correctIndex = options.indexOf(correctAnswer);
elements.results.innerHTML = `
<div class="alert ${isCorrect ? 'alert-success' : 'alert-danger'}">
<h4>${isCorrect ? 'Correct!' : 'Incorrect'}</h4>
<p>Your answer: ${String.fromCharCode(65 + userIndex)}. ${userAnswer}</p>
${!isCorrect ? `<p>Correct answer: ${String.fromCharCode(65 + correctIndex)}. ${correctAnswer}</p>` : ''}
<div class="mt-3">
<button id="${isLastQuestion ? 'finish' : 'next'}-btn" class="btn btn-${isLastQuestion ? 'info' : 'primary'}">
${isLastQuestion ? 'Finish Quiz' : 'Next Question <i class="bi bi-chevron-right"></i>'}
</button>
</div>
</div>
`;
// Hide submit button after answering
elements.submitBtn.classList.add('d-none');
document.getElementById(`${isLastQuestion ? 'finish' : 'next'}-btn`)
.addEventListener('click', function() {
if (isLastQuestion) {
showEndScreen();
} else {
// Clear results when next question is clicked
elements.results.innerHTML = '';
moveToNextQuestion();
}
});
}
function showEndScreen() {
clearRefreshTimer();
elements.container.innerHTML = `
<div class="alert alert-success text-center">
<h2><i class="bi bi-check-circle-fill"></i> Quiz Complete!</h2>
<p class="lead">You have answered all the questions.</p>
</div>
`;
elements.results.innerHTML = '';
elements.navigation.classList.add('d-none');
elements.restartContainer.classList.remove('d-none');
}
// Event listeners
elements.submitBtn.addEventListener('click', submitAnswer);
elements.restartBtn.addEventListener('click', initQuiz);
// Start the quiz
initQuiz();
});
</script>
<!-- User point ajax -->
<script>
$(document).ready(function() {
// Get the user ID (you need to set this value)
const userId = <?php echo $_SESSION['userId'] ?? 0; ?>; // Adjust based on your auth system
if (userId > 0) {
// Fetch points initially
fetchUserPoints(userId);
// Optionally: Refresh points periodically (every 10 seconds)
setInterval(() => fetchUserPoints(userId), 10000);
} else {
$('#userPoints').text('0');
}
});
function fetchUserPoints(userId) {
$.ajax({
url: 'get_points.php',
type: 'GET',
data: { userId: userId },
dataType: 'json',
success: function(response) {
if (response.success) {
$('#userPoints').text(response.points);
} else {
console.error('Error fetching points:', response.message);
$('#userPoints').text('Error');
}
},
error: function(xhr, status, error) {
console.error('AJAX error:', error);
$('#userPoints').text('Error');
}
});
}
</script>
</body>
</html>


PK 99