/** * Проапгрейдить дисцилпины преподавателями. * @param array $tpds то что возвращается функцией <a href="#upgradeGroups">upgradeGroups</a> * @param bool $name флаг, записывать имя преподавателя или нет. по умолчанию true * @param bool $st флаг, братьли информацию о студентах преподавателя. по умолчанию false * @return array [ [ <то что было в массиве> preps=>[gr_id=>[ [id,id_tutor ,name*,st=>[numst]*] ]] ] ] */ public static function upgradePreps(&$tpds, $name = true, $st = false) { $MsSQL = RPDB::connect(); $dis = RPU::reshape($tpds, 'id_link'); $STH = $MsSQL->prepare("SELECT * from dis_tutor_gr where id_tup_d IN(" . RPU::plas($dis) . ")"); if (!$STH->execute(array_keys($dis))) { throw new Exception('Ошибка получения преподавателей'); } if ($pr = $STH->fetchAll(PDO::FETCH_ASSOC)) { /*Дополнительная информация, если нужна*/ if ($st) { $id_dis_tutor_gr = RPU::reshape($pr, 'id'); $STH = $MsSQL->prepare("SELECT * from tutor_st where id_dis_tutor_gr IN(" . RPU::plas($id_dis_tutor_gr) . ")"); if (!$STH->execute(array_keys($id_dis_tutor_gr))) { throw new Exception('Ошибка получения студентов'); } $stud = RPU::groupBy($STH->fetchAll(PDO::FETCH_ASSOC), 'id_dis_tutor_gr'); } if ($name) { $names = RPIrro::prepsNames(RPU::reshape($pr, 'id_tutor', 'id_tutor')); } /*------------------------------------*/ foreach ($pr as $k => $v) { $ar = array('id' => $v['id'], 'id_tutor' => $v['id_tutor']); if ($name) { $ar['name'] = $names[$v['id_tutor']]; } if ($st) { $ar['st'] = RPU::reshape($stud[$v['id']], false, 'numst'); } $preps[$v['id_tup_d']][$v['gr']][] = $ar; } } foreach ($tpds as $k => $v) { foreach ($v['groups'] as $gr) { $tpds[$k]['preps'][$gr] = $preps[$v['id_link']][$gr]; } } return $tpds; }