zblogphp系统文件说明c_system_plugin.php插件接口相关

admin2023-01-181384

说明:接口模式复制自Z-Blog ASP版。

定义常量

PLUGIN_EXITSIGNAL_NONE '' 插件运行中断方式:无

PLUGIN_EXITSIGNAL_RETURN 'return' 插件中断方式:return

PLUGIN_EXITSIGNAL_BREAK 'break' 插件中断方式:break

定义公共变量

$GLOBALS['plugins'] = array(); 总插件激活函数数组列表

$GLOBALS['hooks'] = array(); 总插件接口列表 P.S. 1.5版启用,逐渐过度到hooks

函数说明

1.注册插件函数,由插件主动调用。

参数1:插件ID

插件2:插件激活时执行的函数名

返回:没有

RegisterPlugin($strPluginName, $strPluginActiveFunction)

$GLOBALS['plugins'][$strPluginName] = $strPluginActiveFunction;

如上代码,这个函数实际就是将相关值写入公共数组。

2.安装插件函数,这个函数只会在安装插件时运行一次。

参数:插件ID

返回:没有

InstallPlugin($strPluginName)

if(function_exists($f = 'InstallPlugin_' . $strPluginName)){

$f();

}

如果对应的函数存在,执行之。

3.插件删除函数,这个函数只会在删除插件时运行一次。

参数:插件ID

返回:没有

UninstallPlugin($strPluginName)

if(function_exists($f = 'UninstallPlugin_' . $strPluginName) == true){

$f();

}

为什么这里要用true?

3.创建插件接口函数 DefinePluginFilter($strPluginFilter)

判断如果 $GLOBALS['hooks'][$strPluginFilter] 的值是否定义。如果没有,则定义对应空数组,且将该变量地址引用给 $GLOBALS[$strPluginFilter] 对应公共变量。此时即可直接使用对应插件相关数据。

4.检查插件接口函数 ExistsPluginFilter($strPluginFilter)

这个函数判断 $GLOBALS['hooks'][$strPluginFilter] 的值是否存在,返回 bool。

5.调用插件接口函数 &UsingPluginFilter($strPluginFilter)

这个函数判断 $GLOBALS['hooks'][$strPluginFilter] 的值是否存在,如果存在就返回对应的插件名字的数组,否则返回空数组。

&符号用于函数的引用操作,例如:$result = &UsingPluginFilter(); 则 $result 变量即指向函数的return的地址。修改变量可修改return对应结果。

6.移除插件接口 RemovePluginFilter($strPluginFilter)

函数判断对应的 $GLOBALS['hooks'][$strPluginFilter] 是否存在,如果存在,则

unset $GLOBALS['hooks'][$strPluginFilter] 和 $GLOBALS[$strPluginFilter],返回true。

以上是插件相关基本函数,下面即是过滤接口相关函数。也是本页大部分内容。

1.挂上Filter接口 Add_Filter_Plugin($plugname, $functionname, $exitsignal = PLUGIN_EXITSIGNAL_NONE)

参数1:插件名(ID)

插件2:要挂载的函数

参数3:插件中断方式,默认空。可以是空 return,break。continue这个没有?

返回:无

如果 isset($GLOBALS['hooks'][$plugname]) 插件名数组定义 且

isset($GLOBALS['hooks'][$plugname][$functionname]) 对应下的函数名没有定义

则 $GLOBALS['hooks'][$plugname][$functionname] = $exitsignal; 定义对应函数名,以及其中断方式。用法:

执行插件即 $Filter_Plugin_Zbp_LoadManage[$functionname](); 中断方式即 $Filter_Plugin_Zbp_LoadManage[$functionname] 的值,这是一个插件的函数执行,官方系统使用 foreach 将多个函数通过 $GLOBALS['hooks']['Filter_Plugin_Zbp_LoadManage'] 来执行。

2.以下使用函数定义插件过滤接口,只是定义。接口的相关位置在其他文章详细解答。 $GLOBALS['hooks'][$strPluginFilter] = array()

一个空的数组。

调试关闭处理程序,调试异常处理程序,调试错误处理程序

DefinePluginFilter('Filter_Plugin_Debug_Handler');

ZBlogException异常调试类Display函数处

DefinePluginFilter('Filter_Plugin_Debug_Display');

监控autoload魔术方法

DefinePluginFilter('Filter_Plugin_Autoload');

监控记录函数

DefinePluginFilter('Filter_Plugin_Logs');

DbSql类的SQL过滤和统计方法接口

DefinePluginFilter('Filter_Plugin_DbSql_Filter');

Zbp类的魔术方法接口

DefinePluginFilter('Filter_Plugin_Zbp_Call');

DefinePluginFilter('Filter_Plugin_Zbp_Get');

DefinePluginFilter('Filter_Plugin_Zbp_Set');

Zbp类的检查权限接口(检查当前用户)

DefinePluginFilter('Filter_Plugin_Zbp_CheckRights');

Zbp类的显示错误接口

DefinePluginFilter('Filter_Plugin_Zbp_ShowError');

Zbp类的显示验证码接口,具有唯一性

DefinePluginFilter('Filter_Plugin_Zbp_ShowValidCode');

Zbp类的比对验证码接口,具有唯一性

DefinePluginFilter('Filter_Plugin_Zbp_CheckValidCode');

Zbp类的重新编译模板接口

DefinePluginFilter('Filter_Plugin_Zbp_BuildTemplate');

Zbp类的生成模板标签接口

DefinePluginFilter('Filter_Plugin_Zbp_MakeTemplatetags');

Zbp类的生成模块内容的接口

DefinePluginFilter('Filter_Plugin_Zbp_BuildModule');

Zbp类的加载接口

DefinePluginFilter('Filter_Plugin_Zbp_Load');

Zbp类的加载(预处理)接口

DefinePluginFilter('Filter_Plugin_Zbp_Load_Pre');

Zbp类的后台管理初始加载接口

DefinePluginFilter('Filter_Plugin_Zbp_LoadManage');

Zbp类的终结接口(终结接口?)

DefinePluginFilter('Filter_Plugin_Zbp_Terminate');

前台view,index相关

定义index.php接口 起动

DefinePluginFilter('Filter_Plugin_Index_Begin');

定义index.php接口 结束

DefinePluginFilter('Filter_Plugin_Index_End');

c_html_js_add.php脚本调用,JS页接口需要强制开启

DefinePluginFilter('Filter_Plugin_Html_Js_Add');

搜索页接口,可以接管搜索页。

DefinePluginFilter('Filter_Plugin_Search_Begin');

搜索接口 结束

DefinePluginFilter('Filter_Plugin_Search_End');

Feed页接口,可以接管Feed页。

DefinePluginFilter('Filter_Plugin_Feed_Begin');

Feed页接口 结束

DefinePluginFilter('Filter_Plugin_Feed_End');

CMD里的接口

cmd.php的启动接口,可以在这里拦截各种action

DefinePluginFilter('Filter_Plugin_Cmd_Begin');

cmd.php的Ajax命令专用接口,插件需要自行判断权限

DefinePluginFilter('Filter_Plugin_Cmd_Ajax');

后台里的接口

定义Login.php首页header接口

DefinePluginFilter('Filter_Plugin_Login_Header');

定义其它页的header接口

DefinePluginFilter('Filter_Plugin_Other_Header');

c_system_misc里的接口

c_system_misc.php的启动接口,可以在这里拦截各种type

DefinePluginFilter('Filter_Plugin_Misc_Begin');

后台管理页的启动接口,可以拦截后台管理请求实现自己的管理

DefinePluginFilter('Filter_Plugin_Admin_Begin');

后台管理页的终结接口

DefinePluginFilter('Filter_Plugin_Admin_End');

定义后台首页header接口

DefinePluginFilter('Filter_Plugin_Admin_Header');

定义后台首页footer接口

DefinePluginFilter('Filter_Plugin_Admin_Footer');

定义后台左侧栏接口

DefinePluginFilter('Filter_Plugin_Admin_LeftMenu');

定义后台顶部导航栏接口

DefinePluginFilter('Filter_Plugin_Admin_TopMenu');

后台首页SubMenu

DefinePluginFilter('Filter_Plugin_Admin_SiteInfo_SubMenu');

文章管理SubMenu

DefinePluginFilter('Filter_Plugin_Admin_ArticleMng_SubMenu');

页面管理

DefinePluginFilter('Filter_Plugin_Admin_PageMng_SubMenu');

分类管理

DefinePluginFilter('Filter_Plugin_Admin_CategoryMng_SubMenu');

评论管理

DefinePluginFilter('Filter_Plugin_Admin_CommentMng_SubMenu');

用户管理

DefinePluginFilter('Filter_Plugin_Admin_MemberMng_SubMenu');

DefinePluginFilter('Filter_Plugin_Admin_UploadMng_SubMenu');

标签管理

DefinePluginFilter('Filter_Plugin_Admin_TagMng_SubMenu');

插件管理

DefinePluginFilter('Filter_Plugin_Admin_PluginMng_SubMenu');

主题管理

DefinePluginFilter('Filter_Plugin_Admin_ThemeMng_SubMenu');

模块管理

DefinePluginFilter('Filter_Plugin_Admin_ModuleMng_SubMenu');

设置管理

DefinePluginFilter('Filter_Plugin_Admin_SettingMng_SubMenu');

编辑页菜单(1.5.1加入)

DefinePluginFilter('Filter_Plugin_Edit_SubMenu');

标签编辑页菜单(1.5.1加入)

DefinePluginFilter('Filter_Plugin_Tag_Edit_SubMenu');

模块编辑页菜单(1.5.1加入)

DefinePluginFilter('Filter_Plugin_Module_Edit_SubMenu');

用户编辑页菜单(1.5.1加入)

DefinePluginFilter('Filter_Plugin_Member_Edit_SubMenu');

分类编辑页菜单(1.5.1加入)

DefinePluginFilter('Filter_Plugin_Category_Edit_SubMenu');

文章管理页表处理(1.5.1加入)

DefinePluginFilter('Filter_Plugin_Admin_ArticleMng_Table');

页面管理页表处理(1.5.1加入)

DefinePluginFilter('Filter_Plugin_Admin_PageMng_Table');

分类管理页表处理(1.5.1加入)

DefinePluginFilter('Filter_Plugin_Admin_CategoryMng_Table');

评论管理页表处理(1.5.1加入)

DefinePluginFilter('Filter_Plugin_Admin_CommentMng_Table');

会员管理页表处理(1.5.1加入)

DefinePluginFilter('Filter_Plugin_Admin_MemberMng_Table');

附件管理页表处理(1.5.1加入)

DefinePluginFilter('Filter_Plugin_Admin_UploadMng_Table');

Tag管理页表处理(1.5.1加入)

DefinePluginFilter('Filter_Plugin_Admin_TagMng_Table');

文章页面编辑页开始接口

DefinePluginFilter('Filter_Plugin_Edit_Begin');

文章页面编辑页结束接口

DefinePluginFilter('Filter_Plugin_Edit_End');

文章页面编辑1号输出接口

DefinePluginFilter('Filter_Plugin_Edit_Response');

文章页面编辑2号输出接口

DefinePluginFilter('Filter_Plugin_Edit_Response2');

文章页面编辑4号输出接口

DefinePluginFilter('Filter_Plugin_Edit_Response4');

文章页面编辑5号输出接口

DefinePluginFilter('Filter_Plugin_Edit_Response5');

文章页面编辑3号输出接口

DefinePluginFilter('Filter_Plugin_Edit_Response3');

分类编辑页输出接口

DefinePluginFilter('Filter_Plugin_Category_Edit_Response');

标签编辑页输出接口

DefinePluginFilter('Filter_Plugin_Tag_Edit_Response');

会员编辑页输出接口

DefinePluginFilter('Filter_Plugin_Member_Edit_Response');

模块编辑页输出接口

DefinePluginFilter('Filter_Plugin_Module_Edit_Response');

c_admin_js_add.php脚本页的接口

DefinePluginFilter('Filter_Plugin_Admin_Js_Add');

定义OutputOptionItemsOfCategories 类别的输出选项函数里的接口

DefinePluginFilter('Filter_Plugin_OutputOptionItemsOfCategories');

Event里的接口

VerifyLogin成功的接口

DefinePluginFilter('Filter_Plugin_VerifyLogin_Succeed');

Logout成功的接口

DefinePluginFilter('Filter_Plugin_Logout_Succeed');

定义GetPost输出结果接口

DefinePluginFilter('Filter_Plugin_GetPost_Result');

定义GetList输出结果接口

DefinePluginFilter('Filter_Plugin_GetList_Result');

定义ViewIndex输出接口Begin

DefinePluginFilter('Filter_Plugin_ViewIndex_Begin');

定义ViewFeed输出接口Begin

DefinePluginFilter('Filter_Plugin_ViewFeed_Begin');

定义ViewSearch输出接口Begin

DefinePluginFilter('Filter_Plugin_ViewSearch_Begin');

定义ViewAuto输出接口Begin

DefinePluginFilter('Filter_Plugin_ViewAuto_Begin');

定义ViewAuto输出接口End

DefinePluginFilter('Filter_Plugin_ViewAuto_End');

定义列表输出接口

DefinePluginFilter('Filter_Plugin_ViewList_Begin');

定义列表核心接口

DefinePluginFilter('Filter_Plugin_ViewList_Core');

定义搜索核心接口

DefinePluginFilter('Filter_Plugin_ViewSearch_Core');

定义Feed核心接口

DefinePluginFilter('Filter_Plugin_ViewFeed_Core');

定义列表输出接口

DefinePluginFilter('Filter_Plugin_ViewPost_Begin');

DefinePluginFilter('Filter_Plugin_ViewList_Template');

DefinePluginFilter('Filter_Plugin_ViewPost_Template');

DefinePluginFilter('Filter_Plugin_ViewComments_Template');

DefinePluginFilter('Filter_Plugin_ViewComment_Template');

模块编辑的核心接口

DefinePluginFilter('Filter_Plugin_PostModule_Core');

会员编辑的核心接口

DefinePluginFilter('Filter_Plugin_PostMember_Core');

标签编辑的核心接口

DefinePluginFilter('Filter_Plugin_PostTag_Core');

分类编辑的核心接口

DefinePluginFilter('Filter_Plugin_PostCategory_Core');

评论发表的核心接口

DefinePluginFilter('Filter_Plugin_PostComment_Core');

文章编辑的核心接口

DefinePluginFilter('Filter_Plugin_PostArticle_Core');

页面编辑的核心接口

DefinePluginFilter('Filter_Plugin_PostPage_Core');

会员编辑成功的接口

DefinePluginFilter('Filter_Plugin_PostMember_Succeed');

标签编辑成功的接口

DefinePluginFilter('Filter_Plugin_PostTag_Succeed');

分类编辑成功的接口

DefinePluginFilter('Filter_Plugin_PostCategory_Succeed');

评论发表成功的接口

DefinePluginFilter('Filter_Plugin_PostComment_Succeed');

页面编辑成功的接口

DefinePluginFilter('Filter_Plugin_PostPage_Succeed');

文章编辑成功的接口

DefinePluginFilter('Filter_Plugin_PostArticle_Succeed');

模块编辑成功的接口

DefinePluginFilter('Filter_Plugin_PostModule_Succeed');

会员删除成功的接口

DefinePluginFilter('Filter_Plugin_DelMember_Succeed');

标签删除成功的接口

DefinePluginFilter('Filter_Plugin_DelTag_Succeed');

分类删除成功的接口

DefinePluginFilter('Filter_Plugin_DelCategory_Succeed');

评论删除成功的接口

DefinePluginFilter('Filter_Plugin_DelComment_Succeed');

页面删除成功的接口

DefinePluginFilter('Filter_Plugin_DelPage_Succeed');

文章删除成功的接口

DefinePluginFilter('Filter_Plugin_DelArticle_Succeed');

模块删除成功的接口

DefinePluginFilter('Filter_Plugin_DelModule_Succeed');

类里的接口

干预Base类data属性的接口

DefinePluginFilter('Filter_Plugin_Base_Data_Load');

干预Post类Url方法的接口

DefinePluginFilter('Filter_Plugin_Post_Url');

干预Category类Url方法的接口

DefinePluginFilter('Filter_Plugin_Category_Url');

干预Tag类Url方法的接口

DefinePluginFilter('Filter_Plugin_Tag_Url');

干预Member类Url方法的接口

DefinePluginFilter('Filter_Plugin_Member_Url');

Post类的CommentPostUrl接口

DefinePluginFilter('Filter_Plugin_Post_CommentPostUrl');

Post类的Prev接口

DefinePluginFilter('Filter_Plugin_Post_Prev');

Post类的Next接口

DefinePluginFilter('Filter_Plugin_Post_Next');

Post类的RelatedList 接口

DefinePluginFilter('Filter_Plugin_Post_RelatedList');

Post类的魔术方法接口

DefinePluginFilter('Filter_Plugin_Post_Call');

Comment类的魔术方法接口

DefinePluginFilter('Filter_Plugin_Comment_Call');

Tag类的魔术方法接口

DefinePluginFilter('Filter_Plugin_Tag_Call');

Category类的魔术方法接口

DefinePluginFilter('Filter_Plugin_Category_Call');

Member类的魔术方法接口

DefinePluginFilter('Filter_Plugin_Member_Call');

Post类的Del方法接口

DefinePluginFilter('Filter_Plugin_Post_Del');

Tag类的Del方法接口

DefinePluginFilter('Filter_Plugin_Tag_Del');

Comment类的Del方法接口

DefinePluginFilter('Filter_Plugin_Comment_Del');

Category类的Del方法接口

DefinePluginFilter('Filter_Plugin_Category_Del');

Member类的Del方法接口

DefinePluginFilter('Filter_Plugin_Member_Del');

Module类的Del方法接口

DefinePluginFilter('Filter_Plugin_Module_Del');

Post类的Save方法接口

DefinePluginFilter('Filter_Plugin_Post_Save');

Comment类的Save方法接口

DefinePluginFilter('Filter_Plugin_Comment_Save');

Tag类的Save方法接口

DefinePluginFilter('Filter_Plugin_Tag_Save');

Category类的Save方法接口

DefinePluginFilter('Filter_Plugin_Category_Save');

Member类的Save方法接口

DefinePluginFilter('Filter_Plugin_Member_Save');

Module类的Save方法接口

DefinePluginFilter('Filter_Plugin_Module_Save');

Mebmer类的Avatar接口

DefinePluginFilter('Filter_Plugin_Mebmer_Avatar');

Upload类的SaveFile方法接口

DefinePluginFilter('Filter_Plugin_Upload_SaveFile');

Upload类的SaveBase64File方法接口

DefinePluginFilter('Filter_Plugin_Upload_SaveBase64File');

Upload类的DelFile方法接口

DefinePluginFilter('Filter_Plugin_Upload_DelFile');

Upload类的Url方法接口

DefinePluginFilter('Filter_Plugin_Upload_Url');

Upload类的Dir方法接口

DefinePluginFilter('Filter_Plugin_Upload_Dir');

App类的Pack方法接口

DefinePluginFilter('Filter_Plugin_App_Pack');

Template类编译一个模板前的接口

DefinePluginFilter('Filter_Plugin_Template_Compiling_Begin');

Template类编译一个模板后的接口

DefinePluginFilter('Filter_Plugin_Template_Compiling_End');

Template类读取一个模板前的接口

DefinePluginFilter('Filter_Plugin_Template_GetTemplate');

Template类读取一个模板前的接口

DefinePluginFilter('Filter_Plugin_Template_MakeTemplatetags');

大数据文章接口

DefinePluginFilter('Filter_Plugin_LargeData_Article');

大数据页面接口

DefinePluginFilter('Filter_Plugin_LargeData_Page');

大数据评论接口

DefinePluginFilter('Filter_Plugin_LargeData_Comment');

大数据增减文章标签关联表

DefinePluginFilter('Filter_Plugin_LargeData_CountTagArray');

大数据GetList函数

DefinePluginFilter('Filter_Plugin_LargeData_GetList');

xml-rpc页的begin接口(1.5.1加入)

DefinePluginFilter('Filter_Plugin_Xmlrpc_Begin');

网友评论