"'",'DOUBLEQQUOTE'=>'"','SLASH1QQUOTE'=>'/','SLASH2QQUOTE'=>'\\')as$k=>$v){ $val=str_replace('','',$val); } return$val; } class AIAExam{ const MAX_EXAM_HISTORY_FOR_LOAD = 25; const MAX_TEXTAREA_ANS_NUM = 8; static $input_name_cursor = 0; static $textarea_name_cursor = 0; static function safe_db_value_for_exam($val){ $val = str_replace("'", 'SINGLEQQUOTE',$val); $val = str_replace('"', 'DOUBLEQQUOTE',$val); $val = str_replace("/", 'SLASH1QQUOTE',$val); $val = str_replace("\\", 'SLASH2QQUOTE',$val); return$val; } static function reverse_safe_db_value_for_exam($val){ $val = str_replace('SINGLEQQUOTE',"'",$val); $val = str_replace('DOUBLEQQUOTE','"',$val); $val = str_replace('SLASH1QQUOTE',"/",$val); $val = str_replace('SLASH2QQUOTE',"\\",$val); return$val; } static function tester_email_in_url($email){ return str_replace('@','ZAZAZ',$email); } static function decode_tester_email_in_url($email){ return str_replace('ZAZAZ','@',$email); } static function display_is_save_manually_text($is_save_manually){ return $is_save_manually>0 ? '手動' : '系統自動'; } static function get_all_exam_ids(){ return get_posts(array('category'=>EXAM_CAT_ID, 'fields'=>'ids', 'post_status'=>'private')); } static protected function get_current_input_name($is_multiline_textarea=false){ if($is_multiline_textarea){ self::$textarea_name_cursor++; return 'examtextarea_'.self::$textarea_name_cursor; } self::$input_name_cursor++; return 'examinput_'.self::$input_name_cursor; } static protected function display_radio_or_checkbox_answer($input_type, $conf){ $a = explode('|',$conf); $s=''; $input_name = self::get_current_input_name(); $max_k = count($a)-1; foreach($a as$k=>$v){ if($k===0 || $k===$max_k){continue;} $s.=''; } return$s; } static function display_radio_answer($conf){ # $conf = RADIO|opt1|opt2|opt3 $a = explode('|',$conf); return '
本題'.$a[count($a)-1].'分,請選擇:
'.self::display_radio_or_checkbox_answer('radio', $conf); } static function display_checkbox_answer($conf){ # $conf = CHKBOX|opt1|opt2|opt3 $a = explode('|',$conf); return '
本題'.$a[count($a)-1].'分,請選擇:
'.self::display_radio_or_checkbox_answer('checkbox', $conf); } static function display_text_answer($conf){ # $conf = TXT $a = explode('|',$conf); $input_name = self::get_current_input_name(); return'
本題'.$a[count($a)-1].'分,請輸入:
'; } static function display_textarea_answer($conf){ # $conf = TXTAREA $a = explode('|',$conf); $input_name = self::get_current_input_name(true); return'
本題'.$a[count($a)-1].'分,請回答:
'; } static function display_textarea4code_answer($conf){ # $conf = CODEAREA $a = explode('|',$conf); $input_name = self::get_current_input_name(true); return'
本題'.$a[count($a)-1].'分,請輸入程式:
'; } static function get_exam_history_option_text($create_datetime, $is_save_manually){ return '主機時間 '.$create_datetime . ($is_save_manually>0 ? ' (手動存)' : ' (系統自動存)'); } static function get_examhistory_options($email,$name,$limit=1){ global$wpdb; $ip=$_SERVER['REMOTE_ADDR']; $ua=$_SERVER['HTTP_USER_AGENT']; $sql='SELECT * FROM '.TBL_EXAM.' WHERE tester_email="'.$email.'" AND tester_name="'.$name.'" AND ip="'.$ip.'" AND useragent="'.$ua .'" ORDER BY create_datetime DESC LIMIT '.$limit; $ary_rows = $wpdb->get_results($sql); return$ary_rows; } }