EIOS/inc/grant.php

1016 lines
41 KiB
PHP
Raw Normal View History

2023-12-28 15:39:22 +03:00
<?
$id_user = $_SESSION['user']['id'];
$facultet = $_SESSION['user']['teacher']['fakultet'];
//id_user = 580 Кучинская
$smarty->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.' отклонена. <br />Комментарий: ';
$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,'<pre>'.print_r($rez,1).'</pre>'; //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,'<pre>'.print_r($rez2,1).'</pre>'; 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<pre>'.print_r($DB,1).'</pre>';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.'<pre>'.print_r($rez,1).'</pre>';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.'<pre>'.print_r($stip,1).'</pre>';exit();
//отсортируем по рейтингу
$stip = array_orderby($stip, 'score', SORT_DESC);
return $stip;
}
?>