app.ctrl.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <?php
  2. /**
  3. * [WeEngine System] Copyright (c) 2014 WE7.CC
  4. * WeEngine is NOT a free software, it under the license terms, visited http://www.we7.cc/ for more details.
  5. */
  6. defined('IN_IA') or exit('Access Denied');
  7. load()->model('module');
  8. load()->model('statistics');
  9. $dos = array('display', 'get_account_api', 'get_module_api');
  10. $do = in_array($do, $dos) ? $do : 'display';
  11. $support_type = array(
  12. 'time' => array('today', 'week', 'month', 'daterange'),
  13. 'divide' => array('bysum', 'byavg', 'byhighest'),
  14. );
  15. if ($do == 'display') {
  16. $today = stat_visit_app_byuniacid('today');
  17. $yesterday = stat_visit_app_byuniacid('yesterday');
  18. $today_module_api = stat_all_visit_statistics('current_account', $today);
  19. $yesterday_module_api = stat_all_visit_statistics('current_account', $yesterday);
  20. template('statistics/app-display');
  21. }
  22. if ($do == 'get_account_api') {
  23. $data = array();
  24. $type = trim($_GPC['time_type']);
  25. $divide_type = trim($_GPC['divide_type']);
  26. if (!in_array($type, $support_type['time']) || !in_array($divide_type, $support_type['divide'])) {
  27. iajax(-1, '参数错误!');
  28. }
  29. $daterange = array();
  30. if (!empty($_GPC['daterange'])) {
  31. $daterange = array(
  32. 'start' => date('Ymd', strtotime($_GPC['daterange']['startDate'])),
  33. 'end' => date('Ymd', strtotime($_GPC['daterange']['endDate'])),
  34. );
  35. }
  36. $result = stat_visit_app_bydate($type, '', $daterange);
  37. if ($type == 'today') {
  38. $data_x = array(date('Ymd'));
  39. }
  40. if ($type == 'week') {
  41. $data_x = stat_date_range(date('Ymd', strtotime('-7 days')), date('Ymd'));
  42. }
  43. if ($type == 'month') {
  44. $data_x = stat_date_range(date('Ymd', strtotime('-30 days')), date('Ymd'));
  45. }
  46. if ($type == 'daterange') {
  47. $data_x = stat_date_range($daterange['start'], $daterange['end']);
  48. }
  49. if (empty($result)) {
  50. foreach ($data_x as $val) {
  51. $data_y[] = 0;
  52. }
  53. iajax(0, array('data_x' => $data_x, 'data_y' => $data_y));
  54. }
  55. foreach ($data_x as $key => $data) {
  56. foreach ($result as $val) {
  57. if (strtotime($val['date']) != strtotime($data)) {
  58. continue;
  59. }
  60. if ($divide_type == 'bysum') {
  61. $data_y[$key] = $val['count'];
  62. } elseif ($divide_type == 'byavg') {
  63. $data_y[$key] = $val['avg'];
  64. } elseif ($divide_type == 'byhighest') {
  65. $data_y[$key] = $val['highest'];
  66. }
  67. }
  68. if (empty($data_y[$key])) {
  69. $data_y[$key] = 0;
  70. }
  71. }
  72. iajax(0, array('data_x' => $data_x, 'data_y' => $data_y));
  73. }
  74. if ($do == 'get_module_api') {
  75. $modules = array();
  76. $data = array();
  77. $modules_info = stat_modules_except_system();
  78. array_unshift($modules_info, array('name' => 'wesite', 'title' => '微站'));
  79. foreach ($modules_info as $info) {
  80. $modules[] = mb_substr($info['title'], 0, 5, 'utf-8');
  81. }
  82. $type = trim($_GPC['time_type']);
  83. $divide_type = trim($_GPC['divide_type']);
  84. if (!in_array($type, $support_type['time']) || !in_array($divide_type, $support_type['divide'])) {
  85. iajax(-1, '参数错误!');
  86. }
  87. $daterange = array();
  88. if (!empty($_GPC['daterange'])) {
  89. $daterange = array(
  90. 'start' => date('Ymd', strtotime($_GPC['daterange']['startDate'])),
  91. 'end' => date('Ymd', strtotime($_GPC['daterange']['endDate'])),
  92. );
  93. }
  94. $result = stat_visit_app_byuniacid($type, '', $daterange);
  95. if (empty($result)) {
  96. foreach ($modules_info as $module) {
  97. $data[] = 0;
  98. }
  99. iajax(0, array('data_x' => $data, 'data_y' => $modules));
  100. }
  101. foreach ($modules_info as $module) {
  102. $have_count = false;
  103. foreach ($result as $val) {
  104. if ($module['name'] == $val['module']) {
  105. if ($divide_type == 'bysum') {
  106. $data[] = $val['count'];
  107. } elseif ($divide_type == 'byavg') {
  108. $data[] = $val['avg'];
  109. } elseif ($divide_type == 'byhighest') {
  110. $data[] = $val['highest'];
  111. }
  112. $have_count = true;
  113. }
  114. }
  115. if (empty($have_count)) {
  116. $data[] = 0;
  117. }
  118. }
  119. iajax(0, array('data_x' => $data, 'data_y' => $modules));
  120. }