1619 lines
89 KiB
PHP
1619 lines
89 KiB
PHP
|
<?php
|
|||
|
|
|||
|
class class_RPD{
|
|||
|
private $DB=null;
|
|||
|
private $TFile='';
|
|||
|
private $TFiles='';
|
|||
|
private $TUchebplans='';
|
|||
|
private $TUchebplansPrepod='';
|
|||
|
private $TUchebplans_compet='';
|
|||
|
private $TCompetModels='';
|
|||
|
private $TUchebplans_compet_sem='';
|
|||
|
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->TCompetModels = $ST['dbpf'].'_fshp_competmodels';
|
|||
|
$this->TUchebplans_compet_sem = $ST['dbpf'].'_fshp_competmodels_sem';
|
|||
|
$this->Tteachers = $ST['dbpf'].'_teachers';
|
|||
|
$this->Tusers = $ST['dbpf'].'_users';
|
|||
|
$this->Trpdsave = $ST['dbpf'].'_fshp_rpd_save';
|
|||
|
$this->TrpdsaveName = $ST['dbpf'].'_fshp_rpd_save_name';
|
|||
|
/*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';
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Подгатавливаем сохраненные данные
|
|||
|
* @param $SAVE
|
|||
|
* @return array|mixed
|
|||
|
*/
|
|||
|
public function SAVE_prepare($SAVE){
|
|||
|
if(!$SAVE['err']){
|
|||
|
if($SAVE['all']['razdel5']!='') $SAVE['all']['razdel5'] = json_decode($SAVE['all']['razdel5'],1);
|
|||
|
else $SAVE['all']['razdel5'] = array();
|
|||
|
if($SAVE['all']['razdel5_4']!='') $SAVE['all']['razdel5_4'] = json_decode($SAVE['all']['razdel5_4'],1);
|
|||
|
else $SAVE['all']['razdel5_4'] = array();
|
|||
|
if($SAVE['all']['razdel5_5']!='') $SAVE['all']['razdel5_5'] = json_decode($SAVE['all']['razdel5_5'],1);
|
|||
|
else $SAVE['all']['razdel5_5'] = array();
|
|||
|
if($SAVE['all']['razdel5_6']!='') $SAVE['all']['razdel5_6'] = json_decode($SAVE['all']['razdel5_6'],1);
|
|||
|
else $SAVE['all']['razdel5_6'] = array();
|
|||
|
if($SAVE['all']['razdel5_8']!='') $SAVE['all']['razdel5_8'] = json_decode($SAVE['all']['razdel5_8'],1);
|
|||
|
else $SAVE['all']['razdel5_8'] = array();
|
|||
|
if($SAVE['all']['razdel5_9']!='') $SAVE['all']['razdel5_9'] = json_decode($SAVE['all']['razdel5_9'],1);
|
|||
|
else $SAVE['all']['razdel5_9'] = array();
|
|||
|
if($SAVE['all']['razdel6_1']!='') {
|
|||
|
$tmp = json_decode($SAVE['all']['razdel6_1'],1);
|
|||
|
if($tmp) $SAVE['all']['razdel6_1'] = $tmp;
|
|||
|
}else $SAVE['all']['razdel6_1'] = array();
|
|||
|
if($SAVE['all']['razdel6_2']!='') $SAVE['all']['razdel6_2'] = json_decode($SAVE['all']['razdel6_2'],1);
|
|||
|
else $SAVE['all']['razdel6_2'] = array();
|
|||
|
if($SAVE['all']['razdel7_2']!='') $SAVE['all']['razdel7_2'] = json_decode($SAVE['all']['razdel7_2'],1);
|
|||
|
else $SAVE['all']['razdel7_2'] = array();
|
|||
|
if($SAVE['all']['razdel8_1']!='') $SAVE['all']['razdel8_1'] = json_decode($SAVE['all']['razdel8_1'],1);
|
|||
|
else $SAVE['all']['razdel8_1'] = array();
|
|||
|
if($SAVE['all']['razdel8_2']!='') $SAVE['all']['razdel8_2'] = json_decode($SAVE['all']['razdel8_2'],1);
|
|||
|
else $SAVE['all']['razdel8_2'] = array();
|
|||
|
if($SAVE['all']['razdel10_1']!='') $SAVE['all']['razdel10_1'] = json_decode($SAVE['all']['razdel10_1'],1);
|
|||
|
else $SAVE['all']['razdel10_1'] = array();
|
|||
|
if($SAVE['all']['razdel10_2']!='') $SAVE['all']['razdel10_2'] = json_decode($SAVE['all']['razdel10_2'],1);
|
|||
|
else $SAVE['all']['razdel10_2'] = array();
|
|||
|
if($SAVE['all']['razdel11']!='') $SAVE['all']['razdel11'] = json_decode($SAVE['all']['razdel11'],1);
|
|||
|
else $SAVE['all']['razdel11'] = array();
|
|||
|
if($SAVE['all']['razdel5_5_1']!='') $SAVE['all']['razdel5_5_1'] = json_decode($SAVE['all']['razdel5_5_1'],1);
|
|||
|
else $SAVE['all']['razdel5_5_1'] = array();
|
|||
|
$saveREZ = $SAVE['all'];
|
|||
|
}else{
|
|||
|
$saveREZ = array();
|
|||
|
}
|
|||
|
return $saveREZ;
|
|||
|
}
|
|||
|
public function DISCIP_get_Main($DISCIPS){
|
|||
|
//TODO тут возможна проблема, если при создании РПД
|
|||
|
//не будет очной, все привяжется к заочной
|
|||
|
// потом добавят очную и функция будет возвращать очное
|
|||
|
$out=array();
|
|||
|
if(isset($DISCIPS['Очная'])) {
|
|||
|
$out['id'] = $DISCIPS['Очная']['uchebplan']['id'];
|
|||
|
$out['DISCIP_name'] = $DISCIPS['Очная']['uchebplan']['name'];
|
|||
|
$out['id_file'] = $DISCIPS['Очная']['uchebplan']['id_file'];
|
|||
|
$out['shifr'] = $DISCIPS['Очная']['title']['shifr'];
|
|||
|
$out['namOP'] = $DISCIPS['Очная']['title']['naprav'];
|
|||
|
$out['main'] = 'Очная';
|
|||
|
}
|
|||
|
else if(isset($DISCIPS['Заочная'])) {
|
|||
|
$out['id'] = $DISCIPS['Заочная']['uchebplan']['id'];
|
|||
|
$out['DISCIP_name'] = $DISCIPS['Заочная']['uchebplan']['name'];
|
|||
|
$out['id_file'] = $DISCIPS['Заочная']['uchebplan']['id_file'];
|
|||
|
$out['shifr'] = $DISCIPS['Заочная']['title']['shifr'];
|
|||
|
$out['namOP'] = $DISCIPS['Заочная']['title']['naprav'];
|
|||
|
$out['main'] = 'Заочная';
|
|||
|
}
|
|||
|
else if(isset($DISCIPS['Очно-заочная'])) {
|
|||
|
$out['id'] = $DISCIPS['Очно-заочная']['uchebplan']['id'];
|
|||
|
$out['DISCIP_name'] = $DISCIPS['Очно-заочная']['uchebplan']['name'];
|
|||
|
$out['id_file'] = $DISCIPS['Очно-заочная']['uchebplan']['id_file'];
|
|||
|
$out['shifr'] = $DISCIPS['Очно-заочная']['title']['shifr'];
|
|||
|
$out['namOP'] = $DISCIPS['Очно-заочная']['title']['naprav'];
|
|||
|
$out['main'] = 'Очно-заочная';
|
|||
|
}
|
|||
|
//echo '<prE>'.print_r($out,1).'</prE>'; exit();
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
public function RPD_SaveHash($id_save,$hash){
|
|||
|
/*$this->DB->QUR('CREATE TABLE IF NOT EXISTS `'.$this->Trpdhash.'` (
|
|||
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
|||
|
`data_c` int(11) NOT NULL,
|
|||
|
`id_save` int(11) NOT NULL,
|
|||
|
`hash` varchar(255) NOT NULL,
|
|||
|
primary key (id)
|
|||
|
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;');*/
|
|||
|
$sql = 'SELECT id FROM '.$this->Trpdhash.' WHERE id_save='.$id_save;
|
|||
|
$rez = $this->DB->QUR_SEL($sql);
|
|||
|
if(!$rez['err']&&$rez['kol']){
|
|||
|
$sql = 'UPDATE '.$this->Trpdhash.' SET hash="'.$hash.'" WHERE id_save='.$id_save;
|
|||
|
$rez = $this->DB->QUR($sql);
|
|||
|
}else{
|
|||
|
$sql = 'INSERT INTO '.$this->Trpdhash.' VALUES (0,'.time().','.$id_save.',"'.$hash.'")';
|
|||
|
$rez = $this->DB->QUR($sql);
|
|||
|
}
|
|||
|
}
|
|||
|
public function RPD_GetHash($hash){
|
|||
|
GLOBAL $WorkDIR;
|
|||
|
$CHPU = new class_CHPU($WorkDIR);
|
|||
|
$URLS = $CHPU->uri();
|
|||
|
$smartyC = new class_smarty();
|
|||
|
$smarty = $smartyC->config(__DIR__.'\..\tpl');
|
|||
|
$sql = 'SELECT id_save FROM '.$this->Trpdhash.' WHERE hash="'.$hash.'"';
|
|||
|
$rez = $this->DB->QUR_SEL($sql);
|
|||
|
if(!$rez['err']&&$rez['kol']){
|
|||
|
$id_save = $rez['rez'][0]['id_save'];
|
|||
|
$sql = 'SELECT id_discip FROM '.$this->Trpdsave.' WHERE id="'.$id_save.'"';
|
|||
|
$rez = $this->DB->QUR_SEL($sql);
|
|||
|
if(!$rez['err']&&$rez['kol']){
|
|||
|
$id_discip = $rez['rez'][0]['id_discip'];
|
|||
|
$DISCIPS = $this->Disciplin_Get_Grupp($id_discip);
|
|||
|
//echo $id_save.'<pre>'.print_r($DISCIPS,1).'</pre>'; exit();
|
|||
|
$DISCIP = $this->DISCIP_get_Main($DISCIPS);
|
|||
|
if(isset($URLS[2])&&$URLS[2]=='show') {//ОТОБРАЖАЕМ PDF
|
|||
|
$SAVE = $this->RPD_check_row($id_discip,$_SESSION['user']['id']);
|
|||
|
$saveREZ = $this->SAVE_prepare($SAVE);
|
|||
|
$cFPDF = new class_TCPDF();
|
|||
|
$cFPDF->PDF_rpd($DISCIPS,$DISCIP,$saveREZ);
|
|||
|
}else {//ОТОБРАЖАЕМ ОТЧЕТ
|
|||
|
$class_RPDSign = new class_RPDSign();
|
|||
|
$signs = $class_RPDSign->RPDSigns($id_discip,1);
|
|||
|
if(count($signs)) {
|
|||
|
$signs = array_reverse($signs);
|
|||
|
$smarty->assign('signs', $signs);
|
|||
|
}
|
|||
|
else $smarty->assign('signs', array());
|
|||
|
$smarty->assign('DISCIPS', $DISCIPS);
|
|||
|
$smarty->assign('DISCIP', $DISCIP);
|
|||
|
$smarty->display('page_rpd_QR.html');
|
|||
|
}
|
|||
|
}
|
|||
|
}else{
|
|||
|
echo 'НЕТ ТАКОЙ РАБОЧЕЙ ПРОГРАММЫ ДИСЦИПЛИНЫ!';
|
|||
|
}
|
|||
|
exit();
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Получение ПДФ РПД по сохраненному ИД
|
|||
|
* @param $id_save
|
|||
|
* @param $id_disc_sign
|
|||
|
* @param $view
|
|||
|
* @return array
|
|||
|
* @throws SmartyException
|
|||
|
*/
|
|||
|
public function RPD_GetPDF_by_SaveID($id_save,$id_disc_sign=0,$view=1){
|
|||
|
GLOBAL $smarty;
|
|||
|
$id_disc = 0;
|
|||
|
$sql = 'SELECT id_discip FROM '.$this->Trpdsave.' WHERE id='.$id_save;
|
|||
|
$rez = $this->DB->QUR_SEL($sql);
|
|||
|
//echo $sql.'<pre>'.print_r($rez,1).'</pre>';
|
|||
|
if(!$rez['err']&&$rez['kol']){
|
|||
|
$id_disc = $rez['rez'][0]['id_discip'];
|
|||
|
}
|
|||
|
$DISCIPS = $this->Disciplin_Get_Grupp($id_disc);
|
|||
|
$DISCIP = $this->DISCIP_get_Main($DISCIPS);
|
|||
|
$id_file = $DISCIP['id_file'];
|
|||
|
|
|||
|
$id_discs = array();
|
|||
|
if(isset($DISCIPS['Очная'])) $id_discs[] = $DISCIPS['Очная']['uchebplan']['id'];
|
|||
|
if(isset($DISCIPS['Заочная'])) $id_discs[] = $DISCIPS['Заочная']['uchebplan']['id'];
|
|||
|
if(isset($DISCIPS['Очно-заочная'])) $id_discs[] = $DISCIPS['Очно-заочная']['uchebplan']['id'];
|
|||
|
|
|||
|
$DISCIPS['razdel71'] = $this->CompetGet_71($id_discs);
|
|||
|
$DISCIPS['razdel7'] = $this->CompetGet($id_file,$id_discs[0]);
|
|||
|
if(!count($DISCIPS['razdel7'])){//добавил 14092023
|
|||
|
$DISCIPS['razdel7'] = $this->CompetGet_ELSE($id_file,$id_discs,$DISCIPS);
|
|||
|
}
|
|||
|
|
|||
|
$id_disc_sign=$id_disc;
|
|||
|
//тут надо понять view_pdf когда ставить 0 или 1
|
|||
|
$SAVE = $this->RPD_check_row($id_disc,$_SESSION['user']['id'],$id_save);
|
|||
|
$saveREZ = $this->SAVE_prepare($SAVE);
|
|||
|
|
|||
|
$smarty->assign('save', $saveREZ);
|
|||
|
//unset($saveREZ['razdel7_3']);
|
|||
|
//echo htmlspecialchars($saveREZ['razdel7_3']);
|
|||
|
//echo '<pre>$DISCIPS:'.print_r($DISCIPS,1).'; $DISCIP:'.print_r($DISCIP,1).'; $saveREZ:'.print_r($saveREZ,1).'</pre>'; exit();
|
|||
|
$cFPDF = new class_TCPDF();
|
|||
|
$out = $cFPDF->PDF_rpd($DISCIPS,$DISCIP,$saveREZ,$view,$id_disc_sign);
|
|||
|
if(isset($out['hash'])){
|
|||
|
$this->RPD_SaveHash($saveREZ['id'],$out['hash']);
|
|||
|
}//signs
|
|||
|
if($view==1) {//отображаем иначе отдаем имя файла
|
|||
|
$out['body'] = $smarty->fetch('page_rpd_pdf.html');
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Получение ПДФ по ид рпд
|
|||
|
* @param $id_disc
|
|||
|
* @param $id_disc_sign
|
|||
|
* @param $view
|
|||
|
* @return array
|
|||
|
* @throws SmartyException
|
|||
|
*/
|
|||
|
public function RPD_GetPDF($id_disc,$id_disc_sign=0,$view=1){
|
|||
|
GLOBAL $smarty;
|
|||
|
$DISCIPS = $this->Disciplin_Get_Grupp($id_disc);
|
|||
|
$DISCIP = $this->DISCIP_get_Main($DISCIPS);
|
|||
|
$id_file = $DISCIP['id_file'];
|
|||
|
|
|||
|
$id_discs = array();
|
|||
|
if(isset($DISCIPS['Очная'])) $id_discs[] = $DISCIPS['Очная']['uchebplan']['id'];
|
|||
|
if(isset($DISCIPS['Заочная'])) $id_discs[] = $DISCIPS['Заочная']['uchebplan']['id'];
|
|||
|
if(isset($DISCIPS['Очно-заочная'])) $id_discs[] = $DISCIPS['Очно-заочная']['uchebplan']['id'];
|
|||
|
|
|||
|
$DISCIPS['razdel71'] = $this->CompetGet_71($id_discs);
|
|||
|
$DISCIPS['razdel7'] = $this->CompetGet($id_file,$id_discs[0]);
|
|||
|
if(!count($DISCIPS['razdel7'])){//добавил 14092023
|
|||
|
$DISCIPS['razdel7'] = $this->CompetGet_ELSE($id_file,$id_discs,$DISCIPS);
|
|||
|
}
|
|||
|
|
|||
|
if($id_disc_sign!=0) $id_disc=$id_disc_sign;
|
|||
|
$id_save=0; if(isset($_SESSION['user']['statuses'][79])){
|
|||
|
$id_save=0;
|
|||
|
$sql = 'SELECT id FROM '.$this->Trpdsave.' WHERE id_discip='.$id_disc.' LIMIT 1';
|
|||
|
$rez = $this->DB->QUR_SEL($sql);
|
|||
|
if(!$rez['err']&&$rez['kol']){
|
|||
|
$id_save=$rez['rez'][0]['id'];
|
|||
|
}
|
|||
|
}
|
|||
|
//тут надо понять view_pdf когда ставить 0 или 1
|
|||
|
if(!isset($_SESSION['user']['id'])) $SAVE = $this->RPD_check_row($id_disc,565,$id_save);
|
|||
|
else $SAVE = $this->RPD_check_row($id_disc,$_SESSION['user']['id'],$id_save);
|
|||
|
//echo '$SAVE<pre>'.print_r($SAVE,1).'</pre>';
|
|||
|
$saveREZ = $this->SAVE_prepare($SAVE);
|
|||
|
//echo '$saveREZ<pre>'.print_r($saveREZ,1).'</pre>';
|
|||
|
$smarty->assign('save', $saveREZ);
|
|||
|
//unset($saveREZ['razdel7_3']);
|
|||
|
//echo htmlspecialchars($saveREZ['razdel7_3']);
|
|||
|
//echo '<pre>$DISCIPS:'.print_r($DISCIPS,1).'; $DISCIP:'.print_r($DISCIP,1).'; $saveREZ:'.print_r($saveREZ,1).'</pre>'; exit();
|
|||
|
$cFPDF = new class_TCPDF();
|
|||
|
$out = $cFPDF->PDF_rpd($DISCIPS,$DISCIP,$saveREZ,$view,$id_disc_sign);
|
|||
|
if(isset($out['hash'])){
|
|||
|
$this->RPD_SaveHash($saveREZ['id'],$out['hash']);
|
|||
|
}
|
|||
|
if($view==1) {//отображаем иначе отдаем имя файла
|
|||
|
if($this->isRPD_praktik($DISCIP)){
|
|||
|
$out['body'] = $smarty->fetch('page_rpd_praktik_pdf.html');
|
|||
|
}else {
|
|||
|
$out['body'] = $smarty->fetch('page_rpd_pdf.html');
|
|||
|
}
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Получение ПДФ аннотации по ид рпд
|
|||
|
* @param $id_disc
|
|||
|
* @param $id_disc_sign
|
|||
|
* @param $view
|
|||
|
* @return array
|
|||
|
* @throws SmartyException
|
|||
|
*/
|
|||
|
public function RPD_GetAnnotacPDF($id_disc,$id_disc_sign=0,$view=1){
|
|||
|
GLOBAL $smarty;
|
|||
|
$DISCIPS = $this->Disciplin_Get_Grupp($id_disc);
|
|||
|
$DISCIP = $this->DISCIP_get_Main($DISCIPS);
|
|||
|
$id_file = $DISCIP['id_file'];
|
|||
|
|
|||
|
$id_discs = array();
|
|||
|
if(isset($DISCIPS['Очная'])) $id_discs[] = $DISCIPS['Очная']['uchebplan']['id'];
|
|||
|
if(isset($DISCIPS['Заочная'])) $id_discs[] = $DISCIPS['Заочная']['uchebplan']['id'];
|
|||
|
if(isset($DISCIPS['Очно-заочная'])) $id_discs[] = $DISCIPS['Очно-заочная']['uchebplan']['id'];
|
|||
|
|
|||
|
$DISCIPS['razdel71'] = $this->CompetGet_71($id_discs);
|
|||
|
$DISCIPS['razdel7'] = $this->CompetGet($id_file,$id_discs[0]);
|
|||
|
if(!count($DISCIPS['razdel7'])){//добавил 14092023
|
|||
|
$DISCIPS['razdel7'] = $this->CompetGet_ELSE($id_file,$id_discs,$DISCIPS);
|
|||
|
}
|
|||
|
|
|||
|
if($id_disc_sign!=0) $id_disc=$id_disc_sign;
|
|||
|
//echo $sql.'<pre>'.print_r($_SESSION['user'],1).'</pre>'; exit();
|
|||
|
$id_save=0; if(isset($_SESSION['user']['statuses'][79])||isset($_SESSION['user']['statuses'][23])||isset($_SESSION['user']['statuses'][30])){
|
|||
|
$id_save=0;
|
|||
|
$sql = 'SELECT id FROM '.$this->Trpdsave.' WHERE id_discip='.$id_disc.' LIMIT 1';
|
|||
|
$rez = $this->DB->QUR_SEL($sql);
|
|||
|
if(!$rez['err']&&$rez['kol']){
|
|||
|
$id_save=$rez['rez'][0]['id'];
|
|||
|
}
|
|||
|
}
|
|||
|
//тут надо понять view_pdf когда ставить 0 или 1
|
|||
|
if(!isset($_SESSION['user']['id'])) $SAVE = $this->RPD_check_row($id_disc,565,$id_save);
|
|||
|
else $SAVE = $this->RPD_check_row($id_disc,$_SESSION['user']['id'],$id_save);
|
|||
|
$saveREZ = $this->SAVE_prepare($SAVE);
|
|||
|
//echo $sql.'<pre>'.print_r($saveREZ,1).'</pre>'; exit();
|
|||
|
$smarty->assign('save', $saveREZ);
|
|||
|
$id_disc_sign = $saveREZ['id_discip'];
|
|||
|
$cFPDF = new class_TCPDF();
|
|||
|
$out = $cFPDF->PDF_annotac($DISCIPS,$DISCIP,$saveREZ,$view,$id_disc_sign);
|
|||
|
if(isset($out['hash'])){
|
|||
|
$this->RPD_SaveHash($saveREZ['id'],$out['hash']);
|
|||
|
}
|
|||
|
if($view==1) {//отображаем иначе отдаем имя файла
|
|||
|
if($this->isRPD_praktik($DISCIP)){
|
|||
|
//$out['body'] = $smarty->fetch('page_rpd_praktik_pdf.html');
|
|||
|
$out['body'] = $smarty->fetch('page_rpd_annotac_pdf.html');
|
|||
|
}else {
|
|||
|
$out['body'] = $smarty->fetch('page_rpd_annotac_pdf.html');
|
|||
|
}
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Получение ПДФ ФОС по ид рпд
|
|||
|
* @param $id_disc
|
|||
|
* @param $id_disc_sign
|
|||
|
* @param $view
|
|||
|
* @return array
|
|||
|
* @throws SmartyException
|
|||
|
*/
|
|||
|
public function RPD_GetFOSPDF($id_disc,$id_disc_sign=0,$view=1){
|
|||
|
GLOBAL $smarty;
|
|||
|
$DISCIPS = $this->Disciplin_Get_Grupp($id_disc);
|
|||
|
$DISCIP = $this->DISCIP_get_Main($DISCIPS);
|
|||
|
$id_file = $DISCIP['id_file'];
|
|||
|
|
|||
|
$id_discs = array();
|
|||
|
if(isset($DISCIPS['Очная'])) $id_discs[] = $DISCIPS['Очная']['uchebplan']['id'];
|
|||
|
if(isset($DISCIPS['Заочная'])) $id_discs[] = $DISCIPS['Заочная']['uchebplan']['id'];
|
|||
|
if(isset($DISCIPS['Очно-заочная'])) $id_discs[] = $DISCIPS['Очно-заочная']['uchebplan']['id'];
|
|||
|
|
|||
|
$DISCIPS['razdel71'] = $this->CompetGet_71($id_discs);
|
|||
|
$DISCIPS['razdel7'] = $this->CompetGet($id_file,$id_discs[0]);
|
|||
|
if(!count($DISCIPS['razdel7'])){//добавил 14092023
|
|||
|
$DISCIPS['razdel7'] = $this->CompetGet_ELSE($id_file,$id_discs,$DISCIPS);
|
|||
|
}
|
|||
|
|
|||
|
if($id_disc_sign!=0) $id_disc=$id_disc_sign;
|
|||
|
$id_save=0; if(isset($_SESSION['user']['statuses'][79])){
|
|||
|
$id_save=0;
|
|||
|
$sql = 'SELECT id FROM '.$this->Trpdsave.' WHERE id_discip='.$id_disc.' LIMIT 1';
|
|||
|
$rez = $this->DB->QUR_SEL($sql);
|
|||
|
if(!$rez['err']&&$rez['kol']){
|
|||
|
$id_save=$rez['rez'][0]['id'];
|
|||
|
}
|
|||
|
}
|
|||
|
//тут надо понять view_pdf когда ставить 0 или 1
|
|||
|
if(!isset($_SESSION['user']['id'])) $SAVE = $this->RPD_check_row($id_disc,565,$id_save);
|
|||
|
else $SAVE = $this->RPD_check_row($id_disc,$_SESSION['user']['id'],$id_save);
|
|||
|
if($SAVE['err']==1) $SAVE = $this->RPD_check_row($id_disc,-1,$id_save);
|
|||
|
//echo $sql.'<pre>'.print_r($SAVE,1).'</pre>'; exit();
|
|||
|
$saveREZ = $this->SAVE_prepare($SAVE);
|
|||
|
//echo $sql.'<pre>'.print_r($saveREZ,1).'</pre>'; exit();
|
|||
|
$smarty->assign('save', $saveREZ);
|
|||
|
$id_disc_sign = $saveREZ['id_discip'];
|
|||
|
$cFPDF = new class_TCPDF();
|
|||
|
$out = $cFPDF->PDF_fos($DISCIPS,$DISCIP,$saveREZ,$view,$id_disc_sign);
|
|||
|
if(isset($out['hash'])){
|
|||
|
$this->RPD_SaveHash($saveREZ['id'],$out['hash']);
|
|||
|
}
|
|||
|
if($view==1) {//отображаем иначе отдаем имя файла
|
|||
|
if($this->isRPD_praktik($DISCIP)){
|
|||
|
//$out['body'] = $smarty->fetch('page_rpd_praktik_pdf.html');
|
|||
|
$out['body'] = $smarty->fetch('page_rpd_fos_pdf.html');
|
|||
|
}else {
|
|||
|
$out['body'] = $smarty->fetch('page_rpd_fos_pdf.html');
|
|||
|
}
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
public function HTML(){
|
|||
|
GLOBAL $WorkDIR;
|
|||
|
//if($_SESSION['user']['id']!=7335) die('Идут работы...');
|
|||
|
|
|||
|
$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']=='setdiscipurpdbezdisc'){
|
|||
|
$saveiddiscip=(int)$_POST['saveiddiscip'];
|
|||
|
$new_discip=(int)$_POST['new_discip'];
|
|||
|
$out['err']=0;
|
|||
|
$out['msg']='Установка дисциплины!<br>';
|
|||
|
$sql = 'UPDATE '.$this->Trpdsave.' SET id_discip='.$new_discip.' WHERE id='.$saveiddiscip.' AND id_prepod='.$_SESSION['user']['id'].' LIMIT 1';
|
|||
|
$rez = $this->DB->QUR($sql);
|
|||
|
if(!$rez['err']){
|
|||
|
$out['msg'].='Установили дисциплину';
|
|||
|
}else{
|
|||
|
$out['err']=1;
|
|||
|
$out['msg'].='Не установили дисциплину'.print_r($rez,1);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//Дублирование РПД
|
|||
|
if($_POST['ajdes']=='dublicate'){
|
|||
|
$saveiddiscip=(int)$_POST['saveiddiscip'];
|
|||
|
$new_discip=(int)$_POST['new_discip'];
|
|||
|
$out = $this->copy_rpd($saveiddiscip,$new_discip);
|
|||
|
//$out['err']=0;
|
|||
|
//$out['msg']='Дублирование РПД на другую дисциплину!<br>';
|
|||
|
//$out['msg'].='РПД №'.$saveiddiscip.'; Новая дисциплина №'.$new_discip.'<br>';
|
|||
|
//if($new_discip!=0){
|
|||
|
// $sql = 'SELECT * FROM '.$this->Trpdsave.' WHERE id='.$saveiddiscip.' LIMIT 1';
|
|||
|
// $rez = $this->DB->QUR_SEL($sql);
|
|||
|
// if(!$rez['err']&&$rez['kol']){
|
|||
|
// $rpd = $rez['rez'][0];
|
|||
|
// $out['msg'].='Нашли РПД<br>';
|
|||
|
// $sql = 'SELECT * FROM '.$this->Trpdsave.' WHERE id_discip='.$new_discip.' LIMIT 1';
|
|||
|
// $rez = $this->DB->QUR_SEL($sql);
|
|||
|
// if(!$rez['err']&&$rez['kol']){
|
|||
|
// $out['err']=1;
|
|||
|
// $out['msg'].='У новой дисциплины уже есть сохранения РПД!';
|
|||
|
// }else{
|
|||
|
// /* id data_c id_discip id_prepod
|
|||
|
// razdel1 razdel2 razdel3 razdel4 razdel5 razdel5_4 razdel5_5
|
|||
|
// razdel5_6 razdel5_7 razdel5_8 razdel5_9 razdel6_1 razdel6_2
|
|||
|
// razdel7 razdel7_2 razdel7_3 razdel7_4 razdel8_1 razdel8_2
|
|||
|
// razdel8_3 razdel9 razdel10_1 razdel10_2 razdel11
|
|||
|
// * */
|
|||
|
// $rpd['data_c']=time();
|
|||
|
// $rpd['id_discip']=$new_discip;
|
|||
|
// //$rpd['razdel5']='';
|
|||
|
// //$rpd['razdel5_4']='';
|
|||
|
// //$rpd['razdel5_5']='';
|
|||
|
// //$rpd['razdel5_6']='';
|
|||
|
// $rezs = $this->RPD_save($rpd);
|
|||
|
// $out['err'] = $rezs['err'];
|
|||
|
// if (!$rezs['err']) $out['msg'].=$rezs['msg'];
|
|||
|
// else $out['msg'].=$rezs['msg'];
|
|||
|
// }
|
|||
|
// }else{
|
|||
|
// $out['err']=1;
|
|||
|
// $out['msg'].='Не нашли РПД';
|
|||
|
// }
|
|||
|
//}else{
|
|||
|
// $out['err']=1;
|
|||
|
// $out['msg'].='пустой номер';
|
|||
|
//}
|
|||
|
}
|
|||
|
|
|||
|
//Подпись РПД и отправка на проверку
|
|||
|
if($_POST['ajdes']=='RPDSign'){
|
|||
|
$out['err']=0;
|
|||
|
$out['msg']='---';
|
|||
|
/*acs_fshp_rpd_signs: id data_c id_user id_rpd sign descrip */
|
|||
|
$id_rpd = (int)$_POST['id_disc'];
|
|||
|
$sql = 'INSERT INTO '.$this->Trpdsign.' VALUES (0,'.time().','.$_SESSION['user']['id'].','.$id_rpd.',"Разработчик","Подписал.",1)';
|
|||
|
$rez = $this->DB->QUR($sql);
|
|||
|
if(!$rez['err']){
|
|||
|
$out['err']=0;
|
|||
|
$out['msg']='Рабочую программу отправили на проверку';
|
|||
|
}else{
|
|||
|
$out['err']=1;
|
|||
|
$out['msg']='Ошибка при сохранении!';
|
|||
|
}
|
|||
|
}
|
|||
|
//Загрузка фото в редакторы
|
|||
|
if($_POST['ajdes']=='uploadFileEditor'){
|
|||
|
if ($_FILES['file']['name']) {
|
|||
|
if (!$_FILES['file']['error']) {
|
|||
|
$name = md5(mt_rand(0, 999999));
|
|||
|
$ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
|
|||
|
$filename = $name.'.'.$ext;
|
|||
|
$destination = 'upload/images/'.$_SESSION['user']['id'];
|
|||
|
if (!file_exists($destination)) mkdir($destination, 0777, true);
|
|||
|
move_uploaded_file($_FILES["file"]["tmp_name"], $destination.'/'.$filename);
|
|||
|
$out['err']=0;
|
|||
|
$out['url'] = 'https://eios.mkgtu.ru/rabprog/'.$destination.'/'.$filename;
|
|||
|
} else {
|
|||
|
$out['err']=1;
|
|||
|
$out['url'] = '';
|
|||
|
//echo $message = 'Ooops! Your upload triggered the following error: '.$_FILES['file']['error'];
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
//Отключение разделов
|
|||
|
if($_POST['ajdes']=='RPD_RazdelNot'){
|
|||
|
$ID_DISCIP = (int)$_POST['ID_DISCIP'];
|
|||
|
$ID_RPD = (int)$_POST['ID_RPD'];
|
|||
|
$pole = $_POST['form'];
|
|||
|
$state = $_POST['state'];
|
|||
|
$tip = $_POST['tip'];
|
|||
|
//if($_POST['form']=='razdel5_4'){ $pole='razdel5_4'; }
|
|||
|
if($pole!=''){
|
|||
|
$out = $this->RPD_clear($ID_DISCIP,$pole,$state,$tip,$_SESSION['user']['id']);
|
|||
|
}
|
|||
|
}
|
|||
|
//сохранение РПД
|
|||
|
if($_POST['ajdes']=='RPD_SaveTable72'){
|
|||
|
$ID_DISCIP = (int)$_POST['ID_DISCIP'];
|
|||
|
$ID_RPD = (int)$_POST['ID_RPD'];
|
|||
|
$kompmodelID = (int)$_POST['kompmodelID'];
|
|||
|
$znat = $_POST['znat'];
|
|||
|
$umet = $_POST['umet'];
|
|||
|
$vladet = $_POST['vladet'];
|
|||
|
$name = $_POST['name'];
|
|||
|
|
|||
|
$pole='razdel7_2';
|
|||
|
$data['id_discip'] = $ID_DISCIP;
|
|||
|
//print_r($_POST); exit();
|
|||
|
/*
|
|||
|
* Array([ajdes] => RPD_SaveTable72 [ID_DISCIP] => 263 [ID_RPD] => 0 [kompmodelID] => 209
|
|||
|
* [znat] => 1 [umet] => 2 [vladet] => 3 [name] => 4 )
|
|||
|
* */
|
|||
|
$out = $this->RPD_check_row($ID_DISCIP,$_SESSION['user']['id']);
|
|||
|
if(!$out['err']){
|
|||
|
if(isset($out['all'])){//посмотрим есть ли такое же поле
|
|||
|
if(isset($out['all'][$pole])){//такое поле есть, добавим в него
|
|||
|
$j = json_decode($out['all'][$pole],1);
|
|||
|
$j[$kompmodelID] = array('kompmodelID'=>$kompmodelID,'znat'=>$znat,'umet'=>$umet,'vladet'=>$vladet,'name'=>$name);
|
|||
|
$data[$pole] = json_encode($j);
|
|||
|
}else{//такого поля нет добавим
|
|||
|
$tmp[$kompmodelID] = array('kompmodelID'=>$kompmodelID,'znat'=>$znat,'umet'=>$umet,'vladet'=>$vladet,'name'=>$name);
|
|||
|
$data[$pole] = json_encode($tmp);
|
|||
|
}
|
|||
|
}
|
|||
|
$out = $this->RPD_update($out['id'],$data);
|
|||
|
}else{
|
|||
|
$tmp[$kompmodelID] = array('kompmodelID'=>$kompmodelID,'znat'=>$znat,'umet'=>$umet,'vladet'=>$vladet,'name'=>$name);
|
|||
|
$data[$pole] = json_encode($tmp);
|
|||
|
$out = $this->RPD_save($data);
|
|||
|
//при первом сохранении надо вернуть ID_RPD
|
|||
|
if(!$out['err']) $out['ID_RPD'] = $out['id'];
|
|||
|
}
|
|||
|
}
|
|||
|
if($_POST['ajdes']=='RPD_SaveTable'){
|
|||
|
/*Array([ID_DISCIP]=19,[ID_RPD]=2,[form]=table_5_och,
|
|||
|
[json]=Array(
|
|||
|
[0]=Array([0]=Array([name]=sem,[value]=1-1)[1]=Array([name]=razdel,[value]=1-2),...)
|
|||
|
[1]=Array([0]=Array([name]=sem,[value]=2-1),...)
|
|||
|
)
|
|||
|
)*/
|
|||
|
$ID_DISCIP = (int)$_POST['ID_DISCIP'];
|
|||
|
$ID_RPD = (int)$_POST['ID_RPD'];
|
|||
|
if($_POST['form']=='table_5_och'){ $pole='razdel5'; $pole1 = 'och'; }
|
|||
|
if($_POST['form']=='table_5_zao'){ $pole='razdel5'; $pole1 = 'zao'; }
|
|||
|
if($_POST['form']=='table_5_ochzao'){ $pole='razdel5'; $pole1 = 'ochzao'; }
|
|||
|
if($_POST['form']=='table_54_1'){ $pole='razdel5_4'; $pole1 = '1'; }
|
|||
|
if($_POST['form']=='table_55_1'){ $pole='razdel5_5'; $pole1 = '1'; }
|
|||
|
if($_POST['form']=='table_56_1'){ $pole='razdel5_6'; $pole1 = '1'; }
|
|||
|
if($_POST['form']=='table_58_1'){ $pole='razdel5_8'; $pole1 = '1'; }
|
|||
|
if($_POST['form']=='table_59_1'){ $pole='razdel5_9'; $pole1 = '1'; }
|
|||
|
if($_POST['form']=='table_61'){ $pole='razdel6_1'; $pole1 = '1'; }
|
|||
|
if($_POST['form']=='table_62'){ $pole='razdel6_2'; $pole1 = '1'; }
|
|||
|
if($_POST['form']=='table_81'){ $pole='razdel8_1'; $pole1 = '1'; }
|
|||
|
if($_POST['form']=='table_82'){ $pole='razdel8_2'; $pole1 = '1'; }
|
|||
|
if($_POST['form']=='table_101'){ $pole='razdel10_1'; $pole1 = '1'; }
|
|||
|
if($_POST['form']=='table_1021'){ $pole='razdel10_2'; $pole1 = '1'; }
|
|||
|
if($_POST['form']=='table_1022'){ $pole='razdel10_2'; $pole1 = '2'; }
|
|||
|
if($_POST['form']=='table_11'){ $pole='razdel11'; $pole1 = '1'; }
|
|||
|
if($_POST['form']=='table_551_1'){ $pole='razdel5_5_1'; $pole1 = '1'; }
|
|||
|
//$value[$pole1] = json_decode($_POST['json'],1);
|
|||
|
$jP = json_decode($_POST['json'],1);
|
|||
|
|
|||
|
//echo '<pre>'.print_r($_POST,1).'</pre>'; echo '<pre>'.print_r($jP,1).'</pre>';exit();
|
|||
|
foreach($jP as $tr => $tds){
|
|||
|
$pusto=true; //для каждой строки проверим есть ли данные
|
|||
|
foreach($tds as $td => $arr){
|
|||
|
$value[$pole1][$tr][$arr['name']]=$arr['value'];
|
|||
|
if(trim($arr['value'])!='') $pusto=false;
|
|||
|
}
|
|||
|
if($pusto) unset($value[$pole1][$tr]); //пустая запись!
|
|||
|
}
|
|||
|
$data['id_discip'] = $ID_DISCIP;
|
|||
|
$out = $this->RPD_check_row($ID_DISCIP,$_SESSION['user']['id']);
|
|||
|
//echo '<prE>'.print_R($out,1).'</prE>';
|
|||
|
if(!$out['err']){
|
|||
|
if(isset($out['all'])){//посмотрим есть ли такое же поле
|
|||
|
if(isset($out['all'][$pole])){//такое поле есть, добавим в него
|
|||
|
$j = json_decode($out['all'][$pole],1);
|
|||
|
$j[$pole1] = $value[$pole1];
|
|||
|
$data[$pole] = json_encode($j);
|
|||
|
}else{//такого поля нет добавим
|
|||
|
$data[$pole] = json_encode($value);
|
|||
|
}
|
|||
|
}
|
|||
|
$out = $this->RPD_update($out['id'],$data);
|
|||
|
}else{
|
|||
|
$data[$pole] = json_encode($value);
|
|||
|
$out = $this->RPD_save($data);
|
|||
|
//при первом сохранении надо вернуть ID_RPD
|
|||
|
if(!$out['err']) $out['ID_RPD'] = $out['id'];
|
|||
|
}
|
|||
|
}
|
|||
|
//сохранение полей input и textarea
|
|||
|
if($_POST['ajdes']=='RPD_Save'){
|
|||
|
//Array([ID_DISCIP] => 19,[ID_RPD] => 0,[razdel1] =>)
|
|||
|
$ID_DISCIP = (int)$_POST['ID_DISCIP'];
|
|||
|
$ID_RPD = (int)$_POST['ID_RPD'];
|
|||
|
//Подготовим данные для вставки
|
|||
|
$data = $this->RPD_POST_to_data($_POST);
|
|||
|
$data['id_discip'] = $ID_DISCIP;
|
|||
|
$out = $this->RPD_check_row($ID_DISCIP,$_SESSION['user']['id']);
|
|||
|
if(!$out['err']){
|
|||
|
$out = $this->RPD_update($out['id'],$data);
|
|||
|
}else{
|
|||
|
$out = $this->RPD_save($data);
|
|||
|
//при первом сохранении надо вернуть ID_RPD
|
|||
|
if(!$out['err']) $out['ID_RPD'] = $out['id'];
|
|||
|
}
|
|||
|
$out['data'] = $data;
|
|||
|
}
|
|||
|
echo json_encode($out);
|
|||
|
exit();
|
|||
|
}
|
|||
|
|
|||
|
$view = 'all';
|
|||
|
$out = array('name'=>'РПД','body'=>'');
|
|||
|
//Отображение РПД
|
|||
|
if(isset($URLS[1])&&$URLS[1]=='pdf') {
|
|||
|
$id_disc = (int)$URLS[2];
|
|||
|
$rez = $this->RPD_GetPDF($id_disc);
|
|||
|
$out['body'] = $rez['body'];
|
|||
|
}
|
|||
|
if(isset($URLS[1])&&$URLS[1]=='anotac') {
|
|||
|
$id_disc = (int)$URLS[2];
|
|||
|
$rez = $this->RPD_GetAnnotacPDF($id_disc);
|
|||
|
$out['body'] = $rez['body'];
|
|||
|
}
|
|||
|
if(isset($URLS[1])&&$URLS[1]=='fos') {
|
|||
|
$id_disc = (int)$URLS[2];
|
|||
|
$rez = $this->RPD_GetFOSPDF($id_disc);
|
|||
|
$out['body'] = $rez['body'];
|
|||
|
}
|
|||
|
//Создание РПД
|
|||
|
if(isset($URLS[1])&&$URLS[1]=='edit') {
|
|||
|
$id_disc = (int)$URLS[2];
|
|||
|
$DISCIPS = $this->Disciplin_Get_Grupp($id_disc);
|
|||
|
//echo '<pre>'.print_r($DISCIPS,1).'</pre>';exit();
|
|||
|
$SAVE = $this->RPD_check_row($id_disc,$_SESSION['user']['id']);
|
|||
|
$saveREZ = $this->SAVE_prepare($SAVE);
|
|||
|
$smarty->assign('save', $saveREZ);
|
|||
|
//echo '<prE>'.print_r($saveREZ,1).'</prE>'; exit();
|
|||
|
$op = $this->DISCIP_get_Main($DISCIPS);
|
|||
|
$DISCIP_name = $op['DISCIP_name'];
|
|||
|
$id_file = $op['id_file'];
|
|||
|
$shifr = $op['shifr'];
|
|||
|
$namOP = $op['namOP'];
|
|||
|
//echo '<prE>'.print_r($DISCIPS,1).print_r($op,1).'</prE>'; exit();
|
|||
|
$id_discs = array();
|
|||
|
if(isset($DISCIPS['Очная'])) $id_discs[] = $DISCIPS['Очная']['uchebplan']['id'];
|
|||
|
if(isset($DISCIPS['Заочная'])) $id_discs[] = $DISCIPS['Заочная']['uchebplan']['id'];
|
|||
|
if(isset($DISCIPS['Очно-заочная'])) $id_discs[] = $DISCIPS['Очно-заочная']['uchebplan']['id'];
|
|||
|
//$id_discs[] = $id_disc; $id_discs = array_unique($id_discs);
|
|||
|
//echo '<prE>'.print_r($id_discs,1).'</prE>'; exit();
|
|||
|
$DISCIPS['razdel71'] = $this->CompetGet_71($id_discs);
|
|||
|
$DISCIPS['razdel7'] = $this->CompetGet($id_file,$id_discs,$DISCIPS);
|
|||
|
if($id_disc==46149) $DISCIPS['razdel7']=array();//РУБЕН
|
|||
|
//echo $id_file.' - '.$DISCIP_name.'razdel71<prE>'.print_r($DISCIPS['razdel71'],1).'razdel7'.print_r($DISCIPS['razdel7'],1).'</prE>';exit();
|
|||
|
if(!count($DISCIPS['razdel7'])){//почему то не подбирается компетенции 7.2
|
|||
|
for($i=1;$i<count($id_discs);$i++){
|
|||
|
$DISCIPS['razdel7'] = $this->CompetGet($id_file,$id_discs[$i]);
|
|||
|
//echo $i.'::'.$id_file.' - '.$DISCIP_name.'<prE>'.print_r($DISCIPS['razdel7'],1).'</prE>';
|
|||
|
if(count($DISCIPS['razdel7'])) break;
|
|||
|
}
|
|||
|
}
|
|||
|
if(!count($DISCIPS['razdel7'])){
|
|||
|
$DISCIPS['razdel7'] = $this->CompetGet_ELSE($id_file,$id_discs,$DISCIPS);
|
|||
|
}
|
|||
|
//echo $id_file.' - '.$DISCIP_name.'<prE>'.print_r($DISCIPS['razdel7'],1).print_r($DISCIPS,1).'</prE>'; exit();
|
|||
|
$smarty->assign('DISCIPS', $DISCIPS);
|
|||
|
$smarty->assign('DISCIP_name', $DISCIP_name);
|
|||
|
|
|||
|
$obrtech = new class_OBRTECH();
|
|||
|
$smarty->assign('OBRTECH', $obrtech->Items());
|
|||
|
$LIB = new class_LIBRARY();
|
|||
|
$smarty->assign('LIBS61', $LIB->get_literatura($DISCIP_name,'0007AA'));
|
|||
|
$smarty->assign('LIBS62', $LIB->get_literatura($DISCIP_name,'000822'));
|
|||
|
$smarty->assign('LIBS83', $LIB->get_proBD($DISCIPS));
|
|||
|
$SOFTWARE = new class_SOFTWARE();
|
|||
|
$softs['mkgtu'] = $SOFTWARE->software();
|
|||
|
$softs['gov'] = $SOFTWARE->softwareGOV();
|
|||
|
$smarty->assign('SOFTWARE', $softs);
|
|||
|
$MATERIAL = new class_MATERIAL();
|
|||
|
$smarty->assign('MATERIAL', $MATERIAL->GetItems(array('code'=>$shifr)));//'namedisc'=>$DISCIP_name
|
|||
|
$smarty->assign('ID_DISCIP', $id_disc);
|
|||
|
$smarty->assign('ID_RPD', 0);
|
|||
|
$moduls = new class_MODULS();
|
|||
|
$smarty->assign('MODULS', $moduls->Items());
|
|||
|
$smarty->assign('aUSER', $_SESSION['user']);
|
|||
|
//echo '<pre>'.print_r($op,1).print_r($DISCIPS,1).'</pre>';exit();
|
|||
|
if($this->isRPD_praktik($op)){
|
|||
|
$out['body'] = $smarty->fetch('page_rpd_praktik.html');
|
|||
|
}else {
|
|||
|
$out['body'] = $smarty->fetch('page_rpd.html');
|
|||
|
}
|
|||
|
}
|
|||
|
if(!isset($URLS[1])||$URLS[1]=='all') {
|
|||
|
//die('Технические работы...');
|
|||
|
$dis = $this->Disciplins($_SESSION['user']['id']);
|
|||
|
//echo '<pre>'.print_r($dis,1).'</pre>';exit();
|
|||
|
$smarty->assign('DISCIPS', $dis['items']);
|
|||
|
|
|||
|
$DISCIPS_copy = $this->Disciplins_ALL($_SESSION['user']['id']);
|
|||
|
$smarty->assign('DISCIPS_copy', $DISCIPS_copy['items']);
|
|||
|
|
|||
|
$disNOT = $this->Disciplins_OTDAN($_SESSION['user']['id']);
|
|||
|
$disBezUP = $this->Disciplins_BEZUP($_SESSION['user']['id']);
|
|||
|
$smarty->assign('disNOT', $disNOT);
|
|||
|
$smarty->assign('disBezUP', $disBezUP);
|
|||
|
$ks=0; $hh = (int)date('H');
|
|||
|
if(!isset($_SESSION['ks'])) {
|
|||
|
if ($hh > 0 && $hh <= 8) $ks = mt_rand(40, 120);
|
|||
|
if ($hh > 8 && $hh <= 12) $ks = mt_rand(300, 1200);
|
|||
|
if ($hh > 12 && $hh <= 13) $ks = mt_rand(120, 300);
|
|||
|
if ($hh > 13 && $hh <= 18) $ks = mt_rand(500, 3000);
|
|||
|
if ($hh > 18) $ks = mt_rand(400, 900);
|
|||
|
$_SESSION['ks'] = $ks;
|
|||
|
$_SESSION['kst'] = time();
|
|||
|
}else{
|
|||
|
if (($_SESSION['kst']+(60*15))<time()){
|
|||
|
$_SESSION['ks']+=mt_rand(1, 20);
|
|||
|
}else{
|
|||
|
if(mt_rand(1,3)==2) $_SESSION['ks']-=mt_rand(1, 4);
|
|||
|
}
|
|||
|
}
|
|||
|
$smarty->assign('ks', $_SESSION['ks']);
|
|||
|
$out['body'] = $smarty->fetch('page_rpds.html');
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Копирование РПД дисциплины
|
|||
|
* @param $saveiddiscip integer старая ИД дисциплины
|
|||
|
* @param $new_discip integer новая ИД дисциплины
|
|||
|
* @param $new_prepod integer Если не 0 то меняем владельца у новой
|
|||
|
* @return array
|
|||
|
*/
|
|||
|
function copy_rpd($saveiddiscip, $new_discip, $new_prepod=0){
|
|||
|
//$saveiddiscip=(int)$_POST['saveiddiscip'];
|
|||
|
//$new_discip=(int)$_POST['new_discip'];
|
|||
|
$out['err']=0;
|
|||
|
$out['msg']='Копирование РПД на другую дисциплину!<br>';
|
|||
|
$out['msg'].='РПД №'.$saveiddiscip.'; Новая дисциплина №'.$new_discip.'<br>';
|
|||
|
if($new_discip!=0){
|
|||
|
$sql = 'SELECT * FROM '.$this->Trpdsave.' WHERE id='.$saveiddiscip.' LIMIT 1';
|
|||
|
$rez = $this->DB->QUR_SEL($sql);
|
|||
|
if(!$rez['err']&&$rez['kol']){
|
|||
|
$rpd = $rez['rez'][0];
|
|||
|
$out['msg'].='Нашли РПД<br>';
|
|||
|
$sql = 'SELECT * FROM '.$this->Trpdsave.' WHERE id_discip='.$new_discip.' LIMIT 1';
|
|||
|
$rez = $this->DB->QUR_SEL($sql);
|
|||
|
if(!$rez['err']&&$rez['kol']){
|
|||
|
$out['err']=1;
|
|||
|
$out['msg'].='У новой дисциплины уже есть сохранения РПД!';
|
|||
|
}else{
|
|||
|
/* id data_c id_discip id_prepod
|
|||
|
razdel1 razdel2 razdel3 razdel4 razdel5 razdel5_4 razdel5_5
|
|||
|
razdel5_6 razdel5_7 razdel5_8 razdel5_9 razdel6_1 razdel6_2
|
|||
|
razdel7 razdel7_2 razdel7_3 razdel7_4 razdel8_1 razdel8_2
|
|||
|
razdel8_3 razdel9 razdel10_1 razdel10_2 razdel11
|
|||
|
* */
|
|||
|
$rpd['data_c']=time();
|
|||
|
$rpd['id_discip']=$new_discip;
|
|||
|
if($new_prepod!=0) $rpd['id_prepod']=$new_prepod;
|
|||
|
//$rpd['razdel5']='';
|
|||
|
//$rpd['razdel5_4']='';
|
|||
|
//$rpd['razdel5_5']='';
|
|||
|
//$rpd['razdel5_6']='';
|
|||
|
$rezs = $this->RPD_save($rpd);
|
|||
|
$out['err'] = $rezs['err'];
|
|||
|
if (!$rezs['err']) $out['msg'].=$rezs['msg'];
|
|||
|
else $out['msg'].=$rezs['msg'];
|
|||
|
}
|
|||
|
}else{
|
|||
|
$out['err']=1;
|
|||
|
$out['msg'].='Не нашли РПД';
|
|||
|
}
|
|||
|
}else{
|
|||
|
$out['err']=1;
|
|||
|
$out['msg'].='пустой номер';
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Определяем по $op['DISCIP_name'] практика это или нет
|
|||
|
* @param $op
|
|||
|
* @return int
|
|||
|
*/
|
|||
|
function isRPD_praktik($op){
|
|||
|
$praktiks = array('Ознакомительная практика',
|
|||
|
'Амбулаторно-поликлиническая практика в педиатрии',
|
|||
|
'Аналитическая практика',
|
|||
|
'Идентификация взрывчатых веществ и наркотиков (практикум)',
|
|||
|
'Исполнительская практика',
|
|||
|
'Исследовательская практика',
|
|||
|
'Клиническая практика акушерско - гинекологического профиля',
|
|||
|
'Клиническая практика на должностях среднего медицинского персонала',
|
|||
|
'Клиническая практика педиатрического профиля',
|
|||
|
'Клиническая практика по стоматологии общей практики',
|
|||
|
'Клиническая практика терапевтического профиля',
|
|||
|
'Клиническая практика хирургического профиля',
|
|||
|
'Надлежащая практика хранения (Good Storage Practice - GSP)',
|
|||
|
'Налоговый практикум',
|
|||
|
'Научно-исследовательская практика (получение первичных навыков научно-исследовательской работы)',
|
|||
|
'Общепрофессиональная практика',
|
|||
|
'Ознакомительная практика',
|
|||
|
'Ознакомительная практика',
|
|||
|
'Ознакомительная практика (в том числе первичных навыков научно-исследовательской работы)',
|
|||
|
'Ознакомительная практика (в том числе получение первичных навыков научно-исследовательской работы)',
|
|||
|
'Организационно-управленческая практика',
|
|||
|
'Педагогическая практика',
|
|||
|
'Правоприменительная практика № 1',
|
|||
|
'Правоприменительная практика №2',
|
|||
|
'Практика акушерско-гинекологического профиля',
|
|||
|
'Практика диагностического профиля',
|
|||
|
'Практика общеврачебного профиля',
|
|||
|
'Практика по получению первичных навыков научно-исследовательской работы',
|
|||
|
'Практика по контролю качества лекарственных средств',
|
|||
|
'Практика по неотложным медицинским манипуляциям',
|
|||
|
'Практика по общей фармацевтической технологии',
|
|||
|
'Практика по оказанию первой помощи',
|
|||
|
'Практика по получению первичных профессиональных умений и навыков',
|
|||
|
'Практика по получению первичных профессиональных умений и навыков диагностического профиля',
|
|||
|
'Практика по получению первичных профессиональных умений и навыков педиатрического профиля',
|
|||
|
'Практика по получению профессиональных умений и навыков на должностях среднего медицинского персонала',
|
|||
|
'Практика по получению профессиональных умений и опыта профессиональной деятельности',
|
|||
|
'Практика по получению профессиональных умений и опыта профессиональной деятельности (По ортопедической стоматологии)',
|
|||
|
'Практика по получению профессиональных умений и опыта профессиональной деятельности на должностях среднего медицинского персонала 1',
|
|||
|
'Практика по получению профессиональных умений и опыта профессиональной деятельности на должностях среднего медицинского персонала 2',
|
|||
|
'Практика по получению профессиональных умений и опыта профессиональной деятельности(По детской стоматологии,ортодонтии)',
|
|||
|
'Практика по получению профессиональных умений и опыта профессиональной деятельности(По профилактической стоматологии)',
|
|||
|
'Практика по получению профессиональных умений и опыта профессиональной деятельности(По терапевтической стоматологии))',
|
|||
|
'Практика по получению профессиональных умений и опыта профессиональной деятельности(По хирургической стоматологии))',
|
|||
|
'Практика по профилю профессиональной деятельности',
|
|||
|
'Практика по профилю профессиональной деятельности',
|
|||
|
'Практика по управлению и экономике фармацевтических организаций',
|
|||
|
'Практика по фармакогнозии',
|
|||
|
'Практика по фармацевтической технологии',
|
|||
|
'Практика по фармацевтическому консультированию и информированию',
|
|||
|
'Практика терапевтического профиля',
|
|||
|
'Практика хирургического профиля',
|
|||
|
'Практикум по декларированию товаров и транспортных средств',
|
|||
|
'Практикум по организации работы гостиничных предприятий',
|
|||
|
'Практикум по организации работы туристских предприятий',
|
|||
|
'Практикум по таможенным платежам',
|
|||
|
'Практический маркетинг',
|
|||
|
'Преддипломная практика',
|
|||
|
'Преддипломная практика для выполнения выпускной квалификационной работы',
|
|||
|
'Преддипломная практика, в том числе научно-исследовательская',
|
|||
|
'Преддипломная практика, в том числе научно-исследовательская практика',
|
|||
|
'Преддипломная практика, в том числе научно-исследовательская работа',
|
|||
|
'Проектная практика',
|
|||
|
'Проектно-технологическая практика',
|
|||
|
'Проектно-технологическая практика',
|
|||
|
'Проектный практикум',
|
|||
|
'Производственная практика',
|
|||
|
'Производственная практика',
|
|||
|
'Профессиональная практика по профилю деятельности',
|
|||
|
'Профессионально-ознакомительная практика',
|
|||
|
'Профессионально-творческая практика',
|
|||
|
'Сервисная практика',
|
|||
|
'Служебная практика',
|
|||
|
'Спецпрактикум по органической химии',
|
|||
|
'Средства неотложной медицинской помощи в косметологической практике',
|
|||
|
'Творческая практика',
|
|||
|
'Теория и практика межэтнических коммуникаций',
|
|||
|
'Теория и практика рекламы и связей с общественностью',
|
|||
|
'Теория и практика создания машин и аппаратов пищевых производств',
|
|||
|
'Технологии таможенного контроля (практикум)',
|
|||
|
'Технологическая (проектно-технологическая) практика',
|
|||
|
'Технологическая (проектно-технологическая практика',
|
|||
|
'Технологическая (проектно-технологическая практика) практика',
|
|||
|
'Технологическая (проектно-технологическая) практика',
|
|||
|
'Технологическая (производственно-технологическая) практика',
|
|||
|
'Технологическая практика',
|
|||
|
'Технологическая практика 1',
|
|||
|
'Технологическая практика 2',
|
|||
|
'Технологическая практика №1',
|
|||
|
'Технологическая практика №2',
|
|||
|
'Учебная практика',
|
|||
|
'Учебно-лабораторная практика',
|
|||
|
'Фармацевтическая пропедевтическая практика',
|
|||
|
'Эксплуатационная практика');
|
|||
|
$out=0;
|
|||
|
$sql = 'SELECT index1 FROM '.$this->TUchebplans.' WHERE id='.$op['id'];
|
|||
|
$rez = $this->DB->QUR_SEL($sql);
|
|||
|
if(!$rez['err']&&$rez['kol']){
|
|||
|
$index1 = trim($rez['rez'][0]['index1']);
|
|||
|
if(strpos($index1,'Б2.')===0){
|
|||
|
$out=1;
|
|||
|
}
|
|||
|
}
|
|||
|
//[index1] => Б1.В.ДВ.06.01
|
|||
|
//echo '<pre>'.print_r($rez['rez'][0],1).'</pre>';
|
|||
|
//echo '<pre>'.print_r($op,1).'</pre>';exit();
|
|||
|
//$op=
|
|||
|
//Array([id]=>5723 [DISCIP_name]=>Ознакомительная практика [id_file]=>83 [shifr]=>21.03.02 [namOP]=>Землеустройство и кадастры [main]=>Очная)
|
|||
|
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Получим компетенции из комп.модели которую создал зав.каф
|
|||
|
* @param $id_file
|
|||
|
* @param string $DISCIP_name - если пусто то все компетенции
|
|||
|
* @return array
|
|||
|
*/
|
|||
|
function CompetGet_71($id_discs=array()){
|
|||
|
$out = array();
|
|||
|
$cKOMPMODELS_SEM = new class_KOMPMODELS_SEM();
|
|||
|
$out = $cKOMPMODELS_SEM->ItemNotUser71($id_discs);
|
|||
|
return $out;
|
|||
|
}
|
|||
|
function CompetGet_ELSE($id_file,$id_discip,$DISCIPS=array()){
|
|||
|
$out=array();
|
|||
|
if(!is_array($id_discip)) $id_discipS = array($id_discip); else $id_discipS = $id_discip;
|
|||
|
|
|||
|
foreach($DISCIPS as $fo => $v){
|
|||
|
foreach($v['comp'] as $index => $name){
|
|||
|
//выберем комп модель
|
|||
|
$sql = 'SELECT * FROM acs_fshp_competmodels WHERE comp_name_ind LIKE "'.$index.'%" AND id_file='.$v['uchebplan']['id_file'];
|
|||
|
$rez = $this->DB->QUR_SEL($sql);
|
|||
|
if(!$rez['err']&&$rez['kol']){
|
|||
|
foreach($rez['rez'] as $k => $komp){
|
|||
|
if($komp['id_comp']!=0){
|
|||
|
//if($_SESSION['user']['id']==717){
|
|||
|
// echo '<pre>'.print_r($komp,1).'</pre>';
|
|||
|
//}
|
|||
|
$out[] = array('komp'=>$komp,'disc'=>array());
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
if($_SESSION['user']['id']==717){
|
|||
|
//echo '<pre>'.print_r($id_discipS,1).print_r($DISCIPS,1).'</pre>';exit();
|
|||
|
//$id_discipS = Array( [0] => 23570 [1] => 18155 [2] => 23384 )
|
|||
|
//uchebplan.id: 18155 23570 23384
|
|||
|
//SELECT cm.* FROM acs_fshp_uchebplans_compet as uc, acs_fshp_competmodels as cm WHERE uc.id_uchebplans=18155 AND uc.id_compet=cm.id_comp
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
function CompetGet($id_file,$id_discip,$DISCIPS=array()){
|
|||
|
$out = array();
|
|||
|
//echo '<pre>'.print_r($DISCIPS,1).'</pre>';exit();
|
|||
|
//echo '<pre>'.print_r($id_discip,1).'</pre>';exit();
|
|||
|
//Array([0] => 23570 [1] => 18155 [2] => 23384 )
|
|||
|
//Array [0] => 23468 [1] => 18239 [2] => 23282
|
|||
|
if(is_array($id_discip)) {
|
|||
|
$id_discipA = $id_discip;
|
|||
|
$id_discip= $id_discip[0];
|
|||
|
}else{
|
|||
|
$id_discipA = array();
|
|||
|
}
|
|||
|
$sql = 'SELECT cm.* FROM
|
|||
|
acs_fshp_uchebplans_compet as uc,
|
|||
|
acs_fshp_competmodels as cm
|
|||
|
WHERE
|
|||
|
uc.id_uchebplans='.$id_discip.' AND
|
|||
|
uc.id_compet=cm.id_comp AND
|
|||
|
cm.id_file='.$id_file;
|
|||
|
|
|||
|
$rez = $this->DB->QUR_SEL($sql);
|
|||
|
//echo $sql.'<pre>'.print_r($id_discipA,1).print_r($rez,1).'</pre>';//exit();
|
|||
|
//Array( [0] => 23570 [1] => 18155 [2] => 23384 )
|
|||
|
//SELECT cm.* FROM acs_fshp_uchebplans_compet as uc, acs_fshp_competmodels as cm WHERE uc.id_uchebplans=23570 AND uc.id_compet=cm.id_comp AND cm.id_file=200
|
|||
|
//SELECT cm.* FROM acs_fshp_uchebplans_compet as uc, acs_fshp_competmodels as cm WHERE uc.id_uchebplans=18155 AND uc.id_compet=cm.id_comp AND cm.id_file=238
|
|||
|
//SELECT cm.* FROM acs_fshp_uchebplans_compet as uc, acs_fshp_competmodels as cm WHERE uc.id_uchebplans=23384 AND uc.id_compet=cm.id_comp AND cm.id_file=203
|
|||
|
//SELECT cm.* FROM acs_fshp_uchebplans_compet as uc, acs_fshp_competmodels as cm WHERE uc.id_uchebplans=18155 AND uc.id_compet=cm.id_comp AND cm.id_file=200
|
|||
|
//SELECT cm.* FROM acs_fshp_uchebplans_compet as uc, acs_fshp_competmodels as cm WHERE uc.id_uchebplans=23384 AND uc.id_compet=cm.id_comp AND cm.id_file=200
|
|||
|
|
|||
|
//SELECT * FROM `acs_fshp_uchebplans_compet` WHERE `id_uchebplans`=18155 | id_compet: 50238 50239 50240
|
|||
|
//SELECT * FROM `acs_fshp_compet` WHERE `id`=50238 OR `id`=50239 OR `id`=50240 | id_file=238
|
|||
|
|
|||
|
if(!$rez['err']&&$rez['kol']) {
|
|||
|
foreach ($rez['rez'] as $key => $val) {
|
|||
|
$disc=array();
|
|||
|
/*$sql1 = 'SELECT cs.*,u.index1,u.name FROM '.$this->TUchebplans_compet_sem.' as cs,'.$this->TUchebplans.' as u WHERE u.id=cs.id_disc AND cs.id_compet='.$val['id_comp'];
|
|||
|
$rez1 = $this->DB->QUR_SEL($sql1);
|
|||
|
if(!$rez1['err']&&$rez1['kol']) {
|
|||
|
$disc = $rez1['rez'];
|
|||
|
}*/
|
|||
|
$out[] = array('komp'=>$val,'disc'=>$disc);
|
|||
|
}
|
|||
|
}
|
|||
|
/*$sql = 'SELECT * FROM
|
|||
|
acs_fshp_uchebplans_compet as uc,
|
|||
|
acs_fshp_compet as c
|
|||
|
WHERE
|
|||
|
uc.id_uchebplans='.$id_discip.' AND
|
|||
|
uc.id_compet=c.id AND
|
|||
|
c.id_file='.$id_file;
|
|||
|
$rez = $this->DB->QUR_SEL($sql);
|
|||
|
//echo $sql.'<prE>'.print_r($rez,1).'</prE>';
|
|||
|
if(!$rez['err']&&$rez['kol']) {
|
|||
|
foreach ($rez['rez'] as $key => $val) {
|
|||
|
$sql1 = 'SELECT * FROM acs_fshp_competmodels WHERE id_file=' . $id_file . ' AND comp_name_ind="'.$val['index'].' '.$val['descrip'].'" ORDER BY pos ASC';
|
|||
|
$rez1 = $this->DB->QUR_SEL($sql1);
|
|||
|
if (!$rez1['err'] && $rez1['kol']) {
|
|||
|
$out[] = array('komp'=>$rez1['rez'][0],'disc'=>array());
|
|||
|
}
|
|||
|
}
|
|||
|
}*/
|
|||
|
//echo $sql.'<prE>'.print_r($out,1).'</prE>'; exit();// 37324 37279
|
|||
|
//echo '$id_discipA <prE>'.print_r($id_discipA,1).'</prE>';
|
|||
|
//echo '$out <prE>'.print_r($out,1).'</prE>'; exit();
|
|||
|
if(count($out)==0&&count($id_discipA)){//ни чего не нашли смотрим в других дисциплинах
|
|||
|
//unset($id_discipA[0]);//array_values($id_discipA)
|
|||
|
foreach($id_discipA as $k => $v) if($k){
|
|||
|
if(count($DISCIPS)){//найдем id_file для плана
|
|||
|
foreach($DISCIPS as $k1 => $v1){
|
|||
|
if(isset($v1['uchebplan'])&&$v1['uchebplan']['id']==$v) {
|
|||
|
$id_file = $v1['uchebplan']['id_file'];
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
$out = $this->CompetGet($id_file, $v);
|
|||
|
//echo '$out['.$v.'] <prE>'.print_r($out,1).'</prE>';
|
|||
|
if(count($out)!=0) break;
|
|||
|
}
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
function CompetGet_old($id_file,$DISCIP_name=''){//старая версия до "комп.сем"
|
|||
|
$out = array();
|
|||
|
$cKOMPMODELS = new class_KOMPMODELS();
|
|||
|
$kompsmodels = $cKOMPMODELS->ItemNotUser($id_file);
|
|||
|
//echo $DISCIP_name.'=<pre>'.print_r($kompsmodels,1).'</pre>';exit();
|
|||
|
/*(
|
|||
|
[id] => 210
|
|||
|
[id_user] => 2140
|
|||
|
[id_file] => 25
|
|||
|
[comp_kod] => ОПК-1
|
|||
|
[comp_name] => Способен решать задачи профессиональной деятельности применяя методы моделирования, математического анализа, естественнонаучные и общеинженерные знания
|
|||
|
[comp_name_ind] => ОПК-1.1 Знает теоретические положения общенаучных и естественно-научных дисциплин; принципиальные особенности моделирования математических, физических и химических процессов, предназначенные для конкретных производственно-технологических процессов
|
|||
|
[comp_znat] =>
|
|||
|
[comp_umet] =>
|
|||
|
[comp_vladet] =>
|
|||
|
[pos] => 1
|
|||
|
)
|
|||
|
* */
|
|||
|
foreach ($kompsmodels as $key => $val){
|
|||
|
$tmp=array();
|
|||
|
//надо выбрать только свои компетенции
|
|||
|
$val['comp_krat_sod'] = 'Знать: '.$val['comp_znat']."\n".'Уметь: '.$val['comp_umet']."\n".'Владеть: '.$val['comp_vladet']."\n";
|
|||
|
$tmp['komp'] = $val;
|
|||
|
$tmp['disc'] = array();
|
|||
|
/*//теперь надо собрать дисциплины из УП
|
|||
|
//Находим в компетенциях учебных планов нужную компетенцию, смотрим к какой дисциплине привязана
|
|||
|
//и получаем данные дисциплины
|
|||
|
//$sql = 'SELECT up.name,up.ekzamen,up.zachet,up.zachetsocenk,up.kr,up.kp,up.kontrol
|
|||
|
// FROM acs_fshp_compet as c,acs_fshp_uchebplans_compet as uc,acs_fshp_uchebplans as up
|
|||
|
// WHERE c.index="'.$val['comp_name'].'" AND c.id_file='.$id_file.' AND uc.id_compet=c.id AND up.id=uc.id_uchebplans';
|
|||
|
$sql = 'SELECT up.name,up.ekzamen,up.zachet,up.zachetsocenk,up.kr,up.kp,up.kontrol
|
|||
|
FROM acs_fshp_compet as c,acs_fshp_uchebplans_compet as uc,acs_fshp_uchebplans as up
|
|||
|
WHERE c.descrip="'.$val['comp_name'].'" AND c.id_file='.$id_file.' AND uc.id_compet=c.id AND up.id=uc.id_uchebplans';
|
|||
|
//TODO надо решить по какому критерию искать! $val['comp_kod'] или $val['comp_name'] зависит как заполняют комп.модель
|
|||
|
$rez = $this->DB->QUR_SEL($sql);
|
|||
|
//echo $sql.'<prE>'.print_r($rez,1).'</prE>'; //exit();
|
|||
|
if(!$rez['err']&&$rez['kol']) {
|
|||
|
foreach ($rez['rez'] as $key1 => $val1) {
|
|||
|
$val1['sem'] = array();
|
|||
|
if ($val1['ekzamen'] != 0) $val1['sem'][] = $val1['ekzamen'];
|
|||
|
if ($val1['zachet'] != 0) $val1['sem'][] = $val1['zachet'];
|
|||
|
if ($val1['zachetsocenk'] != 0) $val1['sem'][] = $val1['zachetsocenk'];
|
|||
|
if ($val1['kr'] != 0) $val1['sem'][] = $val1['kr'];
|
|||
|
if ($val1['kp'] != 0) $val1['sem'][] = $val1['kp'];
|
|||
|
if ($val1['kontrol'] != 0) $val1['sem'][] = $val1['kontrol'];
|
|||
|
$val1['sem'] = array_unique($val1['sem']);
|
|||
|
sort($val1['sem']);
|
|||
|
//$tmp['disc'][$val1['name'].'_'.implode('_',$val1['sem'])] = $val1;
|
|||
|
foreach($val1['sem'] as $k => $v) {
|
|||
|
//только свои компетенции для дисциплины!!!
|
|||
|
if($DISCIP_name!=''&&$DISCIP_name==$val1['name']) {
|
|||
|
$tmp['disc'][$val1['name']][$v] = $v;
|
|||
|
}
|
|||
|
}
|
|||
|
//if(!isset($tmp['disc'])) unset($tmp['komp']);
|
|||
|
}
|
|||
|
}else{
|
|||
|
$tmp['disc'] = array();
|
|||
|
}*/
|
|||
|
if(isset($tmp)&&count($tmp)&&isset($tmp['disc'])) $out[] = $tmp;
|
|||
|
}
|
|||
|
//echo '<pre>'.print_r($out,1).'</pre>';exit();
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Переведем POST данные в data для базы
|
|||
|
* @param $post
|
|||
|
* @return array
|
|||
|
*/
|
|||
|
function RPD_POST_to_data($post){
|
|||
|
$data=array();
|
|||
|
$dataNULL = $this->RPD_prepare_data(array());
|
|||
|
//Определим что у нас в ПОСТ
|
|||
|
foreach ($dataNULL as $pole => $v){
|
|||
|
if(isset($post[$pole])){//в ПОСТ есть такое поле
|
|||
|
$data[$pole] = $post[$pole];
|
|||
|
}
|
|||
|
}
|
|||
|
if(isset($post['razdel22'])||isset($post['razdel23'])){//значит практики
|
|||
|
$raz2 = array();
|
|||
|
$raz2['razdel2'] = $post['razdel2'];
|
|||
|
$raz2['razdel22'] = $post['razdel22'];
|
|||
|
$raz2['razdel23'] = $post['razdel23'];
|
|||
|
$data['razdel2'] = json_encode($raz2,JSON_UNESCAPED_UNICODE);
|
|||
|
}
|
|||
|
return $data;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Проверка сохранений для дисциплины
|
|||
|
* @param $id_discip
|
|||
|
* @param int $id_prepod
|
|||
|
* @return array
|
|||
|
*/
|
|||
|
function RPD_check_row($id_discip,$id_prepod=0,$view_pdf=0){
|
|||
|
$out=array('err'=>1,'msg'=>'Не найдена РПД','id'=>0);
|
|||
|
if($id_prepod==-1) {
|
|||
|
$sql = 'SELECT * FROM ' . $this->Trpdsave . ' WHERE id_discip=' . $id_discip . ' LIMIT 1';
|
|||
|
}else {
|
|||
|
if ($id_prepod == 0) $id_prepod = $_SESSION['user']['id'];
|
|||
|
if ($view_pdf == 0) $sql = 'SELECT * FROM ' . $this->Trpdsave . ' WHERE id_discip=' . $id_discip . ' AND id_prepod=' . $id_prepod . ' LIMIT 1';
|
|||
|
else $sql = 'SELECT * FROM ' . $this->Trpdsave . ' WHERE id_discip=' . $id_discip . ' AND id=' . $view_pdf . ' ORDER BY data_c DESC LIMIT 1';
|
|||
|
}
|
|||
|
//$sql = 'SELECT * FROM '.$this->Trpdsave.' WHERE id_discip='.$id_discip.' AND id='.$view_pdf.' ORDER BY data_c DESC LIMIT 1';
|
|||
|
$rez = $this->DB->QUR_SEL($sql);
|
|||
|
//echo $sql.'<pre>'.print_r($rez,1).'</pre>'; exit();
|
|||
|
if(!$rez['err']&&$rez['kol']){
|
|||
|
//проверим второй пункт если он массив
|
|||
|
$tmp = json_decode($rez['rez'][0]['razdel2'],1);
|
|||
|
if($tmp){
|
|||
|
$rez['rez'][0]['razdel2'] = $tmp['razdel2'];
|
|||
|
$rez['rez'][0]['razdel22'] = $tmp['razdel22'];
|
|||
|
$rez['rez'][0]['razdel23'] = $tmp['razdel23'];
|
|||
|
}
|
|||
|
$out=array('err'=>0,'msg'=>'Найдена РПД','id'=>$rez['rez'][0]['id'],'all'=>$rez['rez'][0]);
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Подготовка данных для вставки в таблицу
|
|||
|
* @param $data
|
|||
|
* @return mixed
|
|||
|
*/
|
|||
|
function RPD_prepare_data($data){
|
|||
|
if(!isset($data['data_c'])) $data['data_c'] = time();
|
|||
|
if(!isset($data['id_discip'])) $data['id_discip'] = 0;
|
|||
|
if(!isset($data['id_prepod'])) $data['id_prepod'] = $_SESSION['user']['id'];
|
|||
|
if(!isset($data['razdel1'])) $data['razdel1'] = ''; else $data['razdel1'] = $this->DB->rescape($data['razdel1']);
|
|||
|
if(!isset($data['razdel2'])) $data['razdel2'] = ''; else $data['razdel2'] = $this->DB->rescape($data['razdel2']);
|
|||
|
if(!isset($data['razdel3'])) $data['razdel3'] = ''; else $data['razdel3'] = $this->DB->rescape($data['razdel3']);
|
|||
|
if(!isset($data['razdel4'])) $data['razdel4'] = ''; else $data['razdel4'] = $this->DB->rescape($data['razdel4']);
|
|||
|
if(!isset($data['razdel5'])) $data['razdel5'] = ''; else $data['razdel5'] = $this->DB->rescape($data['razdel5']);
|
|||
|
if(!isset($data['razdel5_4'])) $data['razdel5_4'] = ''; else $data['razdel5_4'] = $this->DB->rescape($data['razdel5_4']);
|
|||
|
if(!isset($data['razdel5_5'])) $data['razdel5_5'] = ''; else $data['razdel5_5'] = $this->DB->rescape($data['razdel5_5']);
|
|||
|
if(!isset($data['razdel5_6'])) $data['razdel5_6'] = ''; else $data['razdel5_6'] = $this->DB->rescape($data['razdel5_6']);
|
|||
|
if(!isset($data['razdel5_7'])) $data['razdel5_7'] = ''; else $data['razdel5_7'] = $this->DB->rescape($data['razdel5_7']);
|
|||
|
if(!isset($data['razdel5_8'])) $data['razdel5_8'] = ''; else $data['razdel5_8'] = $this->DB->rescape($data['razdel5_8']);
|
|||
|
if(!isset($data['razdel5_9'])) $data['razdel5_9'] = ''; else $data['razdel5_9'] = $this->DB->rescape($data['razdel5_9']);
|
|||
|
if(!isset($data['razdel6_1'])) $data['razdel6_1'] = ''; else $data['razdel6_1'] = $this->DB->rescape($data['razdel6_1']);
|
|||
|
if(!isset($data['razdel6_2'])) $data['razdel6_2'] = ''; else $data['razdel6_2'] = $this->DB->rescape($data['razdel6_2']);
|
|||
|
if(!isset($data['razdel7'])) $data['razdel7'] = ''; else $data['razdel7'] = $this->DB->rescape($data['razdel7']);
|
|||
|
if(!isset($data['razdel7_2'])) $data['razdel7_2'] = ''; else $data['razdel7_2'] = $this->DB->rescape($data['razdel7_2']);
|
|||
|
if(!isset($data['razdel7_3'])) $data['razdel7_3'] = ''; else $data['razdel7_3'] = $this->DB->rescape($data['razdel7_3']);
|
|||
|
if(!isset($data['razdel7_4'])) $data['razdel7_4'] = ''; else $data['razdel7_4'] = $this->DB->rescape($data['razdel7_4']);
|
|||
|
if(!isset($data['razdel8_1'])) $data['razdel8_1'] = ''; else $data['razdel8_1'] = $this->DB->rescape($data['razdel8_1']);
|
|||
|
if(!isset($data['razdel8_2'])) $data['razdel8_2'] = ''; else $data['razdel8_2'] = $this->DB->rescape($data['razdel8_2']);
|
|||
|
if(!isset($data['razdel8_3'])) $data['razdel8_3'] = ''; else $data['razdel8_3'] = $this->DB->rescape($data['razdel8_3']);
|
|||
|
if(!isset($data['razdel9'])) $data['razdel9'] = ''; else $data['razdel9'] = $this->DB->rescape($data['razdel9']);
|
|||
|
if(!isset($data['razdel10_1'])) $data['razdel10_1'] = ''; else $data['razdel10_1'] = $this->DB->rescape($data['razdel10_1']);
|
|||
|
if(!isset($data['razdel10_2'])) $data['razdel10_2'] = ''; else $data['razdel10_2'] = $this->DB->rescape($data['razdel10_2']);
|
|||
|
if(!isset($data['razdel11'])) $data['razdel11'] = ''; else $data['razdel11'] = $this->DB->rescape($data['razdel11']);
|
|||
|
if(!isset($data['razdel5_5_1']))$data['razdel5_5_1'] = ''; else $data['razdel5_5_1'] = $this->DB->rescape($data['razdel5_5_1']);
|
|||
|
return $data;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Сохранение РПД
|
|||
|
* @param $data
|
|||
|
* @return array
|
|||
|
*/
|
|||
|
function RPD_save($data){
|
|||
|
$data = $this->RPD_prepare_data($data);
|
|||
|
$sql = 'INSERT INTO '.$this->Trpdsave.' VALUES (0,'.$data['data_c'].','.$data['id_discip'].','.$data['id_prepod'].',"'.$data['razdel1'].'","'.$data['razdel2'].'","'.$data['razdel3'].'","'.$data['razdel4'].'","'.$data['razdel5'].'","'.$data['razdel5_4'].'","'.$data['razdel5_5'].'","'.$data['razdel5_6'].'","'.$data['razdel5_7'].'","'.$data['razdel5_8'].'","'.$data['razdel5_9'].'","'.$data['razdel6_1'].'","'.$data['razdel6_2'].'","'.$data['razdel7'].'","'.$data['razdel7_2'].'","'.$data['razdel7_3'].'","'.$data['razdel7_4'].'","'.$data['razdel8_1'].'","'.$data['razdel8_2'].'","'.$data['razdel8_3'].'","'.$data['razdel9'].'","'.$data['razdel10_1'].'","'.$data['razdel10_2'].'","'.$data['razdel11'].'","'.$data['razdel5_5_1'].'")';
|
|||
|
$rez = $this->DB->QUR($sql);
|
|||
|
if(!$rez['err']){
|
|||
|
$out['err']=0;
|
|||
|
$out['msg']='Добавили';
|
|||
|
$out['id']=$this->DB->lastinsertID();
|
|||
|
$sql2 = 'SELECT index1,name FROM '.$this->TUchebplans.' WHERE id = '.$data['id_discip'];
|
|||
|
$rez2 = $this->DB->QUR_SEL($sql2);
|
|||
|
if(!$rez2['err']&&$rez2['kol']){
|
|||
|
$up = $rez2['rez'][0];
|
|||
|
// id id_rpd name shifr status
|
|||
|
$sql2 = 'INSERT INTO '.$this->TrpdsaveName.' VALUES (0,'.$out['id'].',"'.$up['name'].'","'.$up['index1'].'",1)';
|
|||
|
$rez2 = $this->DB->QUR($sql2);
|
|||
|
}
|
|||
|
}else{
|
|||
|
$out['err']=1;
|
|||
|
$out['msg']='Не добавили';
|
|||
|
if(!isset($data['id_prepod'])) $out['msg'].='Вас долго не было! Не спите! Обновите страницу! Не жалуйтесь, что не сохранилось! Авторизуйтесь!';
|
|||
|
$out['id']=0;
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Обновление РПД
|
|||
|
* @param $id
|
|||
|
* @param $data
|
|||
|
* @return array
|
|||
|
*/
|
|||
|
function RPD_update($id,$data){
|
|||
|
$out = array('err'=>1,'msg'=>'Не обновили');
|
|||
|
//Получим пустой массив полей
|
|||
|
$dataNULL = $this->RPD_prepare_data(array());
|
|||
|
$intar = array('data_c','id_discip','id_prepod');
|
|||
|
$WH = array(); //Определим что у нас в обновлении
|
|||
|
//надо всегда обновлять дату сохранения!
|
|||
|
$WH[] = 'data_c='.time();
|
|||
|
foreach ($dataNULL as $pole => $v){
|
|||
|
if(isset($data[$pole])){//в обновлении есть такое поле
|
|||
|
if(in_array($pole,$intar)) $WH[] = $pole.'='.$this->DB->rescape($data[$pole]).'';
|
|||
|
else $WH[] = $pole.'="'.$this->DB->rescape($data[$pole]).'"';
|
|||
|
}
|
|||
|
}
|
|||
|
if(count($WH)){
|
|||
|
$set = implode(',',$WH);
|
|||
|
$sql = 'UPDATE '.$this->Trpdsave.' SET '.$set.' WHERE id='.$id.' LIMIT 1';
|
|||
|
$rez = $this->DB->QUR($sql);
|
|||
|
if(!$rez['err']){
|
|||
|
$out['err']=0;
|
|||
|
$out['msg']='Обновили';
|
|||
|
//$out['rez']=$sql.'<pre>'.print_r($data,1).'</pre>';
|
|||
|
//Обновим название РПД
|
|||
|
$sql2 = 'SELECT id FROM '.$this->TrpdsaveName.' WHERE id_rpd= '.$id;
|
|||
|
$rez2 = $this->DB->QUR_SEL($sql2);
|
|||
|
if(!$rez2['err']&&$rez2['kol']) {
|
|||
|
}else{
|
|||
|
$sql2 = 'SELECT id_discip FROM '.$this->Trpdsave.' WHERE id= '.$id.' LIMIT 1';
|
|||
|
$rez2 = $this->DB->QUR_SEL($sql2);
|
|||
|
if(!$rez2['err']&&$rez2['kol']) {
|
|||
|
$id_discip = $rez2['rez'][0]['id_discip'];
|
|||
|
$sql2 = 'SELECT index1,name FROM ' . $this->TUchebplans . ' WHERE id = ' . $id_discip;
|
|||
|
$rez2 = $this->DB->QUR_SEL($sql2);
|
|||
|
if (!$rez2['err'] && $rez2['kol']) {
|
|||
|
$up = $rez2['rez'][0];
|
|||
|
$sql2 = 'INSERT INTO ' . $this->TrpdsaveName . ' VALUES (0,' . $id . ',"' . $up['name'] . '","' . $up['index1'] . '",1)';
|
|||
|
$rez2 = $this->DB->QUR($sql2);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Отчистка РПД
|
|||
|
* @param $id
|
|||
|
* @param $data
|
|||
|
* @return array
|
|||
|
*/
|
|||
|
function RPD_clear($id_discip,$pole,$state,$tip,$id_prepod=0){
|
|||
|
$out = array('err'=>1,'msg'=>'Не удалили');
|
|||
|
if($id_prepod==0) $id_prepod = $_SESSION['user']['id'];
|
|||
|
if($state==1){
|
|||
|
$poleval = '';
|
|||
|
}else{
|
|||
|
if($tip=='table')
|
|||
|
$poleval = $this->DB->rescape('{"0":[{"sem":"null"}]}');
|
|||
|
if($tip=='text')
|
|||
|
$poleval = $this->DB->rescape('null');
|
|||
|
}
|
|||
|
$sql = 'UPDATE '.$this->Trpdsave.' SET '.$pole.'="'.$poleval.'" WHERE id_discip='.$id_discip.' AND id_prepod='.$id_prepod.' LIMIT 1';
|
|||
|
$rez = $this->DB->QUR($sql);
|
|||
|
if(!$rez['err']){
|
|||
|
$out['err']=0;
|
|||
|
if($state==1) {
|
|||
|
$out['msg']='Добавили раздел из РПД';
|
|||
|
}else{
|
|||
|
$out['msg']='Удалили раздел из РПД';
|
|||
|
}
|
|||
|
}else{
|
|||
|
$out['err']=1;
|
|||
|
if($state==1) {
|
|||
|
$out['msg']='Ошибка при добавлении раздела из РПД';
|
|||
|
}else {
|
|||
|
$out['msg'] = 'Ошибка при удалении из РПД';
|
|||
|
}
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Получим для дисциплины другие формы обучения
|
|||
|
* @param $id_disc
|
|||
|
* @return array
|
|||
|
*/
|
|||
|
function Disciplin_Get_Grupp($id_disc){
|
|||
|
$out = array();
|
|||
|
//Получим выбранную дисциплину
|
|||
|
$discip = $this->Disciplin($id_disc);
|
|||
|
//echo $id_disc.'<pre>'.print_r($discip,1).'</pre>';exit();
|
|||
|
//надо подобрать из других планов ОЧНИКИ, ЗАОЧНИКИ, ОЧЗАОЧ;
|
|||
|
$fos = array('Очная','Заочная','Очно-заочная');//Удалим уже выбранную ФО
|
|||
|
foreach($fos as $k => $v) if(mb_strtolower($v)==mb_strtolower($discip['title']['fo'])) unset($fos[$k]);
|
|||
|
$out[$discip['title']['fo']] = $discip;
|
|||
|
//Год, направление, профиль, название дисциплины, шифр, уровень, очная, зфо и озфо, а также код кафедры
|
|||
|
foreach($fos as $k => $fo) {
|
|||
|
$sql = 'SELECT up.id FROM
|
|||
|
' . $this->TFile . ' as f,
|
|||
|
' . $this->TUchebplans . ' as up
|
|||
|
WHERE
|
|||
|
up.id_file=f.id_file AND
|
|||
|
up.name="'.$discip['uchebplan']['name'].'" AND
|
|||
|
f.shifr="' . $discip['title']['shifr'] . '" AND
|
|||
|
f.profil="'.$discip['title']['profil'].'" AND
|
|||
|
f.fo="'.$fo.'" AND
|
|||
|
f.god_nach_podgot="'.$discip['title']['god_nach_podgot'].'" AND
|
|||
|
up.kaf_kod = "'.$discip['uchebplan']['kaf_kod'].'"
|
|||
|
';
|
|||
|
$rez = $this->DB->QUR_SEL($sql);
|
|||
|
if (!$rez['err'] && $rez['kol']) {
|
|||
|
$discip1 = $this->Disciplin($rez['rez'][0]['id']);
|
|||
|
$out[$discip1['title']['fo']] = $discip1;
|
|||
|
}
|
|||
|
}
|
|||
|
//echo $sql.'<pre>'.print_r($out,1).'</pre>';exit();
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Получим для дисциплины другие формы обучения ДЛЯ ВСЕХ ГОДОВ
|
|||
|
* @param $id_user
|
|||
|
* @return array
|
|||
|
*/
|
|||
|
function Disciplins_ALL($id_user){
|
|||
|
$out=array();
|
|||
|
if($id_user==0) $id_user = $_SESSION['user']['id'];
|
|||
|
$cYear = 'AND f.god_nach_podgot='.$_SESSION['year_cur'];
|
|||
|
$sql = 'SELECT
|
|||
|
u.*,f.shifr,f.program,f.naprav,f.profil,f.kafedra,f.god_nach_podgot,f.fo,f.srok_poluch_obr,up.status as up_status
|
|||
|
FROM
|
|||
|
'.$this->TUchebplansPrepod.' as up,
|
|||
|
'.$this->TUchebplans.' as u,
|
|||
|
'.$this->TFile.' as f
|
|||
|
WHERE
|
|||
|
up.id_prepod='.$id_user.' AND
|
|||
|
up.id_uchebplans=u.id AND
|
|||
|
u.id_file = f.id_file
|
|||
|
ORDER BY f.god_nach_podgot,f.shifr,f.naprav,f.profil, up.data_c DESC';
|
|||
|
$rez = $this->DB->QUR_SEL($sql);
|
|||
|
//echo '<pre>'.print_r($rez,1).'</pre>'; exit();
|
|||
|
if(!$rez['err']&&$rez['kol']){
|
|||
|
foreach ($rez['rez'] as $k => $v){
|
|||
|
//проверить есть ли другие преподы по номеру дисциплины
|
|||
|
$sql1 = 'SELECT * FROM '.$this->TUchebplansPrepod.' WHERE id_uchebplans='.$v['id'].' ORDER BY data_c DESC';
|
|||
|
$rez1 = $this->DB->QUR_SEL($sql1);
|
|||
|
//если текущий пользователь и последний назначенный равны и статус равен 1 то отображаем
|
|||
|
//TODO может отобразить с пометкой заблокировано?
|
|||
|
if($rez1['rez'][0]['id_prepod']==$id_user && $rez1['rez'][0]['status']==1) {
|
|||
|
//$v['saveinfo'] = $this->SaveInfo($v['id']);
|
|||
|
//$rpdsigns = $this->RPDSigns($v['id']);
|
|||
|
//if(count($rpdsigns)) $edit=0; else $edit=1;
|
|||
|
//if($rpdsigns[0]['sign']=='Автор') $edit=0;
|
|||
|
//if($rpdsigns[0]['sign']=='Разработчик') $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=1;
|
|||
|
//if($rpdsigns[0]['sign']=='Проректор'&&$rpdsigns[0]['status']==0) $edit=1;
|
|||
|
//$v['rpdsigns'] = $rpdsigns;
|
|||
|
//$v['edit'] = $edit;
|
|||
|
$out['items'][] = $v;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Выбор назначенных дисциплин преподавтелю
|
|||
|
* @param int $id_user
|
|||
|
* @return array
|
|||
|
*/
|
|||
|
public function Disciplins($id_user=0){
|
|||
|
$out=array();
|
|||
|
if($id_user==0) $id_user = $_SESSION['user']['id'];
|
|||
|
$cYear = 'AND f.god_nach_podgot='.$_SESSION['year_cur'];
|
|||
|
$sql = 'SELECT
|
|||
|
u.*,f.shifr,f.program,f.naprav,f.profil,f.kafedra,f.god_nach_podgot,f.fo,f.srok_poluch_obr,up.status as up_status
|
|||
|
FROM
|
|||
|
'.$this->TUchebplansPrepod.' as up,
|
|||
|
'.$this->TUchebplans.' as u,
|
|||
|
'.$this->TFile.' as f
|
|||
|
WHERE
|
|||
|
up.id_prepod='.$id_user.' AND
|
|||
|
up.id_uchebplans=u.id AND
|
|||
|
u.id_file = f.id_file '.$cYear.'
|
|||
|
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 '<pre>'.print_r($rez,1).'</pre>'; exit();
|
|||
|
if(!$rez['err']&&$rez['kol']){
|
|||
|
foreach ($rez['rez'] as $k => $v){
|
|||
|
//проверить есть ли другие преподы по номеру дисциплины
|
|||
|
$sql1 = 'SELECT * FROM '.$this->TUchebplansPrepod.' WHERE id_uchebplans='.$v['id'].' ORDER BY data_c DESC';
|
|||
|
$rez1 = $this->DB->QUR_SEL($sql1);
|
|||
|
//если текущий пользователь и последний назначенный равны и статус равен 1 то отображаем
|
|||
|
//TODO может отобразить с пометкой заблокировано?
|
|||
|
if($rez1['rez'][0]['id_prepod']==$id_user && $rez1['rez'][0]['status']==1) {
|
|||
|
$v['saveinfo'] = $this->SaveInfo($v['id']);
|
|||
|
$rpdsigns = $this->RPDSigns($v['id']);
|
|||
|
if(count($rpdsigns)) $edit=0; else $edit=1;
|
|||
|
if($rpdsigns[0]['sign']=='Автор') $edit=0;
|
|||
|
if($rpdsigns[0]['sign']=='Разработчик') $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=1;
|
|||
|
if($rpdsigns[0]['sign']=='Проректор'&&$rpdsigns[0]['status']==0) $edit=1;
|
|||
|
$v['rpdsigns'] = $rpdsigns;
|
|||
|
$v['edit'] = $edit;
|
|||
|
$out['items'][] = $v;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Надо выбрать РПД которые делали но потом отдали другим(не принадлежит дисциплина текущему пользователю)
|
|||
|
* @param $id_user
|
|||
|
* @return array
|
|||
|
*/
|
|||
|
public function Disciplins_OTDAN($id_user=0){
|
|||
|
$out=array();
|
|||
|
if($id_user==0) $id_user = $_SESSION['user']['id'];
|
|||
|
$id_ups=array();//учебные планы назначенные преподу!
|
|||
|
$sql = 'SELECT id_uchebplans FROM '.$this->TUchebplansPrepod.' WHERE id_prepod='.$id_user;
|
|||
|
$rez = $this->DB->QUR_SEL($sql);
|
|||
|
if(!$rez['err']&&$rez['kol']){
|
|||
|
foreach($rez['rez'] as $key => $val){
|
|||
|
$id_ups[] = $val['id_uchebplans'];
|
|||
|
}
|
|||
|
}
|
|||
|
//Выберем "висячие" сохранения!
|
|||
|
$sql = 'SELECT id_discip FROM '.$this->Trpdsave.' WHERE id_prepod='.$id_user.' AND id_discip NOT IN('.implode(',',$id_ups).')';
|
|||
|
$rez = $this->DB->QUR_SEL($sql);
|
|||
|
if(!$rez['err']&&$rez['kol']){
|
|||
|
foreach($rez['rez'] as $key => $val){
|
|||
|
$sql1 = 'SELECT index1,name,kaf_kod,kaf_name FROM '.$this->TUchebplans.' WHERE id='.$val['id_discip'];
|
|||
|
$rez1 = $this->DB->QUR_SEL($sql1);
|
|||
|
if(!$rez1['err']&&$rez1['kol']){
|
|||
|
$out = $rez['rez'];
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
/**
|
|||
|
* Выбираем РПД без УЧЕБНЫХ ПЛАНОВ!
|
|||
|
* @param $id_user
|
|||
|
* @return array
|
|||
|
*/
|
|||
|
public function Disciplins_BEZUP($id_user=0){
|
|||
|
$out=array();
|
|||
|
if($id_user==0) $id_user = $_SESSION['user']['id'];
|
|||
|
//выберем РПД у которых нет учебных планов!
|
|||
|
$sql = 'SELECT rs.id,rs.data_c,rs.id_prepod,rs.razdel1,rs.razdel2,rs.razdel3,rs.razdel4,rs.razdel5 FROM acs_fshp_rpd_save as rs WHERE rs.id_prepod='.$id_user.' AND rs.id_discip not in (select up.id from acs_fshp_uchebplans as up)';
|
|||
|
$rez = $this->DB->QUR_SEL($sql);
|
|||
|
if(!$rez['err']&&$rez['kol']){
|
|||
|
foreach ($rez['rez'] as $key => $val) {
|
|||
|
$val['razdel1'] = strip_tags($val['razdel1']);
|
|||
|
$val['razdel2'] = strip_tags($val['razdel2']);
|
|||
|
$val['razdel5'] = json_decode($val['razdel5'],1);
|
|||
|
$sql2 = 'SELECT name,shifr FROM '.$this->TrpdsaveName.' WHERE id_rpd='.$val['id'].' LIMIT 1';
|
|||
|
$rez2 = $this->DB->QUR_SEL($sql2);
|
|||
|
if(!$rez2['err']&&$rez2['kol']){
|
|||
|
$val['rpd_name'] = $rez2['rez'][0]['name'];
|
|||
|
$val['rpd_shifr'] = $rez2['rez'][0]['shifr'];
|
|||
|
}else{
|
|||
|
$val['rpd_name'] = '';
|
|||
|
$val['rpd_shifr'] = '';
|
|||
|
}
|
|||
|
$out[] = $val;
|
|||
|
}
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Получение информации о сохраненных данных
|
|||
|
* @param $id_rpd
|
|||
|
* @return array
|
|||
|
*/
|
|||
|
public function RPDSigns($id_rpd){
|
|||
|
$out=array();
|
|||
|
/*acs_fshp_rpd_signs: id data_c id_user id_rpd sign descrip*/
|
|||
|
$sql = 'SELECT * FROM '.$this->Trpdsign.' WHERE id_rpd='.$id_rpd.' ORDER BY data_c DESC';
|
|||
|
$rez = $this->DB->QUR_SEL($sql);
|
|||
|
if(!$rez['err']&&$rez['kol']){
|
|||
|
foreach ($rez['rez'] as $k => $v){
|
|||
|
if($v['sign']=='Проректор'&&$v['status']==1){
|
|||
|
$tmp = explode('|#|',$v['descrip']);
|
|||
|
$v['descrip']='';
|
|||
|
$v['file_pdf']=$tmp[0];
|
|||
|
$v['url_pdf']=$tmp[1];
|
|||
|
}
|
|||
|
$out[] = $v;
|
|||
|
}
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Получение информации о сохраненных данных
|
|||
|
* @param $id_rpd
|
|||
|
* @return array
|
|||
|
*/
|
|||
|
public function SaveInfo($id_rpd){
|
|||
|
$out=array('err'=>0,'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','razdel5_5_1'=>'5.5.1');
|
|||
|
$sql = 'SELECT * FROM '.$this->Trpdsave.' WHERE id_discip='.$id_rpd.' LIMIT 1';
|
|||
|
$rez = $this->DB->QUR_SEL($sql);
|
|||
|
//$out['rez']=$rez;
|
|||
|
if(!$rez['err']&&$rez['kol']){
|
|||
|
$save = $rez['rez'][0];
|
|||
|
$out['err']=0;
|
|||
|
$out['msg']='получили данные';
|
|||
|
$out['id']=$save['id'];
|
|||
|
$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;
|
|||
|
}
|
|||
|
}
|