Filter.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. namespace Manage\Src;
  3. use Dever;
  4. class Filter
  5. {
  6. /**
  7. * tool 过滤工具包,可以同时有多个过滤工具包,如保10洁等,系统自带了一个自定义的过滤工具
  8. *
  9. * @var array
  10. */
  11. private $tool = array();
  12. /**
  13. * setTool
  14. *
  15. * @return mixed
  16. */
  17. public function setTool($tool)
  18. {
  19. $this->tool = $tool;
  20. }
  21. /**
  22. * init
  23. *
  24. * @return mixed
  25. */
  26. private function init()
  27. {
  28. if (!$this->tool) {
  29. $this->tool = Dever::config('base')->filter ? Dever::config('base')->filter : false;
  30. }
  31. }
  32. /**
  33. * __call
  34. *
  35. * @return mixed
  36. */
  37. public function handle($param)
  38. {
  39. $this->init();
  40. $table_id = $param[2]['project'] . '.' . $param[2]['table'] . '.' . $param[0];
  41. $content = base64_encode(json_encode($param));
  42. Dever::load('manage/filter_task-insert', array('add_name' => $table_id, 'add_content' => $content));
  43. }
  44. /**
  45. * cron
  46. *
  47. * @return mixed
  48. */
  49. public function cron()
  50. {
  51. $this->init();
  52. if (!$this->tool) {
  53. return;
  54. }
  55. $data = Dever::load('manage/filter_task-data');
  56. if ($data) {
  57. $keys = implode(',', array_keys($data));
  58. Dever::load('manage/filter_task-dels', $keys);
  59. foreach ($this->tool as $k => $v) {
  60. $class = 'DeverApp\\Manage\\Filter\\' . $k;
  61. foreach ($data as $i => $j) {
  62. list($project, $table, $id) = explode('.', $j['name']);
  63. $content = json_decode(base64_decode($j['content']));
  64. $class::cron($v, $content[1], $project, $table, $id, $j['name']);
  65. }
  66. }
  67. }
  68. }
  69. /**
  70. * callback
  71. *
  72. * @return mixed
  73. */
  74. public function callback()
  75. {
  76. $this->init();
  77. if (!$this->tool) {
  78. return;
  79. }
  80. foreach ($this->tool as $k => $v) {
  81. $class = 'DeverApp\\Manage\\Filter\\' . $k;
  82. $class::callback($v);
  83. }
  84. }
  85. }