129 lines
5.8 KiB
PHP
129 lines
5.8 KiB
PHP
<?php
|
||
/*
|
||
https://mkgtu.ru/art/126378/
|
||
https://inal.mkgtu.ru/universitet/onlayn-servisy/reestr-programmnogo-obespecheniya.php*}
|
||
|
||
https://eac-reestr.digital.gov.ru/reestr/ РЕЕСТР ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ евразия
|
||
https://reestr.digital.gov.ru/reestr/ РЕЕСТР ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ Россия
|
||
https://eac-reestr.digital.gov.ru/reestr/?export=list
|
||
TODO https://alternativeto.net/platform/windows/?license=free
|
||
* */
|
||
class class_SOFTWARE{
|
||
var $dir = 'upload/software/';
|
||
var $url_gov = 'https://reestr.digital.gov.ru/reestr/?export=list';
|
||
private $DB=null;
|
||
private $TSoftware='';
|
||
function __construct(){
|
||
GLOBAL $DB,$ST;
|
||
$this->DB = $DB;
|
||
$this->TSoftware = $ST['dbpf'].'_software';
|
||
}
|
||
|
||
/**
|
||
* Получаем ПО от кафедр
|
||
*/
|
||
function software(){
|
||
$out = array();
|
||
$sql = 'SELECT * FROM '.$this->TSoftware.' ORDER BY name';
|
||
$rez = $this->DB->QUR_SEL($sql);
|
||
if(!$rez['err']&&$rez['kol']){
|
||
$out = $rez['rez'];
|
||
}
|
||
return $out;
|
||
}
|
||
/**
|
||
* Получаем Российское ПО
|
||
* @return array
|
||
*/
|
||
function softwareGOV(){
|
||
$out = $this->downloadXLS();
|
||
return $out;
|
||
}
|
||
|
||
/**
|
||
* Загрузка файла из источника
|
||
* @return array
|
||
*/
|
||
function downloadXLS(){
|
||
$out = array();
|
||
$url = 'https://eac-reestr.digital.gov.ru/reestr/?export=list';//Евразия
|
||
$file = $this->dir.'reestr.xlsx';
|
||
$file_json = $this->dir.'reestr.json';
|
||
if(file_exists($file_json)) {//проверим есть ли уже распарсенный файл
|
||
$out = json_decode(file_get_contents($file_json),1);
|
||
}else{
|
||
if (!file_exists($file)) {//проверим есть ли уже скачанный файл
|
||
if (copy($this->url_gov, $file)) {
|
||
$out = $this->parseXLS($file);
|
||
if (count($out['items'])) {
|
||
file_put_contents($file_json, json_encode($out));
|
||
}
|
||
}
|
||
} else {
|
||
$out = $this->parseXLS($file);
|
||
file_put_contents($file_json, json_encode($out));
|
||
}
|
||
}
|
||
return $out;
|
||
}
|
||
|
||
/**
|
||
* Разбор файла
|
||
* @param $file
|
||
* @return array
|
||
* @throws PHPExcel_Exception
|
||
* @throws PHPExcel_Reader_Exception
|
||
*/
|
||
function parseXLS($file){
|
||
$out = array();
|
||
require_once 'inc/PHPExcel.php';
|
||
$excel = PHPExcel_IOFactory::load($file);
|
||
$excel->setActiveSheetIndex(0);
|
||
$worksheet = $excel->getSheetByName('Sheet1');
|
||
$i=0; $title=array(); $dann=array();
|
||
/*[title] => Array(
|
||
[0] => Регистрационный номер
|
||
[1] => Наименование ПО
|
||
[2] => Альтернативные названия ПО
|
||
[3] => Класс ПО
|
||
[4] => Код продукции
|
||
[5] => Дата внесения
|
||
[6] => Дата исключения
|
||
[7] => Сайт с документацией по установке и эксплуатации ПО
|
||
[8] => Наличие у ПО функционала поддержки работы пользователей с ограничениями по зрению
|
||
[9] => Наличие у ПО функционала поддержки работы пользователей с ограничениями по слуху
|
||
[10] => Соответствие ПП №325 от 23.03.2017
|
||
[11] => Наименование (ФИО) правообладателя
|
||
[12] => Сокращенное наименование (ФИО) правообладателя
|
||
[13] => Статус правообладателя
|
||
[14] => Индентификационный номер (ИНН)
|
||
[15] => Основной государственный регистрационный номер (ОГРН)
|
||
[16] => Сведения об основаниях возникновения у правообладателя исключительного права на ПО
|
||
[17] => Номер решения уполномоченного органа о включении сведений о ПО в реестр
|
||
[18] => Дата решения уполномоченного органа о включении сведений о ПО в реестр
|
||
[19] => Ссылка на решения уполномоченного органа о включении сведений о ПО в реестр
|
||
[20] => Номер заявления о включении
|
||
[21] => Дата регистрации заявления о включении
|
||
)
|
||
* */
|
||
for ($row = 1; $row <= $worksheet->getHighestRow(); $row++) {
|
||
$tmp=array();
|
||
for ($col = 0; $col < PHPExcel_Cell::columnIndexFromString($worksheet->getHighestColumn()); $col++) {
|
||
$cell = $worksheet->getCellByColumnAndRow($col, $row);
|
||
if ($cell->getValue() instanceof PHPExcel_RichText){
|
||
$value = $cell->getValue()->getPlainText();
|
||
}else{
|
||
$value = $cell->getValue();
|
||
}
|
||
if($col==1||$col==7||$col==11)$tmp[$col] = $value;
|
||
//if($i>=8) break(2);
|
||
}
|
||
$i++;
|
||
if($row==5) $title=$tmp;//сохраним шапку
|
||
if($row>5) $dann[$row] = $tmp; //сохраним данные
|
||
}
|
||
$out['title'] = $title;
|
||
$out['items'] = $dann;
|
||
return $out;
|
||
}
|
||
} |