Data.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace Ad\Lib;
  3. use Dever;
  4. class Data
  5. {
  6. public function get($key, $data = array(), $cache = true)
  7. {
  8. $cache = 'ad_' . md5($key);
  9. $data = $cache ? Dever::cache($cache) : $cache;
  10. if ($data) {
  11. return $this->getData($data);
  12. } elseif (!$data) {
  13. $page = Dever::db('ad/page')->one(array('key' => $key));
  14. if ($page) {
  15. $info = Dever::db('ad/info')->getAll(array('page_id' => $page['id']));
  16. if ($info) {
  17. foreach ($info as $k => $v) {
  18. $info[$k]['data'] = Dever::db('ad/data')->getAll(array('info_id' => $v['id']));
  19. }
  20. Dever::cache($cache, $info);
  21. return $this->getData($info);
  22. }
  23. }
  24. }
  25. return false;
  26. }
  27. private function getData($data)
  28. {
  29. if ($data) {
  30. $time = time();
  31. $source_type = $this->config(Dever::input('source_type', 'h5'));
  32. foreach ($data as $k => $v) {
  33. $child = $v['data'];
  34. $data[$k]['data'] = array();
  35. $i = 0;
  36. foreach ($child as $k1 => $v1) {
  37. if ($v1['type'] == 2 && ($time < $v1['sdate'] || $time > $v1['edate'])) {
  38. //unset($data[$k]['data'][$k1]);
  39. } elseif ($v1['system'] > 0 && $source_type != $v1['system']) {
  40. //unset($data[$k]['data'][$k1]);
  41. } else {
  42. $data[$k]['data'][$i] = $v1;
  43. $i++;
  44. }
  45. }
  46. }
  47. }
  48. return $data;
  49. }
  50. private function config($type)
  51. {
  52. if ($type == 'ios') {
  53. return 3;
  54. }
  55. if ($type == 'android') {
  56. return 2;
  57. }
  58. if ($type == 'applet') {
  59. return 4;
  60. }
  61. if ($type == 'h5') {
  62. return 1;
  63. }
  64. return -1;
  65. }
  66. }