HookPlugin.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | 海豚PHP框架 [ DolphinPHP ]
  4. // +----------------------------------------------------------------------
  5. // | 版权所有 2016~2017 河源市卓锐科技有限公司 [ http://www.zrthink.com ]
  6. // +----------------------------------------------------------------------
  7. // | 官方网站: http://dolphinphp.com
  8. // +----------------------------------------------------------------------
  9. // | 开源协议 ( http://www.apache.org/licenses/LICENSE-2.0 )
  10. // +----------------------------------------------------------------------
  11. namespace app\admin\model;
  12. use think\Model;
  13. use app\admin\model\Hook as HookModel;
  14. /**
  15. * 钩子-插件模型
  16. * @package app\admin\model
  17. */
  18. class HookPlugin extends Model
  19. {
  20. // 设置当前模型对应的完整数据表名称
  21. protected $table = '__ADMIN_HOOK_PLUGIN__';
  22. // 自动写入时间戳
  23. protected $autoWriteTimestamp = true;
  24. /**
  25. * 启用插件钩子
  26. * @param string $plugin 插件名称
  27. * @author 蔡伟明 <314013107@qq.com>
  28. * @return bool
  29. */
  30. public static function enable($plugin = '')
  31. {
  32. return self::where('plugin', $plugin)->setField('status', 1);
  33. }
  34. /**
  35. * 禁用插件钩子
  36. * @param string $plugin 插件名称
  37. * @author 蔡伟明 <314013107@qq.com>
  38. * @return int
  39. */
  40. public static function disable($plugin = '')
  41. {
  42. return self::where('plugin', $plugin)->setField('status', 0);
  43. }
  44. /**
  45. * 添加钩子-插件对照
  46. * @param array $hooks 钩子
  47. * @param string $plugin_name 插件名称
  48. * @author 蔡伟明 <314013107@qq.com>
  49. * @return bool
  50. */
  51. public static function addHooks($hooks = [], $plugin_name = '')
  52. {
  53. if (!empty($hooks) && is_array($hooks)) {
  54. // 添加钩子
  55. if (!HookModel::addHooks($hooks, $plugin_name)) {
  56. return false;
  57. }
  58. foreach ($hooks as $name => $description) {
  59. if (is_numeric($name)) {
  60. $name = $description;
  61. }
  62. $data[] = [
  63. 'hook' => $name,
  64. 'plugin' => $plugin_name,
  65. 'create_time' => request()->time(),
  66. 'update_time' => request()->time(),
  67. ];
  68. }
  69. return self::insertAll($data);
  70. }
  71. return false;
  72. }
  73. /**
  74. * 删除钩子
  75. * @param string $plugin_name 钩子名称
  76. * @author 蔡伟明 <314013107@qq.com>
  77. * @return bool
  78. */
  79. public static function deleteHooks($plugin_name = '')
  80. {
  81. if (!empty($plugin_name)) {
  82. // 删除钩子
  83. if (!HookModel::deleteHooks($plugin_name)) {
  84. return false;
  85. }
  86. if (false === self::where('plugin', $plugin_name)->delete()) {
  87. return false;
  88. }
  89. }
  90. return true;
  91. }
  92. /**
  93. * 钩子插件排序
  94. * @param string $hook 钩子
  95. * @param string $plugins 插件名
  96. * @author 蔡伟明 <314013107@qq.com>
  97. * @return bool
  98. */
  99. public static function sort($hook = '', $plugins = '')
  100. {
  101. if ($hook != '' && $plugins != '') {
  102. $plugins = is_array($plugins) ? $plugins : explode(',', $plugins);
  103. foreach ($plugins as $key => $plugin) {
  104. $map = [
  105. 'hook' => $hook,
  106. 'plugin' => $plugin
  107. ];
  108. self::where($map)->setField('sort', $key + 1);
  109. }
  110. }
  111. return true;
  112. }
  113. }