public static function get_kug_html($kug = [], $attestaciya = [], $max_week_num = 0) { $weekly_hours = []; //масси, в котром будет накапливаться недельные часы for ($i = 1; $i <= $max_week_num; $i++) { $weekly_hours[$i] = 0; } $kug_tb = '<table class="tb"> <thead> <tr class="thead"> <td rowspan="2">Номер</td> <td rowspan="2">Наименование</td> <td rowspan="2">Всего часов</td> <td colspan="3">В том числе</td> <td rowspan="2">Форма контроля</td> ' . ($max_week_num ? '<td class="center" colspan="' . $max_week_num . '">Неделя</td>' : '') . ' </tr> <tr class="thead"> <td>ЛК</td> <td>ПР</td> <td>СРС</td> ' . ($max_week_num ? KursGlobals::get_week_row(['week_num' => $max_week_num, 'is_head' => true]) : '') . ' </tr> </thead> <tbody>'; $all_lk = 0; $all_pr = 0; $all_srs = 0; // $current_razdel_tip = ''; $razdel_num = 1; foreach ($kug as $tip_razdela => $razdeli) { $razdels = ''; foreach ($razdeli as $k => $v) { $razdel_lk = 0; $razdel_pr = 0; $razdel_srs = 0; $podrazdeli = ''; $podrazdeli_s_temami = ''; $for_kug = ''; $for_plan = ''; $podrazdel_num = 1; $first_podrazdel = key($v['podrazdels']); foreach ($v['podrazdels'] as $pr => $pri) { $podrazdel_lk = 0; $podrazdel_pr = 0; $podrazdel_srs = 0; $podrazdel_kontrol = []; $tem_num = 1; $temi = ''; //var_dump($pri); //$first_elem = reset($pri['themes']); foreach ($pri['themes'] as $tema_key => $tema_item) { $week_hours = $tema_item['lk'] + $tema_item['pr'] + $tema_item['srs']; $temi .= '<tr> <td>' . $razdel_num . '.' . $podrazdel_num . '.' . $tem_num . '.</td> <td>' . $tema_item['nazvanie'] . '</td> <td class="center">' . ($week_hours ? $week_hours : '') . '</td> <td class="center">' . ($tema_item['lk'] ? $tema_item['lk'] : '') . '</td> <td class="center">' . ($tema_item['pr'] ? $tema_item['pr'] : '') . '</td> <td class="center">' . ($tema_item['srs'] ? $tema_item['srs'] : '') . '</td> <td class="center">' . (isset($tema_item['forma_kontrolya_temi']) ? $tema_item['forma_kontrolya_temi'] : '') . '</td> ' . ($max_week_num ? KursGlobals::get_week_row(['week_num' => $max_week_num, 'cur_week' => $tema_item['nedelya'], 'chasy' => $week_hours]) : '') . ' </tr>'; //var_dump($temi); if (isset($tema_item['forma_kontrolya_temi'])) { $podrazdel_kontrol[] = $tema_item['forma_kontrolya_temi']; } //if ($pri['razdel']=='var' and ) $podrazdel_lk += $tema_item['lk']; $podrazdel_pr += $tema_item['pr']; $podrazdel_srs += $tema_item['srs']; if ($v['tip_razdela'] == 7 and $first_podrazdel == $pr or $v['tip_razdela'] != 7) { $weekly_hours[$tema_item['nedelya']] += $week_hours; } $tem_num++; } $podrzdel_kf = ''; if ($pri['podrazdel_fk_name']) { $podrzdel_kf = '<tr class="sub2head"> <td></td> <td>Итоговая аттестация по ' . ($v['tip_kursa'] == 'pk' ? 'блоку тем' : 'дисциплине') . '</td> <td class="center">' . ($pri['podrazdel_chasy_fk'] ? $pri['podrazdel_chasy_fk'] : '') . '</td> <td class="center"></td> <td class="center">' . ($pri['podrazdel_chasy_fk'] ? $pri['podrazdel_chasy_fk'] : '') . '</td> <td class="center"></td> <td class="center">' . $pri['podrazdel_fk_name'] . '</td> ' . ($max_week_num ? KursGlobals::get_week_row(['week_num' => $max_week_num]) : '') . ' </tr>'; $podrazdel_pr += $pri['podrazdel_chasy_fk']; } $podrazdeli = '<tr class="sub2head"> <td>' . $razdel_num . '.' . $podrazdel_num . '.</td> <td>' . $pri['nazvanie'] . '</td> <td class="center">' . ($podrazdel_lk + $podrazdel_pr + $podrazdel_srs ? $podrazdel_lk + $podrazdel_pr + $podrazdel_srs : '') . '</td> <td class="center">' . ($podrazdel_lk ? $podrazdel_lk : '') . '</td> <td class="center">' . ($podrazdel_pr ? $podrazdel_pr : '') . '</td> <td class="center">' . ($podrazdel_srs ? $podrazdel_srs : '') . '</td> <td class="center">' . implode(',', $podrazdel_kontrol) . '</td> ' . ($max_week_num ? KursGlobals::get_week_row(['week_num' => $max_week_num]) : '') . ' </tr>'; $podrazdeli_s_temami = $podrazdeli . $temi . $podrzdel_kf; $for_kug .= $podrazdeli_s_temami; if ($v['tip_razdela'] == 7 and $first_podrazdel == $pr or $v['tip_razdela'] != 7) { $razdel_lk += $podrazdel_lk; $razdel_pr += $podrazdel_pr; $razdel_srs += $podrazdel_srs; } $podrazdel_num++; } $razdels .= '<tr class="subhead razdel-tr"> <td></td> <td>' . $v['nazvanie'] . '</td> <td class="center">' . ($razdel_lk + $razdel_pr + $razdel_srs ? $razdel_lk + $razdel_pr + $razdel_srs : '') . '</td> <td class="center">' . ($razdel_lk ? $razdel_lk : '') . '</td> <td class="center">' . ($razdel_pr ? $razdel_pr : '') . '</td> <td class="center">' . ($razdel_srs ? $razdel_srs : '') . '</td> <td></td> ' . ($max_week_num ? KursGlobals::get_week_row(['week_num' => $max_week_num]) : '') . ' </tr>'; $razdels .= $for_kug; $razdel_num++; $all_lk += $razdel_lk; $all_pr += $razdel_pr; $all_srs += $razdel_srs; } $kug_tb .= '<tr> <td class="center" colspan="7">' . KursGlobals::get_tip_razdela_name($tip_razdela) . '</td> ' . ($max_week_num ? KursGlobals::get_week_row(['week_num' => $max_week_num]) : '') . ' </tr>'; $kug_tb .= $razdels; } if ($attestaciya) { $kug_tb .= '<tr class="subhead attestatsiya-tr"> <td></td> <td>Итоговая аттестация</td> <td class="center">' . ($attestaciya['chasy'] ? $attestaciya['chasy'] : '') . '</td> <td class="center"></td> <td class="center">' . ($attestaciya['chasy'] ? $attestaciya['chasy'] : '') . '</td> <td class="center"></td> <td class="center">' . $attestaciya['forma_attestacii'] . '</td> ' . ($max_week_num ? KursGlobals::get_week_row(['week_num' => $max_week_num, 'cur_week' => $attestaciya['nedelya'], 'chasy' => $attestaciya['chasy']]) : '') . ' </tr>'; $all_pr += $attestaciya['chasy']; $weekly_hours[$attestaciya['nedelya']] += $attestaciya['chasy']; } $kug_tb .= '<tr class="summary bold-tr"> <td></td> <td>Итого</td> <td class="center">' . ($all_lk + $all_pr + $all_srs ? $all_lk + $all_pr + $all_srs : '') . '</td> <td class="center">' . ($all_lk ? $all_lk : '') . '</td> <td class="center">' . ($all_pr ? $all_pr : '') . '</td> <td class="center">' . ($all_srs ? $all_srs : '') . '</td> <td></td> ' . ($max_week_num ? KursGlobals::get_week_row(['week_num' => $max_week_num, 'weekly_hours' => $weekly_hours]) : '') . ' </tr>'; $kug_tb .= '</tbody></table>'; return $kug_tb; }