272 lines
13 KiB
PHP
272 lines
13 KiB
PHP
<?php
|
|
error_reporting(0);
|
|
//die('скоро откроется...');
|
|
class class_ShahtPlans_Pravka{
|
|
private $DB=null;
|
|
private $TFile='';
|
|
private $TFiles='';
|
|
private $TUchebplans='';
|
|
private $TUchebplans_compet='';
|
|
private $TCompet='';
|
|
private $planINSERTdb=1;
|
|
private $planINSERTarray=array();
|
|
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->TUchebplans_compet = $ST['dbpf'].'_fshp_uchebplans_compet';
|
|
$this->TCompet = $ST['dbpf'].'_fshp_compet';
|
|
}
|
|
public function HTML(){
|
|
GLOBAL $WorkDIR,$ST,$DB;
|
|
$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['sd_btn_confirm'])) {//поиск дисциплины и внесение изменений!
|
|
$json=array();
|
|
//Создадим новые json для дисциплин
|
|
foreach($_POST['discip'] as $id => $v){
|
|
$_POST['discip'][$id]['json'] = json_decode(urldecode($v['json']),1);
|
|
foreach($_POST['discip'][$id]['json'] as $kurs => $sems){
|
|
foreach($sems as $sem => $params){
|
|
foreach($params as $param => $value){
|
|
if(is_array($value)){
|
|
if(isset($value['new'])) $json[$id][$kurs][$sem][$param] = $value['new'];
|
|
else $json[$id][$kurs][$sem][$param] = $value['old'];
|
|
}else{
|
|
$json[$id][$kurs][$sem][$param] = $value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(isset($json)&&count($json)){
|
|
foreach($json as $id => $v){
|
|
$sql = 'UPDATE '.$this->TUchebplans.' SET json="'.$this->DB->rescape(json_encode($v,JSON_UNESCAPED_UNICODE)).'" WHERE id='.$id.' LIMIT 1';
|
|
$this->DB->QUR($sql);
|
|
}
|
|
}
|
|
//echo '<pre>'.print_r($json,1).'</pre>';
|
|
//echo '<pre>'.print_r($_POST,1).'</pre>';
|
|
//exit();
|
|
}
|
|
if(isset($_POST['sd_btn'])) {//поиск дисциплины и внесение изменений!
|
|
//echo '<pre>'.print_r($_POST,1).'</pre>';
|
|
$discip = array();
|
|
$sem_sel = array();
|
|
if(is_array($_POST['sd_seme'])) $sem_sel = $_POST['sd_seme'];
|
|
else {
|
|
//if($_POST['sd_seme']==0) $_POST['sd_seme']=1;//TODO убрать!
|
|
$sem_sel = array($_POST['sd_seme']);
|
|
}
|
|
$_POST['sd_seme'] = $sem_sel;
|
|
foreach($_POST['discip'] as $k => $v){
|
|
if(isset($v['sel'])){
|
|
$v['json'] = json_decode(urldecode($v['json']),1);
|
|
foreach ($v['json'] as $kurs => $sems) {
|
|
foreach ($sems as $sem => $params) {
|
|
if(in_array($sem,$sem_sel)){//наш семестр
|
|
//обходим все выставленные условия
|
|
foreach($_POST['sd'] as $param => $dan){
|
|
if(isset($params[$param])){
|
|
if($dan['usl']!='null'){
|
|
$zamena =array();
|
|
if($dan['usl']=='replace'){
|
|
$zamena['old'] = $params[$param];
|
|
$zamena['new'] = $dan['newznach'];
|
|
}
|
|
if($dan['usl']=='ifequal'){
|
|
$zamena['old'] = $params[$param];
|
|
if($params[$param]==$dan['oldznach']){
|
|
$zamena['new'] = $dan['newznach'];
|
|
}else{
|
|
$zamena['new'] = $params[$param];
|
|
}
|
|
}
|
|
if($dan['usl']=='ifmore'){
|
|
$zamena['old'] = $params[$param];
|
|
if($params[$param]>$dan['oldznach']){
|
|
$zamena['new'] = $dan['newznach'];
|
|
}else{
|
|
$zamena['new'] = $params[$param];
|
|
}
|
|
}
|
|
if($dan['usl']=='ifmoree'){
|
|
$zamena['old'] = $params[$param];
|
|
if($params[$param]>=$dan['oldznach']){
|
|
$zamena['new'] = $dan['newznach'];
|
|
}else{
|
|
$zamena['new'] = $params[$param];
|
|
}
|
|
}
|
|
if($dan['usl']=='ifless'){
|
|
$zamena['old'] = $params[$param];
|
|
if($params[$param]<$dan['oldznach']){
|
|
$zamena['new'] = $dan['newznach'];
|
|
}else{
|
|
$zamena['new'] = $params[$param];
|
|
}
|
|
}
|
|
if($dan['usl']=='iflesse'){
|
|
$zamena['old'] = $params[$param];
|
|
if($params[$param]<=$dan['oldznach']){
|
|
$zamena['new'] = $dan['newznach'];
|
|
}else{
|
|
$zamena['new'] = $params[$param];
|
|
}
|
|
}
|
|
if($dan['usl']=='insert'){
|
|
$zamena['old'] = $params[$param];
|
|
$zamena['new'] = $dan['newznach'];
|
|
}
|
|
$v['json'][$kurs][$sem][$param] = $zamena;
|
|
}
|
|
}else{
|
|
if($dan['usl']=='insert'){
|
|
$zamena =array();
|
|
$zamena['old'] = 0;
|
|
$zamena['new'] = $dan['newznach'];
|
|
$v['json'][$kurs][$sem][$param] = $zamena;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$discip[] = $v;
|
|
}
|
|
}
|
|
$_POST['discip'] = $discip;
|
|
$smarty->assign('post',$_POST);
|
|
$view = 'search_discip_confirm';
|
|
}
|
|
if(isset($_POST['search_discip_btn'])) {//поиск дисциплины
|
|
$search_discip = $_POST['search_discip'];
|
|
$discips = $this->discip_search($search_discip);
|
|
$smarty->assign('discips',$discips['items']);
|
|
$smarty->assign('jsons',$discips['jsons']);
|
|
$smarty->assign('search_discip',$search_discip);
|
|
$view = 'search_discip';
|
|
}
|
|
if(isset($_POST['sel_btn'])){//отображение дисциплин по кафедре
|
|
$kaf_el = explode('##',$_POST['kaf_el']);
|
|
$discips = $this->discip_gets($kaf_el[1]);
|
|
$smarty->assign('kafedra',$kaf_el);
|
|
$smarty->assign('discips',$discips);
|
|
$view = 'discips';
|
|
}
|
|
|
|
if(isset($_POST['union_btn_end'])){
|
|
$kaf_old_name = $this->DB->rescape($_POST['kaf_old_name']);
|
|
$kaf_new_name = $this->DB->rescape($_POST['kaf_new_name']);
|
|
if($kaf_new_name!='') {
|
|
$sql = 'UPDATE ' . $this->TUchebplans . ' as u,' . $this->TFile . ' as f SET u.kaf_name="' . $kaf_new_name . '" WHERE u.kaf_name="' . $kaf_old_name . '" AND f.god_nach_podgot=' . $_SESSION['year_cur'] . '';
|
|
$rez = $this->DB->QUR($sql);
|
|
}
|
|
}
|
|
if(isset($_POST['union_btn'])){
|
|
$kaf_old = explode('##',$_POST['kaf_old']);
|
|
$kaf_new = explode('##',$_POST['kaf_new']);
|
|
$view = 'union';
|
|
$smarty->assign('kaf_old',$kaf_old);
|
|
$smarty->assign('kaf_new',$kaf_new);
|
|
|
|
}
|
|
|
|
$smarty->assign('kafedras',$this->kafedra_gets());
|
|
$smarty->assign('view',$view);
|
|
$out['body'] = $smarty->fetch('page_shahtplan_pravka.html');
|
|
return $out;
|
|
}
|
|
|
|
/**
|
|
* Получение всех кафедр из учебных планов
|
|
* @return array
|
|
*/
|
|
function kafedra_gets(){
|
|
$out = array();
|
|
$sql = 'SELECT
|
|
u.kaf_kod,u.kaf_name
|
|
FROM '.$this->TUchebplans.' as u, '.$this->TFile.' as f
|
|
WHERE u.kaf_kod!="" AND f.id_file=u.id_file AND f.god_nach_podgot='.$_SESSION['year_cur'].'
|
|
GROUP BY u.kaf_name
|
|
ORDER BY u.kaf_kod,u.kaf_name';
|
|
$rez = $this->DB->QUR_SEL($sql);
|
|
if(!$rez['err']&&$rez['kol']){
|
|
foreach ($rez['rez'] as $k => $v){
|
|
$out[] = $v;
|
|
}
|
|
}
|
|
return $out;
|
|
}
|
|
function discip_gets($kaf_name){
|
|
$out = array();
|
|
$sql = 'SELECT u.id,u.index1,u.name,u.id_file,u.ekzamen,u.zachet,u.zachetsocenk,u.kr,u.kp,u.kontrol,u.json
|
|
FROM '.$this->TUchebplans.' as u, '.$this->TFile.' as f
|
|
WHERE
|
|
(
|
|
u.name != "Форма контроля"
|
|
) AND
|
|
u.kaf_name!="'.$this->DB->rescape($kaf_name).'" AND
|
|
f.id_file=u.id_file AND
|
|
f.god_nach_podgot='.$_SESSION['year_cur'].'
|
|
ORDER BY u.kaf_kod,u.kaf_name';
|
|
$rez = $this->DB->QUR_SEL($sql);
|
|
if(!$rez['err']&&$rez['kol']){
|
|
foreach ($rez['rez'] as $k => $v){
|
|
$v['json'] = json_decode($v['json'],1);
|
|
$out[] = $v;
|
|
}
|
|
}
|
|
return $out;
|
|
}
|
|
|
|
/**
|
|
* Поиск дисциплины
|
|
* @param $discip_name
|
|
* @return array
|
|
*/
|
|
function discip_search($discip_name){
|
|
$out = array();
|
|
$sql = 'SELECT u.id,u.index1,u.name,u.id_file,u.ekzamen,u.zachet,u.zachetsocenk,u.kr,u.kp,u.kontrol,u.json,f.kafedra,f.fo
|
|
FROM '.$this->TUchebplans.' as u, '.$this->TFile.' as f
|
|
WHERE
|
|
( u.name != "Форма контроля" ) AND
|
|
u.name="'.$this->DB->rescape($discip_name).'" AND
|
|
f.id_file=u.id_file AND
|
|
f.god_nach_podgot='.$_SESSION['year_cur'].'
|
|
ORDER BY u.kaf_kod,u.kaf_name';
|
|
$rez = $this->DB->QUR_SEL($sql);
|
|
//echo $sql.'<pre>'.print_r($rez,1).'</pre>';
|
|
//SELECT u.id,u.index1,u.name,u.id_file,u.ekzamen,u.zachet,u.zachetsocenk,u.kr,u.kp,u.kontrol,u.json FROM acs_fshp_uchebplans as u, acs_fshp_file as f WHERE ( u.name != "Форма контроля" ) AND u.name="История" AND f.id_file=u.id_file AND f.god_nach_podgot=2023 ORDER BY u.kaf_kod,u.kaf_name
|
|
$jsons = array();
|
|
if(!$rez['err']&&$rez['kol']){
|
|
foreach ($rez['rez'] as $k => $v){
|
|
$v['json'] = json_decode($v['json'],1);
|
|
if(count($v['json'])) {
|
|
foreach($v['json'] as $kurs => $json1){
|
|
foreach($json1 as $sem => $json2){
|
|
if(count($json2)) $jsons = array_merge($jsons,$json2);
|
|
}
|
|
}
|
|
//{
|
|
// "2":
|
|
// {
|
|
// "3": {"pr":4,"sr":"64","krat":"0.25","kontrol":"3.75","ze":"2"}
|
|
// }
|
|
//}
|
|
}
|
|
$out[] = $v;
|
|
}
|
|
}
|
|
$jsons = array_unique($jsons);
|
|
return array('items'=>$out,'jsons'=>$jsons);
|
|
}
|
|
|
|
} |