Esempio n. 1
0
 /**
  * Получить список групп факультета.
  * Возвращает информацию о группах. Может принимать 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;
 }