public function createProductsFile($data) { $result = ['status' => '', 'message' => '']; $allowFormats = ['json', 'pdf', 'xml']; if (!in_array($data['format'], $allowFormats)) { $result['status'] = 'error'; $result['messages'] = 'Формат данных указан неверно!'; } else { $format = $data['format']; } $productsModel = new Model_Products(); // Условия выбора товаров $conditions = []; if (!$data['category'] == 0) { $categories = $productsModel->getCatalogs(); foreach ($categories as $category) { $allowCategories[] = $category->id; } if (in_array($data['category'], $allowCategories)) { $conditions['id_category'] = $data['category']; } else { $result['status'] = 'error'; $result['message'] = 'Категория указана неверно!'; } } if (!$data['producer'] == 0) { $producers = $productsModel->getProducers(); foreach ($producers as $producer) { $allowProducers[] = $producer->id; } if (in_array($data['producer'], $allowProducers)) { $conditions['id_producer'] = $data['producer']; } else { $result['status'] = 'error'; $result['message'] = 'Производитель указан неверно!'; } } if (isset($data['count']) && intval($data['count']) > 0) { $data = $productsModel->getDownloadData($conditions, $data['count']); } else { $data = $productsModel->getDownloadData($conditions); } if ($data) { // Путь к файлу с "уникальным" именем $filepath = 'files/' . (new DateTime())->format("Y-m-d_H-i-s") . '.' . $format; switch ($format) { case 'pdf': //$this->createPdf($data, $keys_array, $filepath); $result['status'] = 'error'; $result['message'] = 'Эта функция еще не реализована=('; return $result; break; case 'json': $this->createJson($data, $filepath); break; case 'xml': $this->createXml($data, $filepath); break; } if (file_exists($filepath)) { $result['status'] = 'success'; $result['filepath'] = $filepath; } else { $result['status'] = 'error'; $result['message'] = 'Что-то пошло не так=('; $result['detail_error'] = 'Не удалось создать файл'; } } else { $result['status'] = 'error'; $result['message'] = 'Данных не найдено или произошла какая-то ошибка!'; } return $result; }