EIOS/rabprog/inc/class_RPD.php

1619 lines
89 KiB
PHP
Raw Permalink Normal View History

2023-12-28 15:39:22 +03:00
<?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;
}
}