$avg30['by_f_from_o'] = $u_summary['by_f_from_o_30d'] / 30; $avg30['by_u_from_o'] = $u_summary['by_u_from_o_30d'] / 30; $nday = date('Y-m-d', $time - 27 * (24 * 3600)); $prev27 = NULL; $pro_days = NULL; $K_wC = 0.0; // недельный искусственный прирост посещаемости "из каталога". $npcnt = 0; // сколько дней на данный момент посчитано, с использованием предшествующих прогнозов (с возвращением к $next30 в день ранее). $next30 = NULL; $coeffs = promotion::GetWeekCoeffs(); $j = 0; if ($add_from_c) { // Также как и GetProCatalogByDay() считает, что если сейчас у юзера такая специализация, // то и 27 дней назад она же и была. Не очень хорошо, но шо поделать. if ($pro_periods = promotion::GetProPeriods($u_spec, $nday, $YESTERDAY)) { foreach ($pro_periods as $pd) { $i = 0; $frtm = strtotime($pd['from']); do { $from = date('Y-m-d', $frtm + $i * 24 * 3600); $pro_days[$from] = true; } while ($from != $pd['to'] && ++$i <= 27); if ($i > 27) { break; } } while (strtotime($nday) < $TODAY_TIME) { $tnday = $nday; // Берем состояние каталога на конкретный день, начиная с -28-го дня от завтрашнего числа. Состояние -- то есть, самых подходящих людей, // имеющих ПРО в этот день (целый день) и той же специализации, что и юзер. В лучшем случае их будет 5, в худшем 0.