diff --git a/upload/devcraft/src/modules/DleApi/Pages/AccessSyncPage.php b/upload/devcraft/src/modules/DleApi/Pages/AccessSyncPage.php index f5703c29..6a17213c 100644 --- a/upload/devcraft/src/modules/DleApi/Pages/AccessSyncPage.php +++ b/upload/devcraft/src/modules/DleApi/Pages/AccessSyncPage.php @@ -10,6 +10,7 @@ use DevCraft\Modules\DleApi\Models\ApiAccessLevelGroup; use DevCraft\Modules\DleApi\Repositories\ApiAccessLevelGroupRepository; use DevCraft\Modules\DleApi\Repositories\ApiAccessLevelRepository; +use DevCraft\Core\Support\DleDataService; /** * Синхронизация групп DLE ↔ уровни доступа. @@ -30,7 +31,7 @@ public function handle(): array { } $groups = []; - foreach(Application::instance()->dleData()->groups() as $id => $name) { + foreach(DleDataService::groups() as $id => $name) { $id = (int) $id; if($id < 1) { continue; diff --git a/upload/devcraft/src/modules/DleApi/Pages/KeyRequestsPage.php b/upload/devcraft/src/modules/DleApi/Pages/KeyRequestsPage.php index 3f2533ae..ee254056 100644 --- a/upload/devcraft/src/modules/DleApi/Pages/KeyRequestsPage.php +++ b/upload/devcraft/src/modules/DleApi/Pages/KeyRequestsPage.php @@ -10,6 +10,7 @@ use DevCraft\Modules\DleApi\Models\ApiKeyRequest; use DevCraft\Modules\DleApi\Repositories\ApiAccessLevelRepository; use DevCraft\Modules\DleApi\Repositories\ApiKeyRequestRepository; +use DevCraft\Core\Support\DleDataService; /** * Заявки пользователей на API-ключ. @@ -30,7 +31,7 @@ public function handle(): array { } $userNames = []; - foreach(Application::instance()->dleData()->users() as $row) { + foreach(DleDataService::users() as $row) { $id = (int) ($row['user_id'] ?? 0); if($id < 1) { continue; diff --git a/upload/devcraft/src/modules/DleApi/Pages/KeysPage.php b/upload/devcraft/src/modules/DleApi/Pages/KeysPage.php index 1e02ec04..14284c28 100644 --- a/upload/devcraft/src/modules/DleApi/Pages/KeysPage.php +++ b/upload/devcraft/src/modules/DleApi/Pages/KeysPage.php @@ -11,6 +11,7 @@ use DevCraft\Modules\DleApi\Repositories\ApiAccessLevelRepository; use DevCraft\Modules\DleApi\Repositories\ApiKeyRepository; use DevCraft\Modules\DleApi\Services\ScopeTableCatalog; +use DevCraft\Core\Support\DleDataService; /** * Страница управления API-ключами. @@ -31,7 +32,7 @@ public function handle(): array { } $userNames = []; - foreach(Application::instance()->dleData()->users() as $row) { + foreach(DleDataService::users() as $row) { $id = (int) ($row['user_id'] ?? 0); if($id < 1) { continue; @@ -75,7 +76,7 @@ private function userOptions(): array { ['id' => 0, 'label' => '0 — ' . __('гость')], ]; - foreach(Application::instance()->dleData()->users() as $row) { + foreach(DleDataService::users() as $row) { $id = (int) ($row['user_id'] ?? 0); if($id < 1) { diff --git a/upload/devcraft/src/modules/DleApi/Pages/SettingsPage.php b/upload/devcraft/src/modules/DleApi/Pages/SettingsPage.php index 47aa4506..31b8ded4 100644 --- a/upload/devcraft/src/modules/DleApi/Pages/SettingsPage.php +++ b/upload/devcraft/src/modules/DleApi/Pages/SettingsPage.php @@ -4,6 +4,8 @@ namespace DevCraft\Modules\DleApi\Pages; +use DevCraft\Modules\DleApi\DleApiIdentity; + use DLEPlugins; use DevCraft\Core\Application; use DevCraft\Core\Config\Paths; @@ -11,6 +13,7 @@ use DevCraft\Core\Abstracts\AbstractPage; use DevCraft\Core\Interfaces\SettingsPageInterface; use DevCraft\Modules\DleApi\Services\KeyNotifyDelivery; +use DevCraft\Core\Support\DleDataService; /** * Настройки DLE API. @@ -25,7 +28,7 @@ public function handle(): array { $configFile = Paths::config() . '/dleapi.json'; if(!is_file($configFile)) { - DataManager::saveConfig('dleapi', [ + DataManager::saveConfig(DleApiIdentity::code(), [ 'algo' => 'sha256', 'secret' => '', 'length' => 32, @@ -34,10 +37,10 @@ public function handle(): array { ]); } - $current = DataManager::getConfig('dleapi'); + $current = DataManager::getConfig(DleApiIdentity::code()); $merged = KeyNotifyDelivery::loadEditorConfig(is_array($current) ? $current : []); if(!is_array($current) || $merged !== $current) { - DataManager::saveConfig('dleapi', $merged); + DataManager::saveConfig(DleApiIdentity::code(), $merged); } $dleHome = rtrim((string) ($config['http_home_url'] ?? '/'), '/') . '/'; @@ -57,11 +60,10 @@ public function handle(): array { } public function supplementFormData(): array { - $dleData = Application::instance()->dleData(); $groups = []; $users = []; - foreach($dleData->groups() as $id => $name) { + foreach(DleDataService::groups() as $id => $name) { $id = (int) $id; if($id < 1) { continue; @@ -69,7 +71,7 @@ public function supplementFormData(): array { $groups[(string) $id] = (string) $name; } - foreach($dleData->users() as $row) { + foreach(DleDataService::users() as $row) { $id = (string) ((int) ($row['user_id'] ?? 0)); $name = trim((string) ($row['name'] ?? '')); $email = trim((string) ($row['email'] ?? '')); diff --git a/upload/devcraft/src/modules/DleApi/Services/AccessLevelResolver.php b/upload/devcraft/src/modules/DleApi/Services/AccessLevelResolver.php index 9a239f40..ef6c45fc 100644 --- a/upload/devcraft/src/modules/DleApi/Services/AccessLevelResolver.php +++ b/upload/devcraft/src/modules/DleApi/Services/AccessLevelResolver.php @@ -9,6 +9,7 @@ use DevCraft\Modules\DleApi\Models\ApiAccessLevelGroup; use DevCraft\Modules\DleApi\Repositories\ApiAccessLevelGroupRepository; use DevCraft\Modules\DleApi\Repositories\ApiAccessLevelRepository; +use DevCraft\Core\Support\DleDataService; /** * Резолв уровня доступа: группа DLE → map → default из настроек. @@ -30,8 +31,8 @@ public function forUserId(int $userId): ?ApiAccessLevel { if($userId < 1) { return $this->defaultLevel(); } - global $db; - $row = $db->super_query('SELECT user_group FROM ' . USERPREFIX . '_users WHERE user_id=' . (int) $userId); + + $row = DleDataService::user(id: $userId); return $this->forUserGroup((int) ($row['user_group'] ?? 0)); } diff --git a/upload/devcraft/src/modules/DleApi/Services/ApiKeyService.php b/upload/devcraft/src/modules/DleApi/Services/ApiKeyService.php index 64ca0ba4..f651689c 100644 --- a/upload/devcraft/src/modules/DleApi/Services/ApiKeyService.php +++ b/upload/devcraft/src/modules/DleApi/Services/ApiKeyService.php @@ -12,6 +12,7 @@ use DevCraft\Modules\DleApi\Repositories\ApiKeyRepository; use DevCraft\Modules\DleApi\Repositories\ApiScopeRepository; use RuntimeException; +use DevCraft\Core\Support\DleDataService; /** * Создание и обновление API-ключей вместе с матрицей scope. @@ -152,7 +153,7 @@ private function userLabel(int $userId): string { if($userId < 1) { return __('гость'); } - foreach(Application::instance()->dleData()->users() as $row) { + foreach(DleDataService::users() as $row) { if((int) ($row['user_id'] ?? 0) !== $userId) { continue; } diff --git a/upload/devcraft/src/modules/DleApi/Services/KeyNotifyDelivery.php b/upload/devcraft/src/modules/DleApi/Services/KeyNotifyDelivery.php index a80d31e1..45d533c9 100644 --- a/upload/devcraft/src/modules/DleApi/Services/KeyNotifyDelivery.php +++ b/upload/devcraft/src/modules/DleApi/Services/KeyNotifyDelivery.php @@ -5,6 +5,8 @@ namespace DevCraft\Modules\DleApi\Services; use DevCraft\Core\Application; +use DevCraft\Builders\QueryBuilder; +use DevCraft\Core\Support\DleDataService; use DLEPlugins; use Throwable; @@ -79,12 +81,16 @@ public static function loadEditorConfig(array $cfg): array { return $cfg; } - $request = $db->super_query( - "SELECT template FROM " . PREFIX . "_email WHERE name='" . $db->safesql(self::REQUEST_TEMPLATE_NAME) . "' LIMIT 1" - ); - $decision = $db->super_query( - "SELECT template FROM " . PREFIX . "_email WHERE name='" . $db->safesql(self::DECISION_TEMPLATE_NAME) . "' LIMIT 1" - ); + $request = QueryBuilder::create('email') + ->withColumns(['template']) + ->withConditionsItem('name', self::REQUEST_TEMPLATE_NAME) + ->withLimit(1) + ->first(); + $decision = QueryBuilder::create('email') + ->withColumns(['template']) + ->withConditionsItem('name', self::DECISION_TEMPLATE_NAME) + ->withLimit(1) + ->first(); if(isset($request['template']) && $request['template'] !== '') { $cfg['email_request_body'] = self::decodeHtmlBody((string) $request['template']); @@ -185,7 +191,10 @@ private function sendEmailTemplate(string $name, array $userIds, array $vars): v return; } - $row = $db->super_query("SELECT * FROM " . PREFIX . "_email WHERE name='" . $db->safesql($name) . "' LIMIT 1"); + $row = QueryBuilder::create('email') + ->withConditionsItem('name', $name) + ->withLimit(1) + ->first(); if(empty($row['template'])) { return; } @@ -194,21 +203,21 @@ private function sendEmailTemplate(string $name, array $userIds, array $vars): v } $site = rtrim((string) ($config['http_home_url'] ?? '/'), '/'); $vars = [ - '{%site_url%}' => $site, - '{%api_key%}' => (string) ($vars['{%api_key%}'] ?? ''), - ] + $vars; + '{%site_url%}' => $site, + '{%api_key%}' => (string) ($vars['{%api_key%}'] ?? ''), + ] + $vars; $mail = new \dle_mail($config, !empty($row['use_html'])); $body = $this->apply($row['template'], $vars); $subj = $this->apply((string) ($vars['{%subject%}'] ?? __('DLE API')), $vars); foreach($userIds as $uid) { - $u = $db->super_query('SELECT email, name FROM ' . USERPREFIX . '_users WHERE user_id=' . (int) $uid); + $u = DleDataService::user(id: (int) $uid); if(empty($u['email'])) { continue; } $mail->send((string) $u['email'], $subj, $this->apply($body, [ - '{%username%}' => (string) ($u['name'] ?? ''), - ] + $vars)); + '{%username%}' => (string) ($u['name'] ?? ''), + ] + $vars)); } } @@ -330,7 +339,11 @@ private static function upsertEmailTemplate(string $name, string $template, bool $nameSql = $db->safesql($name); $templateSql = $db->safesql($template); - $exists = $db->super_query("SELECT id FROM " . PREFIX . "_email WHERE name='{$nameSql}' LIMIT 1"); + $exists = QueryBuilder::create('email') + ->withColumns(['id']) + ->withConditionsItem('name', $name) + ->withLimit(1) + ->first(); $useHtmlSql = $useHtml ? '1' : '0'; if(!empty($exists['id'])) {