620 lines
37 KiB
PHP
620 lines
37 KiB
PHP
<?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;
|
||
}
|
||
} |