EIOS/inc/functions.php

1779 lines
74 KiB
PHP
Raw Permalink Normal View History

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