Hook.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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. /**
  14. * 钩子模型
  15. * @package app\admin\model
  16. */
  17. class Hook extends Model
  18. {
  19. // 设置当前模型对应的完整数据表名称
  20. protected $table = '__ADMIN_HOOK__';
  21. // 自动写入时间戳
  22. protected $autoWriteTimestamp = true;
  23. /**
  24. * 添加钩子
  25. * @param array $hooks 钩子
  26. * @param string $plugin_name 插件名称
  27. * @author 蔡伟明 <314013107@qq.com>
  28. * @return bool
  29. */
  30. public static function addHooks($hooks = [], $plugin_name = '')
  31. {
  32. if (!empty($hooks) && is_array($hooks)) {
  33. $data = [];
  34. foreach ($hooks as $name => $description) {
  35. if (is_numeric($name)) {
  36. $name = $description;
  37. $description = '';
  38. }
  39. if (self::where('name', $name)->find()) {
  40. continue;
  41. }
  42. $data[] = [
  43. 'name' => $name,
  44. 'plugin' => $plugin_name,
  45. 'description' => $description,
  46. 'create_time' => request()->time(),
  47. 'update_time' => request()->time(),
  48. ];
  49. }
  50. if (!empty($data) && false === self::insertAll($data)) {
  51. return false;
  52. }
  53. }
  54. return true;
  55. }
  56. /**
  57. * 删除钩子
  58. * @param string $plugin_name 钩子名称
  59. * @author 蔡伟明 <314013107@qq.com>
  60. * @return bool
  61. */
  62. public static function deleteHooks($plugin_name = '')
  63. {
  64. if (!empty($plugin_name)) {
  65. if (false === self::where('plugin', $plugin_name)->delete()) {
  66. return false;
  67. }
  68. }
  69. return true;
  70. }
  71. }