EIOS/inc/functions.php

1779 lines
74 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

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

<?php
//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);
?>