/** * Получить список групп факультета. * Возвращает информацию о группах. Может принимать id факультета или id группы. * По умолчанию считает что передан id факультета, но можно передать вторым параметром строку tup или group чтобы сказать, * что переданные id это id тупа/группы. * @param mixed $fac id факультета или массив * @param string $mode режим fac,group или tup * @return array [ [id,name,kurs,fac,tup_id <tup_name,year>] ] */ public static function getGroups($ids, $mode = 'fac', $dopInfo = false, $notup = false) { $type_name = array('b' => 'бакалавры', 'm' => 'магистранты', 's' => 'специалисты'); global $DB; if ($mode == 'fac') { $groups = RPIrro::grOfFac($ids); // [gr,fac] $gr = array_map(function ($a) { return $a['id_group']; }, $groups); $tp_gr = RPIrro::tupOfGroup($gr, $dopInfo); // [gr,tup_id <tup_name,year>] foreach ($groups as $k => $g) { if (isset($tp_gr[$g['id_group']])) { $t = $tp_gr[$g['id_group']]; $t['fac'] = $g['id']; $groups[$k] = $t; } elseif ($notup) { $groups[$k] = array('id' => $g['id_group'], 'fac' => $g['id']); } else { unset($groups[$k]); } } } elseif ($mode == 'group') { $groups = RPIrro::tupOfGroup($ids, $dopInfo); // [gr,tup_id <tup_name,year>] $fac_gr = RPIrro::facOfGroup(array_keys($groups)); // [gr=>fac] foreach ($groups as $k => $g) { $groups[$k]['fac'] = $fac_gr[$g['id']]; } } else { $groups = RPIrro::grOfTup($ids, $dopInfo); // [gr,tup_id <tup_name,year>] $fac_gr = RPIrro::facOfGroup(array_keys($groups)); // [gr=>fac] foreach ($groups as $k => $g) { $groups[$k]['fac'] = $fac_gr[$g['id']]; } } if (!($gr = RPU::reshape($groups, false, 'id'))) { return false; } $STH = $DB->Query("SELECT ID,STRING_ID,NAME from b_group where ID in(" . join(',', $gr) . ") AND ACTIVE='Y'"); $t = array(); while ($row = $STH->Fetch()) { $name = current(explode('_', $row['STRING_ID'])); $_t = explode('-', $name); $kurs = $_t[1][0]; $data = explode('_', $row['NAME']); $type = $type_name[end($data)]; $year = $data[1]; $t[$row['ID']] = array('name' => $name . " ({$year} г., {$type})", 'kurs' => $kurs); } foreach ($groups as $k => $g) { if (!$t[$g['id']]) { unset($groups[$k]); } else { $groups[$k]['name'] = $t[$g['id']]['name']; $groups[$k]['kurs'] = $t[$g['id']]['kurs']; } } return RPU::matrixSort($groups, 'name'); return false; }