assign('aUSER_id',$_SESSION['user']['id']); //ВИД ДЕЯТЕЛЬНОСТИ $kinds = array(); $kinds[] = array('name' => 'Олимпиада'); $kinds[] = array('name' => 'Интеллектуальный конкурс'); $kinds[] = array('name' => 'Проектная деятельность'); $kinds[] = array('name' => 'Опытно-конструкторская деятельность'); $kinds[] = array('name' => 'Научное мероприятие'); $kinds[] = array('name' => 'Интеллектуальная деятельность'); $kinds[] = array('name' => 'Воспитательная деятельность'); $kinds[] = array('name' => 'Деятельность по информационному обеспечению общественно значимых мероприятий'); $kinds[] = array('name' => 'Творческий конкурс'); $kinds[] = array('name' => 'Спортивное мероприятие'); $kinds[] = array('name' => 'Физкультурное мероприятие'); $kinds[] = array('name' => 'Иной вид деятельности'); $kinds[] = array('name' => 'Научная публикация'); $kinds[] = array('name' => 'Выполнение нормативов ГТО'); //$kinds[] = array('name' => 'Справка с места учебы по месту требования с печатью факультета', 'status'=>'21'); $kinds = spravochnik_get('kinds'); //ОБЛАСТЬ ДОСТИЖЕНИЙ $regions = array(); $regions[] = array('name' => 'Учебная'); $regions[] = array('name' => 'Научно-исследовательская'); $regions[] = array('name' => 'Общественная'); $regions[] = array('name' => 'Культурно-творческая'); $regions[] = array('name' => 'Спортивная'); $regions = spravochnik_get('regions'); //СТАТУС МЕРОПРИЯТИЯ $statuses = array(); $statuses[] = array('name' => 'Образовательной организации'); $statuses[] = array('name' => 'Муниципальный'); $statuses[] = array('name' => 'Региональный'); $statuses[] = array('name' => 'Межрегиональный'); $statuses[] = array('name' => 'Окружной'); $statuses[] = array('name' => 'Федеральный'); $statuses[] = array('name' => 'Международный'); $statuses = spravochnik_get('statuses'); //ЧИСЛЕННОСТЬ УЧАСТНИКОВ в мероприятии $counts = array(); $counts[] = array('name' => 'менее 10'); $counts[] = array('name' => 'от 10 до 50'); $counts[] = array('name' => 'от 51 до 100'); $counts[] = array('name' => 'от 101 до 200'); $counts[] = array('name' => 'от 201 до 500'); $counts[] = array('name' => 'от 501 до 1000'); $counts[] = array('name' => 'свыше 1000'); $counts[] = array('name' => 'нет информации'); $counts = spravochnik_get('counts'); //место $places = array(); $places[] = array('name' => 'участник'); $places[] = array('name' => 'победитель'); $places[] = array('name' => 'призер (2 место)'); $places[] = array('name' => 'призер (3 место)'); $places = spravochnik_get('places'); //виды стипендий $grants = array(); $grants[] = array('name' => 'государственная академическая стипендия в повышенном размере студентам, имеющим достижения в учебной, научно-исследовательской, общественной, культурно-творческой и спортивной деятельности'); $grants = spravochnik_get('grants'); //функция для авто подсчета баллов за конкурс //function pointsAch($kind, $region, $status, $count, $place){ function pointsAch($id_ach){ GLOBAL $DB, $ST; /* kind - вид деятельности region - область достижения status - статус мероприятия count - численность place - место */ $points = 0; $sql = 'SELECT * FROM '.$ST['dbpf'].'_achievements WHERE id = "'.$id_ach.'" '; $rez = $DB->QUR_SEL($sql); if ($rez){ $kind = $rez[1]['kind']; $region = $rez[1]['region']; $status = $rez[1]['status']; $count = $rez[1]['count']; $place = $rez[1]['place']; $name = $rez[1]['name']; //ОБЛАСТЬ ДОСТИЖЕНИЙ if ($region == 'Учебная'){ if (($kind == 'Олимпиада')||($kind == 'Проектная деятельность')){ if ($status == 'Международный'){ if ($place == 'победитель') $points = 20; if ($place == 'призер (2 место)') $points = 15; if ($place == 'призер (3 место)') $points = 15; if ($place == 'участник') $points = 10; } if ($status == 'Федеральный'){ if ($place == 'победитель') $points = 15; if ($place == 'призер (2 место)') $points = 10; if ($place == 'призер (3 место)') $points = 10; if ($place == 'участник') $points = 5; } if ($status == 'Региональный'){ if ($place == 'победитель') $points = 10; if ($place == 'призер (2 место)') $points = 5; if ($place == 'призер (3 место)') $points = 5; if ($place == 'участник') $points = 3; } if ($status == 'Образовательной организации'){ if ($place == 'победитель') $points = 5; if ($place == 'призер (2 место)') $points = 3; if ($place == 'призер (3 место)') $points = 3; if ($place == 'участник') $points = 1; } } } elseif ($region == 'Научно-исследовательская'){ if ($kind == 'Научное мероприятие'){ if ($place == 'победитель') $points = 10; if ($place == 'призер (2 место)') $points = 8; if ($place == 'призер (3 место)') $points = 6; if ($place == 'участник') $points = 1; } elseif ($kind == 'Научная публикация'){ if (strpos($name, 'патент')) $points = 20; if (strpos($name, 'свидетельство')) $points = 20; if ($status == 'Международный') $points = 24; elseif ($status == 'Федеральный') $points = 12; elseif ($status == 'Межрегиональный') $points = 6; } else $points = 4; } elseif ($region == 'Общественная'){ if ($status == 'Международный') $points = 20; elseif ($status == 'Федеральный') $points = 10; elseif ($status == 'Региональный') $points = 8; elseif ($status == 'Окружной') $points = 6; elseif ($status == 'Межрегиональный') $points = 6; elseif ($status == 'Муниципальный') $points = 5; else $points = 3; } elseif ($region == 'Культурно-творческая'){ $points = 16; } elseif ($region == 'Спортивная'){ if ($status == 'Международный'){ if ($place == 'победитель') $points = 20; if ($place == 'призер (2 место)') $points = 15; if ($place == 'призер (3 место)') $points = 15; if ($place == 'участник') $points = 10; } if ($status == 'Федеральный'){ if ($place == 'победитель') $points = 15; if ($place == 'призер (2 место)') $points = 10; if ($place == 'призер (3 место)') $points = 10; if ($place == 'участник') $points = 5; } if ($status == 'Региональный'){ if ($place == 'победитель') $points = 10; if ($place == 'призер (2 место)') $points = 5; if ($place == 'призер (3 место)') $points = 5; if ($place == 'участник') $points = 3; } if ($status == 'Образовательной организации'){ if ($place == 'победитель') $points = 5; if ($place == 'призер (2 место)') $points = 3; if ($place == 'призер (3 место)') $points = 3; if ($place == 'участник') $points = 1; } //просто физкультурное мероприятие if ($kind == 'Физкультурное мероприятие') $points = 5; //если ГТО if ($kind == 'Физкультурное мероприятие') if (strpos($name, 'ГТО')) $points = 15; //$points = 32; } } return $points; } //определяем тип достижения function regionAchievement($id_ach){ GLOBAL $DB, $ST; $sql = 'SELECT * FROM '.$ST['dbpf'].'_achievements WHERE id = "'.$id_ach.'" '; $rez = $DB->QUR_SEL($sql); return $rez[1]['region']; } //определяем в какой критерий машина подходит function criterionAchivement($id){ /* 1. Учебная деятельность - 1-3 2. Научно-исследовательская деятельность - 1-2 3. Общественная деятельность - 1-2 4. Культурно-творческая деятельность 1-3 5. Спортивная деятельность 1-3 */ GLOBAL $DB, $ST; $sql = 'SELECT * FROM '.$ST['dbpf'].'_achievements WHERE id = "'.$id.'" '; $rez = $DB->QUR_SEL($sql); $str = ''; if ($rez){ if ($rez[1]['region'] == 'Учебная'){ if ($rez[1]['kind'] == 'Проектная деятельность') $str = '1.2'; elseif ($rez[1]['kind'] == 'Опытно-конструкторская деятельность') $str = '1.2'; else $str = '1.3'; } elseif ($rez[1]['region'] == 'Научно-исследовательская'){ if ($rez[1]['kind'] == 'Научная публикация') $str = '2.2'; else $str = '2.1'; } elseif ($rez[1]['region'] == 'Общественная'){ if ($rez[1]['kind'] == 'Деятельность по информационному обеспечению общественно значимых мероприятий') $str = '3.2'; else $str = '3.1'; } elseif ($rez[1]['region'] == 'Культурно-творческая'){ if ($rez[1]['kind'] == 'Деятельность по информационному обеспечению общественно значимых мероприятий') $str = '4.3'; elseif ($rez[1]['kind'] == 'Творческий конкурс') $str = '4.1'; else $str = '4.2'; } elseif ($rez[1]['region'] == 'Спортивная'){ if ($rez[1]['kind'] == 'Выполнение нормативов ГТО') $str = '5.3'; if ($rez[1]['kind'] == 'Спортивное мероприятие') { if ($rez[1]['place'] != 'участник') $str = '5.1'; else $str = '5.2'; } else $str = '5.2'; } } return $str; //то есть должны вернуть что-то в стиле 2.2, или 2.1 } //функция для вывода информации о достижении function infoAchievement($id_ach){ GLOBAL $DB, $ST; $sql = 'SELECT * FROM '.$ST['dbpf'].'_achievements WHERE id = "'.$id_ach.'" '; $rez = $DB->QUR_SEL($sql); $rez[1]['date_p'] = date('d.m.Y', $rez[1]['date_p']); //определяем в какой критерий пойдет достижение: //$rez[1]['criterion'] = return $rez[1]; } //функция для подсчета общего количества баллов в определенной области и во всех сразу в конкретной заявке function ratingOrder($id_order, $region = 'all', $pr = 0){ GLOBAL $DB, $ST; //pointsAch - для подсчета баллов определенного достижения, одного! /* region - область достижений, по умолчанию все pr - предварительный рейтинг, то есть без учета неодобренных, 0 - считать сразу, 1 - только одобренные */ $points = 0; $sql = 'SELECT * FROM '.$ST['dbpf'].'_stip_dost WHERE id_stip = "'.$id_order.'" AND status = "'.$pr.'" '; $rez = $DB->QUR_SEL($sql); if ($rez){ foreach ($rez as $key => $val) if ($key){ if ($region == 'all') $points += pointsAch($val['id_achievement']); else if (regionAchievement($val['id_achievement']) == $region) $points += pointsAch($val['id_achievement']); //пока добавляем плюс 1 за каждое достижение /*if ($region == 'all') $points += 1; else if (regionAchievement($val['id_achievement']) == $region) $points += 1;*/ } } return $points; } // создадим функцию которая нам поможет в сортировке массивов function array_orderby(){ $args = func_get_args(); $data = array_shift($args); foreach ($args as $n => $field) { if (is_string($field)) { $tmp = array(); foreach ($data as $key => $row) $tmp[$key] = $row[$field]; $args[$n] = $tmp; } } $args[] = &$data; call_user_func_array('array_multisort', $args); return array_pop($args); } // Сортируем массив $data сначала по volume, затем по edition //$sorted = array_orderby($data, 'volume', SORT_DESC, 'edition', SORT_ASC); / пример использования - крутая штука)) //рейтинговая таблица if ($_GET['page'] == 'rating'){ //все заявки $orders = array(); $sql = 'SELECT * FROM '.$ST['dbpf'].'_stip WHERE facultet = "'.$facultet.'" ORDER BY date_create DESC'; $rez = $DB->QUR_SEL($sql); if ($rez){ foreach ($rez as $key => $val) if ($key){ $val['user'] = get_user($val['id_user']); $val['date_create'] = date('d.m.Y', $val['date_create']); $val['rating_up'] = ratingOrder($val['id'], 'Учебная', 1); $val['rating_ni'] = ratingOrder($val['id'], 'Научно-исследовательская', 1); $val['rating_ob'] = ratingOrder($val['id'], 'Общественная', 1); $val['rating_kt'] = ratingOrder($val['id'], 'Культурно-творческая', 1); $val['rating_sp'] = ratingOrder($val['id'], 'Спортивная', 1); $val['rating'] = ratingOrder($val['id'], 'all', 1); $orders[] = $val; } } //отсортируем по рейтингу $orders = array_orderby($orders, 'rating', SORT_DESC); $smarty->assign('years', spravochnik_get('years')); $smarty->assign('all_facultets', lists_fakultets()); //список всех факультетов $smarty->assign('facultet', $facultet); //конкретный факультет $smarty->assign('orders', $orders); $maincontent = $smarty->fetch('tpl_grant_rating.html'); } //стипендиальная комиссия if ($_GET['page'] == 'commission'){ //отклонение заявления с комментарием if (isset($_POST['del_order'])){ $order = (int)$_POST['order']; //номер заявления $comm = '[ОПОВЕЩЕНИЕ] Заявка на стипендию №'.$order.' отклонена.
Комментарий: '; $comm .= $_POST['comm']; //текст сообщения //в начале определяем айдишник человека, которому нужно написать сообщение-оповещение $sql = 'SELECT * FROM '.$ST['dbpf'].'_stip WHERE id = "'.$order.'" '; $rez = $DB->QUR_SEL($sql); if ($rez) $to_user = $rez[1]['id_user']; write_message($to_user, $comm); //удаляем саму заявку теперь и достижения в ней $DB->QUR('DELETE FROM '.$ST['dbpf'].'_stip WHERE id = "'.$order.'" '); $DB->QUR('DELETE FROM '.$ST['dbpf'].'_stip_dost WHERE id = "'.$order.'" '); header("Location: /grant/commission/"); exit; } //СПИСОК ТЕКУЩИХ ЗАЯВОК - по умолчанию - пустых $orders = array(); //$sql = 'SELECT * FROM '.$ST['dbpf'].'_stip WHERE id_user = "'.$id_user.'" '; $sql = 'SELECT * FROM '.$ST['dbpf'].'_stip WHERE facultet = "'.$facultet.'" ORDER BY date_create DESC'; //если выбрана только одна конкретная заявка if (isset($_GET['des'])) { $id_order = $_GET['des']; $sql = 'SELECT * FROM '.$ST['dbpf'].'_stip WHERE id = "'.$id_order.'" AND facultet = "'.$facultet.'" ORDER BY date_create DESC'; } else $id_order = 0; $rez = $DB->QUR_SEL($sql); //echo $sql,'
'.print_r($rez,1).'
'; //exit(); if ($rez){ foreach ($rez as $key => $val) if ($key){ $val['user'] = get_user($val['id_user']); $val['date_create'] = date('d.m.Y', $val['date_create']); //достижения в заявке $val['dost'] = array(); $sql2 = 'SELECT * FROM '.$ST['dbpf'].'_achievements WHERE id_user = '.$val['id_user']; $rez2 = $DB->QUR_SEL($sql2); if ($rez2) { foreach ($rez2 as $key2 => $val2) if ($key2){ $sql3 = 'SELECT * FROM '.$ST['dbpf'].'_stip_dost WHERE id_achievement = '.$val2['id']; $rez3 = $DB->QUR_SEL($sql3); if ($rez3) { $stip = $rez3[1]; $val2['point'] = pointsAch($stip['id_achievement']); $val2['date_p'] = date('d.m.Y', $val2['date_p']); $val2['status_sd'] = $stip['status']; $val2['id_sd'] = $stip['id']; $val['dost'][] = $val2; }else{ $val2['point'] = pointsAch($val2['id']); $val2['date_p'] = date('d.m.Y', $val2['date_p']); $sql4 = 'INSERT INTO '.$ST['dbpf'].'_stip_dost VALUES(0,'.$val['id'].','.$val2['id'].',0,"")'; $rez3 = $DB->QUR($sql4); $val2['status_sd'] = 0; $val2['id_sd'] = $DB->lastinsertID(); $val2['commento'] = ''; $val['dost'][] = $val2; } } } //старая версия //$sql2 = 'SELECT sd.*, sd.status as status_sd, sd.id as id_sd, ach.* FROM '.$ST['dbpf'].'_stip_dost as sd, '.$ST['dbpf'].'_achievements as ach WHERE sd.id_stip = "'.$val['id'].'" AND ach.id = sd.id_achievement '; //$rez2 = $DB->QUR_SEL($sql2); ////echo $sql,'
'.print_r($rez2,1).'
'; exit(); //if ($rez2){ // foreach ($rez2 as $key2 => $val2) if ($key2){ // $val2['point'] = pointsAch($val2['id_achievement']); // $val2['date_p'] = date('d.m.Y', $val2['date_p']); // $val['dost'][] = $val2; // } //} $orders[] = $val; } } $smarty->assign('id_order', $id_order); $smarty->assign('orders', $orders); $smarty->assign('msg', $msg); $maincontent = $smarty->fetch('tpl_grant_commission.html'); } //мои заявки if ($_GET['page'] == 'myOrder'){ //создание новой заявки - пустой, без достижений if (isset($_POST['add_order'])){ $facultet = $_POST['facult']; $area = $_POST['area']; $grupp = $_POST['grupp']; $grant = $_POST['grant']; $uch_year = (int)$_POST['uch_year']; //учебный год. 2022 - значит 2022/2023 $semestr = (int)$_POST['semestr']; $date_create = date("U"); //добавляем в базу $rez = $DB->QUR('INSERT INTO '.$ST['dbpf'].'_stip (`id_user`, `facultet`, `specialnost`, `grupp`, `date_create`, `type`, `semestr`, `uch_year`) VALUES ("'.$id_user.'", "'.$facultet.'", "'.$area.'", "'.$grupp.'", "'.$date_create.'", "'.$grant.'", "'.$semestr.'", "'.$uch_year.'") '); $id = mysql_insert_id(); $msg = 1; save_logs('Заявка сохранена в системе под №'.$id); } //добавление нового достижения к заявке if (isset($_POST['add_order_ach'])){ $id_stip = $_POST['id_stip']; $ach = $_POST['ach']; $rez = $DB->QUR('INSERT INTO '.$ST['dbpf'].'_stip_dost (id_stip, id_achievement) VALUES ("'.$id_stip.'", "'.$ach.'") '); $msg = 2; save_logs('Добавлено новое достижение к заявке №'.$id_stip); } //удаление заявки if (isset($_POST['delete_stip'])){ $stip = (int) $_POST['stip']; //номер заявки $rez = $DB->QUR('DELETE FROM '.$ST['dbpf'].'_stip WHERE id = "'.$stip.'" '); $rez = $DB->QUR('DELETE FROM '.$ST['dbpf'].'_stip_dost WHERE id_stip = "'.$stip.'" '); save_logs('Удалена заявка на стипендию вместе с вложениями №'.$stip); } //список факультетов $faculties = array(); $sql = 'SELECT * FROM '.$ST['dbpf'].'_faculties '; $rez = $DB->QUR_SEL($sql); if ($rez){ foreach ($rez as $key => $val){ $faculties[] = $val; } } //направления подготовки $areas = array(); $sql = 'SELECT * FROM '.$ST['dbpf'].'_areas '; $rez = $DB->QUR_SEL($sql); if ($rez){ foreach ($rez as $key => $val){ $areas[] = $val; } } //достижения авторизованного человека $achievements = array(); $sql = 'SELECT * FROM '.$ST['dbpf'].'_achievements WHERE id_user = "'.$id_user.'" '; $rez = $DB->QUR_SEL($sql); if ($rez){ foreach ($rez as $key => $val) if ($key){ $val['date_p'] = date('d.m.Y', $val['date_p']); $achievements[] = $val; } } //группы $grupps = array(); $sql = 'SELECT * FROM '.$ST['dbpf'].'_grupp WHERE NOT sokr LIKE "%Выпуск%" AND id_facult > 0 ORDER BY sokr '; $rez = $DB->QUR_SEL($sql); if ($rez){ foreach ($rez as $key => $val) if ($key){ $grupps[] = $val; } } //СПИСОК ТЕКУЩИХ ЗАЯВОК - по умолчанию - пустых $orders = array(); $sql = 'SELECT * FROM '.$ST['dbpf'].'_stip WHERE id_user = "'.$id_user.'" '; $rez = $DB->QUR_SEL($sql); if ($rez){ foreach ($rez as $key => $val) if ($key){ $val['date_create'] = date('d.m.Y', $val['date_create']); //достижения в заявке $val['dost'] = array(); $sql2 = 'SELECT sd.*, ach.* FROM '.$ST['dbpf'].'_stip_dost as sd, '.$ST['dbpf'].'_achievements as ach WHERE sd.id_stip = "'.$val['id'].'" AND ach.id = sd.id_achievement '; $rez2 = $DB->QUR_SEL($sql2); if ($rez2){ foreach ($rez2 as $key2 => $val2) if ($key2){ $val['dost'][] = $val2; } } $orders[] = $val; } } $smarty->assign('years', spravochnik_get('years')); $smarty->assign('orders', $orders); $smarty->assign('grupps', $grupps); $smarty->assign('grants', $grants); $smarty->assign('areas', $areas); $smarty->assign('faculties', $faculties); $smarty->assign('achievements', $achievements); $smarty->assign('msg', $msg); $maincontent = $smarty->fetch('tpl_grant_my_order.html'); } //общая информация if ($_GET['page'] == 'information'){ $maincontent = $smarty->fetch('tpl_grant_information.html'); } //функция для подсчета количества мест для стипендий анкетных на определенном факультете, учебном году и семестре function getCountStip($facultet, $year, $sem){ GLOBAL $ST, $DB; /* @facultet - название факультета $year - учебный год. 2022 - означает 2022-2023 учебный год $sem = семестр, 1 - осенний, 2 - весенний */ $count = 0; $sql = 'SELECT * FROM '.$ST['dbpf'].'_number_scholarship WHERE facultet = "'.$facultet.'" AND year_start = "'.$year.'" AND semestr = "'.$sem.'" '; //echo $sql; $rez = $DB->QUR_SEL($sql); if ($rez){ foreach ($rez as $key => $val) if ($key){ $count += $val['count_stip']; } } return $count; } //деканату - возможность указать количество стипендий на определенный семестр определенного учебного года if ($_GET['page'] == 'scholarship'){ //добавление мест на анкетную стипендию if (isset($_POST['add_scholarship'])){ $facultet = $_POST['facultet']; $year_start = (int) $_POST['year_start']; $semestr = (int) $_POST['semestr']; $count_stip = (int) $_POST['count_stip']; $rez = $DB->QUR('INSERT INTO '.$ST['dbpf'].'_number_scholarship (`facultet`, `year_start`, `semestr`, `count_stip`, `date_create`) VALUES ("'.$facultet.'", "'.$year_start.'", "'.$semestr.'", "'.$count_stip.'", "'.date("U").'") '); $id = mysql_insert_id(); $msg = 1; save_logs('Добавлены места для анкетной стипендии №'.$id); //выход header("Location: /grant/scholarship/"); exit; } //смотрим количество стипендий за каждый год, начиная с 2022-ого $count_stip_years = array(); for ($year = 2022; $year <= date("Y"); $year++){ $count_stip_years[$year][1] = getCountStip($facultet, $year, 1); $count_stip_years[$year][2] = getCountStip($facultet, $year, 2); } /*$count_stip_years[2022][1] = 10; $count_stip_years[2022][2] = 11; $count_stip_years[2023][1] = 10;*/ settings_all(); /****/ $smarty->assign('facultet', $facultet); $smarty->assign('count_stip_years', $count_stip_years); $maincontent = $smarty->fetch('tpl_grant_scholarship.html'); } function settings_all(){ GLOBAL $ST,$DB,$smarty; $out=array(); settings_byPrefix('years'); settings_byPrefix('kinds'); settings_byPrefix('regions'); settings_byPrefix('statuses'); settings_byPrefix('counts'); settings_byPrefix('places'); settings_byPrefix('grants'); return $out; } function settings_byPrefix($field){ GLOBAL $ST,$DB,$smarty; $out=array(); //$field = 'regions'; $table = $ST['dbpf'].'_stip_settings_'.$field; //acs_stip_settings_regions: id, id_fakultet, name, status if(isset($_POST['settings_'.$field.'_add'])){ $id_fakultet = $_POST[$field.'_id_fakultet']; $name = $_POST[$field.'_name']; $status = $_POST[$field.'_status']; $pos = $_POST[$field.'_pos']; if(isset($_POST[$field.'_year'])){ $year = (int)$_POST[$field.'_year']; $sql = 'INSERT INTO '.$table.' VALUES(0,'.$id_fakultet.',"'.$DB->rescape($name).'",'.$year.','.$status.','.$pos.')'; }else{ $sql = 'INSERT INTO '.$table.' VALUES(0,'.$id_fakultet.',"'.$DB->rescape($name).'",'.$status.','.$pos.')'; } $rez = $DB->QUR($sql); } if(isset($_POST['settings_'.$field.'_edit'])){ $id = $_POST[$field.'_id']; $id_fakultet = $_POST[$field.'_id_fakultet']; $name = $_POST[$field.'_name']; $status = $_POST[$field.'_status']; $pos = $_POST[$field.'_pos']; if(isset($_POST[$field.'_year'])){ $year = (int)$_POST[$field.'_year']; $sql = 'UPDATE ' . $table . ' SET id_fakultet=' . $id_fakultet . ',name="' . $DB->rescape($name) . '",year=' . $year . ',,status=' . $status . ',pos=' . $pos . ' WHERE id=' . $id . ' LIMIT 1'; }else { $sql = 'UPDATE ' . $table . ' SET id_fakultet=' . $id_fakultet . ',name="' . $DB->rescape($name) . '",status=' . $status . ',pos=' . $pos . ' WHERE id=' . $id . ' LIMIT 1'; } $rez = $DB->QUR($sql); } if(isset($_GET['des'])){ if($_GET['des']==$field.'_edit'){ $item = array(); $id = $_GET['id']; $sql = 'SELECT * FROM '.$table.' WHERE id='.$id; $rez = $DB->QUR_SEL($sql); if($rez){ $item = $rez[1]; } $smarty->assign($field.'_item',$item); } if($_GET['des']==$field.'_del'){ $id = $_GET['id']; $sql = 'DELETE FROM '.$table.' WHERE id='.$id.' LIMIT 1'; $rez = $DB->QUR($sql); } }else{ $item=array('id'=>0,'id_fakultet'=>0,'name'=>'','status'=>1,'year'=>date('Y')); $smarty->assign($field.'_item',$item); } $items=array(); $sql = 'SELECT * FROM '.$table.' ORDER BY id_fakultet,pos,name'; $rez = $DB->QUR_SEL($sql); if($rez){ foreach($rez as $k => $v)if($k){ $v['fakultet'] = fakultets_all($v['id_fakultet']); $items[] = $v; } } $smarty->assign('fakultets',fakultets_all()); $smarty->assign($field.'_items',$items); return $out; } function fakultets_all($id=-1){ GLOBAL $ST,$DB,$smarty; $out=array(); $table = $ST['dbpf'].'_faculties'; if($id!=-1){ if($id==0){ $out['name'] = 'все факультеты'; }else { $sql = 'SELECT id,name FROM ' . $table . ' WHERE id=' . $id; $rez = $DB->QUR_SEL($sql); if ($rez) { $out = $rez[1]; } } }else { $sql = 'SELECT id,name FROM ' . $table . ' ORDER BY id_school,name'; $rez = $DB->QUR_SEL($sql); if ($rez) { foreach ($rez as $k => $v) if ($k) { $out[] = $v; } } } return $out; } function spravochnik_get($spravocnik,$id=0){ GLOBAL $ST,$DB; $out=array(); $table = $ST['dbpf'].'_stip_settings_'.$spravocnik; if($id!=0){ $sql = 'SELECT * FROM ' . $table . ' WHERE id=' . $id; $rez = $DB->QUR_SEL($sql); if ($rez) { $out = $rez[1]; } }else { $sql = 'SELECT * FROM ' . $table.' ORDER BY pos,name'; $rez = $DB->QUR_SEL($sql); if ($rez) { foreach ($rez as $k => $v) if ($k) { $out[] = $v; } } } return $out; } //СТРАНИЦА ДОСТИЖЕНИЙ ЧЕЛОВЕКА if ($_GET['page'] == 'dost'){ include_once $_SERVER['DOCUMENT_ROOT'].'/inc/class_SYSTEM.php'; $SYSTEMclass = new SYSTEMclass(); //добавление нового достижения в систему if (isset($_POST['add_achievment'])){ $name = addslashes($_POST['name']); $kind = addslashes($_POST['kind']); $region = addslashes($_POST['region']); $status = addslashes($_POST['status']); $place = addslashes($_POST['place']); $organis = addslashes($_POST['organis']); $count = addslashes($_POST['count']); $link_doc = addslashes($_POST['link_doc']); $link_group = addslashes($_POST['link_group']); $date_p = strtotime($_POST['date_p']); //загрузка файлов в директорию $dir_dest = 'upload/achievements/'; //скан-копия подтверждающего документа $file=''; $date_create = date("U"); if(isset($_FILES['file'])){ if(!file_exists($dir_dest)) mkdir($dir_dest); $fil = $date_create.$_FILES['file']['name']; $t = explode('.',$fil); $ext = $t[count($t)-1]; unset($t[count($t)-1]); $fn = implode('.',$t); $file = $dir_dest . basename(translit($fn).'.'.$ext); //if (!move_uploaded_file($_FILES['file']['tmp_name'], $file)) { if (!$SYSTEMclass->sysUPLOAD($_FILES['file']['tmp_name'], $file)) { $file=''; } } //добавляем в базу $rez = $DB->QUR('INSERT INTO '.$ST['dbpf'].'_achievements (`name`, `kind`, `region`, `status`, `organis`, `count_m`, `link_doc`, `link_group`, `date_p`, `file`, `id_user`, `place`) VALUES ("'.$name.'", "'.$kind.'", "'.$region.'", "'.$status.'", "'.$organis.'", "'.$count.'", "'.$link_doc.'", "'.$link_group.'", "'.$date_p.'", "'.$file.'", "'.$id_user.'", "'.$place.'") '); //echo 'INSERT INTO '.$ST['dbpf'].'_achievements (`name`, `kind`, `region`, `status`, `organis`, `count_m`, `link_doc`, `link_group`, date_p`, `file`, `id_user`) VALUES ("'.$name.'", "'.$kind.'", "'.$region.'", "'.$status.'", "'.$organis.'", "'.$count.'", "'.$link_doc.'", "'.$link_group.'", "'.$date_p.'", "'.$file.'", "'.$id_user.'") '; $id = mysql_insert_id(); $msg = 1; save_logs('Добавлено новое достижение в систему №'.$id); } //достижения авторизованного человека $achievements = array(); $sql = 'SELECT * FROM '.$ST['dbpf'].'_achievements WHERE id_user = "'.$id_user.'" '; $rez = $DB->QUR_SEL($sql); if ($rez){ foreach ($rez as $key => $val) if ($key){ $val['point'] = pointsAch($val['id']); $val['date_p'] = date('d.m.Y', $val['date_p']); $achievements[] = $val; } } //теперь преподаватели /*$teachers = array(); $sql = 'SELECT teach.*, vac.* FROM '.$ST['dbpf'].'_teachers as teach, '.$ST['dbpf'].'_vaccine as vac WHERE teach.status > 0 AND teach.id_user = vac.id_user'; $rez = $DB->QUR_SEL($sql); if ($rez){ foreach ($rez as $key => $val) if ($key){ $val['date_vac'] = date('d.m.Y', $val['date_vac']); $val['date_end'] = date('d.m.Y', $val['date_end']); $val['is_vac'] = typeVaccine($val['is_vac']); $val['user'] = get_user($val['id_user']); $teachers[] = $val; } }*/ $smarty->assign('msg', $msg); $smarty->assign('kinds', $kinds); $smarty->assign('regions', $regions); $smarty->assign('statuses', $statuses); $smarty->assign('counts', $counts); $smarty->assign('places', $places); $smarty->assign('achievements', $achievements); $maincontent = $smarty->fetch('tpl_grant_dost.html'); } //функция для определения преимущественной области достижений в заявке по одобренным достижений function bestAchArea($id_order){ GLOBAL $ST, $DB, $regions; //в начале указываем все виды деятельности, по которым будем заполнять баллы $score = array(); foreach ($regions as $key => $val){ $score[$val['name']] = 0; //по умолчанию ставим ноль } //перебираем все одобренные достижения в заявке $sql = 'SELECT * FROM '.$ST['dbpf'].'_stip_dost WHERE id_stip = "'.$id_order.'" AND status = 1 '; $rez = $DB->QUR_SEL($sql); if ($rez){ foreach ($rez as $key => $val) if ($key){ $score[regionAchievement($val['id_achievement'])] = pointsAch($val['id_achievement']); //начисляем баллы за каждое достижение } } //возвращаем индексы максимальных $max = max($score); // $max == 7 return array_search($max, $score); //print_r(array_keys($score, max($score))); } /*ПЕЧАТНАЯ ФОРМА*/ //формируем анкету-заявление if ($_GET['page'] == "questionnaire"){ $id_order = $_GET['des']; $sql = 'SELECT * FROM '.$ST['dbpf'].'_stip WHERE id = "'.$id_order.'" '; $rez = $DB->QUR_SEL($sql); if ($rez){ $rez[1]['date_create'] = date('d.m.Y', $rez[1]['date_create']); $stip = $rez[1]; } $achievements = array(); $sql = 'SELECT * FROM '.$ST['dbpf'].'_stip_dost WHERE id_stip = "'.$id_order.'" '; $rez = $DB->QUR_SEL($sql); if ($rez){ foreach ($rez as $key => $val) if ($key){ $val = infoAchievement($val['id_achievement']); $val['crit'] = criterionAchivement($val['id']); $achievements[] = $val; } } $student = get_student($stip['id_user']); //определяем семестр $gruppa = $student['sokr']; //берем группу $gruppa_ch = explode("-", $gruppa); //делим на две части $kurs = $gruppa_ch[1][0]; //курс //смотрим успеваемость за последний год $usp = true; //по умолчанию успеваемость отличная $dateYearLast = date("U") - 365*24*60*60; $sql = 'SELECT * FROM '.$ST['dbpf'].'_liquidation WHERE id_student = "'.$student['id_stud'].'" AND date_create > "'.$dateYearLast.'" '; $rez = $DB->QUR_SEL($sql); if ($rez){ foreach ($rez as $key => $val) if ($key){ if ($val['mark'] == 'хорошо') $usp = false; elseif ($val['mark'] == 'удовлетворительно') $usp = false; } } /**/ $smarty->assign('student', $student); $smarty->assign('user', get_user($stip['id_user'])); $smarty->assign('stip', $stip); $smarty->assign('achievements', $achievements); $smarty->assign('usp', $usp); $smarty->display('tpl_grant_questionnaire.html'); exit; } //формируем представление стипендиальной комиссии if ($_GET['page'] == 'presentation'){ //обязательно передаем через пост параметры: учебный год и семестр, а также факультета $data['facultet'] = $_POST['facultet']; $data['year_start'] = (int) $_POST['year_start']; $data['semestr'] = (int) $_POST['semestr']; $stip = get_presentation($data); ////студенты, которые будут получать стипендию (точнее включаем всех, кто подал заявку) //$stip = array(); //$sql = 'SELECT * FROM '.$ST['dbpf'].'_stip WHERE facultet = "'.$facultet.'" AND (semestr = "'.$semestr.'" OR semestr = "'.($semestr+2).'" OR semestr = "'.($semestr+4).'" OR semestr = "'.($semestr+6).'" OR semestr = "'.($semestr+8).'" OR semestr = "'.($semestr+10).'") AND uch_year = "'.$year_start.'" '; //$rez = $DB->QUR_SEL($sql); //if ($rez){ // foreach ($rez as $key => $val) if ($key){ // // //преимущественная область достижений в заявке // $val['preim'] = bestAchArea($val['id']); // // $val['score'] = ratingOrder($val['id'], 'all', 1); // $val['user'] = get_user($val['id_user']); // if ($val['score'] > 0) $stip[] = $val; //с нулем не проходят // } //} // ////отсортируем по рейтингу //$stip = array_orderby($stip, 'score', SORT_DESC); /****/ $smarty->assign('stip', $stip); $smarty->assign('facultet', $facultet); //$smarty->assign('year_start', $year_start); $smarty->display('tpl_grant_print_presentation.html'); exit; } function get_presentation($data){ GLOBAL $ST,$DB; //обязательно передаем через пост параметры: учебный год и семестр, а также факультета $facultet = $data['facultet']; $year_start = (int) $data['year_start']; $semestr = (int) $data['semestr']; //echo '1
'.print_r($DB,1).'
';exit(); //студенты, которые будут получать стипендию (точнее включаем всех, кто подал заявку) $stip = array(); $sql = 'SELECT * FROM '.$ST['dbpf'].'_stip WHERE facultet = "'.$facultet.'" AND (semestr = "'.$semestr.'" OR semestr = "'.($semestr+2).'" OR semestr = "'.($semestr+4).'" OR semestr = "'.($semestr+6).'" OR semestr = "'.($semestr+8).'" OR semestr = "'.($semestr+10).'") AND uch_year = "'.$year_start.'" '; $rez = $DB->QUR_SEL($sql); //echo $sql.'
'.print_r($rez,1).'
';exit(); //SELECT * FROM acs_stip WHERE facultet = "Лечебный факультет" AND (semestr = "1" OR semestr = "3" OR semestr = "5" OR semestr = "7" OR semestr = "9" OR semestr = "11") AND uch_year = "2022" if ($rez){ $sem_zim=array(1,3,5,7,9,11,13); $sem_let=array(2,4,6,8,10,12,14); foreach ($rez as $key => $val) if ($key){ if(in_array($val['semestr'],$sem_zim)){ $val['data_nv']='01.09.'.$val['uch_year']; $val['data_kv']='31.01.'.($val['uch_year']+1); } if(in_array($val['semestr'],$sem_let)){ $val['data_nv']='01.02.'.($val['uch_year']+1); $val['data_kv']='11.07.'.($val['uch_year']+1); } //преимущественная область достижений в заявке $val['preim'] = bestAchArea($val['id']); $val['score'] = ratingOrder($val['id'], 'all', 1); $val['user'] = get_user($val['id_user']); if ($val['score'] > 0) $stip[] = $val; //с нулем не проходят } } //echo $sql.'
'.print_r($stip,1).'
';exit(); //отсортируем по рейтингу $stip = array_orderby($stip, 'score', SORT_DESC); return $stip; } ?>