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;
|
|||
|
}
|
|||
|
}
|