Esempio n. 1
0
 /**
  * Проапгрейдить дисцилпины преподавателями.
  * @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;
 }