<?php
/**
 * /engine/engine.php
 * @version 1.2
 * @desc PHP server side engine to serve commonly accessable tests, collect submitted results
 * @author Fándly Gergő Zoltán (gergo@systemtest.tk, systemtest.tk)
 * @copy 2017 Fándly Gergő Zoltán
 * License:
    sQuiz for creating small jQuery based quizs in an implementable way
    Copyright (C) 2017  Fándly Gergő Zoltán

    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 3 of the License, or
    (at your option) any later version.

    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, see <https://www.gnu.org/licenses/>.
 **/

//config
$sql_user="squiz";
$sql_passwd="squizuserforgood";
$sql_db="squiz";
$quiz_tag=0;

$db=new PDO("mysql:host=localhost;dbname=".$sql_db.";charset=utf8", $sql_user, $sql_passwd);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

if(isset($_GET['list'])){
    if($quiz_tag!=0){
        $sql=$db->prepare("SELECT id, name, description FROM tests WHERE allowed=1 and tag=:tag");
        $sql->execute(array(":tag"=>$quiz_tag));
    }
    else{
        $sql=$db->prepare("SELECT id, name, description FROM tests WHERE allowed=1");
        $sql->execute();
    }
    
    $obj=array();
    while($row=$sql->fetch(PDO::FETCH_ASSOC)){
        array_push($obj, array("name"=>$row['name'], "description"=>$row['description'], "file"=>"//".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?getQuiz=".$row['id']));
    }
    
    header("Content-type: text/json; charset=UTF-8");
    echo json_encode($obj);
    die();
}

if(isset($_GET['getQuiz'])){
    $sql=$db->prepare("SELECT quiz FROM tests WHERE id=:id");
    $sql->execute(array(":id"=>$_GET['getQuiz']));
    $res=$sql->fetch(PDO::FETCH_ASSOC);
    
    header("Content-type: text/json; charset=UTF-8");
    echo $res['quiz'];
    die();
}

if(isset($_POST['submitResult']) && isset($_POST['submitResult_submitter'])){
    $sql=$db->prepare("INSERT INTO results (submitter, answered) VALUES (:submitter, :answered)");
    $sql->execute(array(":submitter"=>$_POST['submitResult_submitter'], ":answered"=>$_POST['submitResult']));
    $id=$db->lastInsertId();
    
    echo $id;
    die();
}

if(isset($_GET['getResult'])){
    $sql=$db->prepare("SELECT COUNT(id) AS count, submitter, time, answered FROM results WHERE id=:id");
    $sql->execute(array(":id"=>$_GET['getResult']));
    $res=$sql->fetch(PDO::FETCH_ASSOC);
    
    if($res['count']<1){
        echo "not found";
    }
    else{
        $obj=array("submitter"=>$res['submitter'], "time"=>$res['time'], "answered"=>$res['answered']);
        
        header("Content-type: text/json; charset=UTF-8");
        echo json_encode($obj);
        die();
    }
}

if(isset($_POST['submitQuiz']) && isset($_POST['submitQuiz_tag']) && isset($_POST['submitQuiz_name']) && isset($_POST['submitQuiz_description'])){
    $sql=$db->prepare("INSERT INTO tests (name, description, quiz, tag) VALUES (:name, :desc, :quiz, :tag)");
    $sql->execute(array(":name"=>$_POST['submitQuiz_name'], ":desc"=>$_POST['submitQuiz_description'], ":quiz"=>$_POST['submitQuiz'], ":tag"=>$_POST['submitQuiz_tag']));
    $id=$db->lastInsertId();
    
    $link="https://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?getQuiz=".$id;
    
    echo $link;
    die();
}