이거 해석가능한 용자님 계신가요?
본문
g4 시절 어느 고마우신 프로그래머 "전0"님이 만들어주신 코드입니다.
g5 로 옮기면서 어떻게 수정해야하고 디비에서 어떤 테이블을 추가해야하는지 보시면 아시는분 계실까요>?
<?
// 주간/월간 활동지수 업데이트
// 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 ");
}
?>
답변을 작성하시기 전에 로그인 해주세요.