chore(addon): 增强针对插件列表的处理
This commit is contained in:
@@ -33,11 +33,48 @@ class InitAddon
|
|||||||
$addon_model = new Addon();
|
$addon_model = new Addon();
|
||||||
$addon_data = $addon_model->getAddonList([], 'name');
|
$addon_data = $addon_model->getAddonList([], 'name');
|
||||||
$current_addons = $addon_data['data'];
|
$current_addons = $addon_data['data'];
|
||||||
$current_addon_names = array_column($current_addons, 'name');
|
$db_addon_names = array_column($current_addons, 'name');
|
||||||
|
|
||||||
// 1. 记录总的addon数量和名称
|
// 1. 记录总的addon数量和名称
|
||||||
$total_addons = count($current_addon_names);
|
$total_addons = count($db_addon_names);
|
||||||
log_write("[Addon Init] 总插件数量: {$total_addons}, 插件列表: " . implode(', ', $current_addon_names), 'info');
|
log_write("[Addon Init] 从数据表addon, 获得的总插件数量: {$total_addons}, 插件列表: " . implode(', ', $db_addon_names), 'info');
|
||||||
|
|
||||||
|
// 2. 从addon目录读取插件列表
|
||||||
|
$dir_addon_names = [];
|
||||||
|
$addon_dir = 'addon/';
|
||||||
|
if (is_dir($addon_dir)) {
|
||||||
|
$dir_handle = opendir($addon_dir);
|
||||||
|
if ($dir_handle) {
|
||||||
|
while (($file = readdir($dir_handle)) !== false) {
|
||||||
|
if ($file != '.' && $file != '..' && is_dir($addon_dir . $file)) {
|
||||||
|
$dir_addon_names[] = $file;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
closedir($dir_handle);
|
||||||
|
sort($dir_addon_names);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$total_dir_addons = count($dir_addon_names);
|
||||||
|
log_write("[Addon Init] 从addon目录, 获得的总插件数量: {$total_dir_addons}, 插件列表: " . implode(', ', $dir_addon_names), 'info');
|
||||||
|
|
||||||
|
// 3. 比较数据库和目录插件列表的差异
|
||||||
|
$db_only_addons = array_diff($db_addon_names, $dir_addon_names);
|
||||||
|
$dir_only_addons = array_diff($dir_addon_names, $db_addon_names);
|
||||||
|
|
||||||
|
if (!empty($db_only_addons)) {
|
||||||
|
log_write("[Addon Init] 数据库中存在但目录中不存在的插件: " . implode(', ', $db_only_addons), 'warning');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($dir_only_addons)) {
|
||||||
|
log_write("[Addon Init] 目录中存在但数据库中不存在的插件: " . implode(', ', $dir_only_addons), 'warning');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($db_only_addons) && empty($dir_only_addons)) {
|
||||||
|
log_write("[Addon Init] 数据库和目录中的插件列表一致", 'info');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 使用数据库中的插件列表进行后续处理
|
||||||
|
$current_addon_names = $db_addon_names;
|
||||||
|
|
||||||
// 2. 记录缓存中不存在但实际存在的addon
|
// 2. 记录缓存中不存在但实际存在的addon
|
||||||
$cache_addon_names = [];
|
$cache_addon_names = [];
|
||||||
|
|||||||
Reference in New Issue
Block a user