346 lines
22 KiB
PHP
346 lines
22 KiB
PHP
<?php
|
||
|
||
class class_Disciplins{
|
||
private $DB=null;
|
||
private $TFile='';
|
||
private $TFiles='';
|
||
private $TUchebplans='';
|
||
private $TUchebplansPrepod='';
|
||
private $TUchebplans_compet='';
|
||
private $TCompet='';
|
||
private $Tteachers='';
|
||
private $Tusers='';
|
||
function __construct(){
|
||
GLOBAL $DB,$ST;
|
||
$this->DB = $DB;
|
||
$this->TFile = $ST['dbpf'].'_fshp_file';
|
||
$this->TFiles = $ST['dbpf'].'_fshp_files';
|
||
$this->TUchebplans = $ST['dbpf'].'_fshp_uchebplans';
|
||
$this->TUchebplansPrepod = $ST['dbpf'].'_fshp_disciplin_prepod';
|
||
$this->TUchebplans_compet = $ST['dbpf'].'_fshp_uchebplans_compet';
|
||
$this->TCompet = $ST['dbpf'].'_fshp_compet';
|
||
$this->Tteachers = $ST['dbpf'].'_teachers';
|
||
$this->Tusers = $ST['dbpf'].'_users';
|
||
$this->TRPD_save = $ST['dbpf'].'_fshp_rpd_save';
|
||
}
|
||
public function HTML(){
|
||
GLOBAL $WorkDIR;
|
||
$CHPU = new class_CHPU($WorkDIR);
|
||
$URLS = $CHPU->uri();
|
||
|
||
$smartyC = new class_smarty();
|
||
$smarty = $smartyC->config(__DIR__.'\..\tpl');
|
||
//$this->DB->log($_POST);
|
||
//обработка АЯКС запросов
|
||
if(isset($_POST['ajdes'])){
|
||
header('Content-Type: application/json; charset=utf-8');
|
||
$out=array();
|
||
//Сохранение преподавателя к дисциплине
|
||
if($_POST['ajdes']=='CopyRPD'){
|
||
$saveiddiscip = (int)$_POST['saveiddiscip'];
|
||
$newdiscip = (int)$_POST['newdiscip'];
|
||
$prepodid = (int)$_POST['prepodid'];
|
||
$RPD = new class_RPD();
|
||
$out = $RPD->copy_rpd($saveiddiscip,$newdiscip,$prepodid);
|
||
}
|
||
//Сохранение преподавателя к дисциплине
|
||
if($_POST['ajdes']=='SavePrepod'){
|
||
//$out['post']=$_POST;
|
||
//id_disc:"46577"
|
||
//id_prepod: "undefined"
|
||
//smena:""
|
||
$id_disc=(int)$_POST['id_disc'];
|
||
$id_prepod=(int)$_POST['id_prepod'];
|
||
$smena=$_POST['smena'];
|
||
if($id_prepod==''){
|
||
$out['err']=1;
|
||
$out['msg']='Не выбрали преподавателя';
|
||
}else {
|
||
$out = $this->Disciplin_Save_Prepod($id_disc, $id_prepod, $smena);
|
||
}
|
||
}
|
||
echo json_encode($out);
|
||
exit();
|
||
}
|
||
|
||
$view = 'all';
|
||
$out = array('name'=>'Дисциплины','body'=>'');
|
||
if(isset($URLS[1])&&$URLS[1]=='one') {
|
||
//$view = 'one';
|
||
//$id_file = (int)$URLS[2];
|
||
//$smarty->assign('PLAN', $this->plan_show($id_file));
|
||
//$smarty->assign('view',$view);
|
||
//$out['body'] = $smarty->fetch('page_shahtplan.html');
|
||
}
|
||
if(!isset($URLS[1])||$URLS[1]=='all') {
|
||
$smarty->assign('PREPODS', $this->Prepods_Get_By_Kaf(0,$_SESSION['user']['teachers']['kafedra']));
|
||
$dis = $this->Disciplins();
|
||
$smarty->assign('DISCIPS', $dis['items']);
|
||
$smarty->assign('prepods_all_all',$this->Prepods_Get_all());
|
||
$smarty->assign('view',$view);
|
||
$KAF = array('kod'=>$dis['kafedra_kod'],'name'=>$_SESSION['user']['teachers']['kafedra']);
|
||
$smarty->assign('kaf',$KAF);
|
||
$out['body'] = $smarty->fetch('page_disciplins.html');
|
||
}
|
||
return $out;
|
||
}
|
||
public function Disciplins($id_kaf=0){
|
||
$out=array();
|
||
$cYear = 'AND t.god_nach_podgot='.$_SESSION['year_cur'];
|
||
$kafname = $_SESSION['user']['teachers']['kafedra'];
|
||
if($kafname=='Кафедра госпитальной терапии и последипломного образования'&&$id_kaf==0) $id_kaf=45;
|
||
if($kafname=='Кафедра госпитальной хирургии и последипломного образования'&&$id_kaf==0) $id_kaf=37;
|
||
if($id_kaf==0){
|
||
//попробуем узнать код кафедры и найти по нему т.к. есть планы с неправильной кафедрой!
|
||
$sql = 'SELECT kaf_kod FROM '.$this->TUchebplans.' WHERE kaf_name="'.$kafname.'" LIMIT 1';
|
||
$rez = $this->DB->QUR_SEL($sql);
|
||
//echo $sql.'<pre>'.print_r($rez,1).'</pre>'; exit();
|
||
if(!$rez['err']&&$rez['kol']){
|
||
$id_kaf = $rez['rez'][0]['kaf_kod'];
|
||
$sql = 'SELECT up.*,t.program,t.shifr,t.naprav,t.profil,t.kvalif,t.god_nach_podgot,t.fo,t.srok_poluch_obr FROM '.$this->TUchebplans.' as up,'.$this->TFile.' as t WHERE up.kaf_kod="'.$id_kaf.'" AND up.id_file=t.id_file '.$cYear.' ORDER BY t.shifr,t.god_nach_podgot,t.fo';
|
||
}else{
|
||
$sql = 'SELECT up.*,t.program,t.shifr,t.naprav,t.profil,t.kvalif,t.god_nach_podgot,t.fo,t.srok_poluch_obr FROM '.$this->TUchebplans.' as up,'.$this->TFile.' as t WHERE up.kaf_name="'.$kafname.'" AND up.id_file=t.id_file '.$cYear.' ORDER BY t.shifr,t.god_nach_podgot,t.fo';
|
||
}
|
||
}else{
|
||
$sql = 'SELECT up.*,t.program,t.shifr,t.naprav,t.profil,t.kvalif,t.god_nach_podgot,t.fo,t.srok_poluch_obr FROM '.$this->TUchebplans.' as up,'.$this->TFile.' as t WHERE up.kaf_kod="'.$id_kaf.'" AND up.id_file=t.id_file '.$cYear.' ORDER BY t.shifr,t.god_nach_podgot,t.fo';
|
||
}
|
||
//kaf_kod
|
||
//echo $sql.'<pre>'.print_r($rez,1).'</pre>';
|
||
$rez = $this->DB->QUR_SEL($sql);
|
||
//echo $sql.'<pre>'.print_r($rez,1).'</pre>'; exit();
|
||
if(!$rez['err']&&$rez['kol']){
|
||
foreach ($rez['rez'] as $k => $v){
|
||
$prepod = $this->Disciplin_Get_Prepod($v['id']);
|
||
$v['prepod_id']=$prepod['prepod_id'];
|
||
$v['prepod_data_c']=$prepod['prepod_data_c'];
|
||
$v['prepod_descrip']=$prepod['prepod_descrip'];
|
||
$v['prepod_status']=$prepod['prepod_status'];
|
||
$v['prepod_other']=$prepod['prepod_other'];
|
||
//сделаем проверку на наличие дисциплин и добавляем форму обучения
|
||
$kkkk = $v['shifr'].' '.$v['naprav'].' '.$v['profil'].' '.$v['god_nach_podgot'];
|
||
//проверяем на форму обучения
|
||
$is=0; foreach($out['items'][$kkkk] as $k1 => $v1){
|
||
//echo '$k='.$k.'; $k1='.$k1.'; $is='.$is.'; name='.$v1['name'].'='.$v['name'].'; index1='.$v1['index1'].'='.$v['index1'].'<br>';
|
||
//if($v1['name']==$v['name']||$v1['index1']==$v['index1']) {
|
||
if($v1['index1']==$v['index1']) {
|
||
if(strpos($out['items'][$kkkk][$k1]['fo'],$v['fo'])===false)
|
||
$out['items'][$kkkk][$k1]['fo'] .= ' | '.$v['fo'];
|
||
$is=1;//такая форма уже есть
|
||
//надо проверить на наличие дисциплины, потому что отличаются!
|
||
|
||
break;
|
||
}
|
||
}
|
||
if($is==0) {
|
||
$out['items'][$kkkk][] = $v;
|
||
}
|
||
$kaf_kod = $v['kaf_kod'];
|
||
}
|
||
$out['kafedra_kod'] = $kaf_kod;
|
||
}
|
||
//echo $sql.'<pre>'.print_r($out,1).'</pre>'; exit();
|
||
return $out;
|
||
}
|
||
|
||
/**
|
||
* Получение преподавателя для учебного плана
|
||
* @param $id_uchebplans
|
||
* @return int[]
|
||
*/
|
||
function Disciplin_Get_Prepod($id_uchebplans){
|
||
$out = array('prepod_id'=>0,'prepod_data_c'=>0,'prepod_descrip'=>'','prepod_status'=>1);
|
||
$sql1 = 'SELECT id_prepod,data_c,descrip,status FROM '.$this->TUchebplansPrepod.' WHERE id_uchebplans='.$id_uchebplans.' ORDER BY data_c DESC
|
||
LIMIT 1';
|
||
$rez1 = $this->DB->QUR_SEL($sql1);
|
||
if(!$rez1['err']&&$rez1['kol']) {
|
||
$out['prepod_id']=$rez1['rez'][0]['id_prepod'];
|
||
$out['prepod_data_c']=$rez1['rez'][0]['data_c'];
|
||
$out['prepod_descrip']=$rez1['rez'][0]['descrip'];
|
||
$out['prepod_status']=$rez1['rez'][0]['status'];
|
||
$out['prepod_other']=$this->disciplin_check_other_year($id_uchebplans,$out['prepod_id']);
|
||
}else{
|
||
$out['prepod_other']['err'] = 'Не нашли соответствия преподавателя-дисциплины';
|
||
}
|
||
return $out;
|
||
}
|
||
|
||
/**
|
||
* Сохранение преподавателя к дисциплине
|
||
* @param $id_disc
|
||
* @param $id_prepod
|
||
* @return array
|
||
*/
|
||
function Disciplin_Save_Prepod($id_disc,$id_prepod,$smena=''){
|
||
$out = array('err'=>1,'msg'=>'Пустой запрос');
|
||
/*
|
||
* Выбор ответственного преподавателя заведующим должен быть однозначным. Т.е. один раз назначили.
|
||
* И обязательно дата назначения.
|
||
* И чтоб фамилия и дата назначения отражались в кабинете проректора.
|
||
* Назначение можно редактировать кнопочкой - разрешение на редактирование.
|
||
* И там менять преподавателя, обязательно написать причину замены, дата замены.
|
||
* И ещё согласование переназначения с УМУ.
|
||
* И чтоб видел это проректор.
|
||
* */
|
||
/*$sql = 'SELECT id FROM '.$this->TUchebplansPrepod.' WHERE id_uchebplans='.$id_disc.' ORDER BY data_c DESC LIMIT 1';
|
||
$rez = $this->DB->QUR_SEL($sql);
|
||
if(!$rez['err']&&$rez['kol']){
|
||
$sql = 'UPDATE ' . $this->TUchebplansPrepod . ' SET id_prepod=' . $id_prepod . ' WHERE id='.$rez['rez'][0]['id'].' LIMIT 1';
|
||
$rez = $this->DB->QUR($sql);
|
||
if(!$rez['err']){
|
||
$out['err']=0;
|
||
$out['msg']='Обновили';
|
||
}else{
|
||
$out['err']=1;
|
||
$out['msg']='Не обновили';
|
||
}
|
||
}else {*/
|
||
$status=0;
|
||
if ($smena==''){
|
||
$status=1;
|
||
$smena = 'Назначение от зав.каф. '.$_SESSION['user']['fio'];
|
||
}
|
||
$sql = 'INSERT INTO ' . $this->TUchebplansPrepod . ' values(0,' . time() . ',' . $id_disc . ',' . $id_prepod . ',"'.$this->DB->rescape($smena).'",'.$status.')';
|
||
$rez = $this->DB->QUR($sql);
|
||
if(!$rez['err']){
|
||
$out['err']=0;
|
||
$out['msg']='Добавили';
|
||
}else{
|
||
$out['err']=1;
|
||
$out['msg']='Не добавили';
|
||
}
|
||
//}
|
||
return $out;
|
||
}
|
||
|
||
/**
|
||
* Проверка есть ли РПД старые по этой дисциплине
|
||
* @param $id_uchebplans
|
||
* @param $prepod_id
|
||
* @return array
|
||
*/
|
||
function disciplin_check_other_year($id_uchebplans,$prepod_id){
|
||
$out = array();
|
||
$out['id_uchebplans']=$id_uchebplans;
|
||
$out['prepod_id']=$prepod_id;
|
||
//выберем текущий уч.план SELECT * FROM `acs_fshp_uchebplans` WHERE `id`=38625
|
||
//узнаем id_file 420 index1 Б1.О.08 name Информатика
|
||
$sql = 'SELECT id_file, index1, name FROM '.$this->TUchebplans.' WHERE id='.$id_uchebplans;
|
||
$rez = $this->DB->QUR_SEL($sql);
|
||
if(!$rez['err']&&$rez['kol']){
|
||
$up_cur = $rez['rez'][0];
|
||
//По id_file узнаем данные SELECT * FROM `acs_fshp_file` WHERE `id_file`=420
|
||
//program(бакалавриата), shifr(10.03.01), naprav(Информационная безопасность), profil(Организация и технология защиты информации), kafedra(Информационной безопасности и прикладной информати...), fakultet(Информационных систем в экономике и юриспруденции), kvalif(Бакалавр), god_nach_podgot(2023), fo(Очная), obr_stabdart(№ 1427 от 17.11.2020), srok_poluch_obr(4 г.), json({"kods"{"""06.034"}}), status(1)
|
||
$sql = 'SELECT program,shifr,naprav,profil,kafedra,fakultet,kvalif,god_nach_podgot,fo FROM '.$this->TFile.' WHERE id_file='.$up_cur['id_file'];
|
||
$rez = $this->DB->QUR_SEL($sql);
|
||
if(!$rez['err']&&$rez['kol']){
|
||
$up_file_cur = $rez['rez'][0];
|
||
//Найдем такой же план в других годах!
|
||
//SELECT * FROM `acs_fshp_file` WHERE program="бакалавриата" AND shifr="10.03.01" AND naprav="Информационная безопасность" AND profil="Организация и технология защиты информации" AND kafedra="Информационной безопасности и прикладной информати..." AND fakultet="Информационных систем в экономике и юриспруденции" AND kvalif="Бакалавр" AND god_nach_podgot!=2023 AND fo="Очная"
|
||
$sql = 'SELECT id,id_file,god_nach_podgot FROM '.$this->TFile.' WHERE program="'.$up_file_cur['program'].'" AND shifr="'.$up_file_cur['shifr'].'" AND naprav="'.$up_file_cur['naprav'].'" AND profil="'.$up_file_cur['profil'].'" AND kafedra="'.$up_file_cur['kafedra'].'" AND fakultet="'.$up_file_cur['fakultet'].'" AND kvalif="'.$up_file_cur['kvalif'].'" AND god_nach_podgot!='.$up_file_cur['god_nach_podgot'].' AND fo="'.$up_file_cur['fo'].'"';
|
||
$sql = 'SELECT id,id_file,god_nach_podgot FROM '.$this->TFile.' WHERE program="'.$up_file_cur['program'].'" AND shifr="'.$up_file_cur['shifr'].'" AND naprav="'.$up_file_cur['naprav'].'" AND profil="'.$up_file_cur['profil'].'" AND kafedra="'.$up_file_cur['kafedra'].'" AND fakultet="'.$up_file_cur['fakultet'].'" AND kvalif="'.$up_file_cur['kvalif'].'" AND god_nach_podgot!='.$up_file_cur['god_nach_podgot'];
|
||
$rez = $this->DB->QUR_SEL($sql);
|
||
//echo $sql.'<pre>'.print_r($rez,1).'</pre>';
|
||
//SELECT id,id_file,god_nach_podgot FROM acs_fshp_file WHERE program="магистратуры" AND shifr="08.04.01" AND naprav="Строительство" AND profil="" AND kafedra="Строительных и общепрофессиональных дисциплин" AND fakultet="Технологический" AND kvalif="Магистр" AND god_nach_podgot!=2023 AND fo="Заочная"
|
||
if(!$rez['err']&&$rez['kol']){
|
||
$up_file_oth = $rez['rez'][0];
|
||
//теперь найдем дисциплину такую же
|
||
$out = $this->disciplin_check_other_year_04($up_file_oth,$up_cur);
|
||
$out['id_uchebplans']=$id_uchebplans;
|
||
$out['prepod_id']=$prepod_id;
|
||
//$sql = 'SELECT id,id_file, index1, name FROM '.$this->TUchebplans.' WHERE id_file='.$up_file_oth['id_file'].' AND index1="'.$up_cur['index1'].'" AND name="'.$up_cur['name'].'"';
|
||
//$rez = $this->DB->QUR_SEL($sql);
|
||
//if(!$rez['err']&&$rez['kol']){
|
||
// $up_oth = $rez['rez'][0];
|
||
// //$out['up_cur']=$up_cur;
|
||
// //$out['up_file_cur']=$up_file_cur;
|
||
// //теперь найдем кто разрабатывал РПД в другом году
|
||
// $sql = 'SELECT rs.id as rsid,rs.id_prepod,u.fio FROM '.$this->TRPD_save.' as rs,'.$this->Tusers.' as u WHERE rs.id_discip='.$up_oth['id'].' AND u.id=rs.id_prepod';
|
||
// $rez = $this->DB->QUR_SEL($sql);
|
||
// if(!$rez['err']&&$rez['kol']) {
|
||
// $up_oth_user = $rez['rez'][0];
|
||
// $out['up_oth'] = $up_oth;
|
||
// $out['up_file_oth']=$up_file_oth;
|
||
// $out['up_oth_user'] = $up_oth_user;
|
||
// }else $out['err'] = '5. Не нашли кто разрабатывал эту дисциплину';
|
||
//}else $out['err'] = '4. Не нашли дисциплину в прошлом году [<span class="text-secondary">Файл:</span>'.$up_file_oth['id_file'].' <span class="text-secondary">Шифр:</span> '.$up_cur['index1'].' <span class="text-secondary">Дисцип:</span>'.$up_cur['name'].']';
|
||
}else $out['err'] = '3. Не нашли учебный план в прошлом году [<span class="text-secondary">Программа:</span>'.$up_file_cur['program'].' <span class="text-secondary">Шифр:</span>'.$up_file_cur['shifr'].' <span class="text-secondary">Направление:</span>'.$up_file_cur['naprav'].' <span class="text-secondary">Профиль:</span>'.$up_file_cur['profil'].' <span class="text-secondary">Кафедра:</span>'.$up_file_cur['kafedra'].' <span class="text-secondary">Факультет:</span>'.$up_file_cur['fakultet'].' <span class="text-secondary">Квалиф:</span>'.$up_file_cur['kvalif'].' <span class="text-secondary">ГодНачПодг:</span>'.($up_file_cur['god_nach_podgot']-1).']';
|
||
}else $out['err'] = '2. Не нашли файл текущего учебного плана';
|
||
}else $out['err'] = '1. Не нашли текущий учебный план';
|
||
return $out;
|
||
}
|
||
|
||
function disciplin_check_other_year_04($up_file_oth,$up_cur){
|
||
$out = array();
|
||
//теперь найдем дисциплину такую же
|
||
$dname= str_replace(' ',' ',$up_cur['name']);
|
||
$sql = 'SELECT id,id_file, index1, name FROM '.$this->TUchebplans.' WHERE id_file='.$up_file_oth['id_file'].' AND index1="'.$up_cur['index1'].'" AND (name="'.$up_cur['name'].'" OR name="'.$dname.'" OR REPLACE(name," "," ")="'.$dname.'")';
|
||
$rez = $this->DB->QUR_SEL($sql);
|
||
//echo $sql.'<pre>'.print_r($rez,1).'</pre>';
|
||
//Документальное сопровождение работ в строительстве
|
||
//SELECT id,id_file, index1, name FROM acs_fshp_uchebplans WHERE id_file=95 AND index1="ФТД.01" AND name="Документальное сопровождение работ в строительстве"
|
||
if(!$rez['err']&&$rez['kol']){
|
||
$up_oth = $rez['rez'][0];
|
||
//$out['up_cur']=$up_cur;
|
||
//$out['up_file_cur']=$up_file_cur;
|
||
//теперь найдем кто разрабатывал РПД в другом году
|
||
$out = $this->disciplin_check_other_year_05($up_file_oth,$up_oth);
|
||
}else {
|
||
//попробуем найти без шифра! путают их в учебных планах!
|
||
$sql = 'SELECT id,id_file, index1, name FROM '.$this->TUchebplans.' WHERE id_file='.$up_file_oth['id_file'].' AND name="'.$up_cur['name'].'"';
|
||
$rez = $this->DB->QUR_SEL($sql);
|
||
if(!$rez['err']&&$rez['kol']){
|
||
$up_oth = $rez['rez'][0];
|
||
//теперь найдем кто разрабатывал РПД в другом году
|
||
$out = $this->disciplin_check_other_year_05($up_file_oth,$up_oth);
|
||
if(!isset($out['err'])) $out['err']='';
|
||
$out['err'] .= '4. Нашли дисциплину, но не по ШИФРУ';
|
||
}else {
|
||
$out['err'] = '4. Не нашли дисциплину в прошлом году [<span class="text-secondary">Файл:</span>'.$up_file_oth['id_file'].' <span class="text-secondary">Шифр:</span> '.$up_cur['index1'].' <span class="text-secondary">Дисцип:</span>'.$up_cur['name'].']';
|
||
}
|
||
}
|
||
return $out;
|
||
}
|
||
function disciplin_check_other_year_05($up_file_oth,$up_oth){
|
||
$out = array();
|
||
$sql = 'SELECT rs.id as rsid,rs.id_prepod,u.fio FROM '.$this->TRPD_save.' as rs,'.$this->Tusers.' as u WHERE rs.id_discip='.$up_oth['id'].' AND u.id=rs.id_prepod';
|
||
$rez = $this->DB->QUR_SEL($sql);
|
||
if(!$rez['err']&&$rez['kol']) {
|
||
$up_oth_user = $rez['rez'][0];
|
||
$out['up_oth'] = $up_oth;
|
||
$out['up_file_oth']=$up_file_oth;
|
||
$out['up_oth_user'] = $up_oth_user;
|
||
}else $out['err'] = '5. Не нашли кто разрабатывал эту дисциплину';
|
||
return $out;
|
||
}
|
||
|
||
/**
|
||
* Получение преподавателей на кафедре
|
||
* @param int $kaf_id
|
||
* @param string $kaf_name
|
||
* @return array
|
||
*/
|
||
function Prepods_Get_By_Kaf($kaf_id=0,$kaf_name=''){
|
||
$out=array();
|
||
$sql = 'SELECT u.id,u.fio,u.status FROM '.$this->Tteachers.' as t,'.$this->Tusers.' as u WHERE u.id=t.id_user AND t.kafedra="'.$kaf_name.'" ORDER BY u.fio';
|
||
$rez = $this->DB->QUR_SEL($sql);
|
||
if(!$rez['err']&&$rez['kol']){
|
||
$out = $rez['rez'];
|
||
}
|
||
return $out;
|
||
}
|
||
function Prepods_Get_all(){
|
||
$out=array();
|
||
if(!isset($_SESSION['prepods_all_all'])) {
|
||
$sql = 'SELECT u.id,u.fio,u.status FROM ' . $this->Tteachers . ' as t,' . $this->Tusers . ' as u WHERE u.id=t.id_user AND u.status>=0 ORDER BY u.fio';
|
||
$rez = $this->DB->QUR_SEL($sql);
|
||
//echo $sql.'<pre>'.print_r($rez,1).'</pre>';exit();
|
||
if (!$rez['err'] && $rez['kol']) {
|
||
$out = $_SESSION['prepods_all_all'] = $rez['rez'];
|
||
}
|
||
}else{
|
||
$out = $_SESSION['prepods_all_all'];
|
||
}
|
||
return $out;
|
||
}
|
||
|
||
} |