<?php
/*
index.php 是模組的預設首頁（入口）。
若前台還有需要別的檔案，可以直接複製此檔然後改名即可。
*/


/*------------------ 檔頭（引入檔案） ------------------*/

//引入共同檔案設定檔及共同函數檔 function.php（必要）
include "header.php";
include "function.php";
//使用樣板檔
$xoopsOption['template_main'] = "exam_index.html";
//引入XOOPS前台檔案檔頭（必要）
include_once XOOPS_ROOT_PATH."/header.php";



/*------------------ 流程判斷（告訴程式現在要做什麼） -----------------*/

//$op 為XOOPS常用之動作變數，用來告知程式欲執行之動作
$op=isset($_REQUEST['op'])?$_REQUEST['op']:"";
$serial_num=isset($_REQUEST['serial_num'])?$_REQUEST['serial_num']:"";

//判斷目前動作該執行哪一個
switch($op){
  //當 $op 的值等於「動作1」時，欲執行的動作
  case "judge_score":
  show_score();
  break;

  case "trial":
  trial_list($op,$serial_num);
  break;

  //預設動作
  default:
  list_quest_paper($op);
  break;
}

/*------------------ 所有函數（實際執行動作） ------------------*/

function trial_list($op,$serial_num){
  global $xoopsTpl,$xoopsDB;
  $xoopsTpl->assign("op",$op);

  $table2=$xoopsDB->prefix(hoao_exam);
  $table3=$xoopsDB->prefix(hoao_exam_score_board);

  $sql="select * from {$table3} where serial_num=($serial_num)";
  $result = $xoopsDB->query($sql) or die(mysql_error());
  $trial_data=$xoopsDB->fetchArray($result);

  $wrong_id = explode(",", $trial_data['wrong_quest']);

  $i = 0;
  $quest_data;
  foreach ($wrong_id as $key) {
    $sql="select * from {$table2} where id=($key)";
    $result = $xoopsDB->query($sql) or die(mysql_error());
    $quest_data[$i]=$xoopsDB->fetchArray($result);
    $i++;
  }
  $xoopsTpl->assign("quest_data",$quest_data);
}

//當 $op 的值等於「動作1」時，欲執行的函數
function show_score(){

  $post_key = array_keys($_POST);
  $quest_id = "";
  $i = 0;
  foreach ($post_key as $key) {
    $tmp = $tmp . $key;
    if ((substr_count($key,"op") == 1) && (strlen($key) >= 3)){
      $quest_id[$i] = ltrim($key,"op");
      $i++;
    }
  }

  global $xoopsTpl,$xoopsDB,$xoopsUser;
  $table=$xoopsDB->prefix(hoao_exam_select);
  $table2=$xoopsDB->prefix(hoao_exam);
  $table3=$xoopsDB->prefix(hoao_exam_score_board);

  //檢查序號，沒有序號才繼續
  $serial_num = $_POST['serial_num'];
  $sql="select * from {$table3} where serial_num=($serial_num)";
  $result = $xoopsDB->query($sql) or die(mysql_error());
  $isSerial_num=$xoopsDB->fetchArray($result);
  if ($isSerial_num > 0){
    redirect_header('index.php', 10, "此次測驗成績已存在！！！");
  }
  //取得總題數到 total_qty
  $sql="select * from {$table} where id= (select max(id) from ($table))";
  $result = $xoopsDB->query($sql) or die(mysql_error());
  $quest=$xoopsDB->fetchArray($result);
  $total_qty = $quest['level1'] + $quest['level2'] + $quest['level3'] + $quest['level4'];
  //依序對答案，把錯的題目記下來
  $i = 0;
  $yes = 0;
  $no = 0;
  $trial_list = "";
  while ($i < $total_qty){
    $now_id = $quest_id[$i];
    $sql="select * from {$table2} where id=$now_id";
    $result = $xoopsDB->query($sql) or die(mysql_error());
    $now_row=$xoopsDB->fetchArray($result);
    $post_key = "op" . $now_id;
    if ($now_row['answer'] == $_POST[$post_key]){
      //答對了
      $yes++;
    }else{
      //答錯了
      $trial_list = $trial_list.$now_id.",";
      $no++;

    }
    $i++;
  }

  //寫資料到　exam__score_board
  //根據uid轉換成姓名
  $uid=$xoopsUser->uid();
  $uid_name=XoopsUser::getUnameFromId($uid,1);
  if(empty($uid_name))$uid_name=XoopsUser::getUnameFromId($uid,0);

  if (!empty($trial_list)) $trial_list = rtrim($trial_list,",");

  $sql="insert into `{$table3}` (`user_name`, `correct`, `incorrect`, `serial_num`, `wrong_quest`,`test_date`) values('{$uid_name}' , {$yes} , {$no} , $serial_num,'{$trial_list}', now() )";

  $xoopsDB->query($sql) or die(mysql_error());

  redirect_header('index.php?op=trial&serial_num='.$serial_num, 10, "您共答對".$yes."；您共答錯".$no);
}


function list_quest_paper($op){
  global $xoopsTpl,$xoopsDB;
  $table=$xoopsDB->prefix(hoao_exam_select);
  $table2=$xoopsDB->prefix(hoao_exam);
  $table3=$xoopsDB->prefix(hoao_exam_score_board);

  $sql="select count(*) from {$table} ";
  $result = $xoopsDB->query($sql) or die(mysql_error());
  $isQuestSet=$xoopsDB->fetchArray($result);
  if (($isQuestSet['count(*)']) == 0)
    redirect_header("admin/main.php", 3, "尚未設定題數！！！");

  $sql="select * from {$table} where id= (select max(id) from ($table))";
  $result = $xoopsDB->query($sql) or die(mysql_error());
  $quest=$xoopsDB->fetchArray($result);
  $xoopsTpl->assign("qty",$quest);

  $level1=$quest['level1'];
  $level2=$quest['level2'];
  $level3=$quest['level3'];
  $level4=$quest['level4'];


  $sql="select * from {$table2} where level='初級' order by rand() limit $level1 ";
  $result = $xoopsDB->query($sql) or die(mysql_error("您還沒設定題數！！"));
  $i=0;
  $tmp_ans_level1="";
  while($all=$xoopsDB->fetchArray($result)){
   $tmp_ans_level1[$i] = $all;
   $i++;
  }
  $xoopsTpl->assign("tmp_ans_level1",$tmp_ans_level1);


  $sql="select * from {$table2} where level='中級' order by rand() limit $level2 ";
  $result = $xoopsDB->query($sql) or die(mysql_error());
  $i=0;
  $tmp_ans_level2="";
  while($all=$xoopsDB->fetchArray($result)){
   $tmp_ans_level2[$i] = $all;
   $i++;
  }
  $xoopsTpl->assign("tmp_ans_level2",$tmp_ans_level2);

  $sql="select * from {$table2} where level='中高級' order by rand() limit $level3 ";
  $result = $xoopsDB->query($sql) or die(mysql_error());
  $i=0;
  $tmp_ans_level3="";
  while($all=$xoopsDB->fetchArray($result)){
   $tmp_ans_level3[$i] = $all;
   $i++;
  }
  $xoopsTpl->assign("tmp_ans_level3",$tmp_ans_level3);

  $sql="select * from {$table2} where level='高級' order by rand() limit $level4 ";
  $result = $xoopsDB->query($sql) or die(mysql_error());
  $i=0;
  $tmp_ans_level4="";
  while($all=$xoopsDB->fetchArray($result)){
   $tmp_ans_level4[$i] = $all;
   $i++;
  }
  $xoopsTpl->assign("tmp_ans_level4",$tmp_ans_level4);

  $flag = 1;
  while ($flag){
    $rand_num = rand(1,32768);
    $sql="select count(*) from {$table3} where serial_num=$rand_num ";
    $result = $xoopsDB->query($sql) or die(mysql_error());
    $get_serial_count=$xoopsDB->fetchArray($result);
    if ($get_serial_count['count(*)'] == 0){
      $xoopsTpl->assign("serial_num",$rand_num);
      $flag = 0;
    }

  }


}


/*------------------ 檔尾（輸出內容到樣板） ------------------*/

//套用工具列的程式碼到樣板檔（toolbar_bootstrap()來自tadtools函式庫）
$xoopsTpl->assign( "toolbar" , toolbar_bootstrap($interface_menu)) ;
//套用 bootstrap 的引入語法到樣板檔（get_bootstrap()來自tadtools函式庫）
$xoopsTpl->assign( "bootstrap" , get_bootstrap()) ;
//套用 jquery 的引入語法到樣板檔（get_jquery()來自tadtools函式庫）
$xoopsTpl->assign( "jquery" , get_jquery(true)) ;
//將「是否為該模組管理員」的變數傳送到樣板檔（$isAdmin來自header.php檔）
$xoopsTpl->assign( "isAdmin" , $isAdmin) ;

//引入XOOPS前台檔案檔尾（必要）
include_once XOOPS_ROOT_PATH.'/footer.php';
?>