Example #1
0
     if ($i > 27) {
         break;
     }
 }
 while (strtotime($nday) < $TODAY_TIME) {
     $tnday = $nday;
     // Берем состояние каталога на конкретный день, начиная с -28-го дня от завтрашнего числа. Состояние -- то есть, самых подходящих людей,
     // имеющих ПРО в этот день (целый день) и той же специализации, что и юзер. В лучшем случае их будет 5, в худшем 0.
     // Если 0, то идем дальше, иначе запоминаем спец массив $prev27[], индексирванный датами дней.
     // Член массива -- это массив из тех самых подходящих людей, по ним потом будем определять
     // посещаемость.
     // Берем всех людей той же специализации и имеющих ПРО в этот день.
     // Если у человека уже есть ПРО, то "C" скорее всего и будет им самим. Считается нормальным.
     if ($pro_days[$nday] && ($neighbours = promotion::GetProCatalogByDay($u_spec, $nday))) {
         // Выбираем среди них самых подходящих.
         if ($ngbs = promotion::GetNeighbours($neighbours, $u_pro_rating)) {
             if (!($ngbs['A'] && $ngbs['E'])) {
                 $ngbs['A'] = $ngbs['E'] = NULL;
             }
             if (!($ngbs['B'] && $ngbs['D'])) {
                 $ngbs['B'] = $ngbs['D'] = NULL;
             }
             // Находим день где у кого-то из выбранных людей кончается ПРО раньше, чем у остальных.
             // До этого дня мы можем использовать посещаемость всех выбранных юзеров, а
             // в этот день и после него придется получать новый список людей.
             // Если у кого-то ПРО обрывается посреди дня, то берем данные до, но не включая этот день.
             // Потом ищем снова соседей, у который в этот день (целый день) был ПРО.
             $min_pro_to = $TODAY_TIME;
             if ($ngbs['A'] && ($t = strtotime($ngbs['A']['pro_to'])) < $min_pro_to) {
                 $min_pro_to = $t;
             }