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.'
'.print_r($rez,1).'
'; 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.'
'.print_r($rez,1).'
'; $rez = $this->DB->QUR_SEL($sql); //echo $sql.'
'.print_r($rez,1).'
'; 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'].'
'; //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.'
'.print_r($out,1).'
'; 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.'
'.print_r($rez,1).'
'; //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. Не нашли дисциплину в прошлом году [Файл:'.$up_file_oth['id_file'].' Шифр: '.$up_cur['index1'].' Дисцип:'.$up_cur['name'].']'; }else $out['err'] = '3. Не нашли учебный план в прошлом году [Программа:'.$up_file_cur['program'].' Шифр:'.$up_file_cur['shifr'].' Направление:'.$up_file_cur['naprav'].' Профиль:'.$up_file_cur['profil'].' Кафедра:'.$up_file_cur['kafedra'].' Факультет:'.$up_file_cur['fakultet'].' Квалиф:'.$up_file_cur['kvalif'].' ГодНачПодг:'.($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.'
'.print_r($rez,1).'
'; //Документальное сопровождение работ в строительстве //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. Не нашли дисциплину в прошлом году [Файл:'.$up_file_oth['id_file'].' Шифр: '.$up_cur['index1'].' Дисцип:'.$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.'
'.print_r($rez,1).'
';exit(); if (!$rez['err'] && $rez['kol']) { $out = $_SESSION['prepods_all_all'] = $rez['rez']; } }else{ $out = $_SESSION['prepods_all_all']; } return $out; } }