// Средняя посещаемость из платного места в общем каталоге и на главной за 30 дней: // 1) Получаем общую посещаемость с платных мест за последние 30 дней (A). // 2) Получаем количество дней из этих 30-ти, когда юзер имел платные места: // - в каталоге (Dc); // - на главной (Df). // 3) Имеем формулу: A = Dc*C + Df*F, // где F -- средняя посещаемость с главной, C -- средняя посещаемость из каталога в рассматриваемом // периоде (30 дней), т.е. то, что нужно найти. // 4) Находим отношение посещаемости из каталога к главной: К = C / F // K находим через отношение посещаемости из 1-го места каталога к 1-му месту на главной за // какой-нибудь значительный период (30 дней, например). // 5) Из 3 и 4 получаем: // C = F * K, // F = A / (Dc*K + Df). // * Кругом могут быть нули, не забывать. if (($u_psDays = promotion::GetUserPsDayCount($uid, date('Y-m-d', strtotime($YESTERDAY) - 30 * 24 * 3600), $YESTERDAY)) && $u_psDays['fp_days'] + $u_psDays['ctg_days'] > 0) { if ($fp_pos_30d_summary[1]['by_e'] && ($K_psCF_by_e = $fp_pos_30d_summary[0]['by_e'] / $fp_pos_30d_summary[1]['by_e'])) { $t_fp_e = $u_summary['by_e_from_p_30d'] / ($u_psDays['ctg_days'] * $K_psCF_by_e + $u_psDays['fp_days']); } if ($fp_pos_30d_summary[1]['by_f'] && ($K_psCF_by_f = $fp_pos_30d_summary[0]['by_f'] / $fp_pos_30d_summary[1]['by_f'])) { $t_fp_f = $u_summary['by_f_from_p_30d'] / ($u_psDays['ctg_days'] * $K_psCF_by_f + $u_psDays['fp_days']); } if ($fp_pos_30d_summary[1]['by_u'] && ($K_psCF_by_u = $fp_pos_30d_summary[0]['by_u'] / $fp_pos_30d_summary[1]['by_u'])) { $t_fp_u = $u_summary['by_u_from_p_30d'] / ($u_psDays['ctg_days'] * $K_psCF_by_u + $u_psDays['fp_days']); } if ($u_psDays['fp_days']) { $avg30['by_e_from_p_fp'] = $t_fp_e ? $t_fp_e : $u_summary['by_e_from_p_30d'] / $u_psDays['fp_days']; $avg30['by_f_from_p_fp'] = $t_fp_f ? $t_fp_f : $u_summary['by_f_from_p_30d'] / $u_psDays['fp_days']; $avg30['by_u_from_p_fp'] = $t_fp_u ? $t_fp_u : $u_summary['by_u_from_p_30d'] / $u_psDays['fp_days']; } if ($u_psDays['ctg_days']) {