Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
纵之格
ShopXO
提交
143f8bbf
ShopXO
项目概览
纵之格
/
ShopXO
通知
394
Star
16
Fork
11
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
ShopXO
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
143f8bbf
编写于
2月 18, 2021
作者:
D
Devil
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
插件新增回调事件
上级
fd9e53cc
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
91 addition
and
27 deletion
+91
-27
application/service/PluginsAdminService.php
application/service/PluginsAdminService.php
+45
-25
application/service/PluginsService.php
application/service/PluginsService.php
+43
-1
changelog.txt
changelog.txt
+3
-1
未找到文件。
application/service/PluginsAdminService.php
浏览文件 @
143f8bbf
...
...
@@ -133,13 +133,14 @@ class PluginsAdminService
}
// 数据处理
$config
=
self
::
GetPluginsConfig
(
$params
[
'id'
]);;
$plugins
=
$params
[
'id'
];
$config
=
self
::
GetPluginsConfig
(
$plugins
);
if
(
$config
!==
false
&&
!
empty
(
$config
[
'base'
])
&&
!
empty
(
$config
[
'base'
][
'name'
]))
{
$cache
=
PluginsService
::
PluginsCacheData
(
$p
arams
[
'id'
]
);
$cache
=
PluginsService
::
PluginsCacheData
(
$p
lugins
);
$data
=
[
'name'
=>
$config
[
'base'
][
'name'
],
'plugins'
=>
$p
arams
[
'id'
]
,
'plugins'
=>
$p
lugins
,
'data'
=>
empty
(
$cache
)
?
''
:
json_encode
(
$cache
),
'is_enable'
=>
0
,
'add_time'
=>
time
(),
...
...
@@ -148,6 +149,9 @@ class PluginsAdminService
// 添加数据
if
(
Db
::
name
(
'Plugins'
)
->
insertGetId
(
$data
)
>
0
)
{
// 插件事件回调
PluginsService
::
PluginsEventCall
(
$plugins
,
'Install'
,
$params
);
return
DataReturn
(
'安装成功'
);
}
else
{
return
DataReturn
(
'安装失败'
,
-
100
);
...
...
@@ -178,7 +182,8 @@ class PluginsAdminService
Db
::
startTrans
();
// 开始卸载
if
(
DB
::
name
(
'Plugins'
)
->
where
([
'plugins'
=>
$params
[
'id'
]])
->
delete
())
$plugins
=
$params
[
'id'
];
if
(
DB
::
name
(
'Plugins'
)
->
where
([
'plugins'
=>
$plugins
])
->
delete
())
{
// 钩子部署
$ret
=
self
::
PluginsHookDeployment
();
...
...
@@ -186,6 +191,10 @@ class PluginsAdminService
{
// 提交事务
Db
::
commit
();
// 插件事件回调
PluginsService
::
PluginsEventCall
(
$plugins
,
'Uninstall'
,
$params
);
return
DataReturn
(
'卸载成功'
);
}
}
else
{
...
...
@@ -391,13 +400,14 @@ class PluginsAdminService
}
// 应用是否存在
if
(
!
file_exists
(
APP_PATH
.
'plugins'
.
DS
.
$params
[
'id'
]))
$plugins
=
$params
[
'id'
];
if
(
!
file_exists
(
APP_PATH
.
'plugins'
.
DS
.
$plugins
))
{
return
DataReturn
(
'应用不存在'
,
-
10
);
}
// 获取应用标记
$data
=
Db
::
name
(
'Plugins'
)
->
where
([
'plugins'
=>
$p
arams
[
'id'
]
])
->
find
();
$data
=
Db
::
name
(
'Plugins'
)
->
where
([
'plugins'
=>
$p
lugins
])
->
find
();
if
(
!
empty
(
$data
[
'is_enable'
]))
{
return
DataReturn
(
'请先卸载应用'
,
-
10
);
...
...
@@ -408,16 +418,16 @@ class PluginsAdminService
if
(
$ret
[
'code'
]
==
0
)
{
// 是否需要删除应用数据,sql运行
$is_delete_
static
=
(
isset
(
$params
[
'value'
])
&&
$params
[
'value'
]
==
1
);
$is_delete_
data
=
(
isset
(
$params
[
'value'
])
&&
$params
[
'value'
]
==
1
);
// 删除数据
if
(
$is_delete_
static
===
true
)
if
(
$is_delete_
data
===
true
)
{
// 删除缓存
PluginsService
::
PluginsCacheDelete
(
$p
arams
[
'id'
]
);
PluginsService
::
PluginsCacheDelete
(
$p
lugins
);
// 执行卸载sql
$uninstall_sql
=
APP_PATH
.
'plugins'
.
DS
.
$p
arams
[
'id'
]
.
DS
.
'uninstall.sql'
;
$uninstall_sql
=
APP_PATH
.
'plugins'
.
DS
.
$p
lugins
.
DS
.
'uninstall.sql'
;
if
(
file_exists
(
$uninstall_sql
))
{
SqlconsoleService
::
Implement
([
'sql'
=>
file_get_contents
(
$uninstall_sql
)]);
...
...
@@ -425,10 +435,13 @@ class PluginsAdminService
}
// 删除数据库附件
ResourcesService
::
AttachmentPathTypeDelete
(
'plugins_'
.
$p
arams
[
'id'
]
);
ResourcesService
::
AttachmentPathTypeDelete
(
'plugins_'
.
$p
lugins
);
// 删除应用文件
self
::
PluginsResourcesDelete
(
$params
[
'id'
],
$is_delete_static
);
self
::
PluginsResourcesDelete
(
$plugins
,
$is_delete_data
);
// 插件事件回调
PluginsService
::
PluginsEventCall
(
$plugins
,
'Delete'
,
$params
);
return
DataReturn
(
'删除成功'
);
}
...
...
@@ -443,9 +456,9 @@ class PluginsAdminService
* @date 2019-02-13
* @desc description
* @param [string] $plugins [唯一标记]
* @param [boolean] $is_delete_
static
[是否删除应用数据]
* @param [boolean] $is_delete_
data
[是否删除应用数据]
*/
private
static
function
PluginsResourcesDelete
(
$plugins
,
$is_delete_
static
=
false
)
private
static
function
PluginsResourcesDelete
(
$plugins
,
$is_delete_
data
=
false
)
{
\
base\FileUtil
::
UnlinkDir
(
APP_PATH
.
'plugins'
.
DS
.
$plugins
);
\
base\FileUtil
::
UnlinkDir
(
APP_PATH
.
'plugins'
.
DS
.
'view'
.
DS
.
$plugins
);
...
...
@@ -454,7 +467,7 @@ class PluginsAdminService
\
base\FileUtil
::
UnlinkDir
(
ROOT
.
'public'
.
DS
.
'static'
.
DS
.
'plugins'
.
DS
.
'images'
.
DS
.
$plugins
);
// 是否需要删除应用数据
if
(
$is_delete_
static
===
true
)
if
(
$is_delete_
data
===
true
)
{
\
base\FileUtil
::
UnlinkDir
(
ROOT
.
'public'
.
DS
.
'static'
.
DS
.
'upload'
.
DS
.
'images'
.
DS
.
'plugins_'
.
$plugins
);
\
base\FileUtil
::
UnlinkDir
(
ROOT
.
'public'
.
DS
.
'static'
.
DS
.
'upload'
.
DS
.
'video'
.
DS
.
'plugins_'
.
$plugins
);
...
...
@@ -1039,7 +1052,7 @@ php;
];
// 包名
$plugins
_name
=
''
;
$plugins
=
''
;
// 开始解压文件
$resource
=
zip_open
(
$_FILES
[
'file'
][
'tmp_name'
]);
...
...
@@ -1056,11 +1069,11 @@ php;
$file
=
zip_entry_name
(
$temp_resource
);
// 获取包名
if
(
empty
(
$plugins
_name
))
if
(
empty
(
$plugins
))
{
// 应用名称
$plugins
_name
=
substr
(
$file
,
0
,
strpos
(
$file
,
'/'
));
if
(
empty
(
$plugins
_name
))
$plugins
=
substr
(
$file
,
0
,
strpos
(
$file
,
'/'
));
if
(
empty
(
$plugins
))
{
// 应用名称为空、则校验是否为支付插件
$file_size
=
zip_entry_filesize
(
$temp_resource
);
...
...
@@ -1075,7 +1088,7 @@ php;
}
// 应用不存在则添加
$ret
=
self
::
PluginsVerification
(
$plugins
_name
);
$ret
=
self
::
PluginsVerification
(
$plugins
);
if
(
$ret
[
'code'
]
!=
0
)
{
zip_entry_close
(
$temp_resource
);
...
...
@@ -1083,7 +1096,7 @@ php;
}
// 应用是否存在
$ret
=
self
::
PluginsExist
(
$plugins
_name
);
$ret
=
self
::
PluginsExist
(
$plugins
);
if
(
$ret
[
'code'
]
!=
0
)
{
zip_entry_close
(
$temp_resource
);
...
...
@@ -1116,7 +1129,7 @@ php;
}
// 匹配成功文件路径处理、跳出循环
$file
=
str_replace
(
$plugins
_name
.
'/'
.
$dir_key
.
'/'
,
''
,
$dir_value
.
$file
);
$file
=
str_replace
(
$plugins
.
'/'
.
$dir_key
.
'/'
,
''
,
$dir_value
.
$file
);
$is_has_find
=
true
;
break
;
}
...
...
@@ -1150,15 +1163,18 @@ php;
}
// 附件同步到数据库
ResourcesService
::
AttachmentDiskFilesToDb
(
'plugins_'
.
$plugins
_name
);
ResourcesService
::
AttachmentDiskFilesToDb
(
'plugins_'
.
$plugins
);
// sql运行
$install_sql
=
APP_PATH
.
'plugins'
.
DS
.
$plugins
_name
.
DS
.
'install.sql'
;
if
(
!
empty
(
$plugins
_name
)
&&
file_exists
(
$install_sql
))
$install_sql
=
APP_PATH
.
'plugins'
.
DS
.
$plugins
.
DS
.
'install.sql'
;
if
(
!
empty
(
$plugins
)
&&
file_exists
(
$install_sql
))
{
SqlconsoleService
::
Implement
([
'sql'
=>
file_get_contents
(
$install_sql
)]);
}
// 插件事件回调
PluginsService
::
PluginsEventCall
(
$plugins
,
'Upload'
,
$params
);
return
DataReturn
(
'安装成功'
);
}
...
...
@@ -1326,7 +1342,11 @@ php;
// 开始下载
if
(
\
base\FileUtil
::
DownloadFile
(
$new_dir
.
'.zip'
,
$config
[
'base'
][
'name'
]
.
'.zip'
))
{
// 删除文件
@
unlink
(
$new_dir
.
'.zip'
);
// 插件事件回调
PluginsService
::
PluginsEventCall
(
$plugins
,
'Download'
,
$params
);
}
else
{
return
DataReturn
(
'下载失败'
,
-
100
);
}
...
...
application/service/PluginsService.php
浏览文件 @
143f8bbf
...
...
@@ -310,7 +310,49 @@ class PluginsService
}
// 调用方法仅传递请求参数
if
(
isset
(
$params
[
'data_request'
]))
if
(
!
empty
(
$params
)
&&
isset
(
$params
[
'data_request'
]))
{
$params
=
$params
[
'data_request'
];
}
return
DataReturn
(
'调用成功'
,
0
,
$obj
->
$action
(
$params
));
}
/**
* 应用控制器调用
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2020-01-02
* @param [string] $plugins [应用标记]
* @param [string] $action [事件方法(Upload 上传, Install 安装, Uninstall 卸载, Download 下载, Delete 删除)]
* @param [array] $params [输入参数]
*/
public
static
function
PluginsEventCall
(
$plugins
,
$action
,
$params
=
[])
{
// 应用校验
$ret
=
self
::
PluginsCheck
(
$plugins
);
if
(
$ret
[
'code'
]
!=
0
)
{
return
$ret
;
}
// 应用事件
$plugins
=
'\app\plugins\\'
.
$plugins
.
'\\Event'
;
if
(
!
class_exists
(
$plugins
))
{
return
DataReturn
(
'应用事件未定义['
.
$plugins
.
']'
,
-
1
);
}
// 调用方法
$action
=
ucfirst
(
$action
);
$obj
=
new
$plugins
(
$params
);
if
(
!
method_exists
(
$obj
,
$action
))
{
return
DataReturn
(
'应用事件方法未定义['
.
$action
.
']'
,
-
1
);
}
// 调用方法仅传递请求参数
if
(
!
empty
(
$params
)
&&
isset
(
$params
[
'data_request'
]))
{
$params
=
$params
[
'data_request'
];
}
...
...
changelog.txt
浏览文件 @
143f8bbf
...
...
@@ -11,12 +11,14 @@
web端
1. 编辑器图片、附件、视频多选支持按照顺序选择插入编辑器
2. 插件、主题下载新增历史信息记录
3. 插件(上传、安装、卸载、删除)新增回调事件
小程序
1.
插件
1.
1.
应用商店
+=========================================================+
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录