EIOS/inc/rejt.php

408 lines
18 KiB
PHP
Raw Normal View History

2023-12-28 15:39:22 +03:00
<?php
error_reporting(0);
session_start();
$maincontent = '';
$smarty->assign('razdel','rejtmain');
if(isset($_GET['page'])){ $page=$_GET['page']; }else{ $page='main'; }
if(isset($_GET['des'])){ $des=$_GET['des']; }else{ $des='show';}
/*
echo '<pre>'.print_r($_POST,1).'</pre>';
echo '<pre>'.print_r($_GET,1).'</pre>';
[rejt] =>
[page] => admin1
[des] => add*/
$TB['razdels'] = $ST['dbpf'].'_rejt_razdels';
$TB['items'] = $ST['dbpf'].'_rejt_items';
$TB['polyas'] = $ST['dbpf'].'_rejt_polyas';
$TB['itemspolyas'] = $ST['dbpf'].'_rejt_itemspolyas';
$TB['saves'] = $ST['dbpf'].'_rejt_saves';
$TB['savesballs'] = $ST['dbpf'].'_rejt_savesballs';
$TB['otchgods'] = $ST['dbpf'].'_rejt_otchgods';
{$sql = 'CREATE TABLE IF NOT EXISTS `'.$TB['savesballs'].'` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`data_c` int(11) NOT NULL,
`id_user` int(11) NOT NULL,
`id_item` int(11) NOT NULL,
`balls` float NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;';
$rez = $DB->QUR($sql);}
{$sql = 'CREATE TABLE IF NOT EXISTS `'.$TB['razdels'].'` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`descr` varchar(255) NOT NULL,
`pos` tinyint(4) NOT NULL,
`status` tinyint(4) NOT NULL,
`dostup` tinyint(4) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;';
$rez = $DB->QUR($sql);
}
{
$sql = 'CREATE TABLE IF NOT EXISTS `'.$TB['items'].'` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_razdel` int(11) NOT NULL,
`name` text NOT NULL,
`tip` tinyint(4) NOT NULL,
`pos` tinyint(4) NOT NULL,
`formuls` varchar(255) NOT NULL,
`descr` text NOT NULL,
`status` tinyint NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;';
$rez = $DB->QUR($sql);
}
{
$sql = 'CREATE TABLE IF NOT EXISTS `'.$TB['polyas'].'` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_item` int(11) NOT NULL,
`name` text NOT NULL,
`pos` tinyint(4) NOT NULL,
`value` DOUBLE NOT NULL,
`status` tinyint NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;';
$rez = $DB->QUR($sql);}
{
$sql = 'CREATE TABLE IF NOT EXISTS `'.$TB['itemspolyas'].'` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_item` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`pos` tinyint(4) NOT NULL,
`value` varchar(255) NOT NULL,
`status` tinyint NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;';
$rez = $DB->QUR($sql);}
{
$sql = 'CREATE TABLE IF NOT EXISTS `'.$TB['saves'].'` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`data_c` int(11) NOT NULL,
`id_user` int(11) NOT NULL,
`id_razdel` int(11) NOT NULL,
`id_items` int(11) NOT NULL,
`id_itemspolyas` int(11) NOT NULL,
`id_polyas` int(11) NOT NULL,
`value` text NOT NULL,
`pos` tinyint(4) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;';
$rez = $DB->QUR($sql);}
{$sql = 'CREATE TABLE IF NOT EXISTS `'.$TB['otchgods'].'` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`data_c` int(11) NOT NULL,
`tip` int(11) NOT NULL,
`data_s1` int(11) NOT NULL,
`data_s2` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`descrip` text NOT NULL,
`status` tinyint NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;';
$rez = $DB->QUR($sql);}
function rejt_get_razdels($id=0){
GLOBAL $TB,$DB; $out=array();
if($id){
$sql = 'SELECT * FROM '.$TB['razdels'].' WHERE id='.$id.' AND status=1 LIMIT 1';
}else{
$sql = 'SELECT * FROM '.$TB['razdels'].' WHERE status=1 ORDER BY pos';
}
$rez = $DB->QUR_SEL($sql);
if($rez){
foreach($rez as $key => $val)if($key){
$out[]=$val;
}
}
return $out;
}
function rejt_get_items($id=0){
GLOBAL $TB,$DB; $out=array();
if($id){
$sql = 'SELECT * FROM '.$TB['itemspolyas'].' WHERE id='.$id.' AND status=1 LIMIT 1';
}else{
$sql = 'SELECT * FROM '.$TB['itemspolyas'].' WHERE status=1 ORDER BY id_item,pos';
}
$rez = $DB->QUR_SEL($sql);
if($rez){
foreach($rez as $key => $val)if($key){
$sql1 = 'SELECT * FROM '.$TB['items'].' WHERE id='.$val['id_item'].' AND status=1';
$rez1 = $DB->QUR_SEL($sql1);
if($rez1){
$sql2 = 'SELECT * FROM '.$TB['razdels'].' WHERE id='.$rez1[1]['id_razdel'].' AND status=1';
$rez2 = $DB->QUR_SEL($sql2);
if($rez2){
$rez1[1]['razdel'] = $rez2[1];
}
$val['item'] = $rez1[1];
}
$out[]=$val;
}
}
return $out;
}
function rejt_get_useranketa(){
GLOBAL $ST,$DB,$TB;
$items=array(); $BALLS=0;
$sql = 'SELECT * FROM '.$TB['razdels'].' WHERE status=1 ORDER BY pos';
$rez = $DB->QUR_SEL($sql); //echo $sql.'<pre>'.print_r($rez,1).'</pre>';
if($rez){
foreach($rez as $key => $val)if($key){
$val['razdel']=array();
$sql1 = 'SELECT * FROM '.$TB['items'].' WHERE id_razdel='.$val['id'].' AND status=1 ORDER BY pos';
$rez1 = $DB->QUR_SEL($sql1); //echo $sql1.'<pre>'.print_r($rez1,1).'</pre>';
if($rez1){
foreach($rez1 as $key1 => $val1)if($key1){
$val1['itemspolyas']=array();
$sql2 = 'SELECT * FROM '.$TB['itemspolyas'].' WHERE id_item='.$val1['id'].' AND status=1 ORDER BY pos';
$rez2 = $DB->QUR_SEL($sql2); //echo $sql2.'<pre>'.print_r($rez2,1).'</pre>';
$kolsaves=0;
if($rez2){
foreach($rez2 as $key2 => $val2)if($key2){
$val2['polyas']=array();
//выбираем выпадающие элементы
$sql3 = 'SELECT * FROM '.$TB['polyas'].' WHERE id_item='.$val2['id'].' AND status=1 ORDER BY pos';
$rez3 = $DB->QUR_SEL($sql3); //echo $sql3.'<pre>'.print_r($rez3,1).'</pre>';
if($rez3){
foreach($rez3 as $key3 => $val3)if($key3){
$val2['polyas'][]=$val3;
}
}
$val2['saves']=array();
//выбираем сохранения в зависимости от $_SESSION['otchgods'][3]['data_s1']-$_SESSION['otchgods'][3]['data_s2']
if(isset($_SESSION['otchgods'][3])){
//$sql4 = 'SELECT * FROM '.$TB['saves'].' WHERE id_user='.$_SESSION['user']['id'].' AND id_razdel='.$val['id'].' AND id_items='.$val1['id'].' AND id_itemspolyas='.$val2['id'].' ORDER BY pos';
$sql4 = 'SELECT * FROM '.$TB['saves'].' WHERE id_user='.$_SESSION['user']['id'].' AND id_razdel='.$val['id'].' AND id_items='.$val1['id'].' AND id_itemspolyas='.$val2['id'].' AND (data_c BETWEEN '.$_SESSION['otchgods'][3]['data_s1'].' AND '.$_SESSION['otchgods'][3]['data_s2'].') ORDER BY pos';
$rez4 = $DB->QUR_SEL($sql4); //echo '1:'.$sql4.'<pre>'.print_r($rez4,1).'</pre>';
if($rez4){
if($rez4[0]>$kolsaves) $kolsaves=$rez4[0];
foreach($rez4 as $key4 => $val4)if($key4){
$val2['saves'][$val4['pos']+1]=$val4;
}
}
}
$val1['itemspolyas'][]=$val2;
}
}else{//может быть сохранения и для первого раздела!
$val2['saves']=array();
//выбираем сохранения в зависимости от $_SESSION['otchgods'][3]['data_s1']-$_SESSION['otchgods'][3]['data_s2']
if(isset($_SESSION['otchgods'][3])){
$sql4 = 'SELECT * FROM '.$TB['saves'].' WHERE id_user='.$_SESSION['user']['id'].' AND id_razdel='.$val['id'].' AND id_items='.$val1['id'].' AND id_itemspolyas=0 AND (data_c BETWEEN '.$_SESSION['otchgods'][3]['data_s1'].' AND '.$_SESSION['otchgods'][3]['data_s2'].') ORDER BY pos';
$rez4 = $DB->QUR_SEL($sql4); //echo '2:'.$sql4.'<pre>'.print_r($rez4,1).'</pre>';
if($rez4){
if($rez4[0]>$kolsaves) $kolsaves=$rez4[0];
foreach($rez4 as $key4 => $val4)if($key4){
$val2['saves'][$val4['pos']+1]=$val4;
}
}
}
$val1['itemspolyas'][]=$val2;
}
$val1['kolsaves']=$kolsaves;
$val1['formuls'] = rejt_raschet($val1['id'],$_SESSION['user']['id']);
$BALLS+=$val1['formuls']['itogo'];
$val['razdel'][]=$val1;
}
//echo '$key1='.$key1.'<br>';
}
$items[]=$val;
//echo '<pre>'.print_r($val,1).'</pre>'; //exit();
//echo '$key='.$key.'<br>';
}
//echo '111';
}
//echo '<pre>'.print_r($items,1).'</pre>';
return array('items'=>$items,'balls'=>$BALLS);
}
//echo '<pre>'.print_r($_SESSION['user'],1).'</pre>';
//if($_SESSION['user']['status']==99){
if($page=='checks'){
include 'rejt_checks.php';
}
if($page=='admin'){
$smarty->assign('page',$page);
$smarty->assign('des',$des);
$maincontent = $smarty->fetch('tpl_rejt_main.html');
}
if($page=='kart'){
$smarty->assign('page',$page);
$smarty->assign('des',$des);
$maincontent = $smarty->fetch('tpl_rejt_kart.html');
}
if($page=='admin1'){//УПРАВЛЕНИЕ ОСНОВНЫМИ РАЗДЕЛАМИ
include 'rejt_admin1.php';
}
if($page=='admin2'){//УПРАВЛЕНИЕ ПОДРАЗДЕЛАМИ
include 'rejt_admin2.php';
}
if($page=='admin3'){//УПРАВЛЕНИЕ полями в ПОДРАЗДЕЛАХ
include 'rejt_admin3.php';
}
if($page=='admin4'){//УПРАВЛЕНИЕ значениями в полях
include 'rejt_admin4.php';
}
if($page=='admin5'){//УПРАВЛЕНИЕ отчетными периодами
include 'rejt_admin5.php';
}
if($page=='xlsx'){
$otchgods=array();//выберем активный отчетный период
unset($_SESSION['otchgods'][3]);
$sql = 'SELECT * FROM '.$TB['otchgods'].' WHERE tip=3 AND status=1';
$rez = $DB->QUR_SEL($sql);
if($rez){
$otchgods = $rez[1];
$otchgods['konec'] = 0; if(time()>$otchgods['data_s2']) $otchgods['konec'] = 1;
$_SESSION['otchgods'][$otchgods['tip']] = $otchgods;//для подсчета баллов
}
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
date_default_timezone_set('Europe/Moscow');
require_once 'inc/PHPExcel.php';
$objPHPExcel = new PHPExcel();
$objPHPExcel->getProperties()->setCreator("Яковлев Александр Леонидович")
->setLastModifiedBy("Яковлев Александр Леонидович")
->setTitle('Рейтинг сотрудника "'.$_SESSION['user']['fio'].'"')
->setSubject("выгрузка данных с сайта")
->setDescription("сводные данные по всем машинам")
->setKeywords("alneo.ru alneo php")
->setCategory("эффективный контракт");
$objPHPExcel->getActiveSheet()->mergeCells('A1:D1');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', 'Рейтинг сотрудника "'.$_SESSION['user']['fio'].'" '.date('H:i d.m.Y'));
$objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);
//$header=array('1','2','3');
//$objPHPExcel->getActiveSheet()->fromArray($header, NULL, 'A2');
/*
$objPHPExcel->getActiveSheet()->getStyle('A2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('B2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('C2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('D2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('E2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('F2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('G2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('H2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('I2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('J2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('K2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('L2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('M2')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('A2')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('B2')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('C2')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('D2')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('E2')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('F2')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('G2')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('H2')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('I2')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('J2')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('K2')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('L2')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('M2')->getFont()->setBold(true);
*/
$rejtuser = rejt_get_useranketa();
$items = $rejtuser['items'];
$BALLS = $rejtuser['balls'];
//echo '<pre>'.print_r($items,1).'</pre>';
$row=3;
foreach($items as $key => $it){
$row = $row+$key;
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A'.$row, $it['name']);
$objPHPExcel->getActiveSheet()->getStyle('A'.$row)->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('A'.$row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
if (count($it['razdel'])){
$row++;
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A'.$row, $it['razdel']['name']);
$objPHPExcel->getActiveSheet()->getStyle('A'.$row)->getFont()->setBold(true);
//$objPHPExcel->getActiveSheet()->getStyle('A'.$row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
foreach($it['razdel'] as $key => $rd){
if (!count($rd['itemspolyas'])){//Блок без допполей
$row++;
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A'.$row, $rd['name']);
//{if $rd.name=='Ф.И.О. преподавателя'}{$user.fio}{/if}
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$row, '--');
}
else{//блоки с допполями
$row++;
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A'.$row, $rd['name']);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('C'.$row, $rd['formuls']['itogo']);
$objPHPExcel->getActiveSheet()->getStyle('A'.$row)->getFont()->setBold(true);
//$objPHPExcel->getActiveSheet()->getStyle('A'.$row)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
if ($rd['kolsaves']){//если есть сохранения
for ($kol=1;$kol<=$rd['kolsaves'];$kol++){
$row++;
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A'.$row, $rd['name'].' №'.$kol);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('C'.$row, $rd['formuls'][$kol-1]);
$objPHPExcel->getActiveSheet()->getStyle('C'.$row)->getFont()->setBold(true);
foreach($rd['itemspolyas'] as $key2 => $ip){
$row++;
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A'.$row, $ip['name']);
if($ip['saves'][$kol]['value']!=''){
if(is_numeric($ip['saves'][$kol]['value'])){
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$row, $ip['saves'][$kol]['value']);
}else{
$urlb1 = false;
$urlb2 = false;
if (strpos($ip['saves'][$kol]['value'], 'upload/rejt') !== false) $urlb1 = true;
if (strpos($ip['saves'][$kol]['value'], 'http') !== false) $urlb2 = true;
if($urlb1){
$url = 'http://eios.mkgtu.ru'.$ip['saves'][$kol]['value'];
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$row, '=Hyperlink("'.$url.'","Скачать")');
}else{
if($urlb2){//внешние ссылки
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$row, $ip['saves'][$kol]['value']);
}else{//просто текст
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$row, $ip['saves'][$kol]['value']);
}
}
}
}
}
}
}
}
}
}
}
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setAutoSize(true);
//$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->setTitle('Рейтинг');
$objPHPExcel->setActiveSheetIndex(0);
$file = 'Рейтинг_'.$_SESSION['user']['fio'].'';
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="'.$file.'.xlsx"');
header('Cache-Control: max-age=0');
header('Cache-Control: max-age=1');
header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified
header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1
header ('Pragma: public'); // HTTP/1.0
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
//echo '<pre>'.print_r($objWriter,1).'</pre>';
exit;
}
if($page=='main'){
include 'rejt_anketa.php';
}
if($page=='maineu'){
//echo '<pre>'.print_r($_GET,1).'</pre>';
$_SESSION['rejteu'] = (int)$_GET['des'];
include 'rejt_anketa.php';
}
//}else{$maincontent = 'в разработке';}