2
0
mirror of https://github.com/acepanel/panel.git synced 2026-02-04 19:37:18 +08:00
Files
panel/internal/services/plugin.go
2024-03-15 17:02:17 +08:00

74 lines
1.5 KiB
Go

// Package services 插件服务
package services
import (
"github.com/goravel/framework/facades"
"panel/app/models"
"panel/internal"
)
type PluginImpl struct {
}
func NewPluginImpl() *PluginImpl {
return &PluginImpl{}
}
// AllInstalled 获取已安装的所有插件
func (r *PluginImpl) AllInstalled() ([]models.Plugin, error) {
var plugins []models.Plugin
if err := facades.Orm().Query().Get(&plugins); err != nil {
return plugins, err
}
return plugins, nil
}
// All 获取所有插件
func (r *PluginImpl) All() []internal.PanelPlugin {
var plugins = []internal.PanelPlugin{
internal.PluginOpenResty,
internal.PluginMySQL57,
internal.PluginMySQL80,
internal.PluginPostgreSQL15,
internal.PluginPostgreSQL16,
internal.PluginPHP74,
internal.PluginPHP80,
internal.PluginPHP81,
internal.PluginPHP82,
internal.PluginPHP83,
internal.PluginPHPMyAdmin,
internal.PluginPureFTPd,
internal.PluginRedis,
internal.PluginS3fs,
internal.PluginRsync,
internal.PluginSupervisor,
internal.PluginFail2ban,
internal.PluginToolBox,
}
return plugins
}
// GetBySlug 根据slug获取插件
func (r *PluginImpl) GetBySlug(slug string) internal.PanelPlugin {
for _, item := range r.All() {
if item.Slug == slug {
return item
}
}
return internal.PanelPlugin{}
}
// GetInstalledBySlug 根据slug获取已安装的插件
func (r *PluginImpl) GetInstalledBySlug(slug string) models.Plugin {
var plugin models.Plugin
if err := facades.Orm().Query().Where("slug", slug).Get(&plugin); err != nil {
return plugin
}
return plugin
}