EIOS/rabprog/inc/class_KOMPMODELS.php

620 lines
37 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
class class_KOMPMODELS{
private $DB=null;
private $TFile='';
private $TUchebplans='';
private $TCompet='';
private $TUchebplans_compet='';
private $TCompetModels='';
private $polya=array();
function __construct(){
GLOBAL $DB,$ST;
$this->DB = $DB;
$this->TFile = $ST['dbpf'].'_fshp_file';
$this->TUchebplans = $ST['dbpf'].'_fshp_uchebplans';
$this->TCompet = $ST['dbpf'].'_fshp_compet';
$this->TUchebplans_compet = $ST['dbpf'].'_fshp_uchebplans_compet';
$this->TCompetModels = $ST['dbpf'].'_fshp_competmodels';
$this->polya = $this->table_create();
}
/**
* Создание таблицы и возвращение полей таблицы
* @return string[][]
*/
private function table_create(){
$polya = array(
0=>array('name'=>'id','type'=>'int(11)','nul'=>'NOT NULL','dop'=>'AUTO_INCREMENT'),
array('name'=>'id_user','type'=>'int(11)','nul'=>'NOT NULL','dop'=>''),
array('name'=>'id_file','type'=>'int(11)','nul'=>'NOT NULL','dop'=>''),
array('name'=>'comp_kod','type'=>'varchar(255)','nul'=>'NOT NULL','dop'=>''),
array('name'=>'comp_name','type'=>'varchar(255)','nul'=>'NOT NULL','dop'=>''),
array('name'=>'comp_name_ind','type'=>'varchar(255)','nul'=>'NOT NULL','dop'=>''),
array('name'=>'comp_znat','type'=>'text','nul'=>'NOT NULL','dop'=>''),
array('name'=>'comp_umet','type'=>'text','nul'=>'NOT NULL','dop'=>''),
array('name'=>'comp_vladet','type'=>'text','nul'=>'NOT NULL','dop'=>''),
array('name'=>'pos','type'=>'int(11)','nul'=>'NOT NULL','dop'=>''),
array('name'=>'id_comp','type'=>'int(11)','nul'=>'NOT NULL','dop'=>''),
);
$sql = 'CREATE TABLE IF NOT EXISTS `'.$this->TCompetModels.'` (';
foreach($polya as $k => $v){ $sql .= '`'.$v['name'].'` '.$v['type'].' '.$v['nul'].' '.$v['dop'].',';}
$sql .= 'primary key (id) ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;';
$this->DB->QUR($sql);
return $polya;
}
/**
* Основа работы с интерфейсом
* @return string[]|void
* @throws SmartyException
*/
public function HTML(){
GLOBAL $WorkDIR;
$CHPU = new class_CHPU($WorkDIR);
$URLS = $CHPU->uri();
$smartyC = new class_smarty();
$smarty = $smartyC->config(__DIR__.'\..\tpl');
$view = 'all';
$out = array('name'=>'Компетентностные модели','body'=>'');
//обработка АЯКС запросов
if(isset($_POST['ajdes'])){
header('Content-Type: application/json; charset=utf-8');
$out=array();
//удаление записи комп.модели
if($_POST['ajdes']=='Dele_TR'){
$data['id_file'] = (int)$_POST['ID_PLAN'];
$data['id'] = (int)$_POST['idr'];
$out = $this->Delete($data);
}
//сохранение записи комп.модели
if($_POST['ajdes']=='Save_TR'){
/*ID_PLAN, kod, name, name_ind, krat_sod*/
$data['id_file'] = (int)$_POST['ID_PLAN'];
$data['id_comp'] = (int)$_POST['id_comp'];
$data['pos'] = (int)$_POST['pos']; if ($data['pos'] =='') $data['pos'] = 0;
$data['kod'] = $_POST['kod'];
$data['name'] = $this->DB->rescape($_POST['name']);
$data['name_ind'] = $this->DB->rescape($_POST['name_ind']);
$data['znat'] = $this->DB->rescape($_POST['znat']);
$data['umet'] = $this->DB->rescape($_POST['umet']);
$data['vladet'] = $this->DB->rescape($_POST['vladet']);
$data['id'] = (int)$_POST['idr'];
if($data['id']==0) $out = $this->Save($data);
else $out = $this->Edit($data);
}echo json_encode($out);
exit();
}
//Создание комп.модели из прошлого года!!!
if(isset($URLS[1])&&$URLS[1]=='addcomp_all_oldyear') {
$id = (int)$URLS[2];
$msg = $this->compmodel_copy($id);
$smarty->assign('msg', $msg);
$URLS[1]='all';
}
//Создание комп.модели
if(isset($URLS[1])&&$URLS[1]=='addcomp_all') {
$id = (int)$URLS[2];
$URLS[1]='edit';
$SAVES = $this->Item($id);
$UPLAN = $this->UCHEBPLAN($id);
//надо убрать из UPLAN компетенции которые уже сохранили!
foreach ($SAVES as $k => $v){
foreach($UPLAN['comp'] as $k1 => $v1){
//if($v1['index']==$v['comp_name_ind']) unset($UPLAN['comp'][$k1]);
if (strpos($v['comp_name_ind'], $v1['index']) !== false) unset($UPLAN['comp'][$k1]);
}
}
//получили оставшиеся модели, сохраняем их
$pos=1; foreach ($UPLAN['comp'] as $key => $val){
if (strpos($val['index'],'.')!==False) {//С кодами ОПК-1 не добавляем, только ОПК-1.1
$data['id_file'] = $id;
$data['pos'] = $pos;
$data['id_comp'] = $this->DB->rescape($val['id_comp']);
$data['kod'] = $this->DB->rescape($val['kod']);
$data['name'] = $this->DB->rescape($val['name']);
$data['name_ind'] = $this->DB->rescape($val['index']) . ' ' . $this->DB->rescape($val['descrip']);
$data['znat'] = '';
$data['umet'] = '';
$data['vladet'] = '';
$data['id'] = 0;
if ($data['id'] == 0) $out = $this->Save($data);
else $out = $this->Edit($data);
$pos++;
}
}
//echo '<pre>'.print_r($UPLAN,1).'</pre>';exit();
}
if(isset($URLS[1])&&$URLS[1]=='compare11') {//Скопируем компетенции на другие учебные планы
//Выберем все дисциплины из плана!
$sql = 'SELECT id,index1,name FROM '.$this->TUchebplans.' WHERE id_file='.$id;
$rez = $this->DB->QUR_SEL($sql);
$Uchebplans = $rez['rez'];
//Получим другие учбные планы
$sql = 'SELECT * FROM '.$this->TFile.' WHERE id_file='.$id;
$rez = $this->DB->QUR_SEL($sql);
$up_cur = $rez['rez'][0];
$sql = 'SELECT id_file FROM '.$this->TFile.' WHERE shifr="'.$up_cur['shifr'].'" AND naprav="'.$up_cur['naprav'].'" AND profil="'.$up_cur['profil'].'" AND kafedra="'.$up_cur['kafedra'].'" AND fakultet="'.$up_cur['fakultet'].'" AND kvalif="'.$up_cur['kvalif'].'" AND god_nach_podgot="'.$up_cur['god_nach_podgot'].'" AND id!='.$up_cur['id'];
$rez = $this->DB->QUR_SEL($sql);
if(!$rez['err']&&$rez['kol']){
foreach($rez['rez'] as $k => $v){
$id_file_cur = $v['id_file'];
}
}
//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 * FROM `acs_fshp_uchebplans_compet` WHERE `id_uchebplans`=23570 | id_compet: 37319 37320 37321 58043
//SELECT * FROM `acs_fshp_competmodels` WHERE `id_comp`=37319 OR `id_comp`=37320 OR `id_comp`=37321 OR `id_comp`=58043 | null
}
if(isset($URLS[1])&&$URLS[1]=='compare11'){//Скопируем компетенции на другие учебные планы
$id = (int)$URLS[2];
$sql = 'SELECT * FROM '.$this->TFile.' WHERE id_file='.$id;
$rez = $this->DB->QUR_SEL($sql);
//Array(
// [id] => 310 [data_c] => 1666951386 [id_file] => 201 [program] => бакалавриата
// [shifr] => 21.03.01 [naprav] => Нефтегазовое дело
// [profil] => Эксплуатация и обслуживание объектов транспорта и хранения нефти, газа и продуктов переработки
// [kafedra] => Нефтегазового дела и энергетики [fakultet] => Инженерный
// [kvalif] => бакалавр [god_nach_podgot] => 2022 [fo] => Очная [obr_stabdart] => № 96 от 09.02.2018
// [srok_poluch_obr] => 4г [json] => {"kods"{"""19.008"}} [status] => 1
//)
$up_cur = $rez['rez'][0];
//соберем все компетенции
$sql = 'SELECT * FROM '.$this->TCompetModels.' WHERE id_file='.$id;
$rez = $this->DB->QUR_SEL($sql);
$competens = $rez['rez'];
//echo '<pre>'.print_r($rez,1).'</pre>';
//Array([err] => [kol] => 102
// [rez] => Array(
// [0] => Array(
// [id] => 4143 [id_user] => 717 [id_file] => 201 [comp_kod] => ОПК-1
// [comp_name] => Способен решать задачи, относящиеся к профессиональной деятельности, ...
// [comp_name_ind] => ОПК-1.1 Использует основные законы дисциплин инженерно-механического модуля
// [comp_znat] => основные положения, методы и законы естественнонаучных дисциплин используемых в нефтегазовых технологиях
// [comp_umet] => применять знания естественнонаучных дисциплин для решения профессиональных задач
// [comp_vladet] => методами и средствами математического анализа и моделирования, ...
// [pos] => 1 [id_comp] => 37450
// )...
//$sql = 'INSERT INTO `'.$this->TCompetModels.'` VALUES(0,'.$_SESSION['user']['id'].','.$data['id_file'].',"'.$data['kod'].'","'.$data['name'].'","'.$data['name_ind'].'","'.$data['znat'].'","'.$data['umet'].'","'.$data['vladet'].'",'.$data['pos'].','.$data['id_comp'].');';
$sql = 'SELECT id_file FROM '.$this->TFile.' WHERE shifr="'.$up_cur['shifr'].'" AND naprav="'.$up_cur['naprav'].'" AND profil="'.$up_cur['profil'].'" AND kafedra="'.$up_cur['kafedra'].'" AND fakultet="'.$up_cur['fakultet'].'" AND kvalif="'.$up_cur['kvalif'].'" AND god_nach_podgot="'.$up_cur['god_nach_podgot'].'" AND id!='.$up_cur['id'];
$rez = $this->DB->QUR_SEL($sql);
if(!$rez['err']&&$rez['kol']){ // 200 203 238
//SELECT * FROM `acs_fshp_competmodels` WHERE `id_file`=200 OR `id_file`=203 OR `id_file`=238
//DELETE FROM acs_fshp_competmodels WHERE id_file=203 OR id_file=238
//SELECT u.id as uid,uc.id as ucid FROM acs_fshp_uchebplans as u, acs_fshp_uchebplans_compet as uc WHERE u.id_file=203 AND u.id=uc.id_uchebplans
/*
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 * FROM `acs_fshp_uchebplans_compet` WHERE `id_uchebplans`=23570
//id_compet: 37319 37320 37321 58043
//SELECT * FROM `acs_fshp_competmodels` WHERE `id_comp`=37319 OR `id_comp`=37320 OR `id_comp`=37321 OR `id_comp`=58043
foreach($rez['rez'] as $k => $v){
echo $v['id_file'].'<bR>';
$this->DB->QUR('DELETE FROM `'.$this->TCompetModels.'` WHERE id_file='.$v['id_file']);
foreach($competens as $k1 => $comp){
//Добавим название компетенций
$sql1 = 'SELECT * FROM '.$this->TCompet.' WHERE id='.$comp['id_comp'];
$rez1 = $this->DB->QUR_SEL($sql1);
if(!$rez1['err']&&$rez1['kol']){
$cc = $rez1['rez'][0];
//Проверим есть ли такая уже в этом файле
$sql1 = 'SELECT id FROM '.$this->TCompet.' WHERE id_file='.$v['id_file'].' AND index="'.$cc['index'].'" AND descrip="'.$cc['descrip'].'"';
$rez1 = $this->DB->QUR_SEL($sql1);
if(!$rez1['err']&&$rez1['kol']) {
$competid = $rez1['rez'][0]['id'];
}else{
$sql2 = 'INSERT INTO `' . $this->TCompet . '` VALUES(0,' . $v['id_file'] . ',' . $cc['index'] . '","' . $cc['descrip'] . '");';
$rez2 = $this->DB->QUR($sql2);
$competid = $rez2['id'];
}
// $comp => Array(
// [id] => 4143 [id_user] => 717 [id_file] => 201 [comp_kod] => ОПК-1
// [comp_name] => Способен решать задачи, относящиеся к профессиональной деятельности, ...
// [comp_name_ind] => ОПК-1.1 Использует основные законы дисциплин инженерно-механического модуля
// [comp_znat] => основные положения, методы и законы естественнонаучных дисциплин используемых в нефтегазовых технологиях
// [comp_umet] => применять знания естественнонаучных дисциплин для решения профессиональных задач
// [comp_vladet] => методами и средствами математического анализа и моделирования, ...
// [pos] => 1 [id_comp] => 37450
// )...
//Добавляем компетен модель
$sql3 = 'INSERT INTO `'.$this->TCompetModels.'` VALUES(0,'.$comp['id_user'].','.$v['id_file'].',"'.$comp['comp_kod'].'","'.$comp['comp_name'].'","'.$comp['comp_name_ind'].'","'.$comp['comp_znat'].'","'.$comp['comp_umet'].'","'.$comp['comp_vladet'].'",'.$comp['pos'].','.$competid.');';
$this->DB->QUR($sql3);
//Нужно связать дисциплины с компетенциями!!!! для каждого файла
}
}
}
}
$URLS[1]='all';
exit();
}
if(isset($URLS[1])&&$URLS[1]=='edit') {
$id = (int)$URLS[2];
//$this->compmodel_copy($id);
//Надо получить из УП все компетенции
$SAVES = $this->Item($id);
$UPLAN = $this->UCHEBPLAN($id);
//echo '<pre>'.print_r($SAVES,1).'</pre>';exit();
//echo '<pre>'.print_r($UPLAN['comp'],1).'</pre>';
//надо убрать из UPLAN компетенции которые уже сохранили!
foreach ($SAVES as $k => $v){
foreach($UPLAN['comp'] as $k1 => $v1){
if (strpos($v['comp_name_ind'], $v1['index']) !== false) {
if(strpos($v1['index'],'.')!==false) {//ОПК-1 сравнивается с ОПК-1.1 - исключаем
$SAVES[$k]['isset'] = $v1;
if ($v1['id_comp'] != $SAVES[$k]['id_comp']) {
$SAVES[$k]['id_comp'] = $v1['id_comp'];
$SAVES[$k]['needsave'] = 1;
}
unset($UPLAN['comp'][$k1]);
}
}
}
}
//echo '<pre>'.print_r($SAVES,1).'</pre>';exit();
$smarty->assign('SAVES', $SAVES);
$smarty->assign('UPLAN', $UPLAN);
$smarty->assign('view', $URLS[1]);
$smarty->assign('ID_PLAN', $id);
$out['body'] = $smarty->fetch('page_komp_models.html');
}
//Отображение всех УП закрепленных за кафедрой
if(!isset($URLS[1])||$URLS[1]=='all') {
$items = $this->UCHEBPLANS();
$smarty->assign('UCHEBPLANS', $items);
$KAF = array('name'=>$_SESSION['user']['teachers']['kafedra']);
$smarty->assign('kaf',$KAF);
$smarty->assign('view', $view);
$out['body'] = $smarty->fetch('page_komp_models.html');
}
return $out;
}
function compmodel_copy($id_file){
$out=array();
$out['err']=0;
//Получим параметры текущего плана
$sql = 'SELECT * FROM '.$this->TFile.' WHERE id_file='.$id_file;
$rez = $this->DB->QUR_SEL($sql);
if(!$rez['err']&&$rez['kol']) {
$cur_plan = $rez['rez'][0];
//echo '<pre style="display: none;">' . print_r($cur_plan, 1) . '</pre>';
//Array([id] => 359 [data_c] => 1681992547 [id_file] => 330
//[program] => магистратуры [shifr] => 21.04.02 [naprav] => Землеустройство и кадастры
//[profil] => [kafedra] => Землеустройства [fakultet] => Аграрных технологий
//[kvalif] => магистр [god_nach_podgot] => 2023 [fo] => Очная
//[status] => 1 [srok_poluch_obr] => 2 г. [json] => {"kods"{"""10.003"}}
//[obr_stabdart] => № 945 от 11.08.2020
//)
//Надо найти прошлогодний файл!
$god = ($cur_plan['god_nach_podgot']-1);
$sql = 'SELECT * FROM '.$this->TFile.' WHERE program="'.$this->DB->rescape($cur_plan['program']).'" AND shifr="'.$this->DB->rescape($cur_plan['shifr']).'" AND naprav="'.$this->DB->rescape($cur_plan['naprav']).'" AND kafedra="'.$this->DB->rescape($cur_plan['kafedra']).'" AND fakultet="'.$this->DB->rescape($cur_plan['fakultet']).'" AND fo="'.$this->DB->rescape($cur_plan['fo']).'" AND god_nach_podgot='.$god.'';
$rez = $this->DB->QUR_SEL($sql);
echo '<pre style="display: none;">' . print_r($cur_plan, 1) . '</pre>';
echo '<pre style="display: none;">' . print_r($rez, 1) . '</pre>';
if(!$rez['err']&&$rez['kol']) {
$old_plan = $rez['rez'][0];
//echo '<pre style="display: none;">' . print_r($old_plan, 1) . '</pre>';
$old_id_file = $old_plan['id_file'];
$sql = 'SELECT * FROM '.$this->TCompetModels.' WHERE id_file='.$old_plan['id_file'];
$rez = $this->DB->QUR_SEL($sql);
//echo '<pre style="display: none;">' .$sql. print_r($rez, 1) . '</pre>';
if(!$rez['err']&&$rez['kol']) {
//echo '<div style="display: none;">';
//id, id_user, id_file, comp_kod, comp_name, comp_name_ind, comp_znat, comp_umet, comp_vladet, pos, id_comp
foreach ($rez['rez'] as $key => $compmodel){
//Выберем старую кометенцию по id_comp - номер компетенции
$sql1 = 'SELECT * FROM '.$this->TCompet.' WHERE id='.$compmodel['id_comp'];
$rez1 = $this->DB->QUR_SEL($sql1);
if(!$rez1['err']&&$rez1['kol']) {
$old_compet = $rez1['rez'][0];
//Найдем такую же в новом плане
$sql1 = 'SELECT id FROM '.$this->TCompet.' WHERE id_file='.$cur_plan['id_file'].' AND `index`="'.$old_compet['index'].'"';
$rez1 = $this->DB->QUR_SEL($sql1);
//echo '<pre style="display: none;">' .$sql1. print_r($rez1, 1) . '</pre>';
if(!$rez1['err']&&$rez1['kol']) {
$id_comp = $rez1['rez'][0]['id'];
//Теперь запишем комп. модель
$sql2 = 'INSERT INTO '.$this->TCompetModels.' VALUES (0,'.$compmodel['id_user'].','.$id_file.',"'.$this->DB->rescape($compmodel['comp_kod']).'","'.$this->DB->rescape($compmodel['comp_name']).'","'.$this->DB->rescape($compmodel['comp_name_ind']).'","'.$this->DB->rescape($compmodel['comp_znat']).'","'.$this->DB->rescape($compmodel['comp_umet']).'","'.$this->DB->rescape($compmodel['comp_vladet']).'",'.$compmodel['pos'].','.$id_comp.');';
$rez2 = $this->DB->QUR($sql2);
//echo $sql2.'<br>'.PHP_EOL;
}
}
}
//echo '</div>';
}else{
$out['err']=1;
$out['msg']='План нашли, но нет компетенций! Программа:'.$cur_plan['program'].'; Шифр:'.$cur_plan['shifr'].'; Напрваление:'.$cur_plan['naprav'].'; Кафедра:'.$cur_plan['kafedra'].'; Факультет:'.$cur_plan['fakultet'].'; ФО:'.$cur_plan['fo'].'; Год:'.$god;
}
}else{
$out['err']=1;
$out['msg']='Не нашли такой же план в прошлом году! Программа:'.$cur_plan['program'].'; Шифр:'.$cur_plan['shifr'].'; Напрваление:'.$cur_plan['naprav'].'; Кафедра:'.$cur_plan['kafedra'].'; Факультет:'.$cur_plan['fakultet'].'; ФО:'.$cur_plan['fo'].'; Год:'.$god.'<div style="display: none;">'.$sql.'</div>';
}
}else{
$out['err']=1;
$out['msg']='Не нашли такой план!';
}
return $out;
}
/**
* Подготовка данных для таблицы
* @param $data
* @return mixed
*/
private function Prepare_data($data){
if(!isset($data['id_file'])) $data['id_file']=0;
if(!isset($data['kod'])) $data['kod']=''; else $data['kod']=$this->DB->rescape($data['kod']);
if(!isset($data['name'])) $data['name']=''; else $data['name']=$this->DB->rescape($data['name']);
if(!isset($data['name_ind'])) $data['name_ind']=''; else $data['name_ind']=$this->DB->rescape($data['name_ind']);
if(!isset($data['znat'])) $data['znat']=''; else $data['znat']=$this->DB->rescape($data['znat']);
if(!isset($data['umet'])) $data['umet']=''; else $data['umet']=$this->DB->rescape($data['umet']);
if(!isset($data['vladet'])) $data['vladet']=''; else $data['vladet']=$this->DB->rescape($data['vladet']);
if(!isset($data['pos'])) $data['pos']=0; else $data['pos']=(int)$this->DB->rescape($data['pos']);
if(!isset($data['id_comp'])) $data['id_comp']=0; else $data['id_comp']=(int)$this->DB->rescape($data['id_comp']);
if($data['pos']=='') $data['pos']=0;
return $data;
}
/**
* Редактирование записи
* @param $data
* @return array
*/
private function Edit($data){
$data = $this->Prepare_data($data);
//$sql = 'UPDATE `'.$this->TCompetModels.'` SET comp_kod="'.$data['kod'].'",comp_name="'.$data['name'].'",comp_name_ind="'.$data['name_ind'].'",comp_znat="'.$data['znat'].'",comp_umet="'.$data['umet'].'",comp_vladet="'.$data['vladet'].'",pos='.$data['pos'].',id_comp='.$data['id_comp'].' WHERE id_user='.$_SESSION['user']['id'].' AND id_file='.$data['id_file'].' AND id='.$data['id'].' LIMIT 1';
$sql = 'UPDATE `'.$this->TCompetModels.'` SET comp_kod="'.$data['kod'].'",comp_name="'.$data['name'].'",comp_name_ind="'.$data['name_ind'].'",comp_znat="'.$data['znat'].'",comp_umet="'.$data['umet'].'",comp_vladet="'.$data['vladet'].'",pos='.$data['pos'].',id_comp='.$data['id_comp'].' WHERE id_file='.$data['id_file'].' AND id='.$data['id'].' LIMIT 1';
$rez = $this->DB->QUR($sql);
if(!$rez['err']){
$out['err']=0;
$out['msg']='Обновили запись';
$out['id']=$this->DB->lastinsertID();
}else{
$out['err']=1;
$out['msg']='Не обновили запись. Ошибка!';
$out['id']=$data['id'];
}
return $out;
}
/**
* Сохранение записи
* @param $data
* @return array
*/
private function Save($data){
//echo '$data1<pre>'.print_r($data,1).'</pre>';
$data = $this->Prepare_data($data);
//echo '$data2<pre>'.print_r($data,1).'</pre>';
$sql = 'INSERT INTO `'.$this->TCompetModels.'` VALUES(0,'.$_SESSION['user']['id'].','.$data['id_file'].',"'.$data['kod'].'","'.$data['name'].'","'.$data['name_ind'].'","'.$data['znat'].'","'.$data['umet'].'","'.$data['vladet'].'",'.$data['pos'].','.$data['id_comp'].');';
//echo '$sql<pre>'.print_r($sql,1).'</pre>';exit();
$rez = $this->DB->QUR($sql);
if(!$rez['err']){
$out['err']=0;
$out['msg']='Добавили запись';
$out['id']=$this->DB->lastinsertID();
}else{
$out['err']=1;
$out['msg']='Не добавили запись. Ошибка!';
$out['id']=0;
}
return $out;
}
/**
* Удаление записи
* @param $data
* @return array
*/
private function Delete($data){
//$sql = 'DELETE FROM `'.$this->TCompetModels.'` WHERE id_user='.$_SESSION['user']['id'].' AND id_file='.$data['id_file'].' AND id='.$data['id'].' LIMIT 1';
$sql = 'DELETE FROM `'.$this->TCompetModels.'` WHERE id_file='.$data['id_file'].' AND id='.$data['id'].' LIMIT 1';
$rez = $this->DB->QUR($sql);
if(!$rez['err']){
$out['err']=0;
$out['msg']='Удалили запись';
$out['id']=$data['id'];
}else{
$out['err']=1;
$out['msg']='Не удалили запись. Ошибка!';
$out['id']=0;
}
return $out;
}
/**
* Получение сохраненных компетенций
* @param $id_file
* @return array|mixed
*/
public function Item($id_file){
$out=array();
//$sql = 'SELECT * FROM `'.$this->TCompetModels.'` WHERE id_file='.$id_file.' AND id_user='.$_SESSION['user']['id'].' ORDER BY pos ASC';
//$sql = 'SELECT * FROM `'.$this->TCompetModels.'` WHERE id_file='.$id_file.' ORDER BY pos ASC';
$sql = 'SELECT cm.*,f.shifr,f.naprav,f.profil FROM `'.$this->TCompetModels.'` as cm,`'.$this->TFile.'` as f WHERE cm.id_file='.$id_file.' AND cm.id_file=f.id_file ORDER BY cm.pos ASC';
$rez = $this->DB->QUR_SEL($sql);
//echo $sql.'<prE>'.print_r($rez,1).'</prE>'; exit();
//[48] => Array( [id] => 17995 [id_user] => 641 [id_file] => 526
//[comp_kod] => ПКУВ-3 [comp_name] => ПКУВ-3 [comp_name_ind] => ПКУВ-3.4
//[comp_znat] => знать [comp_umet] => уметь [comp_vladet] => владеть
//[pos] => 49 [id_comp] => 0 [shifr] => 36.03.02 [naprav] => Зоотехния
//[profil] => Технология производства продукции животноводства )
if(!$rez['err']&&$rez['kol']){
$out = $rez['rez'];
}
return $out;
}
/**
* Получение сохраненных компетенций без учета пользователя
* @param $id_file
* @return array|mixed
*/
public function ItemNotUser($id_file){
$out=array();
$sql = 'SELECT * FROM `'.$this->TCompetModels.'` WHERE id_file='.$id_file.' ORDER BY pos ASC';
$rez = $this->DB->QUR_SEL($sql);
//echo $sql.'<prE>'.print_r($rez,1).'</prE>'; exit();
if(!$rez['err']&&$rez['kol']){
$out = $rez['rez'];
}
return $out;
}
/**
* ПОЛУЧЕНИЕ одного УП только его компетенций
* @param $id
* @return array
*/
public function UCHEBPLAN($id){
$out = array();
$sql = 'SELECT id,shifr,naprav,profil,kvalif,god_nach_podgot,fo FROM '.$this->TFile.' WHERE id_file='.$id.' LIMIT 1';
$rez = $this->DB->QUR_SEL($sql);
if(!$rez['err']&&$rez['kol']) {
$out['up'] = $rez['rez'][0];
}
$sql = 'SELECT id,`index`,descrip FROM '.$this->TCompet.' WHERE id_file='.$id.' ORDER BY `index`';
$rez = $this->DB->QUR_SEL($sql);
//echo $sql.'<pre>'.print_r($rez,1).'</pre>';exit();
if(!$rez['err']&&$rez['kol']){
foreach($rez['rez'] as $key => $comp) {
$tmp=array();
$tmp['index'] = $comp['index'];
if(!isset($out['comp'][$comp['index']])) {
$t = explode('-', $comp['index']);
$t1 = explode('.', $t[1]);
$tmp['id_comp'] = $comp['id'];
$tmp['kod'] = trim($t[0]) . '-' . trim($t1[0]);
$tmp['name'] = $this->komp_get_byKod($id,$tmp['kod']);
$tmp['descrip'] = $comp['descrip'];
$out['comp'][$comp['index']] = $tmp;
}
}
}
//echo '<pre>'.print_r($out['comp'],1).'</pre>';exit();
return $out;
}
/**
* Возврат описания для кода КОД-1
* @param $kod
* @return mixed|string
*/
function komp_get_byKod($id_file,$kod){
$out = '';
$kods[] = $kod;
$kods[] = str_replace('-','- ',$kod);
$kods[] = str_replace('-',' - ',$kod);
$kods[] = str_replace('-',' -',$kod);
$sql = 'SELECT descrip FROM '.$this->TCompet.' WHERE id_file='.$id_file.' AND `index`="'.implode('" OR `index`="',$kods).'"';
$rez = $this->DB->QUR_SEL($sql);
//echo '<pre>'.print_r($rez,1).'</pre>';
if(!$rez['err']&&$rez['kol']){
$out = $rez['rez'][0]['descrip'];
}
return $out;
}
/**
* ПОЛУЧЕНИЕ одного УП с дисциплинами и их компетенциями
* @param $id
* @return array
*/
public function UCHEBPLAN_discips($id){
$out = array();
$sql = 'SELECT id,shifr,naprav,profil,kvalif,god_nach_podgot,fo FROM '.$this->TFile.' WHERE id='.$id.' LIMIT 1';
$rez = $this->DB->QUR_SEL($sql);
if(!$rez['err']&&$rez['kol']){
$up = $rez['rez'][0];
$sql1 = 'SELECT id,index1,name,ekzamen,zachet,zachetsocenk,kr,kp,kontrol FROM '.$this->TUchebplans.' WHERE id_file='.$id.' ORDER BY index1,name';
$rez1 = $this->DB->QUR_SEL($sql1);
if(!$rez1['err']&&$rez1['kol']){
foreach($rez1['rez'] as $key1 => $discip) {
$discip['sems']=array();
if($discip['ekzamen']!=0) $discip['sems'][]=$discip['ekzamen'];
if($discip['zachet']!=0) $discip['sems'][]=$discip['zachet'];
if($discip['zachetsocenk']!=0) $discip['sems'][]=$discip['zachetsocenk'];
if($discip['kr']!=0) $discip['sems'][]=$discip['kr'];
if($discip['kp']!=0) $discip['sems'][]=$discip['kp'];
if($discip['kontrol']!=0) $discip['sems'][]=$discip['kontrol'];
$discip['sems'] = array_unique($discip['sems']);
$discip['comp'] = array();
$sql2 = 'SELECT c.index,c.descrip FROM '.$this->TUchebplans_compet.' as ut,'.$this->TCompet.' as c WHERE ut.id_uchebplans='.$discip['id'].' AND ut.id_compet=c.id ORDER BY c.index';
$rez2 = $this->DB->QUR_SEL($sql2);
if(!$rez2['err']&&$rez2['kol']){
foreach($rez2['rez'] as $key2 => $val2) {
$discip['comp'][$val2['index']] = $val2['descrip'];
}
}
$discips[] = $discip;
}
}
$out=array('up'=>$up,'discips'=>$discips);
}
/*Array(
[up] => Array(
[id] => 1
[shifr] => 35.03.04
[naprav] => Агрономия
[profil] => Агрономия
[kvalif] => Бакалавр
[god_nach_podgot] => 2021
[fo] => Очная
)
[discips] => Array(
[0] => Array(
[id] => 39 [index1] => Б1.В.01 [name] => Органическая химия
[ekzamen] => 0 [zachet] => 2 [zachetsocenk] => 0 [kr] => 0 [kp] => 0 [kontrol] => 0
[sems] => Array( [0] => 2 )
[comp] => Array(
[ПКУВ-8.1] => ИД-1 Выбирает оптимальные виды удобрений под сельскохозяйственные культуры с учетом биологических особенностей культур и почвенно-климатических условий
[ПКУВ-8.2] => ИД-2 Рассчитывает дозы удобрений (в действующем веществе и физической массе) под планируемую урожайность сельскохозяйственных культур с использованием общепринятых методов
[ПКУВ-8.3] => ИД-3 Составляет план распределения удобрений в севообороте с соблюдением научно- обоснованных принципов применения удобрений и требований экологической безопасности
[ПКУВ-8.4] => ИД-4 Составляет заявки на приобретение удобрений исходя из общей потребности в их количестве
[УК-1.1] => ИД-1 Анализирует задачу, выделяя ее базовые составляющие, осуществляет декомпозицию задачи
[УК-1.2] => ИД-2 Находит и критически анализирует информацию, необходимую для решения поставленной задачи
[УК-1.3] => ИД-3 Рассматривает возможные варианты решения задачи, оценивая их достоинства и недостатки
[УК-1.4] => ИД-4 Грамотно, логично, аргументированно формирует собственные суждения и оценки. Отличает факты от мнений, интерпретаций, оценок и т.д. в рассуждениях других участников деятельности
[УК-1.5] => ИД-5 Определяет и оценивает последствия возможных решений задачи
)
)
[1] => Array(...
* */
return $out;
}
/**
* ПОЛУЧЕНИЕ всех УП для кафедры
* @param $id_kaf
* @return array
*/
public function UCHEBPLANS(){
$out = array();
$kafname = $_SESSION['user']['teachers']['kafedra'];
if($kafname=='Кафедра госпитальной терапии и последипломного образования') $kafname='Госпитальной терапии и последипломного образования';
if($kafname=='Кафедра госпитальной хирургии и последипломного образования') $kafname='Госпитальной хирургии и последипломного образования';
$cYear = 'AND god_nach_podgot='.$_SESSION['year_cur'];
$sql = 'SELECT * FROM '.$this->TFile.' WHERE kafedra="'.$kafname.'" '.$cYear.' ORDER BY shifr,god_nach_podgot,fo';
$rez = $this->DB->QUR_SEL($sql);
//echo $sql.'<pre>'.print_r($rez,1).'</pre>';exit();
//SELECT * FROM acs_fshp_file WHERE kafedra="Философии, социологии и педагогики" AND god_nach_podgot=2023 ORDER BY shifr,god_nach_podgot,fo
if(!$rez['err']&&$rez['kol']){
$out = $rez['rez'];
}
return $out;
}
}