EIOS/rabprog/inc/class_RPDSign.php

828 lines
47 KiB
PHP
Raw Permalink 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.

<?php
class class_RPDSign{
private $DB=null;
private $TFile='';
private $TFiles='';
private $TUchebplans='';
private $TUchebplansPrepod='';
private $TUchebplans_compet='';
private $TCompet='';
private $Tteachers='';
private $Tusers='';
private $Trpdsave='';
private $Trpdsign='';
private $Trpdhash='';
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->Trpdsave = $ST['dbpf'].'_fshp_rpd_save';
/*acs_fshp_rpd_signs: id data_c id_user id_rpd sign descrip */
$this->Trpdsign = $ST['dbpf'].'_fshp_rpd_signs';
$this->Trpdhash = $ST['dbpf'].'_fshp_rpd_save_hash';
$this->TLibCheck = $ST['dbpf'].'_fshp_libchecks';
$this->debug=array();
}
public function RPD_sign_DES($data){
$out['err']=0;
$out['msg']='---';
/*acs_fshp_rpd_signs: id data_c id_user id_rpd sign descrip */
$id_rpd = (int)$data['id_disc'];
$sign = (int)$data['sign'];
$kafvyp = (int)$data['kafvyp'];
$descr = $this->DB->rescape($data['descr']);
$who = '---';
$pr_kaf=0;
$out['file_pdf']='';
if(isset($_SESSION['user']['statuses'][79])){
$who = 'Проректор';
//сам проректор может быть завкафом
$sql = 'SELECT sign FROM '.$this->Trpdsign.' WHERE id_rpd='.$id_rpd.' ORDER BY data_c DESC LIMIT 1';
$rez = $this->DB->QUR_SEL($sql);
if(!$rez['err']&&$rez['kol']&&$rez['rez'][0]['sign']=='Разработчик') {
$pr_kaf=1;
if($kafvyp==1) $who = 'Зав.вып.каф.'; else $who = 'Зав.каф.';
}
}else{
if(isset($_SESSION['user']['statuses'][30])){
if($kafvyp==1) $who = 'Зав.вып.каф.'; else $who = 'Зав.каф.';
}
}
if($sign==1){
if(isset($_SESSION['user']['statuses'][79])){//надо сформировать PDF!
if($pr_kaf==0) {//только когда проректор!
$id_disc = $id_rpd;
$class_RPD = new class_RPD();
//получаем главную дисциплину учебного плана
$DISCIPS = $class_RPD->Disciplin_Get_Grupp($id_disc);
//echo '<pre>'.print_r($DISCIPS,1).'</pre>'; exit();
$DISCIP = $class_RPD->DISCIP_get_Main($DISCIPS);
//echo '<pre>'.print_r($DISCIP,1).'</pre>'; exit();
$fpdf = $class_RPD->RPD_GetPDF($DISCIP['id'], $id_disc, 0);
//echo '$id_disc='.$id_disc.'<pre>'.print_r($fpdf,1).'</pre>';
//echo '<pre>'.print_r($DISCIPS,1).'</pre>';
//echo '<pre>'.print_r($DISCIP,1).'</pre>';
//exit();
//$fpdf = $class_RPD->RPD_GetPDF_by_SaveID($id_disc,0,0);
$out['file_pdf'] = $fpdf['file'];
$descrsql = $out['file_pdf'];
}else{//иначе проректор подписывает как зав.каф
$descrsql = 'Подписано. '.$descr;
}
}else{
$descrsql = 'Подписано. '.$descr;
}
if($_SESSION['user']['id'] == 343 && $who == 'Проректор'){
$id_user = 565; //Задорожная Людмила Ивановна
}else{
$id_user = $_SESSION['user']['id'];
}
$sql = 'INSERT INTO '.$this->Trpdsign.' VALUES (0,'.time().','.$_SESSION['user']['id'].','.$id_rpd.',"'.$who.'","'.$descrsql.'",1)';
$rez = $this->DB->QUR($sql);
if(!$rez['err']){
$out['err']=0;
$out['msg']='Рабочую программу отправили далее на подпись';
}else{
$out['err']=1;
$out['msg']='Ошибка при сохранении!';
}
}else{
$sql = 'INSERT INTO '.$this->Trpdsign.' VALUES (0,'.time().','.$_SESSION['user']['id'].','.$id_rpd.',"'.$who.'","Не подписано. '.$descr.'",0)';
$rez = $this->DB->QUR($sql);
if(!$rez['err']){
$out['err']=0;
$out['msg']='Рабочую программу отправили на доработку!';
}else{
$out['err']=1;
$out['msg']='Ошибка при сохранении!';
}
}
//Удалим из кэша
$sql1 = 'SELECT sign FROM '.$this->Trpdsign.' WHERE id_rpd='.$id_rpd.' ORDER BY data_c DESC LIMIT 1';
$this->cache_sess($sql1,'RPDsign_Cache','del');
return $out;
}
public function HTML(){
GLOBAL $WorkDIR;
$CHPU = new class_CHPU($WorkDIR);
$URLS = $CHPU->uri();
$smartyC = new class_smarty();
$smarty = $smartyC->config(__DIR__.'\..\tpl');
//обработка АЯКС запросов
if(isset($_POST['ajdes'])){
header('Content-Type: application/json; charset=utf-8');
$out=array();
//Подпись РПД и отправка на проверку
if($_POST['ajdes']=='RPDSignURL'){
$id_disc = (int)$_POST['id_disc'];
$hr = $this->DB->rescape($_POST['hr']);
$url = $this->DB->rescape($_POST['url']);
$descrip = $hr.'|#|'.$url;
$sql = 'UPDATE '.$this->Trpdsign.' SET descrip="'.$descrip.'" WHERE id_rpd='.$id_disc.' AND sign="Проректор" AND status=1';
$rez = $this->DB->QUR($sql);
//$out['sql']=$sql;
//$out['rez']=$rez;
if(!$rez['err']){
$out['err']=0;
$out['msg']='Сохранили ссылку';
}else{
$out['err']=1;
$out['msg']='Ссылку не сохранили. ошибка!';
}
}
if($_POST['ajdes']=='RPDSign'){
$out = $this->RPD_sign_DES($_POST);
}
echo json_encode($out);
exit();
}
$view = 'all';
$out = array('name'=>'РПД','body'=>'');
//Удаление подписи РПД
if(isset($URLS[1])&&$URLS[1]=='delsign') {
$id = (int)$URLS[2];
$sql = 'DELETE FROM '.$this->Trpdsign.' WHERE id='.$id.' AND id_user='.$_SESSION['user']['id'];
$rez = $this->DB->QUR($sql);
}
//Отображение РПД
if(isset($URLS[1])&&$URLS[1]=='pdf') {
$id_disc = (int)$URLS[2];
$class_RPD = new class_RPD();
$rez = $class_RPD->RPD_GetPDF_by_SaveID($id_disc);
$out['body'] = $rez['body'];
}
$show='all'; if(isset($_SESSION['user']['statuses'][79])){ $show='rs1'; }
if($URLS[1]=='rs1') { $show='rs1'; }
if($URLS[1]=='rs2') { $show='rs2'; }
if($URLS[1]=='rs3') { $show='rs3'; }
if($URLS[1]=='rs4') { $show='rs4'; }
if(!isset($URLS[1])||$URLS[1]=='all'||$URLS[1]=='rs1'||$URLS[1]=='rs2'||$URLS[1]=='rs3'||$URLS[1]=='rs4') {
$dis = $this->Disciplins($show);
$smarty->assign('navpages', $dis['nav']);
$smarty->assign('DISCIPS', $dis['items']);
$smarty->assign('aUSER',$_SESSION['user']);
$smarty->assign('show',$show);
$smarty->assign('debug_sql',$this->debug);
$out['body'] = $smarty->fetch('page_rpds_signs.html');
}
return $out;
}
function debug_sql($sql){
$key = md5($sql);
if(!isset($this->debug[$key])) {
$this->debug[$key]['sql'] = $sql;
$this->debug[$key]['times'][] = round(microtime(),3);
}else{
$last = round(microtime(),3);
$this->debug[$key]['times'][] = $last;
$this->debug[$key]['time'] = $last - $this->debug[$key]['times'][0];
}
}
/**
* Кэширование SQL запросов
* @param $sql1
* @param $key
* @return array|mixed|null
*/
function cache_sess($sql1,$key='RPDsign_Cache',$des='add'){
if($des=='del'){
if(isset($_SESSION[$key][md5($sql1)]))
unset($_SESSION[$key][md5($sql1)]);
}else {
if (!isset($_SESSION[$key][md5($sql1)])) {
$rez1 = $this->DB->QUR_SEL($sql1);
$_SESSION[$key][md5($sql1)] = $rez1;
} else {
$rez1 = $_SESSION[$key][md5($sql1)];
}
}
return $rez1;
}
/**
* Выбор назначенных дисциплин преподавтелю
* @param int $id_user
* @return array
*/
public function Disciplins($show=''){
GLOBAL $URLS;
$out=array(); $debug=array();
//if($id_user==0) $id_user = $_SESSION['user']['id'];
//echo '<pre>'.print_r($_SESSION,1).'</pre>';
//echo '<pre>'.print_r($URLS,1).'</pre>';exit();
$perpage = 10;
$navpage = 1; if(isset($URLS['navpage'])) $navpage = (int)$URLS['navpage'];
$start = ($navpage-1)*$perpage;
$kafname = $_SESSION['user']['teachers']['kafedra'];
$search = ''; if(isset($_POST['search'])) $search = $this->DB->rescape($_POST['search']);
$cYear = 'AND f.god_nach_podgot='.$_SESSION['year_cur'];
if(isset($_SESSION['user']['statuses'][79])){
//$sql = 'SELECT
// u.id,u.index1,u.kaf_name,u.name,f.shifr,f.program,f.naprav,f.kafedra as kaf_name_vyp,f.god_nach_podgot,f.fo,f.srok_poluch_obr
//FROM
// '.$this->TUchebplansPrepod.' as up,
// '.$this->TUchebplans.' as u,
// '.$this->TFile.' as f,
// '.$this->Trpdsign.' as s
//WHERE
// up.id_uchebplans=u.id AND
// u.id_file = f.id_file AND
// s.id_rpd=u.id';
//if($show=='all') $sql .= ' AND (s.sign="Зав.вып.каф." OR s.sign="Зав.каф.") AND s.status=1';
//if($show=='rs1') $sql .= ' AND (s.sign="Зав.вып.каф." AND s.status=1)';//на подпись от проректора
//if($show=='rs2') $sql .= ' AND (s.sign="Проректор") AND s.status=1';//подписанные проректором
$rpds=array();
if($show=='all') $sql = 'SELECT id_rpd FROM '.$this->Trpdsign.' WHERE (sign="Зав.вып.каф." OR sign="Зав.каф.") AND status=1 ORDER BY data_c DESC';
if($show=='rs1') $sql = 'SELECT id_rpd FROM '.$this->Trpdsign.' WHERE sign="Зав.вып.каф." AND status=1 ORDER BY data_c DESC';
if($show=='rs2') $sql = 'SELECT id_rpd FROM '.$this->Trpdsign.' WHERE sign="Проректор" AND status=1 ORDER BY data_c DESC';
if($show=='rs3') $sql = 'SELECT id_rpd FROM '.$this->Trpdsign.' WHERE (sign="Разработчик" OR sign="Зав.каф.") AND status=1 ORDER BY data_c DESC';
if($show=='rs4') $sql = 'SELECT id_rpd FROM '.$this->Trpdsign.' WHERE (sign="Проректор") AND status=1 ORDER BY data_c DESC';
$rez = $this->DB->QUR_SEL($sql);
//echo $sql; exit();
if(!$rez['err']&&$rez['kol']){
foreach($rez['rez'] as $key => $val){
if($show=='all'||$show=='rs2') $rpds[]=$val['id_rpd'];
if($show=='rs1'){
$sql1 = 'SELECT sign FROM '.$this->Trpdsign.' WHERE id_rpd='.$val['id_rpd'].' ORDER BY data_c DESC LIMIT 1';
$rez1 = $this->cache_sess($sql1);
if (!$rez1['err'] && $rez1['kol'] && $rez1['rez'][0]['sign'] == "Зав.вып.каф.") $rpds[] = $val['id_rpd'];
}
if($show=='rs3'){
$sql1 = 'SELECT sign FROM '.$this->Trpdsign.' WHERE id_rpd='.$val['id_rpd'].' ORDER BY data_c DESC LIMIT 1';
$rez1 = $this->cache_sess($sql1);
if(!$rez1['err']&&$rez1['kol']&&($rez1['rez'][0]['sign']=="Зав.каф."||$rez1['rez'][0]['sign']=="Разработчик")) $rpds[]=$val['id_rpd'];
}
if($show=='rs4'){
$sql1 = 'SELECT sign FROM '.$this->Trpdsign.' WHERE id_rpd='.$val['id_rpd'].' ORDER BY data_c DESC LIMIT 1';
$rez1 = $this->cache_sess($sql1);
if(!$rez1['err']&&$rez1['kol']&&($rez1['rez'][0]['sign']=="Проректор")) $rpds[]=$val['id_rpd'];
}
}
}
$kafname = $_SESSION['user']['teachers']['kafedra'];
$sql = 'SELECT
u.id,u.index1,u.kaf_name,u.name,f.shifr,f.program,f.naprav,f.profil,f.kafedra as kaf_name_vyp,f.god_nach_podgot,f.fo,f.srok_poluch_obr
FROM
'.$this->TUchebplansPrepod.' as up,
'.$this->TUchebplans.' as u,
'.$this->TFile.' as f
WHERE
up.id_uchebplans=u.id AND
u.id_file = f.id_file '.$cYear.' AND
u.id IN ('.implode(',',$rpds).')';
if($show=='rs3') $sql .= ' AND (u.kaf_name="'.$kafname.'" OR f.kafedra="'.$kafname.'")';
if($show=='rs4') $sql .= ' AND (u.kaf_name="'.$kafname.'" OR f.kafedra="'.$kafname.'")';
if($search!='') $sql .= ' AND (u.index1 LIKE "%'.$search.'%" OR name LIKE "%'.$search.'%")';
//echo $sql; exit();
}
else{
//тут надо разделить зав.кафов преподов и зав.кафов выпускающ кафедр!
if(isset($_SESSION['user']['statuses'][30])){
$kafname = $_SESSION['user']['teachers']['kafedra'];
if($kafname=='Кафедра госпитальной терапии и последипломного образования') $kafname='Госпитальной терапии и последипломного образования';
if($kafname=='Кафедра госпитальной хирургии и последипломного образования') $kafname='Госпитальной хирургии и последипломного образования';
//иностранного языка
//u.kaf_kod!
//SELECT
// u.id,u.index1,u.kaf_name,u.name,f.shifr,f.program,f.naprav,f.kafedra as kaf_name_vyp,f.god_nach_podgot,f.fo,f.srok_poluch_obr
// FROM
// acs_fshp_disciplin_prepod as up,
// acs_fshp_uchebplans as u,
// acs_fshp_file as f,
// acs_fshp_rpd_signs as s
// WHERE
// (u.kaf_name="Иностранных языков" OR f.kafedra="Иностранных языков") AND
// up.id_uchebplans=u.id AND
// u.id_file = f.id_file AND
// s.id_rpd=u.id AND
// s.id_rpd=u.id AND s.sign="Разработчик" AND s.status=1
$sql = 'SELECT
u.id,u.index1,u.kaf_name,u.name,f.shifr,f.program,f.naprav,f.profil,f.kafedra as kaf_name_vyp,f.god_nach_podgot,f.fo,f.srok_poluch_obr
FROM
'.$this->TUchebplansPrepod.' as up,
'.$this->TUchebplans.' as u,
'.$this->TFile.' as f,
'.$this->Trpdsign.' as s
WHERE
(u.kaf_name="'.$kafname.'" OR f.kafedra="'.$kafname.'") AND
up.id_uchebplans=u.id AND
u.id_file = f.id_file '.$cYear.' AND
s.id_rpd=u.id AND
s.id_rpd=u.id AND s.sign="Разработчик" AND s.status=1';
if($search!='') $sql .= ' AND (u.index1 LIKE "%'.$search.'%" OR name LIKE "%'.$search.'%")';
}
}
//echo '--'.$search.'<br>'.$sql;
if($search!=''){
$nav['all'] = 0;
$nav['pages'] = 0;
$sql .= ' GROUP BY u.id ORDER BY f.god_nach_podgot,f.shifr,f.naprav,f.profil, up.data_c DESC';
}else {
$nav = $this->DB->navpage($sql, 'u.id', $perpage);
if (isset($_SESSION['user']['statuses'][30]) && !isset($_SESSION['user']['statuses'][79])) {
$sql .= ' GROUP BY u.id ORDER BY f.god_nach_podgot,f.shifr,f.naprav,f.profil, up.data_c DESC LIMIT ' . $start . ',' . $perpage;
} else {//проректор
$sql .= ' GROUP BY u.id ORDER BY f.god_nach_podgot,f.shifr,f.naprav,f.profil, up.data_c DESC LIMIT ' . $start . ',' . $perpage;
//тоже работает
//$sql = 'SELECT
// u.id,u.index1,u.kaf_name,u.name,f.shifr,f.program,f.naprav,f.kafedra as kaf_name_vyp,f.god_nach_podgot,f.fo,f.srok_poluch_obr
//FROM '.$this->Trpdsign.' as s
//right join '.$this->TUchebplans.' as u ON s.id_rpd=u.id
//right join '.$this->TFile.' as f ON u.id_file = f.id_file
//right join '.$this->TUchebplansPrepod.' as up ON u.id=up.id_uchebplans
//WHERE ';
//if($show=='all') $sql .= ' (s.sign="Зав.вып.каф." OR s.sign="Зав.каф.") AND s.status=1';
//if($show=='rs1') $sql .= ' (s.sign="Зав.вып.каф." AND s.status=1 AND s.sign!="Проректор")';//на подпись от проректора
//if($show=='rs2') $sql .= ' (s.sign="Проректор" AND s.status=1)';//подписанные проректором
//$sql .=' ORDER BY s.status DESC, f.god_nach_podgot,f.shifr,f.naprav,f.profil, up.data_c DESC LIMIT '.$start.','.$perpage;
}
}
//echo '--'.$search.'<br>'.$sql;
//--Б1.В.08.03(К)
//SELECT u.id,u.index1,u.kaf_name,u.name,f.shifr,f.program,f.naprav,f.kafedra as kaf_name_vyp,f.god_nach_podgot,f.fo,f.srok_poluch_obr FROM acs_fshp_disciplin_prepod as up, acs_fshp_uchebplans as u, acs_fshp_file as f WHERE up.id_uchebplans=u.id AND u.id_file = f.id_file AND u.id IN (22425,5643,5559,19459,19453,19448,21519,22989,25664,20541,20552,19443,25610,25562,25607,25560,29307,29235,29235,24025,24025,24025,24026,22981,18268,18276,1028,4287,4283,26753,4391,4420) AND (u.index1 LIKE "%Б1.В.08.03(К)%" OR name LIKE "%Б1.В.08.03(К)%")
$out['nav'] = $nav;
$out['nav']['curpage'] = $navpage;
$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){
$v['saveinfo'] = $this->SaveInfo($v['id']);
$rpdsigns = $this->RPDSigns($v['id']);
if(count($rpdsigns)==0) $edit=0; else $edit=1;
//определяем зав.каф является зав.кафедрой и зав. выпускающей кафедрой
//if($v['kaf_name']==$v['kaf_name_vyp']) $v['kafvyp'] = 1; else $v['kafvyp'] = 0;
//$v['kaf_name_vyp1'] = $kafname;
if(mb_strtolower(trim($kafname))==mb_strtolower(trim($v['kaf_name_vyp']))) {
$v['kafvyp'] = 1;
} else {
$v['kafvyp'] = 0;
}
//echo '['.$kafname.'] = ['.$v['kaf_name_vyp'].'] = '.$v['kafvyp'].'<br>';
$v['pur']=0; //echo $_SESSION['user']['statuses'][30];
if(isset($_SESSION['user']['statuses'][30])&&!isset($_SESSION['user']['statuses'][79])){
if($v['kafvyp']==1){
//echo '1';
if(mb_strtolower(trim($v['kaf_name']))==mb_strtolower(trim($kafname))){//мы являемся и кафедрой препода и выпускающей
//echo '<pre>'.print_R($rpdsigns[0],1).'</pre>';
if ($rpdsigns[0]['sign'] == 'Разработчик' && $rpdsigns[0]['status'] == 1) $edit = 1;
if ($rpdsigns[0]['sign'] == 'Зав.каф.' && $rpdsigns[0]['status'] == 1) $edit = 1;
if ($rpdsigns[0]['sign'] == 'Зав.каф.' && $rpdsigns[0]['status'] == 0) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.вып.каф.' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.вып.каф.' && $rpdsigns[0]['status'] == 0) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Проректор' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Проректор' && $rpdsigns[0]['status'] == 0) $edit = 1;
}else{
if ($rpdsigns[0]['sign'] == 'Разработчик' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.каф.' && $rpdsigns[0]['status'] == 1) $edit = 1;
if ($rpdsigns[0]['sign'] == 'Зав.каф.' && $rpdsigns[0]['status'] == 0) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.вып.каф.' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.вып.каф.' && $rpdsigns[0]['status'] == 0) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Проректор' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Проректор' && $rpdsigns[0]['status'] == 0) $edit = 1;
}
}else {
if ($rpdsigns[0]['sign'] == 'Разработчик' && $rpdsigns[0]['status'] == 1) $edit = 1;
if ($rpdsigns[0]['sign'] == 'Зав.каф.' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.каф.' && $rpdsigns[0]['status'] == 0) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.вып.каф.' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.вып.каф.' && $rpdsigns[0]['status'] == 0) $edit = 1;
if ($rpdsigns[0]['sign'] == 'Проректор' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Проректор' && $rpdsigns[0]['status'] == 0) $edit = 0;
}
}else{
if(isset($_SESSION['user']['statuses'][79])){
//echo $k.'<pre>'.print_r($v,1).'</pre>';
//ПРОРЕКТОР ТОЖЕ ЗАВ.КАФЕДРОЙ!
if($v['kafvyp']==1){//мы являемся и кафедрой выпускающей
if(mb_strtolower(trim($v['kaf_name']))==mb_strtolower(trim($kafname))){//мы являемся и кафедрой препода и выпускающей
if ($rpdsigns[0]['sign'] == 'Разработчик' && $rpdsigns[0]['status'] == 1) $edit = 1;
if ($rpdsigns[0]['sign'] == 'Зав.каф.' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.каф.' && $rpdsigns[0]['status'] == 0) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.вып.каф.' && $rpdsigns[0]['status'] == 1) { $edit = 1; $v['pur'] = 1; }
if ($rpdsigns[0]['sign'] == 'Зав.вып.каф.' && $rpdsigns[0]['status'] == 0) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Проректор' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Проректор' && $rpdsigns[0]['status'] == 0) $edit = 1;
}else{
if ($rpdsigns[0]['sign'] == 'Разработчик' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.каф.' && $rpdsigns[0]['status'] == 1) $edit = 1;
if ($rpdsigns[0]['sign'] == 'Зав.каф.' && $rpdsigns[0]['status'] == 0) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.вып.каф.' && $rpdsigns[0]['status'] == 1) $edit = 1;
if ($rpdsigns[0]['sign'] == 'Зав.вып.каф.' && $rpdsigns[0]['status'] == 0) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Проректор' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Проректор' && $rpdsigns[0]['status'] == 0) $edit = 1;
}
}else {
$v['pur'] = 1;
if ($rpdsigns[0]['sign'] == 'Зав.каф.' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.вып.каф.' && $rpdsigns[0]['status'] == 1) $edit = 1;
if ($rpdsigns[0]['sign'] == 'Проректор' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Проректор' && $rpdsigns[0]['status'] == 0) $edit = 0;
}
}
}
$v['file_pdf'] = '';
if($rpdsigns[0]['sign']=='Проректор'&&$rpdsigns[0]['status']==1) {
$tmp = explode('|#|',$rpdsigns[0]['descrip']);
//$v['file_pdf'] = $rpdsigns[0]['descrip'];
$v['file_pdf'] = $tmp[0];
$v['url_pdf'] = $tmp[1];
}
$v['rpdsigns'] = $rpdsigns;
$v['edit'] = $edit;
$out['items'][] = $v;
}
}
//echo $sql.'<pre>'.print_r($out,1).'</pre>';exit();
return $out;
}
/**
* Выбор назначенных дисциплин преподавтелю
* @param int $id_user
* @return array
*/
public function Disciplins_for_ZAVYPKAF($show=''){
GLOBAL $URLS;
$out=array();
$kafname = $_SESSION['user']['teachers']['kafedra'];
$cYear = 'AND f.god_nach_podgot='.$_SESSION['year_cur'];
//тут надо разделить зав.кафов преподов и зав.кафов выпускающ кафедр!
if(isset($_SESSION['user']['statuses'][30])){
$kafname = $_SESSION['user']['teachers']['kafedra'];
if($kafname=='Кафедра госпитальной терапии и последипломного образования') $kafname='Госпитальной терапии и последипломного образования';
if($kafname=='Кафедра госпитальной хирургии и последипломного образования') $kafname='Госпитальной хирургии и последипломного образования';
$sql = 'SELECT
u.id,u.index1,u.kaf_name,u.name,f.shifr,f.program,f.naprav,f.kafedra as kaf_name_vyp,f.god_nach_podgot,f.fo,f.srok_poluch_obr
FROM
'.$this->TUchebplansPrepod.' as up,
'.$this->TUchebplans.' as u,
'.$this->TFile.' as f,
'.$this->Trpdsign.' as s
WHERE
f.kafedra="'.$kafname.'" AND
up.id_uchebplans=u.id AND
u.id_file = f.id_file '.$cYear.' AND
s.id_rpd=u.id AND
s.id_rpd=u.id AND s.sign="Разработчик" AND s.status=1';
}//(u.kaf_name="'.$kafname.'" OR f.kafedra="'.$kafname.'") AND
if (isset($_SESSION['user']['statuses'][30]) && !isset($_SESSION['user']['statuses'][79])) {
$sql .= ' GROUP BY u.id ORDER BY f.god_nach_podgot,f.shifr,f.naprav,f.profil, up.data_c DESC';
} else {//проректор
$sql .= ' GROUP BY u.id ORDER BY f.god_nach_podgot,f.shifr,f.naprav,f.profil, up.data_c DESC';
}
$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){
$rpdsigns = $this->RPDSigns($v['id']);
if(count($rpdsigns)==0) $edit=0; else $edit=1;
//определяем зав.каф является зав.кафедрой и зав. выпускающей кафедрой
if(mb_strtolower($kafname)==mb_strtolower($v['kaf_name_vyp'])) $v['kafvyp'] = 1; else $v['kafvyp'] = 0;
$v['pur']=0;
if(isset($_SESSION['user']['statuses'][30])&&!isset($_SESSION['user']['statuses'][79])){
if($v['kafvyp']==1){
if(mb_strtolower($v['kaf_name'])==mb_strtolower($kafname)){//мы являемся и кафедрой препода и выпускающей
if ($rpdsigns[0]['sign'] == 'Разработчик' && $rpdsigns[0]['status'] == 1) $edit = 1;
if ($rpdsigns[0]['sign'] == 'Зав.каф.' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.каф.' && $rpdsigns[0]['status'] == 0) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.вып.каф.' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.вып.каф.' && $rpdsigns[0]['status'] == 0) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Проректор' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Проректор' && $rpdsigns[0]['status'] == 0) $edit = 1;
}else{
if ($rpdsigns[0]['sign'] == 'Разработчик' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.каф.' && $rpdsigns[0]['status'] == 1) $edit = 1;
if ($rpdsigns[0]['sign'] == 'Зав.каф.' && $rpdsigns[0]['status'] == 0) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.вып.каф.' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.вып.каф.' && $rpdsigns[0]['status'] == 0) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Проректор' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Проректор' && $rpdsigns[0]['status'] == 0) $edit = 1;
}
}else {
if ($rpdsigns[0]['sign'] == 'Разработчик' && $rpdsigns[0]['status'] == 1) $edit = 1;
if ($rpdsigns[0]['sign'] == 'Зав.каф.' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.каф.' && $rpdsigns[0]['status'] == 0) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.вып.каф.' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.вып.каф.' && $rpdsigns[0]['status'] == 0) $edit = 1;
if ($rpdsigns[0]['sign'] == 'Проректор' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Проректор' && $rpdsigns[0]['status'] == 0) $edit = 0;
}
}else{
if(isset($_SESSION['user']['statuses'][79])){
//ПРОРЕКТОР ТОЖЕ ЗАВ.КАФЕДРОЙ!
if($v['kafvyp']==1){//мы являемся и кафедрой выпускающей
if(mb_strtolower($v['kaf_name'])==mb_strtolower($kafname)){//мы являемся и кафедрой препода и выпускающей
if ($rpdsigns[0]['sign'] == 'Разработчик' && $rpdsigns[0]['status'] == 1) $edit = 1;
if ($rpdsigns[0]['sign'] == 'Зав.каф.' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.каф.' && $rpdsigns[0]['status'] == 0) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.вып.каф.' && $rpdsigns[0]['status'] == 1) { $edit = 1; $v['pur'] = 1; }
if ($rpdsigns[0]['sign'] == 'Зав.вып.каф.' && $rpdsigns[0]['status'] == 0) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Проректор' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Проректор' && $rpdsigns[0]['status'] == 0) $edit = 1;
}else{
if ($rpdsigns[0]['sign'] == 'Разработчик' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.каф.' && $rpdsigns[0]['status'] == 1) $edit = 1;
if ($rpdsigns[0]['sign'] == 'Зав.каф.' && $rpdsigns[0]['status'] == 0) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.вып.каф.' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.вып.каф.' && $rpdsigns[0]['status'] == 0) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Проректор' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Проректор' && $rpdsigns[0]['status'] == 0) $edit = 1;
}
}else {
$v['pur'] = 1;
if ($rpdsigns[0]['sign'] == 'Зав.каф.' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Зав.вып.каф.' && $rpdsigns[0]['status'] == 1) $edit = 1;
if ($rpdsigns[0]['sign'] == 'Проректор' && $rpdsigns[0]['status'] == 1) $edit = 0;
if ($rpdsigns[0]['sign'] == 'Проректор' && $rpdsigns[0]['status'] == 0) $edit = 0;
}
}
}
$v['file_pdf'] = '';
if($rpdsigns[0]['sign']=='Проректор'&&$rpdsigns[0]['status']==1) {
$tmp = explode('|#|',$rpdsigns[0]['descrip']);
//$v['file_pdf'] = $rpdsigns[0]['descrip'];
$v['file_pdf'] = $tmp[0];
$v['url_pdf'] = $tmp[1];
}
$v['rpdsigns'] = $rpdsigns;
$v['edit'] = $edit;
$out['items'][] = $v;
}
}
return $out;
}
/**
* Получение информации о сохраненных данных
* @param $id_rpd
* @return array
*/
public function RPDSigns($id_rpd,$user=0){
$out=array();
/*acs_fshp_rpd_signs: id data_c id_user id_rpd sign descrip*/
if($user==0) {//не берем ФИО
$sql = 'SELECT * FROM ' . $this->Trpdsign . ' WHERE id_rpd=' . $id_rpd . ' ORDER BY data_c DESC';
}else{
$sql = 'SELECT s.*,u.fio,t.zvanie,t.dolgnost,t.stepen,t.fakultet,t.kafedra FROM ' . $this->Trpdsign . ' as s,'.$this->Tusers.' as u,'.$this->Tteachers.' as t WHERE s.id_rpd=' . $id_rpd . ' AND s.id_user=u.id AND u.id=t.id_user ORDER BY s.data_c DESC';
}
$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){
$out[] = $v;
}
}
return $out;
}
/**
* Получение информации о сохраненных данных для PDF нужны только последние
* @param $id_rpd
* @return array
*/
public function RPDSignsPDF($id_rpd,$user=0,$kafname=''){
$out=array();
/*acs_fshp_rpd_signs: id data_c id_user id_rpd sign descrip*/
if($user==0) {//не берем ФИО
$sql = 'SELECT * FROM ' . $this->Trpdsign . ' WHERE id_rpd=' . $id_rpd . ' ORDER BY data_c DESC';
}else{
$sql = 'SELECT
s.*,u.fio,t.zvanie,t.dolgnost,t.stepen,t.fakultet,t.kafedra
FROM
' . $this->Trpdsign . ' as s,
'.$this->Tusers.' as u,
'.$this->Tteachers.' as t
WHERE
s.id_rpd=' . $id_rpd . ' AND
s.status=1 AND
s.id_user=u.id AND
u.id=t.id_user
ORDER BY s.data_c DESC';
}
$rez = $this->DB->QUR_SEL($sql);
//echo $sql.'<pre>'.print_r($rez,1).'</pre>'; exit();
$wh['raz']=0;//Разработчик
$wh['zak']=0;//Зав.каф.
$wh['zvk']=0;//Зав.вып.каф.
$wh['pur']=0;//Проректор
$dubl=array();
if(!$rez['err']&&$rez['kol']){
foreach ($rez['rez'] as $k => $v){
if($v['sign']=='Разработчик'&& $wh['raz']==0) { $out['raz'] = $v; $wh['raz']=1; }
if($v['sign']=='Зав.каф.'&& $wh['zak']==0) {
if($v['fio']=='хадж мохамед риад мурадович') $v['fio']='';
$out['zak'] = $v; $wh['zak']=1;
}
if($v['sign']=='Зав.вып.каф.'&&$wh['zvk']==0) {
$out['zvk'] = $v; $wh['zvk']=1;
$dubl = $v;
$dubl['sign'] = 'Зав.каф.';
}
if($v['sign']=='Проректор'&& $wh['pur']==0) { $out['pur'] = $v; $wh['pur']=1; }
if(count($dubl)){//Дублируем зав.вып.каф на зав.каф.
$out['zak'] = $dubl;
$dubl=array();
}
}
}
//echo $sql.'<prE>'.print_R($out,1).'</prE>';exit();
//Получаем подпись библиотеки! $this->TLibCheck.id_rpd - это acs_fshp_rpd_save.id
$out['lib']['fio']='И. Б. Берберьян';
$out['lib']['zvanie']='';
$out['lib']['dolgnost']='';
$out['lib']['stepen']='';
$out['lib']['fakultet']='';
$out['lib']['kafedra']='НБ МГТУ';
$out['lib']['data_c']=$rez['rez'][0]['data_c'];
$out['lib']['sign']='НБ МГТУ';
$out['lib']['descrip']='Не проверено';
$out['lib']['status']=0;
$sql = 'SELECT id FROM ' . $this->Trpdsave . ' WHERE id_discip=' . $id_rpd . ' ORDER BY data_c DESC LIMIT 1';
$rez = $this->DB->QUR_SEL($sql);
if(!$rez['err']&&$rez['kol']) {
$id_save = $rez['rez'][0]['id'];
$sql = 'SELECT * FROM ' . $this->TLibCheck . ' WHERE id_rpd=' . $id_save . ' ORDER BY data_c DESC';
$rez = $this->DB->QUR_SEL($sql);
//echo $sql.'<pre>'.print_r($rez,1).'</pre>';
$out['lib'] = array();
if (!$rez['err'] && $rez['kol']) {
//s.*,u.fio,t.zvanie,t.dolgnost,t.stepen,t.fakultet,t.kafedra
//Согласовано: НБ МГТУ ——также подпись простая электронная как у всех из кабинета, с выводом фамилии И. Б. Берберьян
$out['lib']['fio'] = 'И. Б. Берберьян';
$out['lib']['zvanie'] = '';
$out['lib']['dolgnost'] = '';
$out['lib']['stepen'] = '';
$out['lib']['fakultet'] = '';
$out['lib']['kafedra'] = 'НБ МГТУ';
$out['lib']['data_c'] = $rez['rez'][0]['data_c'];
$out['lib']['sign'] = 'НБ МГТУ';
$out['lib']['descrip'] = 'Проверено';
$out['lib']['status'] = 1;
}
}
$out1[] = $out['pur'];
$out1[] = $out['lib'];
$out1[] = $out['zvk'];
$out1[] = $out['zak'];
$out1[] = $out['raz'];
//echo '$out1=<pre>'.print_r($out1,1).'</pre>';exit();
return $out1;
}
/**
* Получение информации о сохраненных данных
* @param $id_rpd
* @return array
*/
public function SaveInfo($id_rpd){
$out=array('err'=>1,'msg'=>'пустой запрос');
//$polyas = array('razdel1'=>'Раздел 1','razdel2'=>'Раздел 2','razdel3'=>'Раздел 3','razdel4'=>'Раздел 4','razdel5'=>'Раздел 5','razdel5_4'=>'Раздел 5.4','razdel5_5'=>'Раздел 5.5','razdel5_6'=>'Раздел 5.6','razdel5_7'=>'Раздел 5.7','razdel5_8'=>'Раздел 5.8','razdel5_9'=>'Раздел 5.9','razdel6_1'=>'Раздел 6.1','razdel6_2'=>'Раздел 6.2','razdel7'=>'Раздел 7.1','razdel7_2'=>'Раздел 7.2','razdel7_3'=>'Раздел 7.3','razdel7_4'=>'Раздел 7.4','razdel8_1'=>'Раздел 8.1','razdel8_2'=>'Раздел 8.2','razdel8_3'=>'Раздел 8.3','razdel9'=>'Раздел 9','razdel10_1'=>'Раздел 10.1','razdel10_2'=>'Раздел 10.2','razdel11'=>'Раздел 11');
$polyas = array('razdel1'=>'1','razdel2'=>'2','razdel3'=>'3','razdel4'=>'4','razdel5'=>'5','razdel5_4'=>'5.4','razdel5_5'=>'5.5','razdel5_6'=>'5.6','razdel5_7'=>'5.7','razdel5_8'=>'5.8','razdel5_9'=>'5.9','razdel6_1'=>'6.1','razdel6_2'=>'6.2','razdel7'=>'7.1','razdel7_2'=>'7.2','razdel7_3'=>'7.3','razdel7_4'=>'7.4','razdel8_1'=>'8.1','razdel8_2'=>'8.2','razdel8_3'=>'8.3','razdel9'=>'9','razdel10_1'=>'10.1','razdel10_2'=>'10.2','razdel11'=>'11');
//TODO проблема когда назначаем одному преподавателю он делает, потом назначаем другому он делает и опять возвращаем первому, но дата сохранения остается от последнего! и сохранения возвращаем не те (не последние)
$sql = 'SELECT * FROM '.$this->Trpdsave.' WHERE id_discip='.$id_rpd.' ORDER BY data_c DESC LIMIT 1';
$rez = $this->DB->QUR_SEL($sql);
//$out['rez']=$rez;
if(!$rez['err']&&$rez['kol']){
$save = $rez['rez'][0];
$out['err']=0;
$out['save_id']=$save['id'];
$out['msg']='получили данные';
$out['is']=array();
$out['nul']=array();
foreach ($polyas as $k => $p){
if($save[$k]!='') $out['is'][] = $p;
else $out['nul'][] = $p;
}
}
return $out;
}
/**
* Получение информации о дисциплине
* @param $id
* @return array
*/
public function Disciplin($id){
$out = array();
$sql = 'SELECT * FROM '.$this->TUchebplans.' WHERE id='.$id.' LIMIT 1';
$rez = $this->DB->QUR_SEL($sql);
if(!$rez['err']&&$rez['kol']){
$rez['rez'][0]['json'] = json_decode($rez['rez'][0]['json'],1);
$out['uchebplan'] = $rez['rez'][0];
//надо подсчитать итого
$itogs = array();
foreach ($out['uchebplan']['json'] as $kurs => $kv) {
foreach ($kv as $sem => $kzan){
foreach ($kzan as $k => $zan){
if($k!='ze') $itogs[$kurs][$sem] += $zan;
}
}
}
$out['uchebplan']['itogs'] = $itogs;
$sql = 'SELECT * FROM '.$this->TFile.' WHERE id_file='.$out['uchebplan']['id_file'].' LIMIT 1';
$rez = $this->DB->QUR_SEL($sql);
if(!$rez['err']&&$rez['kol']){
$out['title'] = $rez['rez'][0];
}else{
$out['title'] = array();
}
$sql = 'SELECT c.* FROM '.$this->TUchebplans_compet.' as uc,'.$this->TCompet.' as c WHERE uc.id_uchebplans='.$id.' AND uc.id_compet=c.id ORDER BY c.index';
//GROUP BY c.index
$rez = $this->DB->QUR_SEL($sql);
//echo $sql.'<pre>'.print_r($rez,1).'</pre>';
if(!$rez['err']&&$rez['kol']){
foreach ($rez['rez'] as $k => $val){
$out['comp'][$val['index']] = $val['descrip'];
}
}else{
$out['comp'] = array();
}
}
return $out;
}
/**
* Автоподписание рпд после промежутка времени
* @param $hours
* @return void
*/
public function rpdsign_auto($hours){
$rpds = array();
//собираем все РПД с подписью от Зав.вып.каф.
$sql = 'SELECT data_c,id_rpd FROM acs_fshp_rpd_signs WHERE sign="Зав.вып.каф." AND status=1 GROUP BY id_rpd ORDER BY RAND()';
$rez = $this->DB->QUR_SEL($sql);
if(!$rez['err']&&$rez['kol']) {
foreach ($rez['rez'] as $key => $val) {
$rpds[] = $val;
}
}
//echo '<pre>'.print_r($rpds,1).'</pre>';
$rpds0 = array();
//Убираем все что уже пописано ПРОРЕКТОРОМ
foreach ($rpds as $key => $val) {
$sql1 = 'SELECT id_rpd FROM acs_fshp_rpd_signs WHERE sign="Проректор" AND status=1 AND id_rpd='.$val['id_rpd'];
$rez1 = $this->DB->QUR_SEL($sql1);
if(!$rez1['err']&&$rez1['kol']) {}else $rpds0[] = $val;
}
//echo '<pre>'.print_r($rpds0,1).'</pre>';
//проверим все ли попадают под время
$now = time();
foreach ($rpds0 as $key => $val) {
if( ($now - $val['data_c'])>=(60*60*3) ) {
//echo $val['id_rpd'] . ':' . date('H:i:s d.m.Y', $val['data_c']) . '<br>';
$class_RPD = new class_RPD();
//получаем главную дисциплину учебного плана
$DISCIPS = $class_RPD->Disciplin_Get_Grupp($val['id_rpd']);
$DISCIP = $class_RPD->DISCIP_get_Main($DISCIPS);
$fpdf = $class_RPD->RPD_GetPDF($DISCIP['id'], $val['id_rpd'], 0);
if($fpdf['file']!='') {
$sql = 'INSERT INTO ' . $this->Trpdsign . ' VALUES (0,' . time() . ',565,' . $val['id_rpd'] . ',"Проректор","' . $fpdf['file'] . '",1)';
$rez = $this->DB->QUR($sql);
if (!$rez['err']) {
//echo $val['id_rpd'] . ' - ОК';
} else {
//echo $val['id_rpd'] . ' - NO';
}
}else{
//echo $val['id_rpd'] . ' - NO FILE';
}
if ($key>=20) break;
}else{
//echo $val['id_rpd'] . ':' . date('H:i:s d.m.Y', $val['data_c']) . ' - рано<br>';
}
}
}
}