Files
crm.clientright.ru/modules/OnlyOfficeTemplates/config.php
2026-02-16 09:27:19 +03:00

92 lines
3.9 KiB
PHP

<?php
/**
* OnlyOfficeTemplates module configuration.
* Reads from environment (.env) or optional external config (crm_extensions/file_storage/config.php).
* Portable: no hardcoded paths; set S3_*, ONLYOFFICE_* in .env or your config.
*/
$OnlyOfficeTemplatesConfig = null;
/**
* Read env var: getenv() then $_ENV then EnvLoader::get() (EnvLoader does not use putenv).
*/
function OnlyOfficeTemplates_env($key, $default = '') {
$v = getenv($key);
if ($v !== false && $v !== '') {
return $v;
}
$v = $_ENV[$key] ?? null;
if ($v !== null && $v !== '') {
return $v;
}
if (class_exists('EnvLoader')) {
$v = EnvLoader::get($key, $default);
return $v !== null ? $v : $default;
}
return $default;
}
function OnlyOfficeTemplates_getConfig() {
global $OnlyOfficeTemplatesConfig;
if ($OnlyOfficeTemplatesConfig !== null) {
return $OnlyOfficeTemplatesConfig;
}
$baseDir = dirname(__DIR__);
$rootDir = dirname(dirname($baseDir));
// Load .env (EnvLoader uses $_ENV, not getenv)
if (file_exists($rootDir . '/crm_extensions/shared/EnvLoader.php')) {
require_once $rootDir . '/crm_extensions/shared/EnvLoader.php';
$envPath = $rootDir . '/crm_extensions/.env';
if (file_exists($envPath)) {
EnvLoader::load($envPath);
}
}
// 1) Try external config (crm_extensions) if present
$extConfigPath = $rootDir . '/crm_extensions/file_storage/config.php';
if (file_exists($extConfigPath)) {
try {
$ext = require $extConfigPath;
if (is_array($ext) && isset($ext['s3'])) {
$s3 = $ext['s3'];
$bucket = $s3['bucket'] ?? $ext['bucket'] ?? $ext['s3_bucket'] ?? OnlyOfficeTemplates_env('S3_BUCKET', '');
$OnlyOfficeTemplatesConfig = [
's3' => $s3,
's3_prefix' => OnlyOfficeTemplates_env('OOT_S3_PREFIX', 'crm2/OnlyOfficeTemplates'),
'onlyoffice_convert_url' => OnlyOfficeTemplates_env('OOT_ONLYOFFICE_CONVERT_URL') ?: OnlyOfficeTemplates_env('ONLYOFFICE_CONVERT_URL', ''),
'onlyoffice_document_server' => OnlyOfficeTemplates_env('OOT_ONLYOFFICE_DOCUMENT_SERVER') ?: OnlyOfficeTemplates_env('ONLYOFFICE_DOCUMENT_SERVER', ''),
'documents_s3_prefix' => OnlyOfficeTemplates_env('OOT_DOCUMENTS_S3_PREFIX', 'crm2/CRM_Active_Files/Documents'),
's3_bucket' => $bucket,
'document_secret' => OnlyOfficeTemplates_env('OOT_DOCUMENT_SECRET', ''),
];
return $OnlyOfficeTemplatesConfig;
}
} catch (Exception $e) {
// fallback
}
}
// 2) Build from environment
$OnlyOfficeTemplatesConfig = [
's3' => [
'key' => OnlyOfficeTemplates_env('S3_ACCESS_KEY', ''),
'secret' => OnlyOfficeTemplates_env('S3_SECRET_KEY', ''),
'endpoint' => OnlyOfficeTemplates_env('S3_ENDPOINT', ''),
'bucket' => OnlyOfficeTemplates_env('S3_BUCKET', ''),
'region' => OnlyOfficeTemplates_env('S3_REGION', 'ru-1'),
'use_path_style_endpoint' => true,
'version' => 'latest',
],
's3_prefix' => OnlyOfficeTemplates_env('OOT_S3_PREFIX', 'crm2/OnlyOfficeTemplates'),
'onlyoffice_convert_url' => OnlyOfficeTemplates_env('OOT_ONLYOFFICE_CONVERT_URL') ?: OnlyOfficeTemplates_env('ONLYOFFICE_CONVERT_URL', ''),
'onlyoffice_document_server' => OnlyOfficeTemplates_env('OOT_ONLYOFFICE_DOCUMENT_SERVER') ?: OnlyOfficeTemplates_env('ONLYOFFICE_DOCUMENT_SERVER', ''),
'documents_s3_prefix' => OnlyOfficeTemplates_env('OOT_DOCUMENTS_S3_PREFIX', 'crm2/CRM_Active_Files/Documents'),
's3_bucket' => OnlyOfficeTemplates_env('S3_BUCKET', ''),
'document_secret' => OnlyOfficeTemplates_env('OOT_DOCUMENT_SECRET', ''),
];
return $OnlyOfficeTemplatesConfig;
}