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