EIOS/rabprog/inc/class_SOFTWARE.php

129 lines
5.8 KiB
PHP
Raw Permalink 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/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;
}
}