toArray(); $school_no = isset($ARY_KEYCLOAK_USER['preferred_username']) ? $ARY_KEYCLOAK_USER['preferred_username'] : ''; $IS_CAN_UPDATE_PRIVATE_SCORE = in_array($school_no, array('vansindata1', 'kyoyachuan0626@gmail.com')); ?>
get_results($sql); foreach($a as$row_){ $fn = ABSPATH.'competition_data/team/'.$row_->upload_filepath.'.csv'; if(!file_exists($fn)){continue;} $s = file_get_contents($fn); if(!$s){die('WHY ' . $row_->upload_id . ' have no content?');} $tmp_content = $s; #step1: 50%publish 100%private (not 50%private after 2018.3.31 18:00 new rule) $a = preg_split("/(\r\n|\n|\r)/", file_get_contents(COMPETITION_DATA_FILEPATH)); $ary_official_data1 = array(); $ary_official_data2 = array(); foreach($a as$k=>$row){ $v = explode(',', $row); if(0===preg_match('/^[0-9]+$/',$v[0])){continue;} $key = $v[0].$v[1]; $val = $v[2]; if($k<=$HALF_of_ary_user_ids_MUST-1 +1 # because the first row is fields head, not data. ){ $ary_official_data1[$key] = $val; #key is {userid}{2018-03-16}; value is float } $ary_official_data2[$key] = $val; #key is {userid}{2018-03-16}; value is float } #if(count($ary_official_data1)!=count($ary_official_data2)){ # #echo count($ary_official_data1);echo'
'; echo count($ary_official_data2);echo'
';echo$HALF_of_ary_user_ids_MUST; # die('官方資料有誤,ERROR: 123。'); #} #var_dump(count($ary_official_data2)); #var_dump(count($ary_user_ids_MUST)); if(count($ary_official_data2)!=count($ary_user_ids_MUST)){ die('ERROR: 123'); } $a = preg_split("/(\r\n|\n|\r)/",$tmp_content); $ary_upload_data1 = array(); $ary_upload_data2 = array(); foreach($a as$k=>$row){ $v = explode(',',$row); if(0===preg_match('/^[0-9]+$/',$v[0])){continue;} $key = $v[0].$v[1]; $key = $v[0].$v[1]; $val = $v[2]; if($k<=$HALF_of_ary_user_ids_MUST-1 +1 # because the first row is fields head, not data. ){ $ary_upload_data1[$key] = $val; #key is {userid}{date}; value is float } $ary_upload_data2[$key] = $val; #key is {userid}{date}; value is float } #if(count($ary_upload_data1)!=count($ary_upload_data2)){ # die('上傳的資料有誤,請確認第一行為欄位而非資料,請確認資料數共'.count($ary_user_ids_MUST).'筆,請確認共'.(count($ary_user_ids_MUST)+1).'行(含欄位),ERROR: 456。'); #} #var_dump(count($ary_upload_data2)); #var_dump(count($ary_user_ids_MUST)); if(count($ary_upload_data2)!=count($ary_user_ids_MUST)){ die('ERROR: 456'); } #step2: calculate publish score / private score foreach(range(1,2)as$V){ $ary_official_data = ${'ary_official_data'.$V}; $ary_upload_data = ${'ary_upload_data'.$V}; $ary_diff_then_pow = array(); foreach($ary_upload_data as$idx=>$val){ $ary_diff_then_pow[] = pow($ary_upload_data[$idx] - $ary_official_data[$idx], 2); } $mean = array_sum($ary_diff_then_pow) / count($ary_diff_then_pow); $score = pow($mean,0.5); if($V==1){ $publish_score = $score; }elseif($V==2){ $private_score = $score; } } echo implode(' , ', array($row_->upload_id, $row_->upload_filepath, $publish_score, $private_score, '
')); $wpdb->update(TBL_COMPETITION_UPLOAD, array('publish_score'=>$publish_score, 'private_score'=>$private_score), array('upload_id'=>$row_->upload_id)); } ?>