EIOS/inc/grant.php

1016 lines
41 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?
$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;
}
?>