✨ Features: - Migrated ALL files to new S3 structure (Projects, Contacts, Accounts, HelpDesk, Invoice, etc.) - Added Nextcloud folder buttons to ALL modules - Fixed Nextcloud editor integration - WebSocket server for real-time updates - Redis Pub/Sub integration - File path manager for organized storage - Redis caching for performance (Functions.php) 📁 New Structure: Documents/Project/ProjectName_ID/file_docID.ext Documents/Contacts/FirstName_LastName_ID/file_docID.ext Documents/Accounts/AccountName_ID/file_docID.ext 🔧 Technical: - FilePathManager for standardized paths - S3StorageService integration - WebSocket server (Node.js + Docker) - Redis cache for getBasicModuleInfo() - Predis library for Redis connectivity 📝 Scripts: - Migration scripts for all modules - Test pages for WebSocket/SSE/Polling - Documentation (MIGRATION_*.md, REDIS_*.md) 🎯 Result: 15,000+ files migrated successfully!
174 lines
5.7 KiB
PHP
174 lines
5.7 KiB
PHP
<?php
|
|
/**
|
|
* ============================================
|
|
* CONFIG.PHP - Загрузка конфигурации из .env
|
|
* ============================================
|
|
*
|
|
* Загружает переменные окружения из .env файла
|
|
* Использование: require_once 'config.php';
|
|
*
|
|
* Создан: 23.10.2025
|
|
*/
|
|
|
|
/**
|
|
* Загрузка переменных из .env файла
|
|
*
|
|
* @param string $path Путь к .env файлу
|
|
* @return void
|
|
*/
|
|
function loadEnv($path) {
|
|
if (!file_exists($path)) {
|
|
die('ERROR: .env file not found at: ' . $path);
|
|
}
|
|
|
|
$lines = file($path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
|
|
|
|
foreach ($lines as $line) {
|
|
// Пропускаем комментарии
|
|
if (strpos(trim($line), '#') === 0) {
|
|
continue;
|
|
}
|
|
|
|
// Разбираем строку KEY=VALUE
|
|
if (strpos($line, '=') !== false) {
|
|
list($key, $value) = explode('=', $line, 2);
|
|
$key = trim($key);
|
|
$value = trim($value);
|
|
|
|
// Удаляем кавычки если есть
|
|
$value = trim($value, '"\'');
|
|
|
|
// Устанавливаем переменную окружения
|
|
if (!array_key_exists($key, $_ENV)) {
|
|
$_ENV[$key] = $value;
|
|
putenv("$key=$value");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Загружаем .env
|
|
loadEnv(__DIR__ . '/.env');
|
|
|
|
/**
|
|
* Получить значение переменной окружения
|
|
*
|
|
* @param string $key Имя переменной
|
|
* @param mixed $default Значение по умолчанию
|
|
* @return mixed Значение переменной или default
|
|
*/
|
|
function env($key, $default = null) {
|
|
if (isset($_ENV[$key])) {
|
|
$value = $_ENV[$key];
|
|
|
|
// Преобразуем строковые boolean в bool
|
|
if ($value === 'true') return true;
|
|
if ($value === 'false') return false;
|
|
if ($value === 'null') return null;
|
|
|
|
return $value;
|
|
}
|
|
|
|
return $default;
|
|
}
|
|
|
|
// ============================================
|
|
// КОНСТАНТЫ ДЛЯ УДОБНОГО ДОСТУПА
|
|
// ============================================
|
|
|
|
// База данных
|
|
define('DB_HOST', env('DB_HOST', 'localhost'));
|
|
define('DB_NAME', env('DB_NAME'));
|
|
define('DB_USER', env('DB_USER'));
|
|
define('DB_PASS', env('DB_PASSWORD'));
|
|
|
|
// SMS
|
|
define('SMS_API_URL', env('SMS_API_URL'));
|
|
define('SMS_LOGIN', env('SMS_LOGIN'));
|
|
define('SMS_PASSWORD', env('SMS_PASSWORD'));
|
|
define('SMS_TOKEN', env('SMS_TOKEN'));
|
|
define('SMS_SENDER', env('SMS_SENDER'));
|
|
|
|
// Email
|
|
define('MAIL_HOST', env('MAIL_HOST'));
|
|
define('MAIL_PORT', env('MAIL_PORT', 465));
|
|
define('MAIL_USERNAME', env('MAIL_USERNAME'));
|
|
define('MAIL_PASSWORD', env('MAIL_PASSWORD'));
|
|
define('MAIL_FROM_EMAIL', env('MAIL_FROM_EMAIL'));
|
|
define('MAIL_FROM_NAME', env('MAIL_FROM_NAME'));
|
|
define('MAIL_TO_1', env('MAIL_TO_1'));
|
|
define('MAIL_TO_2', env('MAIL_TO_2'));
|
|
|
|
// CRM
|
|
define('CRM_WEBFORM_URL', env('CRM_WEBFORM_URL'));
|
|
define('CRM_PUBLIC_ID', env('CRM_PUBLIC_ID'));
|
|
define('CRM_SESSION_TOKEN', env('CRM_SESSION_TOKEN'));
|
|
|
|
// Внешние API
|
|
define('DADATA_TOKEN', env('DADATA_TOKEN'));
|
|
define('DADATA_API_URL', env('DADATA_API_URL'));
|
|
define('IP_API_URL', env('IP_API_URL'));
|
|
|
|
// Контрагент
|
|
define('CONTRACTOR_NAME', env('CONTRACTOR_NAME'));
|
|
define('CONTRACTOR_INN', env('CONTRACTOR_INN'));
|
|
define('CONTRACTOR_OGRN', env('CONTRACTOR_OGRN'));
|
|
define('CONTRACTOR_ADDRESS', env('CONTRACTOR_ADDRESS'));
|
|
define('CONTRACTOR_EMAIL', env('CONTRACTOR_EMAIL'));
|
|
define('CONTRACTOR_PHONE', env('CONTRACTOR_PHONE'));
|
|
define('CONTRACTOR_WEBSITE', env('CONTRACTOR_WEBSITE'));
|
|
|
|
// Настройки приложения
|
|
define('DEBUG_MODE_PHP', env('DEBUG_MODE', false));
|
|
define('APP_ENV', env('APP_ENV', 'production'));
|
|
define('SUCCESS_REDIRECT_URL', env('SUCCESS_REDIRECT_URL'));
|
|
|
|
// Безопасность
|
|
define('RATE_LIMIT_SMS_MAX', env('RATE_LIMIT_SMS_MAX', 3));
|
|
define('RATE_LIMIT_SMS_WINDOW', env('RATE_LIMIT_SMS_WINDOW', 300));
|
|
define('RATE_LIMIT_FORM_MAX', env('RATE_LIMIT_FORM_MAX', 5));
|
|
define('RATE_LIMIT_FORM_WINDOW', env('RATE_LIMIT_FORM_WINDOW', 3600));
|
|
|
|
// Redis
|
|
define('REDIS_HOST', env('REDIS_HOST', '127.0.0.1'));
|
|
define('REDIS_PORT', env('REDIS_PORT', 6379));
|
|
define('REDIS_PASSWORD', env('REDIS_PASSWORD'));
|
|
define('REDIS_DATABASE', env('REDIS_DATABASE', 0));
|
|
define('REDIS_PREFIX', env('REDIS_PREFIX', 'erv:'));
|
|
|
|
// RabbitMQ
|
|
define('RABBITMQ_HOST', env('RABBITMQ_HOST'));
|
|
define('RABBITMQ_PORT', env('RABBITMQ_PORT', 5672));
|
|
define('RABBITMQ_USER', env('RABBITMQ_USER', 'guest'));
|
|
define('RABBITMQ_PASSWORD', env('RABBITMQ_PASSWORD'));
|
|
define('RABBITMQ_VHOST', env('RABBITMQ_VHOST', '/'));
|
|
|
|
// Драйверы
|
|
define('CACHE_DRIVER', env('CACHE_DRIVER', 'file'));
|
|
define('QUEUE_DRIVER', env('QUEUE_DRIVER', 'sync'));
|
|
define('SESSION_DRIVER', env('SESSION_DRIVER', 'file'));
|
|
|
|
// Очереди
|
|
define('QUEUE_OCR_DOCUMENTS', env('QUEUE_OCR_DOCUMENTS', 'erv_ocr_documents'));
|
|
define('QUEUE_CHECK_FLIGHTS', env('QUEUE_CHECK_FLIGHTS', 'erv_check_flights'));
|
|
define('QUEUE_SEND_EMAILS', env('QUEUE_SEND_EMAILS', 'erv_send_emails'));
|
|
define('QUEUE_SYNC_CRM', env('QUEUE_SYNC_CRM', 'erv_sync_crm'));
|
|
|
|
// ============================================
|
|
// ПРОВЕРКА КРИТИЧНЫХ ПЕРЕМЕННЫХ
|
|
// ============================================
|
|
$required_vars = [
|
|
'DB_HOST', 'DB_NAME', 'DB_USER', 'DB_PASS',
|
|
'SMS_TOKEN', 'MAIL_USERNAME', 'MAIL_PASSWORD'
|
|
];
|
|
|
|
foreach ($required_vars as $var) {
|
|
if (empty(constant($var))) {
|
|
die("ERROR: Required environment variable '{$var}' is not set in .env file");
|
|
}
|
|
}
|
|
|
|
// Всё загружено успешно!
|
|
?>
|
|
|