EIOS/rabprog/inc/class_SOFTWARE.php

129 lines
5.8 KiB
PHP
Raw Normal View History

2023-12-28 15:39:22 +03:00
<?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;
}
}