g4 시절 어느 고마우신 프로그래머 "전0"님이 만들어주신 코드입니다.
g5 로 옮기면서 어떻게 수정해야하고 디비에서 어떤 테이블을 추가해야하는지 보시면 아시는분 계실까요>?
Copy
<?// 주간/월간 활동지수 업데이트// cf_9에 다음 월 업데이트 시일, cf_8에 다음 주 업데이트 시일 저장 /////////// member 필드를 이용한 활동지수 계산 수식 저장변수$activity_parameters = explode('|', $config['cf_5']); // mb_3 ~ mb_11의 계수 +15|-1|0|+15|+3|+5|+2|+1|+10$mb_n = 1;foreach ($activity_parameters as &$p) { if($mb_n == 11) // mycoupe 등록 여부를 wr_id로 저장해 놓은 필드.. 있고(1), 없음(0)에 대한 가중치 $p = " CEILING(CAST(mb_$mb_n AS UNSIGNED) / 10000) * ($p)"; else $p = "CAST(mb_$mb_n AS UNSIGNED) * ($p)"; $mb_n++;}$activity_point_equation = "( ".implode(' + ', $activity_parameters)." )";if($config['cf_9']<=$g4['time_ymd']) { update_activity_point('month');}if($config['cf_8']<=$g4['time_ymd']) { update_activity_point('week');}/////////// 월/주간 활동지수 정보 저장 새로운 함수function update_activity_point($term='month', $limitrow=60){ global $g4, $activity_point_equation; $cf_n = "cf_9"; $cf_subj = "월별활동지수처리"; if ($term=='month') { $nextterm= date("Y-m-01", strtotime("next month") ); $prevterm= date("Y-m", strtotime("last month") ); } elseif ($term=='week') { $nextterm= date("Y-m-d", strtotime("next monday") ); $prevterm= date("Y-m-d", strtotime("last monday") ); $cf_n = "cf_8"; $cf_subj = "주별활동지수처리"; } $wtable="g4_activity_point"; sql_query(" UPDATE $g4[config_table] SET {$cf_n}_subj='$cf_subj', {$cf_n}='$nextterm' "); // 다음 term 시작일(예: 다음달 1일)을 기록해 둠 $result = sql_query(" SELECT mb_id, mb_apoint_{$term} AS prev_apoint, $activity_point_equation AS actpoint FROM $g4[member_table] WHERE mb_level<48 AND mb_deal=0 ORDER BY actpoint DESC LIMIT 0,$limitrow"); $i=0; while( $row=sql_fetch_array($result)) { $i++; sql_query(" INSERT INTO $wtable SET ap_term='$term', mb_date='$prevterm', mb_rank='$i', mb_id='$row[mb_id]', mb_point='".number_format($row[actpoint] - $row[prev_apoint])."', mb_sum='$row[actpoint]' "); } if (!$activity_point_equation) $activity_point_equation = 0; // 최악의 경우 'null'이 들어갈 수 있으므로.. 0으로 초기화 @2012-11-24 sql_query(" UPDATE $g4[member_table] SET mb_apoint_{$term} = $activity_point_equation ");}?>
|
답변 1개 / 댓글 1개
답변을 작성하려면 로그인이 필요합니다.
뭘 신규로 생성해야할지를 모르겟네요