1779 lines
74 KiB
PHP
1779 lines
74 KiB
PHP
|
<?php
|
|||
|
//error_reporting(0);
|
|||
|
|
|||
|
/**
|
|||
|
* Функция для получения уникального ассоциативного массива по ключу
|
|||
|
* @var $key - ключ, по которому будет выборка
|
|||
|
* @var $array - исходный массив
|
|||
|
*
|
|||
|
* @return - Вернет уникальный массив
|
|||
|
*/
|
|||
|
function getUniqueArray($key, $array){
|
|||
|
$arrayKeys = array(); // массив для хранения ключей
|
|||
|
$resultArray = array(); // выходной массив
|
|||
|
foreach($array as $one){ // проходим циклом по всему исходному массиву
|
|||
|
if(!in_array($one[$key], $arrayKeys)){ // если такого значения еще не встречаласть, то
|
|||
|
$arrayKeys[] = $one[$key]; // пишем значение ключа в массив, для дальнейшей проверки
|
|||
|
$resultArray[] = $one; // записываем уникальное значение в выходной массив
|
|||
|
}
|
|||
|
}
|
|||
|
return $resultArray; // возвращаем массив
|
|||
|
}
|
|||
|
|
|||
|
//число месяца переводим в название месяца на русском без окончания - специально, чтобы можно было подставить свое
|
|||
|
function numberToMonth($num){
|
|||
|
switch ($num){
|
|||
|
case '1': $month = 'января'; break;
|
|||
|
case '2': $month = 'февраля'; break;
|
|||
|
case '3': $month = 'марта'; break;
|
|||
|
case '4': $month = 'апреля'; break;
|
|||
|
case '5': $month = 'мая'; break;
|
|||
|
case '6': $month = 'июня'; break;
|
|||
|
case '7': $month = 'июля'; break;
|
|||
|
case '8': $month = 'августа'; break;
|
|||
|
case '9': $month = 'сентября'; break;
|
|||
|
case '10': $month = 'октября'; break;
|
|||
|
case '11': $month = 'ноября'; break;
|
|||
|
case '12': $month = 'декабря'; break;
|
|||
|
}
|
|||
|
|
|||
|
return $month;
|
|||
|
}
|
|||
|
|
|||
|
function rejt_get_useranketa_polya(){//получение анкеты НПР только поля для select-ов
|
|||
|
GLOBAL $ST,$DB,$TB;
|
|||
|
$items=array(); $BALLS=0;
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_rejt_razdels WHERE status=1 ORDER BY pos';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if($rez){
|
|||
|
foreach($rez as $key => $val)if($key){
|
|||
|
$val['razdel']=array();
|
|||
|
$sql1 = 'SELECT * FROM '.$ST['dbpf'].'_rejt_items WHERE id_razdel='.$val['id'].' AND status=1 ORDER BY pos';
|
|||
|
$rez1 = $DB->QUR_SEL($sql1);
|
|||
|
if($rez1){
|
|||
|
foreach($rez1 as $key1 => $val1)if($key1){
|
|||
|
$val1['itemspolyas']=array();
|
|||
|
$sql2 = 'SELECT * FROM '.$ST['dbpf'].'_rejt_itemspolyas WHERE id_item='.$val1['id'].' AND status=1 ORDER BY pos';
|
|||
|
$rez2 = $DB->QUR_SEL($sql2);
|
|||
|
if($rez2){
|
|||
|
foreach($rez2 as $key2 => $val2)if($key2){
|
|||
|
$val2['polyas']=array();
|
|||
|
//выбираем выпадающие элементы
|
|||
|
$sql3 = 'SELECT * FROM '.$ST['dbpf'].'_rejt_polyas WHERE id_item='.$val2['id'].' AND status=1 ORDER BY pos';
|
|||
|
$rez3 = $DB->QUR_SEL($sql3);
|
|||
|
if($rez3){
|
|||
|
foreach($rez3 as $key3 => $val3)if($key3){
|
|||
|
$val2['polyas'][]=$val3;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
$val1['itemspolyas'][]=$val2;
|
|||
|
}
|
|||
|
}
|
|||
|
$val['razdel'][]=$val1;
|
|||
|
}
|
|||
|
}
|
|||
|
$items[]=$val;
|
|||
|
}
|
|||
|
}
|
|||
|
return $items;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
function rejtdek_raschet($id_item,$id_user){
|
|||
|
GLOBAL $ST,$DB; $out=array();
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_rejtdek_items WHERE id='.$id_item.' LIMIT 1';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
//$ST['debug_formul']=1;
|
|||
|
if($rez){
|
|||
|
$val = $rez[1];//ЕСЛИ[ip_5>=80000#ip_6/1000#0]
|
|||
|
$formula = htmlspecialchars_decode($val['formuls']);//надо найти в формуле вставляемые значения
|
|||
|
|
|||
|
//тут надо разобрать формулу если есть СУММ_ФАК_ПОЛЕ типа 0|СУММ_ФАК_ПОЛЕ([ua_3_21_24])
|
|||
|
//СУММ_ФАК_ПОЛЕ то надо суммировать значение полей пользовательских анкет ua_ по всему факультету
|
|||
|
//3 - _rejt_items 21 - _rejt_itemspolyas 24 - _rejt_polyas
|
|||
|
$itogo=0;
|
|||
|
if(mb_strpos($formula, 'СУММ_ФАК_ПОЛЕ')!==false){//нашли такую
|
|||
|
if(mb_strpos($formula, '0|')!==false){//удалим лишнию опцию 0|-поле не заполняется пользователем
|
|||
|
$tmp = explode('|',$formula);
|
|||
|
$formula = $tmp[1];
|
|||
|
}
|
|||
|
//расчитаем сумму СУММ_ФАК_ПОЛЕ
|
|||
|
//$out['f1']=$formula;
|
|||
|
//выделим все такие суммы из формулы
|
|||
|
|
|||
|
preg_match_all('|СУММ_ФАК_ПОЛЕ\((.*)\)|isU',$formula,$f2);
|
|||
|
if(isset($f2[1][0])){//нашли что то $out['f2']=$f2;// [ua_3_21_24]
|
|||
|
foreach($f2[1] as $k => $v){
|
|||
|
//$out['f4'][]=$v;
|
|||
|
$elems = str_replace('[','',str_replace(']','',$v));//ua_3_21_24
|
|||
|
$elem = explode('_',$elems);
|
|||
|
$id_razdel = $elem[1];
|
|||
|
$id_items = $elem[2];
|
|||
|
$id_itemspolyas = $elem[3];
|
|||
|
$summ01=0;
|
|||
|
//надо выбрать преподов из факультета(
|
|||
|
$sql = 'SELECT u.id FROM '.$ST['dbpf'].'_teachers as t,'.$ST['dbpf'].'_users as u WHERE t.fakultet="'.$_SESSION['user']['teacher']['fakultet'].'" AND u.id=t.id_user';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if($rez){
|
|||
|
foreach($rez as $key => $val)if($key){
|
|||
|
$sql1 = 'SELECT SUM(value) as alls FROM '.$ST['dbpf'].'_rejt_saves WHERE id_razdel='.$id_razdel.' AND id_items='.$id_items.' AND id_itemspolyas='.$id_itemspolyas.' AND id_user='.$val['id'].' AND (data_c BETWEEN '.$_SESSION['otchgods'][1]['data_s1'].' AND '.$_SESSION['otchgods'][1]['data_s2'].')';
|
|||
|
$rez1 = $DB->QUR_SEL($sql1);
|
|||
|
if($rez1){
|
|||
|
foreach($rez1 as $key1 => $val1)if($key1){
|
|||
|
$summ01+=$val1['alls'];
|
|||
|
}
|
|||
|
}
|
|||
|
//$out['f4'][]=$summ01;
|
|||
|
}
|
|||
|
}
|
|||
|
//в формуле заменим все вставки на числа
|
|||
|
$formula = str_replace('СУММ_ФАК_ПОЛЕ('.$v.')',$summ01,$formula);
|
|||
|
}
|
|||
|
}
|
|||
|
$dan=array();
|
|||
|
$itogo = parse_formula($formula,$dan);//тут суммируем или делим на что то там
|
|||
|
//$out['f3']=$formula;
|
|||
|
}else{
|
|||
|
$itogo=0; $_SESSION['debug_formul']='';
|
|||
|
$sql = 'SELECT pos FROM '.$ST['dbpf'].'_rejtdek_saves WHERE id_user='.$id_user.' AND id_items='.$id_item.' AND (data_c BETWEEN '.$_SESSION['otchgods'][1]['data_s1'].' AND '.$_SESSION['otchgods'][1]['data_s2'].') GROUP BY pos ORDER BY pos';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if($rez){
|
|||
|
$dan=array();
|
|||
|
foreach($rez as $key => $val)if($key){
|
|||
|
$sql1 = 'SELECT id_itemspolyas as id,value FROM '.$ST['dbpf'].'_rejtdek_saves WHERE id_user='.$id_user.' AND id_items='.$id_item.' AND pos='.$val['pos'].' AND (data_c BETWEEN '.$_SESSION['otchgods'][1]['data_s1'].' AND '.$_SESSION['otchgods'][1]['data_s2'].')';
|
|||
|
$rez1 = $DB->QUR_SEL($sql1);
|
|||
|
if($rez1){
|
|||
|
$dan['ip']=array();
|
|||
|
foreach($rez1 as $key1 => $val1)if($key1){
|
|||
|
//проверим наличие баллов
|
|||
|
$sql2 = 'SELECT name,value FROM '.$ST['dbpf'].'_rejtdek_polyas WHERE id_item='.$val1['id'].'';
|
|||
|
$rez2 = $DB->QUR_SEL($sql2);
|
|||
|
if($rez2){
|
|||
|
if($rez2[0]==1){
|
|||
|
$val1['value']=$rez2[1]['value'];
|
|||
|
}else{
|
|||
|
//тут и так хранится в save балл
|
|||
|
//foreach($rez2 as $key2 => $val2)if($key2){
|
|||
|
// if($val2['value']==$val1['value']){}
|
|||
|
//}
|
|||
|
}
|
|||
|
}
|
|||
|
$dan['ip'][]=$val1;
|
|||
|
}
|
|||
|
$out[$val['pos']] = parse_formula($formula,$dan);
|
|||
|
$itogo += $out[$val['pos']];
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
if($ST['debug_formul']) $out['debug'] .= $_SESSION['debug_formul'];
|
|||
|
}
|
|||
|
$out['itogo']=$itogo;
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
function rejt_kaf_parseformul($formula){//разбираем формулы для кафедры
|
|||
|
GLOBAL $ST,$DB;
|
|||
|
//echo $formula.'-';
|
|||
|
if(mb_strpos($formula, '0|')!==false){//удалим лишнию опцию 0|-поле не заполняется пользователем
|
|||
|
$tmp = explode('|',$formula);
|
|||
|
$formula = $tmp[1];
|
|||
|
}
|
|||
|
//тут надо разобрать формулу если есть СУММ_КАФ_ПОЛЕ_ЗНАЧ типа 0|СУММ_КАФ_ПОЛЕ_ЗНАЧ([ua_3_21_24])
|
|||
|
//СУММ_КАФ_ПОЛЕ_ЗНАЧ то надо суммировать значение полей пользовательских анкет ua_ по всему факультету
|
|||
|
//3 - _rejt_items 21 - _rejt_itemspolyas 24 - _rejt_polyas
|
|||
|
if(mb_strpos($formula, 'СУММ_КАФ_ПОЛЕ_ЗНАЧ')!==false){//нашли такую
|
|||
|
//расчитаем сумму СУММ_КАФ_ПОЛЕ_ЗНАЧ
|
|||
|
//выделим все такие суммы из формулы
|
|||
|
//СУММ_КАФ_ПОЛЕ_ЗНАЧ СУММ_КАФ_ПОЛЕ_КОЛ
|
|||
|
preg_match_all('|СУММ_КАФ_ПОЛЕ_ЗНАЧ\((.*)\)|isU',$formula,$f2);
|
|||
|
if(isset($f2[1][0])){//нашли что то [ua_3_21_24]
|
|||
|
foreach($f2[1] as $k => $v){
|
|||
|
$elems = str_replace('[','',str_replace(']','',$v));//ua_3_21_24
|
|||
|
$elem = explode('_',$elems); //тут надо разделять ua_3_21_24 от ua_3_21_24_00 - это +выпадающие элементы
|
|||
|
$id_razdel = $elem[1];
|
|||
|
$id_items = $elem[2];
|
|||
|
$id_itemspolyas = $elem[3];
|
|||
|
$summ01=0;
|
|||
|
//надо выбрать преподов из кафедры
|
|||
|
$sql = 'SELECT u.id FROM '.$ST['dbpf'].'_teachers as t,'.$ST['dbpf'].'_users as u WHERE t.kafedra="'.$_SESSION['user']['teacher']['kafedra'].'" AND u.id=t.id_user';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
|
|||
|
if($rez){
|
|||
|
foreach($rez as $key => $val)if($key){
|
|||
|
$sql1 = 'SELECT SUM(value) as alls FROM '.$ST['dbpf'].'_rejt_saves WHERE id_razdel='.$id_razdel.' AND id_items='.$id_items.' AND id_itemspolyas='.$id_itemspolyas.' AND id_user='.$val['id'].' AND (data_c BETWEEN '.$_SESSION['otchgods'][2]['data_s1'].' AND '.$_SESSION['otchgods'][2]['data_s2'].')';
|
|||
|
$rez1 = $DB->QUR_SEL($sql1);
|
|||
|
if($rez1){
|
|||
|
foreach($rez1 as $key1 => $val1)if($key1){
|
|||
|
$summ01+=$val1['alls'];
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
//в формуле заменим все вставки на числа
|
|||
|
$formula = str_replace('СУММ_КАФ_ПОЛЕ_ЗНАЧ('.$v.')',$summ01,$formula);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
if(mb_strpos($formula, 'СУММ_КАФ_ПОЛЕ_КОЛ')!==false){//нашли такую
|
|||
|
//расчитаем сумму СУММ_КАФ_ПОЛЕ_КОЛ
|
|||
|
//выделим все такие суммы из формулы
|
|||
|
preg_match_all('|СУММ_КАФ_ПОЛЕ_КОЛ\((.*)\)|isU',$formula,$f2);
|
|||
|
if(isset($f2[1][0])){//нашли что то [ua_3_21_24]
|
|||
|
foreach($f2[1] as $k => $v){
|
|||
|
$elems = str_replace('[','',str_replace(']','',$v));//ua_3_21_24
|
|||
|
$elem = explode('_',$elems); //тут надо разделять ua_3_21_24 от ua_3_21_24_00 - это +выпадающие элементы
|
|||
|
$id_razdel = $elem[1];
|
|||
|
$id_items = $elem[2];
|
|||
|
$id_itemspolyas = $elem[3];
|
|||
|
if(isset($elem[4])) $id_polyas = $elem[4]; else $id_polyas = 0;
|
|||
|
$summ01=0;
|
|||
|
//надо выбрать преподов из кафедры
|
|||
|
$sql = 'SELECT u.id FROM '.$ST['dbpf'].'_teachers as t,'.$ST['dbpf'].'_users as u WHERE t.kafedra="'.$_SESSION['user']['teacher']['kafedra'].'" AND u.id=t.id_user';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if($rez){
|
|||
|
//echo '<pre>'.print_r($_SESSION['otchgods'],1).'</pre>';
|
|||
|
foreach($rez as $key => $val)if($key){
|
|||
|
$sql1 = 'SELECT COUNT(id) as alls FROM '.$ST['dbpf'].'_rejt_saves WHERE id_razdel='.$id_razdel.' AND id_items='.$id_items.' AND id_itemspolyas='.$id_itemspolyas.' AND id_polyas='.$id_polyas.' AND id_user='.$val['id'].' AND (data_c BETWEEN '.$_SESSION['otchgods'][2]['data_s1'].' AND '.$_SESSION['otchgods'][2]['data_s2'].')';
|
|||
|
$rez1 = $DB->QUR_SEL($sql1);
|
|||
|
if($rez1){
|
|||
|
foreach($rez1 as $key1 => $val1)if($key1){
|
|||
|
$summ01+=$val1['alls'];
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
//в формуле заменим все вставки на числа
|
|||
|
$formula = str_replace('СУММ_КАФ_ПОЛЕ_КОЛ('.$v.')',$summ01,$formula);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
//echo $formula.'<br>';
|
|||
|
return $formula;
|
|||
|
}
|
|||
|
function rejtkaf_raschet($id_item,$id_user){
|
|||
|
GLOBAL $ST,$DB; $out=array();
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_rejtkaf_items WHERE id='.$id_item.' LIMIT 1';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
//$ST['debug_formul']=1;
|
|||
|
if($rez){
|
|||
|
$val = $rez[1];//ЕСЛИ[ip_5>=80000#ip_6/1000#0]
|
|||
|
$formula = htmlspecialchars_decode($val['formuls']);//надо найти в формуле вставляемые значения
|
|||
|
|
|||
|
$formula = rejt_kaf_parseformul($formula);
|
|||
|
$dan=array();
|
|||
|
$itogo=0; $_SESSION['debug_formul']='';
|
|||
|
$sql = 'SELECT pos FROM '.$ST['dbpf'].'_rejtkaf_saves WHERE id_user='.$id_user.' AND id_items='.$id_item.' AND (data_c BETWEEN '.$_SESSION['otchgods'][2]['data_s1'].' AND '.$_SESSION['otchgods'][2]['data_s2'].') GROUP BY pos ORDER BY pos';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if($rez){
|
|||
|
foreach($rez as $key => $val)if($key){
|
|||
|
$sql1 = 'SELECT id_itemspolyas as id,value FROM '.$ST['dbpf'].'_rejtkaf_saves WHERE id_user='.$id_user.' AND id_items='.$id_item.' AND pos='.$val['pos'].' AND (data_c BETWEEN '.$_SESSION['otchgods'][2]['data_s1'].' AND '.$_SESSION['otchgods'][2]['data_s2'].')';
|
|||
|
$rez1 = $DB->QUR_SEL($sql1);
|
|||
|
if($rez1){
|
|||
|
$dan['ip']=array();
|
|||
|
foreach($rez1 as $key1 => $val1)if($key1){
|
|||
|
//проверим наличие баллов
|
|||
|
$sql2 = 'SELECT name,value FROM '.$ST['dbpf'].'_rejtkaf_polyas WHERE id_item='.$val1['id'].'';
|
|||
|
$rez2 = $DB->QUR_SEL($sql2);
|
|||
|
if($rez2){
|
|||
|
if($rez2[0]==1){
|
|||
|
$val1['value']=$rez2[1]['value'];
|
|||
|
}else{
|
|||
|
//тут и так хранится в save балл
|
|||
|
//foreach($rez2 as $key2 => $val2)if($key2){
|
|||
|
// if($val2['value']==$val1['value']){}
|
|||
|
//}
|
|||
|
}
|
|||
|
}
|
|||
|
$dan['ip'][]=$val1;
|
|||
|
}
|
|||
|
$out[$val['pos']] = parse_formula($formula,$dan);
|
|||
|
$itogo += $out[$val['pos']];
|
|||
|
}
|
|||
|
}
|
|||
|
}else{//в сохранениях нет, т.к. в поля не вводится текст
|
|||
|
$itogo = parse_formula($formula,$dan);
|
|||
|
}
|
|||
|
if($ST['debug_formul']) $out['debug'] .= $_SESSION['debug_formul'];
|
|||
|
|
|||
|
$out['itogo']=$itogo;
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
function rejt_npr_parseformul($formula){//разбираем формулы для кафедры
|
|||
|
GLOBAL $ST,$DB;
|
|||
|
//echo $formula.'-';
|
|||
|
if(mb_strpos($formula, '0|')!==false){//удалим лишнию опцию 0|-поле не заполняется пользователем
|
|||
|
$tmp = explode('|',$formula);
|
|||
|
$formula = $tmp[1];
|
|||
|
}
|
|||
|
//тут надо разобрать формулу если есть СУММ_КАФ_ПОЛЕ_ЗНАЧ типа 0|СУММ_КАФ_ПОЛЕ_ЗНАЧ([ua_3_21_24])
|
|||
|
//СУММ_КАФ_ПОЛЕ_ЗНАЧ то надо суммировать значение полей пользовательских анкет ua_ по всему факультету
|
|||
|
//3 - _rejt_items 21 - _rejt_itemspolyas 24 - _rejt_polyas
|
|||
|
if(mb_strpos($formula, 'СУММ_КАФ_ПОЛЕ_ЗНАЧ')!==false){//нашли такую
|
|||
|
//расчитаем сумму СУММ_КАФ_ПОЛЕ_ЗНАЧ
|
|||
|
//выделим все такие суммы из формулы
|
|||
|
//СУММ_КАФ_ПОЛЕ_ЗНАЧ СУММ_КАФ_ПОЛЕ_КОЛ
|
|||
|
preg_match_all('|СУММ_КАФ_ПОЛЕ_ЗНАЧ\((.*)\)|isU',$formula,$f2);
|
|||
|
if(isset($f2[1][0])){//нашли что то [ua_3_21_24]
|
|||
|
foreach($f2[1] as $k => $v){
|
|||
|
$elems = str_replace('[','',str_replace(']','',$v));//ua_3_21_24
|
|||
|
$elem = explode('_',$elems); //тут надо разделять ua_3_21_24 от ua_3_21_24_00 - это +выпадающие элементы
|
|||
|
$id_razdel = $elem[1];
|
|||
|
$id_items = $elem[2];
|
|||
|
$id_itemspolyas = $elem[3];
|
|||
|
$summ01=0;
|
|||
|
//надо выбрать преподов из кафедры
|
|||
|
$sql = 'SELECT u.id FROM '.$ST['dbpf'].'_teachers as t,'.$ST['dbpf'].'_users as u WHERE t.kafedra="'.$_SESSION['user']['teacher']['kafedra'].'" AND u.id=t.id_user';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
|
|||
|
if($rez){
|
|||
|
foreach($rez as $key => $val)if($key){
|
|||
|
$sql1 = 'SELECT SUM(value) as alls FROM '.$ST['dbpf'].'_rejt_saves WHERE id_razdel='.$id_razdel.' AND id_items='.$id_items.' AND id_itemspolyas='.$id_itemspolyas.' AND id_user='.$val['id'].' AND (data_c BETWEEN '.$_SESSION['otchgods'][3]['data_s1'].' AND '.$_SESSION['otchgods'][3]['data_s2'].')';
|
|||
|
$rez1 = $DB->QUR_SEL($sql1);
|
|||
|
if($rez1){
|
|||
|
foreach($rez1 as $key1 => $val1)if($key1){
|
|||
|
$summ01+=$val1['alls'];
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
//в формуле заменим все вставки на числа
|
|||
|
$formula = str_replace('СУММ_КАФ_ПОЛЕ_ЗНАЧ('.$v.')',$summ01,$formula);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
if(mb_strpos($formula, 'СУММ_КАФ_ПОЛЕ_КОЛ')!==false){//нашли такую
|
|||
|
//расчитаем сумму СУММ_КАФ_ПОЛЕ_КОЛ
|
|||
|
//выделим все такие суммы из формулы
|
|||
|
preg_match_all('|СУММ_КАФ_ПОЛЕ_КОЛ\((.*)\)|isU',$formula,$f2);
|
|||
|
if(isset($f2[1][0])){//нашли что то [ua_3_21_24]
|
|||
|
foreach($f2[1] as $k => $v){
|
|||
|
$elems = str_replace('[','',str_replace(']','',$v));//ua_3_21_24
|
|||
|
$elem = explode('_',$elems); //тут надо разделять ua_3_21_24 от ua_3_21_24_00 - это +выпадающие элементы
|
|||
|
$id_razdel = $elem[1];
|
|||
|
$id_items = $elem[2];
|
|||
|
$id_itemspolyas = $elem[3];
|
|||
|
if(isset($elem[4])) $id_polyas = $elem[4]; else $id_polyas = 0;
|
|||
|
$summ01=0;
|
|||
|
//надо выбрать преподов из кафедры
|
|||
|
$sql = 'SELECT u.id FROM '.$ST['dbpf'].'_teachers as t,'.$ST['dbpf'].'_users as u WHERE t.kafedra="'.$_SESSION['user']['teacher']['kafedra'].'" AND u.id=t.id_user';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if($rez){
|
|||
|
//echo '<pre>'.print_r($_SESSION['otchgods'],1).'</pre>';
|
|||
|
foreach($rez as $key => $val)if($key){
|
|||
|
$sql1 = 'SELECT COUNT(id) as alls FROM '.$ST['dbpf'].'_rejt_saves WHERE id_razdel='.$id_razdel.' AND id_items='.$id_items.' AND id_itemspolyas='.$id_itemspolyas.' AND id_polyas='.$id_polyas.' AND id_user='.$val['id'].' AND (data_c BETWEEN '.$_SESSION['otchgods'][3]['data_s1'].' AND '.$_SESSION['otchgods'][3]['data_s2'].')';
|
|||
|
$rez1 = $DB->QUR_SEL($sql1);
|
|||
|
if($rez1){
|
|||
|
foreach($rez1 as $key1 => $val1)if($key1){
|
|||
|
$summ01+=$val1['alls'];
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
//в формуле заменим все вставки на числа
|
|||
|
$formula = str_replace('СУММ_КАФ_ПОЛЕ_КОЛ('.$v.')',$summ01,$formula);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
//echo $formula.'<br>';
|
|||
|
return $formula;
|
|||
|
}
|
|||
|
function rejtnpr_raschet($id_item,$id_user){
|
|||
|
GLOBAL $ST,$DB; $out=array();
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_rejtnpr_items WHERE id='.$id_item.' LIMIT 1';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
//$ST['debug_formul']=1;
|
|||
|
if($rez){
|
|||
|
$val = $rez[1];//ЕСЛИ[ip_5>=80000#ip_6/1000#0]
|
|||
|
$formula = htmlspecialchars_decode($val['formuls']);//надо найти в формуле вставляемые значения
|
|||
|
|
|||
|
$formula = rejt_npr_parseformul($formula);
|
|||
|
$dan=array();
|
|||
|
$itogo=0; $_SESSION['debug_formul']='';
|
|||
|
$sql = 'SELECT pos FROM '.$ST['dbpf'].'_rejtnpr_saves WHERE id_user='.$id_user.' AND id_items='.$id_item.' AND (data_c BETWEEN '.$_SESSION['otchgods'][3]['data_s1'].' AND '.$_SESSION['otchgods'][3]['data_s2'].') GROUP BY pos ORDER BY pos';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if($rez){
|
|||
|
foreach($rez as $key => $val)if($key){
|
|||
|
$sql1 = 'SELECT id_itemspolyas as id,value FROM '.$ST['dbpf'].'_rejtnpr_saves WHERE id_user='.$id_user.' AND id_items='.$id_item.' AND pos='.$val['pos'].' AND (data_c BETWEEN '.$_SESSION['otchgods'][3]['data_s1'].' AND '.$_SESSION['otchgods'][3]['data_s2'].')';
|
|||
|
$rez1 = $DB->QUR_SEL($sql1);
|
|||
|
if($rez1){
|
|||
|
$dan['ip']=array();
|
|||
|
foreach($rez1 as $key1 => $val1)if($key1){
|
|||
|
//проверим наличие баллов
|
|||
|
$sql2 = 'SELECT name,value FROM '.$ST['dbpf'].'_rejtnpr_polyas WHERE id_item='.$val1['id'].'';
|
|||
|
$rez2 = $DB->QUR_SEL($sql2);
|
|||
|
if($rez2){
|
|||
|
if($rez2[0]==1){
|
|||
|
$val1['value']=$rez2[1]['value'];
|
|||
|
}else{
|
|||
|
//тут и так хранится в save балл
|
|||
|
//foreach($rez2 as $key2 => $val2)if($key2){
|
|||
|
// if($val2['value']==$val1['value']){}
|
|||
|
//}
|
|||
|
}
|
|||
|
}
|
|||
|
$dan['ip'][]=$val1;
|
|||
|
}
|
|||
|
$out[$val['pos']] = parse_formula($formula,$dan);
|
|||
|
$itogo += $out[$val['pos']];
|
|||
|
}
|
|||
|
}
|
|||
|
}else{//в сохранениях нет, т.к. в поля не вводится текст
|
|||
|
$itogo = parse_formula($formula,$dan);
|
|||
|
}
|
|||
|
if($ST['debug_formul']) $out['debug'] .= $_SESSION['debug_formul'];
|
|||
|
|
|||
|
$out['itogo']=$itogo;
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
function rejt_nr_parseformul($formula){//разбираем формулы для кафедры
|
|||
|
GLOBAL $ST,$DB;
|
|||
|
//echo $formula.'-';
|
|||
|
if(mb_strpos($formula, '0|')!==false){//удалим лишнию опцию 0|-поле не заполняется пользователем
|
|||
|
$tmp = explode('|',$formula);
|
|||
|
$formula = $tmp[1];
|
|||
|
}
|
|||
|
//тут надо разобрать формулу если есть СУММ_КАФ_ПОЛЕ_ЗНАЧ типа 0|СУММ_КАФ_ПОЛЕ_ЗНАЧ([ua_3_21_24])
|
|||
|
//СУММ_КАФ_ПОЛЕ_ЗНАЧ то надо суммировать значение полей пользовательских анкет ua_ по всему факультету
|
|||
|
//3 - _rejt_items 21 - _rejt_itemspolyas 24 - _rejt_polyas
|
|||
|
if(mb_strpos($formula, 'СУММ_КАФ_ПОЛЕ_ЗНАЧ')!==false){//нашли такую
|
|||
|
//расчитаем сумму СУММ_КАФ_ПОЛЕ_ЗНАЧ
|
|||
|
//выделим все такие суммы из формулы
|
|||
|
//СУММ_КАФ_ПОЛЕ_ЗНАЧ СУММ_КАФ_ПОЛЕ_КОЛ
|
|||
|
preg_match_all('|СУММ_КАФ_ПОЛЕ_ЗНАЧ\((.*)\)|isU',$formula,$f2);
|
|||
|
if(isset($f2[1][0])){//нашли что то [ua_3_21_24]
|
|||
|
foreach($f2[1] as $k => $v){
|
|||
|
$elems = str_replace('[','',str_replace(']','',$v));//ua_3_21_24
|
|||
|
$elem = explode('_',$elems); //тут надо разделять ua_3_21_24 от ua_3_21_24_00 - это +выпадающие элементы
|
|||
|
$id_razdel = $elem[1];
|
|||
|
$id_items = $elem[2];
|
|||
|
$id_itemspolyas = $elem[3];
|
|||
|
$summ01=0;
|
|||
|
//надо выбрать преподов из кафедры
|
|||
|
$sql = 'SELECT u.id FROM '.$ST['dbpf'].'_teachers as t,'.$ST['dbpf'].'_users as u WHERE t.kafedra="'.$_SESSION['user']['teacher']['kafedra'].'" AND u.id=t.id_user';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
|
|||
|
if($rez){
|
|||
|
foreach($rez as $key => $val)if($key){
|
|||
|
$sql1 = 'SELECT SUM(value) as alls FROM '.$ST['dbpf'].'_rejt_saves WHERE id_razdel='.$id_razdel.' AND id_items='.$id_items.' AND id_itemspolyas='.$id_itemspolyas.' AND id_user='.$val['id'].' AND (data_c BETWEEN '.$_SESSION['otchgods'][3]['data_s1'].' AND '.$_SESSION['otchgods'][3]['data_s2'].')';
|
|||
|
$rez1 = $DB->QUR_SEL($sql1);
|
|||
|
if($rez1){
|
|||
|
foreach($rez1 as $key1 => $val1)if($key1){
|
|||
|
$summ01+=$val1['alls'];
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
//в формуле заменим все вставки на числа
|
|||
|
$formula = str_replace('СУММ_КАФ_ПОЛЕ_ЗНАЧ('.$v.')',$summ01,$formula);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
if(mb_strpos($formula, 'СУММ_КАФ_ПОЛЕ_КОЛ')!==false){//нашли такую
|
|||
|
//расчитаем сумму СУММ_КАФ_ПОЛЕ_КОЛ
|
|||
|
//выделим все такие суммы из формулы
|
|||
|
preg_match_all('|СУММ_КАФ_ПОЛЕ_КОЛ\((.*)\)|isU',$formula,$f2);
|
|||
|
if(isset($f2[1][0])){//нашли что то [ua_3_21_24]
|
|||
|
foreach($f2[1] as $k => $v){
|
|||
|
$elems = str_replace('[','',str_replace(']','',$v));//ua_3_21_24
|
|||
|
$elem = explode('_',$elems); //тут надо разделять ua_3_21_24 от ua_3_21_24_00 - это +выпадающие элементы
|
|||
|
$id_razdel = $elem[1];
|
|||
|
$id_items = $elem[2];
|
|||
|
$id_itemspolyas = $elem[3];
|
|||
|
if(isset($elem[4])) $id_polyas = $elem[4]; else $id_polyas = 0;
|
|||
|
$summ01=0;
|
|||
|
//надо выбрать преподов из кафедры
|
|||
|
$sql = 'SELECT u.id FROM '.$ST['dbpf'].'_teachers as t,'.$ST['dbpf'].'_users as u WHERE t.kafedra="'.$_SESSION['user']['teacher']['kafedra'].'" AND u.id=t.id_user';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if($rez){
|
|||
|
//echo '<pre>'.print_r($_SESSION['otchgods'],1).'</pre>';
|
|||
|
foreach($rez as $key => $val)if($key){
|
|||
|
$sql1 = 'SELECT COUNT(id) as alls FROM '.$ST['dbpf'].'_rejt_saves WHERE id_razdel='.$id_razdel.' AND id_items='.$id_items.' AND id_itemspolyas='.$id_itemspolyas.' AND id_polyas='.$id_polyas.' AND id_user='.$val['id'].' AND (data_c BETWEEN '.$_SESSION['otchgods'][3]['data_s1'].' AND '.$_SESSION['otchgods'][3]['data_s2'].')';
|
|||
|
$rez1 = $DB->QUR_SEL($sql1);
|
|||
|
if($rez1){
|
|||
|
foreach($rez1 as $key1 => $val1)if($key1){
|
|||
|
$summ01+=$val1['alls'];
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
//в формуле заменим все вставки на числа
|
|||
|
$formula = str_replace('СУММ_КАФ_ПОЛЕ_КОЛ('.$v.')',$summ01,$formula);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
//echo $formula.'<br>';
|
|||
|
return $formula;
|
|||
|
}
|
|||
|
function rejtnr_raschet($id_item,$id_user){
|
|||
|
GLOBAL $ST,$DB; $out=array();
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_rejtnr_items WHERE id='.$id_item.' LIMIT 1';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
//$ST['debug_formul']=1;
|
|||
|
if($rez){
|
|||
|
$val = $rez[1];//ЕСЛИ[ip_5>=80000#ip_6/1000#0]
|
|||
|
$formula = htmlspecialchars_decode($val['formuls']);//надо найти в формуле вставляемые значения
|
|||
|
|
|||
|
$formula = rejt_nr_parseformul($formula);
|
|||
|
$dan=array();
|
|||
|
$itogo=0; $_SESSION['debug_formul']='';
|
|||
|
$sql = 'SELECT pos FROM '.$ST['dbpf'].'_rejtnr_saves WHERE id_user='.$id_user.' AND id_items='.$id_item.' AND (data_c BETWEEN '.$_SESSION['otchgods'][3]['data_s1'].' AND '.$_SESSION['otchgods'][3]['data_s2'].') GROUP BY pos ORDER BY pos';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if($rez){
|
|||
|
foreach($rez as $key => $val)if($key){
|
|||
|
$sql1 = 'SELECT id_itemspolyas as id,value FROM '.$ST['dbpf'].'_rejtnr_saves WHERE id_user='.$id_user.' AND id_items='.$id_item.' AND pos='.$val['pos'].' AND (data_c BETWEEN '.$_SESSION['otchgods'][3]['data_s1'].' AND '.$_SESSION['otchgods'][3]['data_s2'].')';
|
|||
|
$rez1 = $DB->QUR_SEL($sql1);
|
|||
|
if($rez1){
|
|||
|
$dan['ip']=array();
|
|||
|
foreach($rez1 as $key1 => $val1)if($key1){
|
|||
|
//проверим наличие баллов
|
|||
|
$sql2 = 'SELECT name,value FROM '.$ST['dbpf'].'_rejtnr_polyas WHERE id_item='.$val1['id'].'';
|
|||
|
$rez2 = $DB->QUR_SEL($sql2);
|
|||
|
if($rez2){
|
|||
|
if($rez2[0]==1){
|
|||
|
$val1['value']=$rez2[1]['value'];
|
|||
|
}else{
|
|||
|
//тут и так хранится в save балл
|
|||
|
//foreach($rez2 as $key2 => $val2)if($key2){
|
|||
|
// if($val2['value']==$val1['value']){}
|
|||
|
//}
|
|||
|
}
|
|||
|
}
|
|||
|
$dan['ip'][]=$val1;
|
|||
|
}
|
|||
|
$out[$val['pos']] = parse_formula($formula,$dan);
|
|||
|
$itogo += $out[$val['pos']];
|
|||
|
}
|
|||
|
}
|
|||
|
}else{//в сохранениях нет, т.к. в поля не вводится текст
|
|||
|
$itogo = parse_formula($formula,$dan);
|
|||
|
}
|
|||
|
if($ST['debug_formul']) $out['debug'] .= $_SESSION['debug_formul'];
|
|||
|
|
|||
|
$out['itogo']=$itogo;
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
function rejt_savesballs($id_razdel,$id_item,$id_user,$ball,$des,$data_c=0){//сохранение баллов для пользователя
|
|||
|
GLOBAL $ST,$DB; $out=array();
|
|||
|
if($des=='dele'){
|
|||
|
$sql = 'DELETE FROM '.$ST['dbpf'].'_rejt_savesballs WHERE id_user='.$id_user.' AND id_item='.$id_item.' AND id_razdel='.$id_razdel.' AND (data_c BETWEEN '.$_SESSION['otchgods'][3]['data_s1'].' AND '.$_SESSION['otchgods'][3]['data_s2'].')';
|
|||
|
$rez = $DB->QUR($sql);
|
|||
|
}
|
|||
|
if($des=='save'){
|
|||
|
if($ball=='') $ball=0;
|
|||
|
$sql = 'SELECT id FROM '.$ST['dbpf'].'_rejt_savesballs WHERE id_user='.$id_user.' AND id_item='.$id_item.' AND id_razdel='.$id_razdel.' AND (data_c BETWEEN '.$_SESSION['otchgods'][3]['data_s1'].' AND '.$_SESSION['otchgods'][3]['data_s2'].')';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
//file_put_contents('rrrr.log',date('H:i:s d.m.Y').' :: '.$sql.':id='.print_r($rez,1)."\n",FILE_APPEND);
|
|||
|
if($rez){
|
|||
|
$sql1 = 'UPDATE '.$ST['dbpf'].'_rejt_savesballs SET balls='.$ball.',data_c='.$data_c.' WHERE id='.$rez[1]['id'].'';
|
|||
|
$rez1 = $DB->QUR($sql1);
|
|||
|
//file_put_contents('rrrr.log',date('H:i:s d.m.Y').' :: '.$sql1.print_r($rez1,1)."\n",FILE_APPEND);
|
|||
|
}else{
|
|||
|
$sql1 = 'INSERT INTO '.$ST['dbpf'].'_rejt_savesballs VALUES(0,'.$data_c.','.$id_user.','.$id_razdel.','.$id_item.','.$ball.')';
|
|||
|
$rez1 = $DB->QUR($sql1);
|
|||
|
//file_put_contents('rrrr.log',date('H:i:s d.m.Y').' :: '.$sql1.print_r($rez1,1)."\n",FILE_APPEND);
|
|||
|
}
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
function rejt_raschet($id_item,$id_user){//расчет баллов по пользователю, текущий расчет! не архивный
|
|||
|
GLOBAL $ST,$DB; $out=array();
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_rejt_items WHERE id='.$id_item.' AND status=1 LIMIT 1';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
//$ST['debug_formul']=1;
|
|||
|
if($rez){
|
|||
|
$val = $rez[1];//ЕСЛИ[ip_5>=80000#ip_6/1000#0]
|
|||
|
//if($val['id']==21) $tt=1; else $tt=0;
|
|||
|
//if($tt==1) echo '<pre>'.print_r($val,1).'</pre>';
|
|||
|
//file_put_contents('rrrr.log',date('H:i:s d.m.Y').' :rejt_raschet: '.$sql.print_r($rez,1)."\n",FILE_APPEND);
|
|||
|
$formula = htmlspecialchars_decode($val['formuls']);//надо найти в формуле вставляемые значения
|
|||
|
$itogo=0; $_SESSION['debug_formul']='';
|
|||
|
//выбираем сохранения в зависимости от $_SESSION['otchgods'][3]['data_s1']-$_SESSION['otchgods'][3]['data_s2']
|
|||
|
if(isset($_SESSION['otchgods'][3])){
|
|||
|
//$sql = 'SELECT pos FROM '.$ST['dbpf'].'_rejt_saves WHERE id_user='.$id_user.' AND id_items='.$id_item.' GROUP BY pos ORDER BY pos';
|
|||
|
$sql = 'SELECT pos FROM '.$ST['dbpf'].'_rejt_saves WHERE id_user='.$id_user.' AND id_items='.$id_item.' AND (data_c BETWEEN '.$_SESSION['otchgods'][3]['data_s1'].' AND '.$_SESSION['otchgods'][3]['data_s2'].') GROUP BY pos ORDER BY pos'; //echo $sql;
|
|||
|
//SELECT pos FROM acs_rejt_saves WHERE id_user=638 AND id_items=32 AND (data_c BETWEEN 1567285200 AND 1591995600) GROUP BY pos ORDER BY pos
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
//if($tt==1) echo $sql.'<pre>'.print_r($rez,1).'</pre>';
|
|||
|
//file_put_contents('rrrr.log',date('H:i:s d.m.Y').' :rejt_raschet: '.$sql.print_r($rez,1)."\n",FILE_APPEND);
|
|||
|
if($rez){
|
|||
|
$dan=array();
|
|||
|
foreach($rez as $key => $val)if($key){
|
|||
|
$sql1 = 'SELECT id_itemspolyas as id,value FROM '.$ST['dbpf'].'_rejt_saves WHERE id_user='.$id_user.' AND id_items='.$id_item.' AND pos='.$val['pos'].' AND (data_c BETWEEN '.$_SESSION['otchgods'][3]['data_s1'].' AND '.$_SESSION['otchgods'][3]['data_s2'].')';
|
|||
|
$rez1 = $DB->QUR_SEL($sql1);
|
|||
|
//if($tt==1) echo $sql1.'<pre>'.print_r($rez1,1).'</pre>';
|
|||
|
//file_put_contents('rrrr.log',date('H:i:s d.m.Y').' :rejt_raschet: '.$sql1.print_r($rez1,1)."\n",FILE_APPEND);
|
|||
|
if($ST['debug_formul']) $out['debug'] .= $sql1."\n".print_r($rez1,1)."\n";
|
|||
|
if($rez1){
|
|||
|
$dan['ip']=array();
|
|||
|
foreach($rez1 as $key1 => $val1)if($key1){
|
|||
|
//проверим наличие баллов
|
|||
|
$sql2 = 'SELECT name,value FROM '.$ST['dbpf'].'_rejt_polyas WHERE id_item='.$val1['id'].' AND status=1';
|
|||
|
$rez2 = $DB->QUR_SEL($sql2);
|
|||
|
//file_put_contents('rrrr.log',date('H:i:s d.m.Y').' :rejt_raschet: '.$sql2.print_r($rez2,1)."\n",FILE_APPEND);
|
|||
|
if($rez2){
|
|||
|
if($rez2[0]==1){
|
|||
|
$val1['value']=$rez2[1]['value'];
|
|||
|
}else{
|
|||
|
//тут и так хранится в save балл
|
|||
|
//foreach($rez2 as $key2 => $val2)if($key2){
|
|||
|
// if($val2['value']==$val1['value']){}
|
|||
|
//}
|
|||
|
}
|
|||
|
}
|
|||
|
if($val1['value']=='')$val1['value']=0;
|
|||
|
$dan['ip'][]=$val1;
|
|||
|
if($ST['debug_formul']) $out['debug'] .= $sql2."\n".print_r($val1,1)."\n";
|
|||
|
}
|
|||
|
if($ST['debug_formul']) $out['debug'] .= 'formula:'.$formula."\n";
|
|||
|
//if($tt==1) echo $formula.'<pre>'.print_r($dan,1).'</pre>';
|
|||
|
$out[$val['pos']] = parse_formula($formula,$dan);
|
|||
|
$itogo += $out[$val['pos']];
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
if($ST['debug_formul']) $out['debug'] .= $_SESSION['debug_formul'];
|
|||
|
if($itogo==INF||$itogo==NAN) { $itogo=0; }
|
|||
|
$out['itogo']=$itogo;
|
|||
|
|
|||
|
|
|||
|
//if($tt==1) echo '<pre>'.print_r($out,1).'</pre>';
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
//_______$formula - ИМЯ ЧТО РАСЧИТЫВАЕМ
|
|||
|
//_______$mas - МАССИВ С ЗНАЧЕНИЯМИ ИЗ УЧЕБНОГО ПЛАНА
|
|||
|
//_______$rmas - МАССИВ УЖЕ РАССЧИТАННЫЙ (ДЛЯ ЭЛЕМЕНТОВ НАЧИНАЮЩИХСЯ С r_)
|
|||
|
//_______$kaf - МАССИВ ЗНАЧЕНИЙ ДАННЫХ КАФЕДРЫ
|
|||
|
/*
|
|||
|
$dan['ip'][0]['id']=6;
|
|||
|
$dan['ip'][0]['value']=20000;
|
|||
|
$fff = parse_formula($rez[1]['formuls'],$dan);
|
|||
|
*/
|
|||
|
function mathrep($formula){
|
|||
|
GLOBAL $ST;
|
|||
|
$m1 = array('>=','<='); $m2 = array('bir','mir');
|
|||
|
$out = str_replace($m1,$m2,$formula);
|
|||
|
//if($ST['debug_formul']){ $_SESSION['debug_formul'] .= 'rep1='.$out.'<br>'; }
|
|||
|
$m1 = array('=','<>','<','>','.');
|
|||
|
//$m2 = array('"=="','"!="','"<"','">"',',');
|
|||
|
$m2 = array('==','!=','<','>',',');
|
|||
|
$out = str_replace($m1,$m2,$out);
|
|||
|
//if($ST['debug_formul']){ $_SESSION['debug_formul'] .= 'rep2='.$out.'<br>'; }
|
|||
|
|
|||
|
$m1 = array('bir','mir'); $m2 = array('>=','<=');
|
|||
|
$out = str_replace($m1,$m2,$out);
|
|||
|
//if($ST['debug_formul']){ $_SESSION['debug_formul'] .= 'rep3='.$out.'<br>'; }
|
|||
|
return ''.$out.'';
|
|||
|
}
|
|||
|
function usl_ili($formula){//___ПРОВЕРИТЬ ЕСТЬ ЛИ ИЛИ
|
|||
|
//ЕСЛИ[ИЛИ([r_kurs_rab]>0;[r_kurs_proekt]>0)#1#0]
|
|||
|
if (preg_match('/ИЛИ\((.*)\)/', $formula, $result)){
|
|||
|
$t = explode(';',$result[1]);
|
|||
|
$z = false;
|
|||
|
//$m1 = array('>=','<=','=','<>','<','>','.');
|
|||
|
//$m2 = array('">=','"<="','"=="','"!="','"<"','">"',',');
|
|||
|
foreach($t as $key => $val){
|
|||
|
//$zzz = '"'.str_replace($m1,$m2,$val).'"';
|
|||
|
$zzz = mathrep($val);
|
|||
|
eval('if ('.$zzz.') $usl=1; else $usl=0;');
|
|||
|
if ($usl) { $z=true; break; }
|
|||
|
}
|
|||
|
if ($z){
|
|||
|
$formula = str_replace($result[0],'1=1',$formula);
|
|||
|
}else{
|
|||
|
$formula = str_replace($result[0],'1=0',$formula);
|
|||
|
}
|
|||
|
}
|
|||
|
return $formula;
|
|||
|
}
|
|||
|
function usl_i($formula){//___ПРОВЕРИТЬ ЕСТЬ ЛИ И
|
|||
|
//ЕСЛИ[И([fo]=оч;[tk]=Гум.;[kk]<>05)#1#0]
|
|||
|
if (preg_match('/И\((.*)\)/isU', $formula, $result)){
|
|||
|
$t = explode(';',$result[1]);
|
|||
|
$z = true;
|
|||
|
//$m1 = array('>=','<=','=','<>','<','>','.');
|
|||
|
//$m2 = array('">="','"<="','"=="','"!="','"<"','">"',',');
|
|||
|
foreach($t as $key => $val){
|
|||
|
//$zzz = '"'.str_replace($m1,$m2,$val).'"';
|
|||
|
$zzz = mathrep($val);
|
|||
|
eval('if ('.$zzz.') $usl=1; else $usl=0;');
|
|||
|
if (!$usl) {$z=false; break;}
|
|||
|
}
|
|||
|
if ($z){
|
|||
|
$formula = str_replace($result[0],'1=1',$formula);
|
|||
|
}else{
|
|||
|
$formula = str_replace($result[0],'1=0',$formula);
|
|||
|
}
|
|||
|
}
|
|||
|
return $formula;
|
|||
|
}
|
|||
|
function usl_esli2($formula){
|
|||
|
GLOBAL $ST;
|
|||
|
//$a = array('>=','<=','=','<>','<','>','.');
|
|||
|
//$b = array('">="','"<="','"=="','"!="','"<"','">"',',');
|
|||
|
$oformula = $formula;
|
|||
|
//$formula=str_replace($a,$b,$formula);
|
|||
|
$formula = mathrep($formula);
|
|||
|
if($ST['debug_formul']){ $_SESSION['debug_formul'] .= '$formula='.$formula.'<br>'; }
|
|||
|
while(mb_strpos($formula,'Х')){
|
|||
|
for($i=mb_strlen($formula);$i>0;$i--){
|
|||
|
$symb = mb_substr($formula, $i, 1, 'UTF-8');
|
|||
|
if($symb=='Х'){
|
|||
|
$j=$i-3;
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
$pervtz=mb_strpos(mb_substr($formula,$j+5),'#')+$j+5;
|
|||
|
$vtortz=mb_strpos(mb_substr($formula,$pervtz+1),'#')+$pervtz+1;
|
|||
|
$skobka=mb_strpos(mb_substr($formula,$vtortz),']')+$vtortz;
|
|||
|
$us = mb_substr($formula,$j+5,$pervtz-($j+5));
|
|||
|
|
|||
|
//[all_koef]*ЕСЛИ[[ekzamen]=есть#2*[kol_grup]#0]
|
|||
|
if($ST['debug_formul']){ $_SESSION['debug_formul'] .= '$us='.$us.'<br>'; }
|
|||
|
eval(' $us1='.$us.';');
|
|||
|
if($ST['debug_formul']){ $_SESSION['debug_formul'] .= '$us1='.$us1.'<br>'; }
|
|||
|
if($us1){
|
|||
|
$s=mb_substr($formula,$pervtz+1,$vtortz-$pervtz-1);
|
|||
|
}else{
|
|||
|
$s=mb_substr($formula,$vtortz+1,$skobka-$vtortz-1);
|
|||
|
}
|
|||
|
if($ST['debug_formul']){ $_SESSION['debug_formul'] .= '$s='.$s.'<br>'; }
|
|||
|
if ($s=='') $s=0;
|
|||
|
$formula=mb_substr($formula,0,$j).$s.mb_substr($formula,$skobka+1);
|
|||
|
if($ST['debug_formul']){ $_SESSION['debug_formul'] .= '$formula='.$formula.'<br> '; }
|
|||
|
}
|
|||
|
$us=str_replace(',','.',$formula);
|
|||
|
if($ST['debug_formul']){ $_SESSION['debug_formul'] .= '$us='.$us.'<br> '; }
|
|||
|
if($us) eval(' $formula='.$us.';'); else $formula=0;
|
|||
|
if($ST['debug_formul']){ $_SESSION['debug_formul'] .= '$formula='.$formula.'<br> '; }
|
|||
|
return $formula;
|
|||
|
}
|
|||
|
function parse_formula($formula,$dan){
|
|||
|
GLOBAL $ST,$DB; $out = array();
|
|||
|
//[all_koef]*(ЕСЛИ[И([fo]=оч;[tk]=Гум.;[kk]<>05)#0,5*[kol_stud]#0]+ЕСЛИ[И([fo]=оч;[tk]=Техн.;[kk]<>05)#[kol_stud]#0]+ЕСЛИ[И([fo]=заоч;[tk]=Гум.;[kontr_rab]=есть;[kk]<>05)#0,5*[kol_stud]#ЕСЛИ[И([fo]=заоч;[tk]=Техн.;[kontr_rab]=есть;[kk]<>05)#[kol_stud]#0]])
|
|||
|
//echo $formula.'<pre>'.print_r($dan,1).'</pre>';
|
|||
|
//$ST['debug_formul']=1;
|
|||
|
if(!isset($ST['debug_formul'])) $ST['debug_formul']=0;
|
|||
|
if($ST['debug_formul']){
|
|||
|
$_SESSION['debug_formul'] .= 'Исходная формула: '.$formula .' = '. $formula;
|
|||
|
$_SESSION['debug_formul'] .= print_r($dan,1).' ';
|
|||
|
}
|
|||
|
//Надо заменить элементы в формуле
|
|||
|
foreach($dan as $pref => $znach){
|
|||
|
foreach($znach as $key => $val){
|
|||
|
if($ST['debug_formul']){ $_SESSION['debug_formul'] .= $pref.'_'.$val['id'].'='.$val['value'].'<br> '; }
|
|||
|
//if($val['value']=='') $val['value'] = 0;
|
|||
|
if (is_numeric($val['value'])) $value = +$val['value']; else $val['value'] = 0;
|
|||
|
$formula = str_replace(''.$pref.'_'.$val['id'].'',+$val['value'],$formula);
|
|||
|
}
|
|||
|
}
|
|||
|
//____НАДО ОБРАБОТАТЬ КОНСТРУКЦИИ
|
|||
|
//_ЕСЛИ(условие;истина;ложь) ЕСЛИ(есть=есть;2*1;0)
|
|||
|
//_И(условие;условие;условие;...) И(оч=оч;=Гум.;<>05)
|
|||
|
//_ИЛИ(условие;условие;условие;...)
|
|||
|
$m1 = array('ЕСЛИ');
|
|||
|
$m2 = array('ЕСЛХ');
|
|||
|
$formula = str_replace($m1,$m2,$formula);
|
|||
|
if($ST['debug_formul']) $_SESSION['debug_formul'] .= 'Формула преоб.: '.$formula.'<br>';
|
|||
|
$kol = mb_substr_count($formula, 'ИЛИ');
|
|||
|
for ($i=0;$i!=$kol;$i++){
|
|||
|
$formula = usl_ili($formula);
|
|||
|
}
|
|||
|
if($ST['debug_formul']) $_SESSION['debug_formul'] .= 'Убрали ИЛИ: '.$formula.'<br>';
|
|||
|
$kol = mb_substr_count($formula, 'И');
|
|||
|
for ($i=0;$i!=$kol;$i++){
|
|||
|
$formula = usl_i($formula);
|
|||
|
}
|
|||
|
if($ST['debug_formul']) $_SESSION['debug_formul'] .= 'Убрали И: '.$formula.'<br>';
|
|||
|
$out=usl_esli2($formula);
|
|||
|
if($ST['debug_formul']) $_SESSION['debug_formul'] .= 'Результат: '.$out.'<hr>';
|
|||
|
|
|||
|
return round($out,2);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
function iup_get_kafedras(){//получаем факульеты из расчета часов
|
|||
|
$file = 'tmp/json_kafedras.json';
|
|||
|
if((time()-$ft)>(60*60*24*3)) unlink($file);//файл обновляется 1 раз в 3 дня
|
|||
|
if(!file_exists($file)){
|
|||
|
$url = 'http://local.mkgtu.ru/calchour_2019/get_json.php?json=kafedras';
|
|||
|
$json = file_get_contents($url);
|
|||
|
file_put_contents($file,$json);
|
|||
|
}else{
|
|||
|
$json = file_get_contents($file);
|
|||
|
}
|
|||
|
$json1 = json_decode($json,1);
|
|||
|
$out=array();//уберем все лишние специальности
|
|||
|
foreach($json1 as $k => $v){
|
|||
|
$out[] = $v;
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
//СПИСОК ФАКУЛЬТЕТОВ
|
|||
|
function lists_fakultets(){
|
|||
|
GLOBAL $ST,$DB; $out = array();
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_faculties';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
foreach ($rez as $key => $value) if ($key){
|
|||
|
$out[] = $value;
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
//СПИСОК ФАКУЛЬТЕТОВ
|
|||
|
function lists_kafedres(){
|
|||
|
GLOBAL $ST,$DB; $out = array();
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_kafedres';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
foreach ($rez as $key => $value) if ($key){
|
|||
|
$out[] = $value;
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
//ученые звания
|
|||
|
function uch_zvan(){
|
|||
|
$zvan = array();
|
|||
|
$zvan['доц.'] = 'доцент';
|
|||
|
$zvan['проф.'] = 'профессор';
|
|||
|
$zvan['ст. науч. сотр.'] = 'старший научный сотрудник';
|
|||
|
$zvan['мл. науч. сотр.'] = 'младший научный сотрудник';
|
|||
|
$zvan['акад.'] = 'академик';
|
|||
|
$zvan['чл.-кор.'] = 'член-корреспондент';
|
|||
|
|
|||
|
return $zvan;
|
|||
|
}
|
|||
|
|
|||
|
//ученые степени
|
|||
|
function uch_step(){
|
|||
|
$step = array();
|
|||
|
$step['д-р философских наук'] = 'доктор философских наук';
|
|||
|
$step['д-р архитектуры'] = 'доктор архитектуры';
|
|||
|
$step['д-р искусствоведения'] = 'доктор искусствоведения';
|
|||
|
$step['д-р культурологии'] = 'доктор культурологии';
|
|||
|
$step['д-р биол. наук'] = 'доктор биологических наук';
|
|||
|
$step['д-р ветеринар. наук'] = 'доктор ветеринарных наук';
|
|||
|
$step['д-р воен. наук'] = 'доктор военных наук';
|
|||
|
$step['д-р геогр. наук'] = 'доктор географических наук';
|
|||
|
$step['д-р геол.-минерал. наук'] = 'доктор геолого-минералогических наук';
|
|||
|
$step['д-р ист. наук'] = 'доктор исторических наук';
|
|||
|
$step['д-р мед. наук'] = 'доктор медицинских наук';
|
|||
|
$step['д-р пед. наук'] = 'доктор педагогических наук';
|
|||
|
$step['д-р полит. наук'] = 'доктор политических наук';
|
|||
|
$step['д-р психол. наук'] = 'доктор психологических наук';
|
|||
|
$step['д-р социол. наук'] = 'доктор социологических наук';
|
|||
|
$step['д-р с.-х. наук'] = 'доктор сельскохозяйственных наук';
|
|||
|
$step['д-р техн. наук'] = 'доктор технических наук';
|
|||
|
$step['д-р фармацевт. наук'] = 'доктор фармацевтических наук';
|
|||
|
$step['д-р физ.-мат. наук'] = 'доктор физико-математических наук';
|
|||
|
$step['д-р филол. наук'] = 'доктор филологических наук';
|
|||
|
$step['д-р хим. наук'] = 'доктор химических наук';
|
|||
|
$step['д-р экон. наук'] = 'доктор экономических наук';
|
|||
|
$step['д-р юрид. наук'] = 'доктор юридических наук';
|
|||
|
$step['канд. философских наук'] = 'кандидат философских наук';
|
|||
|
$step['канд. архитектуры'] = 'кандидат архитектуры';
|
|||
|
$step['канд. искусствоведения'] = 'кандидат искусствоведения';
|
|||
|
$step['канд. культурологии'] = 'кандидат культурологии';
|
|||
|
$step['канд. биол. наук'] = 'кандидат биологических наук';
|
|||
|
$step['канд. ветеринар. наук'] = 'кандидат ветеринарных наук';
|
|||
|
$step['канд. воен. наук'] = 'кандидат военных наук';
|
|||
|
$step['канд. геогр. наук'] = 'кандидат географических наук';
|
|||
|
$step['канд. геол.-минерал. наук'] = 'кандидат геолого-минералогических наук';
|
|||
|
$step['канд. ист. наук'] = 'кандидат исторических наук';
|
|||
|
$step['канд. мед. наук'] = 'кандидат медицинских наук';
|
|||
|
$step['канд. пед. наук'] = 'кандидат педагогических наук';
|
|||
|
$step['канд. полит. наук'] = 'кандидат политических наук';
|
|||
|
$step['канд. психол. наук'] = 'кандидат психологических наук';
|
|||
|
$step['канд. социол. наук'] = 'кандидат социологических наук';
|
|||
|
$step['канд. с.-х. наук'] = 'кандидат сельскохозяйственных наук';
|
|||
|
$step['канд. техн. наук'] = 'кандидат технических наук';
|
|||
|
$step['канд. фармацевт. наук'] = 'кандидат фармацевтических наук';
|
|||
|
$step['канд. физ.-мат. наук'] = 'кандидат физико-математических наук';
|
|||
|
$step['канд. филол. наук'] = 'кандидат филологических наук';
|
|||
|
$step['канд. хим. наук'] = 'кандидат химических наук';
|
|||
|
$step['канд. экон. наук'] = 'кандидат экономических наук';
|
|||
|
$step['канд. юрид. наук'] = 'кандидат юридических наук';
|
|||
|
|
|||
|
return $step;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
function iup_get_fakultets(){//получаем факульеты из расчета часов
|
|||
|
|
|||
|
//ТОЛЬКО ЭТОТ
|
|||
|
$file = 'tmp/json_fakultets.json';
|
|||
|
$ft = filemtime($file);
|
|||
|
if((time()-$ft)>(60*60*24*3)) unlink($file);//файл обновляется 1 раз в 3 дня
|
|||
|
if(!file_exists($file)){
|
|||
|
$url = 'http://local.mkgtu.ru/calchour_2019/get_json.php?json=fakultets';
|
|||
|
$json = file_get_contents($url);
|
|||
|
file_put_contents($file,$json);
|
|||
|
}else{
|
|||
|
$json = file_get_contents($file);
|
|||
|
}
|
|||
|
$json1 = json_decode($json,1);
|
|||
|
$out=array();//уберем все лишние специальности
|
|||
|
foreach($json1 as $k => $v){
|
|||
|
$out[] = $v;
|
|||
|
}
|
|||
|
$out[] = array("id"=>"999","name"=>"Филиал в пгт.Яблоновск","kod_kaf"=>"ЯблФил","type"=>"техн.","zaved"=>"Гагина Екатерина Викторовна","fakult"=>"Филиал","sr_kol_chas"=>"890","dekan"=>"");
|
|||
|
return $out;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
function json_get_ssid(){
|
|||
|
GLOBAL $ST,$DB; $ssid = '';
|
|||
|
if(isset($_SESSION['user'])&&isset($_SESSION['user']['id'])) {
|
|||
|
/*if(isset($_SESSION['user']['teacher'])) {
|
|||
|
$ssid = 't_'.md5($_SESSION['user']['id'].$_SESSION['user']['teacher']['id']);
|
|||
|
}
|
|||
|
if(isset($_SESSION['user']['student'])) {
|
|||
|
$ssid = 's_'.md5($_SESSION['user']['id'].$_SESSION['user']['student']['id']);
|
|||
|
}*/
|
|||
|
$ssid = md5($_SESSION['user']['id'].$_SESSION['user']['data_c'].$_SESSION['user']['email'].'DFRG!34_09');
|
|||
|
$ins=false;
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_libssid WHERE user_id='.$_SESSION['user']['id'].'';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if($rez){
|
|||
|
if($rez[1]['ssid']==$ssid){
|
|||
|
$sql = 'UPDATE '.$ST['dbpf'].'_libssid SET data_c='.time().' WHERE id='.$rez[1]['id'].' LIMIT 1';
|
|||
|
$rez = $DB->QUR($sql);
|
|||
|
$ins=false;
|
|||
|
}else{
|
|||
|
$sql = 'DELETE FROM '.$ST['dbpf'].'_libssid WHERE id='.$rez[1]['id'].' LIMIT 1';
|
|||
|
$rez = $DB->QUR($sql);
|
|||
|
$ins=true;
|
|||
|
}
|
|||
|
}else $ins=true;
|
|||
|
if($ins){
|
|||
|
$sql = 'INSERT INTO '.$ST['dbpf'].'_libssid VALUES(0,'.time().','.$_SESSION['user']['id'].',"'.$ssid.'")';
|
|||
|
$DB->QUR($sql);
|
|||
|
}
|
|||
|
}
|
|||
|
$_SESSION['user']['lib'] = $ssid;
|
|||
|
}
|
|||
|
|
|||
|
function save_logs($msg=''){
|
|||
|
GLOBAL $ST,$DB; $out=array();
|
|||
|
$user = ''; if(isset($_SESSION['user']['fio'])) $user = 'id:'.$_SESSION['user']['id'].'-'.$_SESSION['user']['fio'];
|
|||
|
$ip = $_SERVER['REMOTE_ADDR'];
|
|||
|
$sql = 'INSERT INTO '.$ST['dbpf'].'_logs VALUES(0,'.mktime().',"'.addslashes($msg).'",'.$_SESSION['user']['id'].', "'.$ip.'")';
|
|||
|
$DB->QUR($sql);
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
//Загрузка аватара пользователю
|
|||
|
function upload_file_ava($name,$dir_dest,$user){
|
|||
|
$file='';
|
|||
|
$handle = new Upload($_FILES[$name]);
|
|||
|
if ($handle->uploaded) {
|
|||
|
$handle->file_new_name_body = $user.'_ava_orig';
|
|||
|
$handle->image_convert = 'jpg';
|
|||
|
$handle->file_overwrite = true;
|
|||
|
$handle->Process($dir_dest);
|
|||
|
|
|||
|
if ($handle->processed) {
|
|||
|
$file = $handle->file_dst_name;
|
|||
|
}
|
|||
|
|
|||
|
$handle->file_new_name_body = $user.'_ava_300';
|
|||
|
$handle->image_convert = 'jpg';
|
|||
|
$handle->file_overwrite = true;
|
|||
|
$handle->image_resize = true;
|
|||
|
$handle->image_ratio_y = true;
|
|||
|
$handle->image_x = 300;
|
|||
|
$handle->Process($dir_dest);
|
|||
|
|
|||
|
if ($handle->processed) {
|
|||
|
|
|||
|
}
|
|||
|
$handle->file_new_name_body = $user.'_ava_150';
|
|||
|
$handle->image_convert = 'jpg';
|
|||
|
$handle->file_overwrite = true;
|
|||
|
$handle->image_resize = true;
|
|||
|
$handle->image_ratio_y = true;
|
|||
|
$handle->image_x = 150;
|
|||
|
$handle->Process($dir_dest);
|
|||
|
if ($handle->processed) {
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
$handle-> Clean();
|
|||
|
}
|
|||
|
return $file;
|
|||
|
}
|
|||
|
//транслитерация строки
|
|||
|
function translit($st) {
|
|||
|
$a = array_merge(array_combine(preg_split('//u', "абвгдеёзийклмнопрстуфхцьыэАБВГДЕЁЗИЙКЛМНОПРСТУФХЦЬЫЭabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_"), preg_split('//u', "abvgdeeziyklmnoprstufhc'ieABVGDEEZIYKLMNOPRSTUFHC'IEabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_")), array("ж" => "zh", "ч" => "ch", "ш" => "sh", "щ" => "shch", "ъ" => "", "ю" => "yu", "я" => "ya", "Ж" => "Zh", "Ч" => "Ch", "Ш" => "Sh", "Щ" => "Shch", "Ъ" => "", "Ю" => "Yu", "Я" => "Ya"));
|
|||
|
$r = preg_split('//u', $st);
|
|||
|
$out = '';
|
|||
|
foreach ($r as $v) {
|
|||
|
if (isset($a[$v])){
|
|||
|
$out .= $a[$v];
|
|||
|
//file_put_contents('jsonlogupl.log',$v.'='.$a[$v]."\n",FILE_APPEND);
|
|||
|
}
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
function translit_email($st) {
|
|||
|
$a = array_merge(array_combine(preg_split('//u', "абвгдеёзийклмнопрстуфхцьыэАБВГДЕЁЗИЙКЛМНОПРСТУФХЦЬЫЭabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_"), preg_split('//u', "abvgdeeziyklmnoprstufhc_ieABVGDEEZIYKLMNOPRSTUFHC'IEabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_")), array("ж" => "zh", "ч" => "ch", "ш" => "sh", "щ" => "shch", "ъ" => "", "ю" => "yu", "я" => "ya", "Ж" => "Zh", "Ч" => "Ch", "Ш" => "Sh", "Щ" => "Shch", "Ъ" => "", "Ю" => "Yu", "Я" => "Ya"));
|
|||
|
$r = preg_split('//u', $st);
|
|||
|
$out = '';
|
|||
|
foreach ($r as $v) {
|
|||
|
if (isset($a[$v])){
|
|||
|
$out .= $a[$v];
|
|||
|
//file_put_contents('jsonlogupl.log',$v.'='.$a[$v]."\n",FILE_APPEND);
|
|||
|
}
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
//пагинация страниц
|
|||
|
function pagination($sql,$kol=10){
|
|||
|
GLOBAL $ST,$DB; $out=array();// print_r($_GET);
|
|||
|
if (isset($_GET['p'])) $page=(int)$_GET['p']-1; else $page=0;
|
|||
|
//
|
|||
|
$page = $_SERVER['REQUEST_URI'];
|
|||
|
$page2 = explode("/", $page);
|
|||
|
$page3 = explode("p", $page2[3]);
|
|||
|
$page4 = $page3[1]-1;
|
|||
|
$page = $page4;
|
|||
|
if ($page == -1) $page = 0;
|
|||
|
//
|
|||
|
$rez=$DB->QUR_SEL($sql);
|
|||
|
if($rez){
|
|||
|
$r=ceil((int)$rez[0]/$kol);
|
|||
|
//if (fmod((int)$rez[0], $kol)!=0){}
|
|||
|
$out['page']=($page+1);
|
|||
|
//$out['page']=($page);
|
|||
|
$out['kol']=$r;
|
|||
|
$out['limit']=' LIMIT '.($page*$kol).', '.$kol.'';
|
|||
|
}else{
|
|||
|
$out['page']=0;
|
|||
|
$out['kol']=0;
|
|||
|
$out['limit']='';
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
//пагинация страниц ДЛЯ БЛОГА
|
|||
|
function pagination_blog($sql,$kol=10){
|
|||
|
GLOBAL $ST,$DB; $out=array();// print_r($_GET);
|
|||
|
if (isset($_GET['p'])) $page=(int)$_GET['p']-1; else $page=0;
|
|||
|
|
|||
|
$rez=$DB->QUR_SEL($sql);
|
|||
|
if($rez){
|
|||
|
$r=ceil((int)$rez[0]/$kol);
|
|||
|
if (fmod((int)$rez[0], $kol)!=0){}
|
|||
|
$out['page']=($page+1);
|
|||
|
$out['kol']=$r;
|
|||
|
$out['limit']=' LIMIT '.($page*$kol).', '.$kol.'';
|
|||
|
}else{
|
|||
|
$out['page']=0;
|
|||
|
$out['kol']=0;
|
|||
|
$out['limit']='';
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
//проверяем есть ли статус у пользователя
|
|||
|
function isStatusUser($status){
|
|||
|
GLOBAL $ST, $DB;
|
|||
|
$id_user = $_SESSION['user']['id'];
|
|||
|
|
|||
|
$sql = 'SELECT us.*, st.* FROM '.$ST['dbpf'].'_users as us, '.$ST['dbpf'].'_users_statuses as st WHERE us.id = "'.$id_user.'" AND st.id_user = us.id ';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if ($rez){
|
|||
|
if ($rez[1]['status'] == $status) return true;
|
|||
|
else{
|
|||
|
$part = explode(',', $rez[1]['statuses']);
|
|||
|
$i = 0;
|
|||
|
while ($i < count($part)){
|
|||
|
if ($part[$i] == $status) return true;
|
|||
|
$i++;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return false;
|
|||
|
}
|
|||
|
//ОБРАБОТКА ДАННЫХ ОТ ПОЛЬЗОВАТЕЛЯ
|
|||
|
function get_data_fu($str){
|
|||
|
//return htmlspecialchars(addslashes(strip_tags($str)));
|
|||
|
//return htmlspecialchars(mysql_escape_string(strip_tags($str)));
|
|||
|
return htmlspecialchars(strip_tags($str));
|
|||
|
}
|
|||
|
function out_data_fu($str){
|
|||
|
return stripslashes($str);
|
|||
|
}
|
|||
|
//ПОЛУЧЕНИЕ ДАННЫХ О ГРУППЕ
|
|||
|
function get_grupp($id){
|
|||
|
GLOBAL $ST,$DB; $out=array();
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_grupp WHERE id='.$id.'';
|
|||
|
$rez=$DB->QUR_SEL($sql);
|
|||
|
if($rez){
|
|||
|
$out=$rez[1];
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
//ОПРЕДЕЛЯЕМ КУРС ИЗ НАЗВАНИЯ ГРУППЫ
|
|||
|
function courseOfGruppa($id_grupp){
|
|||
|
$gruppa = get_grupp($id_grupp); //берем инфу о группе
|
|||
|
$part = explode('-', $gruppa['sokr']); //сокращенное название группы
|
|||
|
|
|||
|
return $part[1][0]; //возвращаем первый символ второй части, получается курс
|
|||
|
}
|
|||
|
//ПОЛУЧЕНИЕ ДАННЫХ О ПОЛЬЗОВАТЕЛЕ
|
|||
|
function get_user($id,$field=array()){
|
|||
|
GLOBAL $ST,$DB; $out=array();
|
|||
|
if(count($field)){
|
|||
|
$sql = 'SELECT '.implode(',',$field).' FROM ' . $ST['dbpf'] . '_users WHERE id=' . $id . '';
|
|||
|
}else {
|
|||
|
$sql = 'SELECT * FROM ' . $ST['dbpf'] . '_users WHERE id=' . $id . '';
|
|||
|
}
|
|||
|
$rez=$DB->QUR_SEL($sql);
|
|||
|
if($rez){
|
|||
|
//unset($rez[1]['pass']);
|
|||
|
$out=$rez[1];
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
//ПОЛУЧЕНИЕ ДАННЫХ О СТУДЕНТЕ
|
|||
|
function get_student($id_user){
|
|||
|
GLOBAL $ST,$DB;
|
|||
|
$out = array();
|
|||
|
$sql = 'SELECT st.*, st.id as id_stud, gr.* FROM '.$ST['dbpf'].'_students as st, '.$ST['dbpf'].'_grupp as gr WHERE st.id_user = "'.$id_user.'" AND st.id_grupp = gr.id ';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if ($rez) $out = $rez[1];
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
//ПОЛУЧЕНИЕ ДАННЫХ О СТУДЕНТЕ-ПОЛЬЗОВАТЕЛЕ
|
|||
|
function get_new_student($id_student){
|
|||
|
GLOBAL $ST, $DB;
|
|||
|
$out = array();
|
|||
|
$sql = 'SELECT us.*, st.* FROM '.$ST['dbpf'].'_users as us, '.$ST['dbpf'].'_students as st WHERE st.id = "'.$id_student.'" AND st.id_user = us.id ';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if ($rez) $out = $rez[1];
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
//ПОЛУЧЕНИЕ ДАННЫХ ТОЛЬКО О СТУДЕНТЕ
|
|||
|
function get_student_only($id_user){
|
|||
|
GLOBAL $ST,$DB;
|
|||
|
$out = array();
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_students WHERE id_user = "'.$id_user.'" ';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if ($rez) $out = $rez[1];
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
//ПОЛУЧЕНИЕ ИНФОРМАЦИИ ТОЛЬКО О ПРЕПОДЕ
|
|||
|
function get_teacher_only($id_user){
|
|||
|
GLOBAL $ST, $DB;
|
|||
|
$out = array();
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_teachers WHERE id_user = "'.$id_user.'" ';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if ($rez) $out = $rez[1];
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//ПОЛУЧЕНИЕ ДАННЫХ О ПОЛЬЗОВАТЕЛЕ
|
|||
|
function get_teacher_user($id){
|
|||
|
GLOBAL $ST,$DB; $out=array();
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_teachers WHERE id='.$id.' LIMIT 1';
|
|||
|
$rez=$DB->QUR_SEL($sql);
|
|||
|
if($rez){
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_users WHERE id='.$rez[1]['id_user'].' LIMIT 1';
|
|||
|
$rez=$DB->QUR_SEL($sql);
|
|||
|
if($rez){
|
|||
|
unset($rez[1]['pass']);
|
|||
|
$out=$rez[1];
|
|||
|
}
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
//написать сообщение
|
|||
|
function write_message($to_user, $message){
|
|||
|
GLOBAL $ST, $DB;
|
|||
|
//$sql = 'INSERT INTO '.$ST['dbpf'].'_pm VALUES (0,'.mktime().','.$_SESSION['user']['id'].','.$to_user.',"'.$message.'",2,1,"")';
|
|||
|
//$rez = $DB->QUR($sql);
|
|||
|
|
|||
|
include_once 'inc/pm_route.php';
|
|||
|
$params['pm']['otkogo_user_id'] = $_SESSION['user']['id'];
|
|||
|
$params['pm']['komu_user_id'] = $to_user;
|
|||
|
$params['pm']['message_text'] = $message;
|
|||
|
$params['pm']['from_status'] = 2;
|
|||
|
$params['pm']['to_status'] = 1;
|
|||
|
$params['pm']['file'] = '';
|
|||
|
$pm_rez = PM_SEND($params);
|
|||
|
//$msg = 'Сообщение студенту отправлено, отправили';
|
|||
|
//if($pm_rez['eml']['send']==1) $msg .= ' на личную почту и ';
|
|||
|
//if($pm_rez['pm']['send']==1) $msg .= ' в личные сообщения на сайте!';
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
function get_user_inf($id,$t=0){//ФИО пользователей 0-для отобрадения 1- для выбора
|
|||
|
GLOBAL $ST,$DB;
|
|||
|
if($t==0) $sql = 'SELECT * FROM '.$ST['dbpf'].'_users WHERE id='.$id.' LIMIT 1';
|
|||
|
else $sql = 'SELECT * FROM '.$ST['dbpf'].'_users ORDER BY fio';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if($rez){
|
|||
|
foreach($rez as $key => $val)if($key){
|
|||
|
$st[$val['id']] = stripslashes($val['fio']);
|
|||
|
}
|
|||
|
if($t==0) return $st[$id];
|
|||
|
else{
|
|||
|
$out=array();
|
|||
|
$i=0;foreach($st as $key => $val){
|
|||
|
$out[$i]['id']=$key;
|
|||
|
$out[$i]['name']=strip_tags($val);
|
|||
|
if ($id==$key) $out[$i]['sel']=1; else $out[$i]['sel']=0;
|
|||
|
$i++;
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
//СПИСОК КОДОВ СПЕЦИАЛЬНОСТЕЙ ОПРЕДЕЛЕННОГО ФАКУЛЬТЕТА
|
|||
|
function listAreaOfFakultet($fakultet){
|
|||
|
GLOBAL $ST, $DB;
|
|||
|
$fakultet = $_SESSION['user']['teacher']['fakultet'];
|
|||
|
//берем айдишник факультета и определяем кафедры, которые привязаны к этому факультету (выпускающие)
|
|||
|
$areas = array();
|
|||
|
$sql = 'SELECT fac.*, kaf.*, kaf.id as id_kaf FROM '.$ST['dbpf'].'_faculties as fac, '.$ST['dbpf'].'_kafedres as kaf WHERE fac.name = "'.$fakultet.'" AND kaf.id_facult = fac.id ';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
if ($rez){
|
|||
|
foreach ($rez as $key => $val){
|
|||
|
//перебираем кафедры и определяем коды специальностей
|
|||
|
$sql_ar = 'SELECT * FROM '.$ST['dbpf'].'_areas WHERE id_kafedra = "'.$val['id_kaf'].'" ';
|
|||
|
$rez_ar = $DB->QUR_SEL($sql_ar);
|
|||
|
if ($rez_ar){
|
|||
|
foreach ($rez_ar as $key_ar => $val_ar) if ($key_ar){
|
|||
|
|
|||
|
$areas[] = $val_ar;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return $areas;
|
|||
|
}
|
|||
|
|
|||
|
//СПИСОК ВСЕХ ПРЕПОДАВАТЕЛЕЙ (действующих)
|
|||
|
function all_teachers($kaf = '*'){
|
|||
|
/***
|
|||
|
kaf - кафедра, по умолчанию - все преподы
|
|||
|
**/
|
|||
|
GLOBAL $ST, $DB;
|
|||
|
if ($kaf == '*') $sql = 'SELECT * FROM '.$ST['dbpf'].'_users as us, '.$ST['dbpf'].'_teachers as teach WHERE teach.id_user = us.id AND us.status >= 0 AND teach.status = 1 ORDER BY fio';
|
|||
|
else $sql = 'SELECT * FROM '.$ST['dbpf'].'_users as us, '.$ST['dbpf'].'_teachers as teach WHERE teach.id_user = us.id AND us.status >= 0 AND teach.status = 1 AND teach.kafedra = "'.$kaf.'" ORDER BY fio';
|
|||
|
//echo $sql;
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
|
|||
|
$teachers = array();
|
|||
|
foreach ($rez as $key => $val) if ($key){
|
|||
|
$teachers[] = $val;
|
|||
|
}
|
|||
|
|
|||
|
return $teachers;
|
|||
|
}
|
|||
|
|
|||
|
// УЧЕБНЫЙ МАТЕРИАЛ ОПРЕДЕЛЕННОГО ПРЕПОДАВАТЕЛЯ
|
|||
|
function get_lection_teacher($id_teacher, $name, $kurs, $sem, $rb = 0){
|
|||
|
/*
|
|||
|
id_teacher
|
|||
|
name - название дисциплины
|
|||
|
kurs - курс учебного материала
|
|||
|
sem - семестр
|
|||
|
rb - рабочая программа, 0 -нет, 1 - да
|
|||
|
*/
|
|||
|
GLOBAL $ST, $DB;
|
|||
|
if ($rb == 0){ //учебный материал
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_lections WHERE id_teacher = "'.$id_teacher.'" AND name = "'.$name.'" AND kurs = "'.$kurs.'" AND semestr = "'.$sem.'"';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
|
|||
|
$material = array();
|
|||
|
if ($rez){
|
|||
|
foreach ($rez as $key => $val) if ($key){
|
|||
|
|
|||
|
$val['data_u'] = date('d.m.Y',$val['data_u']);
|
|||
|
//если несколько файлов
|
|||
|
$val['files'] = explode('|',$val['file']);
|
|||
|
//foreach($df as $k => $v) $out .= ($k+1).'. <a href="/upload/lections/'.$v.'" target="_blank">Скачать</a>; ';
|
|||
|
|
|||
|
//теперь собираем информацию о всех группах, для которых лекция
|
|||
|
$val['grupps'] = array();
|
|||
|
$sql1 = 'SELECT * FROM '.$ST['dbpf'].'_lections_grupp WHERE id_lections = "'.$val['id'].'" ';
|
|||
|
//echo $sql1;
|
|||
|
$rez1 = $DB->QUR_SEL($sql1);
|
|||
|
foreach ($rez1 as $key1 => $val1) if ($key1){
|
|||
|
$val['grupps'][] = get_grupp($val1['id_grupp']);
|
|||
|
}
|
|||
|
|
|||
|
//также смотрим выставлены ли модульные отметки
|
|||
|
$val['module'] = 0;
|
|||
|
$sql_mark = 'SELECT * FROM '.$ST['dbpf'].'_ocenki WHERE id_what = "'.$val['id'].'" AND type=1 LIMIT 1';
|
|||
|
$rez_mark = $DB->QUR_SEL($sql_mark);
|
|||
|
if ($rez_mark[0] > 0) $val['module'] = 1;
|
|||
|
|
|||
|
|
|||
|
/***/
|
|||
|
$material[] = $val;
|
|||
|
}
|
|||
|
}
|
|||
|
} else{ //рабочая программа
|
|||
|
//$sql = 'SELECT * FROM '.$ST['dbpf'].'_workprogram WHERE id_teacher = "'.$id_teacher.'" AND name = "'.$name.'" AND kurs LIKE "%'.$kurs.'%" AND semestr LIKE "%'.$sem.'%"';
|
|||
|
$sql = 'SELECT * FROM '.$ST['dbpf'].'_workprogram WHERE id_teacher = "'.$id_teacher.'" AND name = "'.$name.'" ';
|
|||
|
$rez = $DB->QUR_SEL($sql);
|
|||
|
|
|||
|
$material = array();
|
|||
|
if ($rez){
|
|||
|
foreach ($rez as $key => $val) if ($key){
|
|||
|
$val['data_u'] = date('d.m.Y',$val['data_u']);
|
|||
|
//теперь собираем информацию о всех группах, для которых лекция
|
|||
|
$val['grupps'] = array();
|
|||
|
$sql1 = 'SELECT * FROM '.$ST['dbpf'].'_workprogram_grupp WHERE id_lections = "'.$val['id'].'" ';
|
|||
|
//echo $sql1;
|
|||
|
$rez1 = $DB->QUR_SEL($sql1);
|
|||
|
foreach ($rez1 as $key1 => $val1) if ($key1){
|
|||
|
$val['grupps'][] = get_grupp($val1['id_grupp']);
|
|||
|
}
|
|||
|
|
|||
|
/***/
|
|||
|
$material[] = $val;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return $material;
|
|||
|
}
|
|||
|
|
|||
|
function get_teacher_inf($id,$t=0){//ФИО ПРЕПОДОВ 0-для отобрадения 1- для выбора
|
|||
|
GLOBAL $ST,$DB;
|
|||
|
if($t==0) {
|
|||
|
//$rez0 = $DB->QUR_SEL('SELECT * FROM '.$ST['dbpf'].'_teachers WHERE id='.$id.'');
|
|||
|
$sql = 'SELECT t.id as tid,u.fio FROM '.$ST['dbpf'].'_users as u,'.$ST['dbpf'].'_teachers as t WHERE t.id='.$id.' AND t.id_user=u.id LIMIT 1';
|
|||
|
}else {
|
|||
|
$sql = 'SELECT t.id as tid,u.fio FROM '.$ST['dbpf'].'_users as u,'.$ST['dbpf'].'_teachers as t WHERE t.id_user=u.id ORDER BY u.fio';
|
|||
|
}
|
|||
|
$rez = $DB->QUR_SEL($sql);//echo $sql.mysql_error();
|
|||
|
if($rez){
|
|||
|
foreach($rez as $key => $val)if($key){
|
|||
|
$st[$val['tid']] = stripslashes($val['fio']);
|
|||
|
}
|
|||
|
if($t==0) return $st[$id];
|
|||
|
else{
|
|||
|
$out=array();
|
|||
|
$i=0;foreach($st as $key => $val){
|
|||
|
$out[$i]['id']=$key;
|
|||
|
$out[$i]['name']=strip_tags($val);
|
|||
|
if ($id==$key) $out[$i]['sel']=1; else $out[$i]['sel']=0;
|
|||
|
$i++;
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
/*функция склонения лет*/
|
|||
|
function declension($number, array $data){
|
|||
|
$rest = [$number % 10, $number % 100];
|
|||
|
|
|||
|
if($rest[1] > 10 && $rest[1] < 20) {
|
|||
|
return $data[2];
|
|||
|
} elseif ($rest[0] > 1 && $rest[0] < 5) {
|
|||
|
return $data[1];
|
|||
|
} else if ($rest[0] == 1) {
|
|||
|
return $data[0];
|
|||
|
}
|
|||
|
|
|||
|
return $data[2];
|
|||
|
}
|
|||
|
|
|||
|
//ПОЛУЧАЕМ ВСЕ ИМГ ИЗ ТЕКСТА
|
|||
|
function img_get_all($text){
|
|||
|
$out = array(); $matches = array();
|
|||
|
$reg = '/(src|img)=(.*)("\s|\'\s|>)/isU';
|
|||
|
preg_match_all($reg , $text , $matches);
|
|||
|
if (count($matches[2])){
|
|||
|
$i=0; foreach ($matches[2] as $key1 => $val1) {
|
|||
|
$out[$i] = str_replace('"','',$val1);
|
|||
|
$i++;
|
|||
|
}
|
|||
|
}else $out[0] = '/tpl/img/nophoto.png';
|
|||
|
return $out;
|
|||
|
}
|
|||
|
//ОТОБРАЖАЕМ ДАТУ КРАСИВО
|
|||
|
function get_data($stamp,$t=0,$b=0){
|
|||
|
//$mes = array('01'=>'Январь','02'=>'Февраль','03'=>'Март','04'=>'Апрель','05'=>'Май','06'=>'Июнь','07'=>'Июль','08'=>'Август','09'=>'Сентябрь','10'=>'Октябрь','11'=>'Ноябрь','12'=>'Декабрь');
|
|||
|
$mes = array('01'=>'Января','02'=>'Февраля','03'=>'Марта','04'=>'Апреля','05'=>'Мая','06'=>'Июня','07'=>'Июля','08'=>'Августа','09'=>'Сентября','10'=>'Октября','11'=>'Ноября','12'=>'Декабря');
|
|||
|
$day = array(1=>'Понедельник','Вторник','Среда','Четверг','Пятница','Суббота','Воскресенье');
|
|||
|
//return date('d.m.Y',$stamp);
|
|||
|
|
|||
|
$t1[0] = date('d',$stamp); $t1[1] = date('m',$stamp); $t1[2] = date('Y',$stamp); $t1[3] = date('H',$stamp); $t1[4] = date('i',$stamp);
|
|||
|
$stamp = mktime(0,0,0,$t1[1],$t1[0],$t1[2]);
|
|||
|
|
|||
|
$d[0] = date('d',$stamp);
|
|||
|
$d[1] = $mes[date('m',$stamp)];
|
|||
|
$d[2] = $day[date('w',$stamp)];
|
|||
|
//$d[2] = date('w',$stamp);
|
|||
|
$now = mktime(0,0,0,date('m'),date('d'),date('Y'));
|
|||
|
|
|||
|
$r = DateDiff ('d',$stamp,$now); //$d[2] .= '-'.$r;
|
|||
|
//return $stamp.'-'.$now.'='.($now-$stamp).' '.date('d.m.Y',$now).'-'.date('d.m.Y',$stamp).'['.$r.']';
|
|||
|
if ($r<=2){
|
|||
|
switch ($r):
|
|||
|
case(0): $d[2] = '<font color="#06ff00">сегодня</font>'; break;
|
|||
|
case(1): $d[2] = '<font color="#38200a">вчера</font>'; break;
|
|||
|
case(2): $d[2] = '<font color="#ff6a00">позавчера</font>'; break;
|
|||
|
//default: $d[2] = $day[date('w',$stamp)]; break;
|
|||
|
endswitch;
|
|||
|
}
|
|||
|
if ($d[2]!='') $d[2] .= ', ' ;
|
|||
|
$d[3] = date('Y',$stamp);
|
|||
|
if ($t==0){//Полная запись
|
|||
|
if ($b==0) return $t1[3].':'.$t1[4].' '.$d[2].'<br>'.$d[0].' '.$d[1].' '.$d[3];
|
|||
|
else return $t1[3].':'.$t1[4].' '.$d[2].' '.$d[0].' '.$d[1].' '.$d[3];
|
|||
|
}
|
|||
|
if ($t==1){//Короткая
|
|||
|
if ($r<=2) return $d[2].''.$t1[3].':'.$t1[4];
|
|||
|
else return $d[0].'.'.$d[1].'.'.$d[3];
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
Function DateDiff ($interval,$date1,$date2) {
|
|||
|
if ( !function_exists('bcdiv') ) {
|
|||
|
function bcdiv( $x, $y, $scale = 0 ) {
|
|||
|
$res = $x / $y;
|
|||
|
return round( $res, $scale );
|
|||
|
}
|
|||
|
}
|
|||
|
$timedifference = $date2 - $date1;
|
|||
|
switch ($interval) {
|
|||
|
case 'w': $retval = bcdiv($timedifference,604800); break;
|
|||
|
case 'd': $retval = bcdiv($timedifference,86400); break;
|
|||
|
case 'h': $retval = bcdiv($timedifference,3600); break;
|
|||
|
case 'n': $retval = bcdiv($timedifference,60); break;
|
|||
|
case 's': $retval = $timedifference; break;
|
|||
|
}
|
|||
|
return $retval;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Функция возвращает окончание для множественного числа слова на основании числа и массива окончаний
|
|||
|
* @param $number Integer Число на основе которого нужно сформировать окончание
|
|||
|
* @param $endingsArray Array Массив слов или окончаний для чисел (1, 4, 5),
|
|||
|
* например array('яблоко', 'яблока', 'яблок')
|
|||
|
* @return String
|
|||
|
*/
|
|||
|
function getNumEnding($number, $endingArray){
|
|||
|
$number = $number % 100;
|
|||
|
if ($number>=11 && $number<=19) {
|
|||
|
$ending=$endingArray[2];
|
|||
|
}
|
|||
|
else {
|
|||
|
$i = $number % 10;
|
|||
|
switch ($i)
|
|||
|
{
|
|||
|
case (1): $ending = $endingArray[0]; break;
|
|||
|
case (2):
|
|||
|
case (3):
|
|||
|
case (4): $ending = $endingArray[1]; break;
|
|||
|
default: $ending=$endingArray[2];
|
|||
|
}
|
|||
|
}
|
|||
|
return $ending;
|
|||
|
}
|
|||
|
//ОТПРАВКА ПИСЬМА
|
|||
|
function send_email($title,$message,$toemail,$from='',$f=1,$tpl=''){
|
|||
|
$out = false;
|
|||
|
|
|||
|
$param_CRON=array();
|
|||
|
$param_CRON['title']=$title;
|
|||
|
$param_CRON['message']=$message;
|
|||
|
$param_CRON['toemail']=$toemail;
|
|||
|
$param_CRON['from']=$from;
|
|||
|
$param_CRON['f']=$f;
|
|||
|
$param_CRON['tpl']=$tpl;
|
|||
|
|
|||
|
$file = 'PHPMailer/PHPMailerAutoload.php';
|
|||
|
if(file_exists('inc/'.$file)){
|
|||
|
require_once 'inc/'.$file;
|
|||
|
}else{
|
|||
|
require_once $file;
|
|||
|
}
|
|||
|
|
|||
|
//проверим ящик на ящики по номеру зачетки не шлем!
|
|||
|
$tmp = explode('@',$toemail);
|
|||
|
if(is_int($tmp[0])){
|
|||
|
$out = false;
|
|||
|
return $out;
|
|||
|
}
|
|||
|
//Не отправляем на домен student.mkgtu.ru
|
|||
|
if(strpos($toemail,'@student.mkgtu.ru')!==false){
|
|||
|
$out = false;
|
|||
|
return $out;
|
|||
|
}
|
|||
|
if(!isset($_SERVER['HTTP_HOST'])) $HOST = 'eios.mkgtu.ru'; else $HOST = $_SERVER['HTTP_HOST'];
|
|||
|
|
|||
|
if($tpl==''){
|
|||
|
$message = '<html><head><title>'.$title.'</title></head><body>Сообщение с сайта '.$HOST.'!<hr>'.$message.'<hr>ФГБОУ ВО "МГТУ" портал online обучения <br><span style="font-size:10px;">Если вы считаете это письмо спамом или рассылкой, перешлите его на почту it@mkgtu.ru с пометкой СПАМ, мы постараемся разобраться в данной ситуации</span></body></html>';
|
|||
|
}
|
|||
|
if($tpl=='iup'){
|
|||
|
$message = '<html><head><title>'.$title.'</title></head><body>Сообщение с сайта '.$HOST.'!<hr>'.$message.'<hr>ФГБОУ ВО "МГТУ" портал online обучения <br><span style="font-size:10px;">Если вы считаете это письмо спамом или рассылкой, перешлите его на почту it@mkgtu.ru с пометкой СПАМ, мы постараемся разобраться в данной ситуации</span></body></html>';
|
|||
|
}
|
|||
|
include_once 'inc/email_cron.php';
|
|||
|
$mail = new PHPMailer;
|
|||
|
try {
|
|||
|
$mail->CharSet = 'utf-8';
|
|||
|
$mail->isSMTP();
|
|||
|
$mail->SMTPDebug = 0;
|
|||
|
$mail->Host = 'smtp.yandex.ru';
|
|||
|
$mail->Port = 25;
|
|||
|
$mail->SMTPSecure = 'tls';
|
|||
|
|
|||
|
$mail->SMTPAuth = true;
|
|||
|
if($title=='Восстановление пароля eios.mkgtu.ru') {
|
|||
|
//$email_ot = "noreply02@mkgtu.ru";
|
|||
|
$email_ot = "noreply@mkgtu.ru";
|
|||
|
//$email_ot = "eios.mkgtu01@yandex.ru";
|
|||
|
$mail->Username = $email_ot;
|
|||
|
}else {
|
|||
|
$email_ot = "noreply@mkgtu.ru";
|
|||
|
//$email_ot = "eios.mkgtu01@yandex.ru";
|
|||
|
$mail->Username = $email_ot;
|
|||
|
}
|
|||
|
$mail->Password = "!!12345!!";
|
|||
|
//$mail->Password = "xnpsldxcndjhtehc";
|
|||
|
|
|||
|
$mail->setFrom($email_ot, 'оповещатель['.$HOST.']');
|
|||
|
$mail->addAddress($toemail);
|
|||
|
$mail->Subject = $title;
|
|||
|
$mail->msgHTML($message);
|
|||
|
$mail->AltBody = strip_tags($message);
|
|||
|
|
|||
|
if (!$mail->send()) {
|
|||
|
$param_CRON['error'] = $mail->ErrorInfo;
|
|||
|
file_put_contents('email_error_01.txt',date('H:i:s d.m.Y').': ErrorInfo: '.$mail->ErrorInfo."\n",FILE_APPEND);
|
|||
|
EMAIL_cron_save_task($param_CRON);
|
|||
|
$out = false;
|
|||
|
} else {
|
|||
|
file_put_contents('email_error_01.txt',date('H:i:s d.m.Y').': SUCCESS: '."\n",FILE_APPEND);
|
|||
|
$out = true;
|
|||
|
EMAIL_cron_dele_task($param_CRON);
|
|||
|
}
|
|||
|
} catch (phpmailerException $e) {
|
|||
|
file_put_contents('email_error_01.txt',date('H:i:s d.m.Y').': phpmailerException: '.$e->errorMessage()."\n",FILE_APPEND);
|
|||
|
$param_CRON['error'] = $e->errorMessage();
|
|||
|
EMAIL_cron_save_task($param_CRON);
|
|||
|
} catch (Exception $e) {
|
|||
|
file_put_contents('email_error_01.txt',date('H:i:s d.m.Y').': Exception: '.$e->getMessage()."\n",FILE_APPEND);
|
|||
|
$param_CRON['error'] = $e->getMessage();
|
|||
|
EMAIL_cron_save_task($param_CRON);
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
function send_email1($title,$message,$to='',$from='',$f=1){
|
|||
|
if($to=='') $to = 'it@mkgtu.ru';
|
|||
|
if($from=='') $from = 'noreply@'.$_SERVER['HTTP_HOST'];
|
|||
|
$headers = 'MIME-Version: 1.0' . "\r\n";
|
|||
|
$headers .= 'Content-type: text/html; charset=utf8' . "\r\n";
|
|||
|
$headers .= 'From: '.$from. "\r\n" .
|
|||
|
'Reply-To: '.$from . "\r\n" .
|
|||
|
'X-Mailer: PHP/' . phpversion();
|
|||
|
if($f) $message .= '<br>--------------------------<br>Портал online обучения '.$_SERVER['HTTP_HOST'].'<br>Разработчики: Чундышко В.Ю., Яковлев А.Л., Голеусов Р.О.,<br>авторы: <b>Чудесова Н.Н.</b>, <b>Галичева М.С.</b>, <b>Кучинская Е.А.</b>';
|
|||
|
return mail($to,$title,$message,$headers);
|
|||
|
}
|
|||
|
|
|||
|
function encode($unencoded,$key){//Шифруем
|
|||
|
$string=base64_encode($unencoded);//Переводим в base64
|
|||
|
$arr=array();//Это массив
|
|||
|
$x=0;
|
|||
|
while ($x++< strlen($string)) {//Цикл
|
|||
|
$arr[$x-1] = md5(md5($key.$string[$x-1]).$key);//Почти чистый md5
|
|||
|
$newstr = $newstr.$arr[$x-1][3].$arr[$x-1][6].$arr[$x-1][1].$arr[$x-1][2];//Склеиваем символы
|
|||
|
}
|
|||
|
return $newstr;//Вертаем строку
|
|||
|
}
|
|||
|
function decode($encoded, $key){//расшифровываем
|
|||
|
$strofsym="qwertyuiopasdfghjklzxcvbnm1234567890QWERTYUIOPASDFGHJKLZXCVBNM=";//Символы, с которых состоит base64-ключ
|
|||
|
$x=0;
|
|||
|
while ($x++<= strlen($strofsym)) {//Цикл
|
|||
|
$tmp = md5(md5($key.$strofsym[$x-1]).$key);//Хеш, который соответствует символу, на который его заменят.
|
|||
|
$encoded = str_replace($tmp[3].$tmp[6].$tmp[1].$tmp[2], $strofsym[$x-1], $encoded);//Заменяем №3,6,1,2 из хеша на символ
|
|||
|
}
|
|||
|
return base64_decode($encoded);//Вертаем расшифрованную строку
|
|||
|
}
|
|||
|
|
|||
|
//РАСПИСАНИЕ ВЕБИНАРОВ В РЕЖИМЕ РЕАЛЬНОГО ВРЕМЕНИ ZOOM
|
|||
|
//Основная функция
|
|||
|
function zoom_curl($url,$post=array()){
|
|||
|
GLOBAL $API; $out = array();
|
|||
|
$curl = curl_init();
|
|||
|
|
|||
|
$option = array(
|
|||
|
CURLOPT_URL => $API['url'].$url,
|
|||
|
CURLOPT_RETURNTRANSFER => true,
|
|||
|
CURLOPT_ENCODING => "",
|
|||
|
CURLOPT_MAXREDIRS => 10,
|
|||
|
CURLOPT_TIMEOUT => 30,
|
|||
|
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
|
|||
|
CURLOPT_HTTPHEADER => array(
|
|||
|
"authorization: Bearer ".$API['JWTToken'],
|
|||
|
"content-type: application/json"
|
|||
|
),
|
|||
|
);
|
|||
|
if(count($post)){
|
|||
|
$option[CURLOPT_CUSTOMREQUEST] = 'POST';
|
|||
|
$option[CURLOPT_POSTFIELDS] = json_encode($post);
|
|||
|
}else{
|
|||
|
$option[CURLOPT_CUSTOMREQUEST] = 'GET';
|
|||
|
}
|
|||
|
curl_setopt_array($curl, $option);
|
|||
|
|
|||
|
$response = curl_exec($curl);
|
|||
|
$err = curl_error($curl);
|
|||
|
|
|||
|
curl_close($curl);
|
|||
|
|
|||
|
if ($err) {
|
|||
|
$out['err']=1;
|
|||
|
$out['msg']='cURL Error #:' . $err;
|
|||
|
} else {
|
|||
|
$out['err']=0;
|
|||
|
$out['msg']='cURL Ok';
|
|||
|
$out['response']=$response;
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
//
|
|||
|
function getMeeting($uuid){
|
|||
|
$file = '/zoom/'.$uuid.'.json';
|
|||
|
if(file_exists($file)){
|
|||
|
return json_decode(file_get_contents($file) ,1);
|
|||
|
}else{
|
|||
|
return array();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
function zoom_meetingList($user){//Просмотр мероприятий
|
|||
|
$out = array();
|
|||
|
$out['err']=1;
|
|||
|
$url = 'users/'.$user['id'].'/meetings';
|
|||
|
$rez = zoom_curl($url);
|
|||
|
/*
|
|||
|
Array
|
|||
|
(
|
|||
|
[err] => 0
|
|||
|
[msg] => cURL Ok
|
|||
|
[response] => {
|
|||
|
"page_size":30,
|
|||
|
"total_records":2,
|
|||
|
"next_page_token":"",
|
|||
|
"meetings":[
|
|||
|
{
|
|||
|
"uuid":"+G+izsejS26d7QmpzpbWqA==",
|
|||
|
"id":76902907580,
|
|||
|
"host_id":"MgQ_chc0Sx2aGLK2eq-_-w",
|
|||
|
"topic":"первое мероприятие 1",
|
|||
|
"type":2,
|
|||
|
"start_time":"2020-09-30T13:30:00Z",
|
|||
|
"duration":40,
|
|||
|
"timezone":"Europe/Moscow",
|
|||
|
"created_at":"2020-09-30T07:13:46Z",
|
|||
|
"join_url":"https://us04web.zoom.us/j/76902907580?pwd=clUrV0NBcmRyd3RFbmUwRTM3WVJqUT09"
|
|||
|
},
|
|||
|
{
|
|||
|
"uuid":"Uc0NFgdTSle3zZ4OgM4BOw==",
|
|||
|
"id":71451895771,
|
|||
|
"host_id":"MgQ_chc0Sx2aGLK2eq-_-w",
|
|||
|
"topic":"первое мероприятие 1",
|
|||
|
"type":2,
|
|||
|
"start_time":"2020-09-30T13:30:00Z",
|
|||
|
"duration":40,
|
|||
|
"timezone":"Europe/Moscow",
|
|||
|
"created_at":"2020-09-30T07:13:18Z",
|
|||
|
"join_url":"https://us04web.zoom.us/j/71451895771?pwd=NThieHAyRG9CcmR1NTBVZkFheDhjUT09"
|
|||
|
}]
|
|||
|
}
|
|||
|
)
|
|||
|
*/
|
|||
|
if($rez['err']==0){
|
|||
|
$out['err']=0;
|
|||
|
$json = json_decode($rez['response'],1);
|
|||
|
$out['meetings'] = $json['meetings'];
|
|||
|
}
|
|||
|
return $out;
|
|||
|
}
|
|||
|
|
|||
|
function zoom_getUsers(){//Получение списка пользователей
|
|||
|
$users = array();
|
|||
|
$url = 'users?status=active&page_size=30&page_number=1';
|
|||
|
$rez = zoom_curl($url);
|
|||
|
if($rez['err']==0){
|
|||
|
$json = json_decode($rez['response'],1);
|
|||
|
$users = $json['users'];
|
|||
|
}
|
|||
|
return $users;
|
|||
|
|
|||
|
/*echo '<pre>'.print_r($rez,1).'</pre>';
|
|||
|
Array(
|
|||
|
[err] => 0
|
|||
|
[msg] => cURL Ok
|
|||
|
[response] => {
|
|||
|
"page_count":1,
|
|||
|
"page_number":1,
|
|||
|
"page_size":30,
|
|||
|
"total_records":1,
|
|||
|
"users":[
|
|||
|
{
|
|||
|
"id":"MgQ_chc0Sx2aGLK2eq-_-w",
|
|||
|
"first_name":"Alexander",
|
|||
|
"last_name":"Yakov",
|
|||
|
"email":"alneo.ru@yandex.ru",
|
|||
|
"type":1,
|
|||
|
"pmi":5136867612,
|
|||
|
"timezone":"Europe/Moscow",
|
|||
|
"verified":1,
|
|||
|
"dept":"",
|
|||
|
"created_at":"2020-04-14T07:35:53Z",
|
|||
|
"last_login_time":"2020-09-30T05:35:42Z",
|
|||
|
"last_client_version":"5.0.24050.0510(android)",
|
|||
|
"language":"ru-RU",
|
|||
|
"phone_number":"",
|
|||
|
"status":"active"
|
|||
|
}
|
|||
|
]
|
|||
|
}
|
|||
|
)
|
|||
|
*/
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//генератор пароленй
|
|||
|
function gen_password($length = 8){
|
|||
|
$password = '';
|
|||
|
$arr = array(
|
|||
|
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
|
|||
|
'n', '*', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
|
|||
|
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
|
|||
|
'N', '!', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
|
|||
|
'1', '2', '3', '4', '5', '6', '7', '8', '9', '0'
|
|||
|
);
|
|||
|
|
|||
|
for ($i = 0; $i < $length; $i++) {
|
|||
|
$password .= $arr[random_int(0, count($arr) - 1)];
|
|||
|
}
|
|||
|
return $password;
|
|||
|
}
|
|||
|
|
|||
|
//echo gen_password(8);
|
|||
|
|
|||
|
?>
|