EIOS/rabprog/inc/class_MATERIAL.php

231 lines
17 KiB
PHP
Raw 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
/*
//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, 1CПредприятие 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, 1CПредприятие 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;
}
}