EIOS/rabprog/inc/class_MATERIAL.php

231 lines
17 KiB
PHP
Raw Normal View History

2023-12-28 15:39:22 +03:00
<?php
/*
//https://mkgtu.ru//sveden/objects/cabinets/09.01.03-master-po-obrabotke-cifrovoy-informacii-filial_op0245.html - тут информация
<tr>
<th></th>
<th>Наименование дисциплины (модуля) в соответствии с учебным планом</th>
<th>Наименование специальных помещений и помещений для самостоятельной работы</th>
<th>Оснащенность специальных помещений и помещений для самостоятельной работы</th>
<th>Адрес (местоположение)</th>
</tr>
<tr itemprop="purposeCab">
<td >1<span itemprop="vikon_eduCode" class="hide"></span><span itemprop="vikon_eduName" class="hide">Мастер по обработке цифровой информации (филиал)</span></td>
<td ><span itemprop="vikon_identityRow">ОП.01 Основы информационных технологий</span></td>
<td itemprop="nameCab">Кабинет информационных технологий в профессиональной деятельности / Лаборатория информационных технологий в профессиональной деятельности / Лаборатория информационных технологий / Лаборатория технологии разработки баз данных / Лаборатория «Учебная бухгалтерия» (Ф_колледж-В-202)</td>
<td itemprop="osnCab">
<div class="showpart-title-modal" style="display: none;">Оснащенность: Основы информационных технологий / Кабинет информационных технологий в профессиональной деятельности / Лаборатория информационных технологий в профессиональной деятельности / Лаборатория информационных технологий / Лаборатория технологии разработки баз данных / Лаборатория «Учебная бухгалтерия» (Ф_колледж-В-202)</div><div class="showpart-container-modal" style="display: none;"><p style="text-align:justify;">Посадочные места по количеству обучающихся, рабочее место преподавателя, шкаф для хранения раздаточного дидактического материала и др.; персональные компьютеры обучающихся 10 шт.; персональный компьютер преподавателя; принтер; сканер; переносное мультимедийное оборудование. ПО на компьютерах: ОС Linux, Open Office, Google Chrome, Adobe Reader, Kaspersky Anti-virus, VLC Media Player, 1редприятие 8.3, 7-zip, K-Lite Codec Pack, Codec Guide, Open Broadcaster Software 23.2.1, Inkscape, GIMP, Blender, Autodesk AutoCAD, Autodesk 3DMAX, Autodesk MAYA, MySQL, Scratch, Macromedia Flash MX, Visual Basic, Unity3D; виртуальные лаборатории «Детали машин» - 5 шт., «Техническое обслуживание автомобилей» - 5 шт.; «Электротехника» - 5 шт.; программный лабораторный комплекс «Безопасность жизнедеятельности и охрана труда». Рабочее место бухгалтера, учебно-информационные стенды по основам бухгалтерского учета; должностные инструкции работников бухгалтерии; задания для учебной практики, дополнительных занятий, деловых игр по бухгалтерскому учету.</p></div><button type="button" class="btn btn-default showpart-btn-modal">Показать</button> </td>
<td itemprop="addressCab">385140, Республика Адыгея, Тахтамукайский район, пгт. Яблоновский, ул. Связи, дом 11, Учебный корпус колледжа</td>
</tr>
*/
class class_MATERIAL{
var $url = 'https://mkgtu.ru/sveden/objects/index.html';
var $dir_cahce = 'upload/materials/';
private $DB=null;
private $TMaterial='';
function __construct(){
GLOBAL $DB,$ST;
$this->DB = $DB;
$this->TMaterial = $ST['dbpf'].'_fshp_material';
$this->createTable();
}
/**
* Получение данных по матбазы
* @param $data - code,nameOP(может быть пустым),namedisc(может быть пустым)
* @return array
*/
function GetItems($data){
$out = array('err'=>1,'msg'=>'не нашли','items'=>array());
$sql = 'SELECT data_c,code,nameOP,namedisc,nameSpecPom,osnachSpecPom,descrip,address FROM '.$this->TMaterial.' WHERE code="'.$data['code'].'"';
if(isset($data['nameOP'])&&$data['nameOP']!='') $sql .= ' AND nameOP="'.$data['nameOP'].'"';
if(isset($data['namedisc'])&&$data['namedisc']!='') $sql .= ' AND namedisc="'.$data['namedisc'].'"';
$sql .= ' ORDER BY namedisc';
$rez = $this->DB->QUR_SEL($sql);
//echo $sql.'<pre>'.print_r($rez,1).'</pre>';exit();
if(!$rez['err']&&$rez['kol']){
$out['err']=0;
$out['msg']='Есть записи';
foreach ($rez['rez'] as $key => $val) {
$val['nameSpecPom'] = json_decode($val['nameSpecPom'],1);
$val['osnachSpecPom'] = json_decode($val['osnachSpecPom'],1);
$val['address'] = json_decode($val['address'],1);
$out['items'][] = $val;
}
}
return $out;
}
/**
* создание таблицы
*/
function createTable(){
$this->DB->QUR('CREATE TABLE IF NOT EXISTS `'.$this->TMaterial.'` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`data_c` int(11) NOT NULL,
`code` varchar(255) NOT NULL,
`nameOP` varchar(255) NOT NULL,
`url` text NOT NULL,
`namedisc` varchar(255) NOT NULL,
`nameSpecPom` text NOT NULL,
`osnachSpecPom` text NOT NULL,
`descrip` text NOT NULL,
`address` text NOT NULL,
primary key (id)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;');
}
/**
* Получение записи в таблице по данным
* @param $data
* @return array
*/
function TableGet($data){
$out = array('err'=>1,'msg'=>'Нет записи');
$sql = 'SELECT * FROM '.$this->TMaterial.' WHERE code="'.$data['code'].'" AND nameOP="'.$data['nameOP'].'" AND url="'.$data['url'].'"';
$rez = $this->DB->QUR_SEL($sql);
if(!$rez['err']&&$rez['kol']){
$out['err']=0;
$out['msg']='Есть запись';
$out['rez']=$rez['rez'][0];
}
return $out;
}
/**
* Вставка записи в таблицу
* @param $item
* @param $data
* @return array
*/
function TableInsert($item,$data){
$out = array('err'=>1,'msg'=>'Ошибка добавления');
$item['code'] = $this->DB->rescape($item['code']);
$item['nameOP'] = $this->DB->rescape($item['nameOP']);
$item['url'] = $this->DB->rescape($item['url']);
$data['namedisc'] = $this->DB->rescape($data['namedisc']);
$data['nameSpecPom'] = $this->DB->rescape(json_encode($data['nameSpecPom']));
$data['osnachSpecPom'] = $this->DB->rescape(json_encode($data['osnachSpecPom']));
$data['descrip'] = $this->DB->rescape($data['descrip']);
$data['address'] = $this->DB->rescape(json_encode($data['address']));
$sql = 'INSERT INTO '.$this->TMaterial.' VALUES (0,'.time().',"'.$item['code'].'","'.$item['nameOP'].'","'.$item['url'].'","'.$data['namedisc'].'","'.$data['nameSpecPom'].'","'.$data['osnachSpecPom'].'","'.$data['descrip'].'","'.$data['address'].'")';
$rez = $this->DB->QUR($sql);
if(!$rez['err']&&$rez['kol']){
$out['err']=0;
$out['msg']='Добавили';
$out['id']=$this->DB->lastinsertID();
}
return $out;
}
/**
* Парсим данные с DBНики
* @return array
*/
function Parse(){
$items = $this->Parse_main();
$out['datas'] = $this->Items_each($items);
return $out;
}
/**
* Перебираем каждый элемент полученный с главной
* @param $items
* @return array
*/
function Items_each($items){
$out = array('err'=>1,'msg'=>'Пустые ссылки');
if(count($items)){
$out = array('err'=>0,'msg'=>'Есть ссылки');
foreach($items as $k => $item) {
//[0]=>Array([code]=>09.01.03 [nameOP]=>Мастер по обработке цифровой информации (филиал) [url]=>objects/cabinets/09.01.03-mafilial_op0245.html
$check = $this->TableGet($item);
if($check['err']==1) {//Записи нет, надо добавлять!
$datas = $this->Parse_url($item);
foreach($datas as $k1 => $data) {
$this->TableInsert($item, $data);
$out[] = array_merge($item, $data);
}
}
}
}
return $out;
}
/**
* Парсим страницу одной записи
* @param $data
* @return array|mixed
*/
function Parse_url($data){
$out = array();
$html = file_get_contents($data['url']);//https://mkgtu.ru//sveden/objects/cabinets/09.01.03-master-po-obrabotke-cifrovoy-informacii-filial_op0245.html
$pattern = '<tr itemprop="purposeCab">.*<td >.*<span itemprop="vikon_eduName" class="hide">(.*)</span>.*</td>.*<td >.*<span itemprop="vikon_identityRow">(.*)</span>.*</td>.*<td itemprop="nameCab">(.*)</td>.*<td.*itemprop="osnCab">.*<div class="showpart-title-modal" style="display: none;">(.*)</div><div class="showpart-container-modal" style="display: none;">(.*)</div><button type="button" class="btn btn-default showpart-btn-modal">Показать</button>.*</td>.*<td itemprop="addressCab">(.*)</td>.*</tr>';
preg_match_all('|' . $pattern . '|isU', $html, $arr, PREG_SET_ORDER);
$items = array();
if (count($arr)) {
foreach ($arr as $k => $val) {
unset($val[0]);
$nameOP = trim($val[1]);
$namedisc = trim($val[2]); //Наименование дисциплины (модуля) в соответствии с учебным планом
$nameSpecPom = explode('/',trim($val[3])); //Наименование специальных помещений и помещений для самостоятельной работы
$nameSpecPom = array_map(function($item) { return trim($item); }, $nameSpecPom);
$osnachSpecPom = explode('/',trim(str_replace('Оснащенность: ','',$val[4]))); //Оснащенность специальных помещений
$osnachSpecPom = array_map(function($item) { return trim($item); }, $osnachSpecPom);
$descrip = trim(strip_tags($val[5])); //Описание
$address = explode('/',trim($val[6])); //Адрес (местоположение)
$address = array_map(function($item) { return trim($item); }, $address);
$items[] = array('nameOP' => $nameOP, 'namedisc' => $namedisc, 'nameSpecPom' => $nameSpecPom,'osnachSpecPom' => $osnachSpecPom,'descrip' => $descrip,'address' => $address);
}
}
$out = $items;
/*
[0] => Array(
[nameOP] => Мастер по обработке цифровой информации (филиал)
[namedisc] => ОП.01 Основы информационных технологий
[nameSpecPom] => Array(
[0] => Кабинет информационных технологий в профессиональной деятельности
[1] => Лаборатория информационных технологий в профессиональной деятельности
[2] => Лаборатория информационных технологий
[3] => Лаборатория технологии разработки баз данных
[4] => Лаборатория «Учебная бухгалтерия» (Ф_колледж-В-202)
)
[osnachSpecPom] => Array(
[0] => Основы информационных технологий
[1] => Кабинет информационных технологий в профессиональной деятельности
[2] => Лаборатория информационных технологий в профессиональной деятельности
[3] => Лаборатория информационных технологий
[4] => Лаборатория технологии разработки баз данных
[5] => Лаборатория «Учебная бухгалтерия» (Ф_колледж-В-202)
)
[descrip] => Посадочные места по количеству обучающихся, рабочее место преподавателя, шкаф для хранения раздаточного дидактического материала и др.; персональные компьютеры обучающихся 10 шт.; персональный компьютер преподавателя; принтер; сканер; переносное мультимедийное оборудование. ПО на компьютерах: ОС Linux, Open Office, Google Chrome, Adobe Reader, Kaspersky Anti-virus, VLC Media Player, 1редприятие 8.3, 7-zip, K-Lite Codec Pack, Codec Guide, Open Broadcaster Software 23.2.1, Inkscape, GIMP, Blender, Autodesk AutoCAD, Autodesk 3DMAX, Autodesk MAYA, MySQL, Scratch, Macromedia Flash MX, Visual Basic, Unity3D; виртуальные лаборатории «Детали машин» - 5 шт., «Техническое обслуживание автомобилей» - 5 шт.; «Электротехника» - 5 шт.; программный лабораторный комплекс «Безопасность жизнедеятельности и охрана труда». Рабочее место бухгалтера, учебно-информационные стенды по основам бухгалтерского учета; должностные инструкции работников бухгалтерии; задания для учебной практики, дополнительных занятий, деловых игр по бухгалтерскому учету.
[address] => 385140, Республика Адыгея, Тахтамукайский район, пгт. Яблоновский, ул. Связи, дом 11, Учебный корпус колледжа
)
* */
return $out;
}
/**
* Парсим главную страницу
* @return array
*/
function Parse_main(){
$html = file_get_contents($this->url);//https://mkgtu.ru/sveden/objects/index.html - тут все ссылки на файлы
$pattern = '<tr>.*<td>.*</td>.*<td>(.*)</td>.*<td>(.*)</td>.*<td>.*<a href="(.*)" itemprop="addRef">Посмотреть</a>.*</td>.*</tr>';
preg_match_all('|'.$pattern.'|isU',$html,$arr,PREG_SET_ORDER);
$items = array();
if(count($arr)){
foreach($arr as $k => $val){
unset($val[0]);
$code = trim($val[1]); //Код направления подготовки
$nameOP = trim($val[2]); //Наименование образовательной программы
$url = 'https://mkgtu.ru/'.trim($val[3]); //Информация о наличии оборудованных учебных кабинетов, объектов, для проведения практических занятий
$items[] = array('code'=>$code,'nameOP'=>$nameOP,'url'=>$url,);
}
}
//[0]=>Array([code]=>09.01.03 [nameOP]=>Мастер по обработке цифровой информации (филиал) [url]=>https://mkgtu.ru//sveden/objects/cabinets/09.01.03-master-po-obrabotke-cifrovoy-informacii-filial_op0245.html
return $items;
}
}