BxAnalyticsDb.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php defined('BX_DOL') or die('hack attempt');
  2. /**
  3. * Copyright (c) UNA, Inc - https://una.io
  4. * MIT License - https://opensource.org/licenses/MIT
  5. *
  6. * @defgroup Analytics Analytics
  7. * @ingroup UnaModules
  8. *
  9. * @{
  10. */
  11. /*
  12. * Module database queries
  13. */
  14. class BxAnalyticsDb extends BxBaseModGeneralDb
  15. {
  16. public function getGrowth($sTableName, $sColumnAdded, $iDateFrom, $iDateTo)
  17. {
  18. $aBindings = array(
  19. 'datefrom' => $iDateFrom,
  20. 'dateto' => $iDateTo
  21. );
  22. $sQuery = "SELECT DATE(FROM_UNIXTIME(`" . $sColumnAdded . "`)) AS `period`, YEAR(FROM_UNIXTIME(`" . $sColumnAdded . "`)) AS `year`, COUNT(*) AS `count` FROM " . $sTableName . " WHERE `" . $sColumnAdded . "` >= :datefrom AND `" . $sColumnAdded . "` <= :dateto GROUP BY `period`, `year` ORDER BY `year`, `period` ASC";
  23. return $this->getAll($sQuery, $aBindings);
  24. }
  25. public function getGrowthInitValue($sTableName, $sColumnAdded, $iDateFrom)
  26. {
  27. $aBindings = array(
  28. 'datefrom' => $iDateFrom
  29. );
  30. $sQuery = "SELECT COUNT(*) AS `count` FROM " . $sTableName . " WHERE `" . $sColumnAdded . "` < :datefrom ";
  31. return $this->getOne($sQuery, $aBindings);
  32. }
  33. public function getTopContentByLikes($sModuleName, $sTableName, $iDateFrom, $iDateTo)
  34. {
  35. $aBindings = array(
  36. 'datefrom' => $iDateFrom,
  37. 'dateto' => $iDateTo
  38. );
  39. $sQuery = "SELECT `object_id`,'" . $sModuleName . "' AS `module`, COUNT(*) AS `value` FROM `" . $sTableName . "` WHERE `date` >= :datefrom AND `date` <= :dateto GROUP BY `object_id` ORDER BY COUNT(*) DESC LIMIT 0, " . intval(getParam('bx_analytics_items_count'));
  40. return $this->getAll($sQuery, $aBindings);
  41. }
  42. public function getMostFollowedProfiles($sModuleName, $iDateFrom, $iDateTo)
  43. {
  44. $aBindings = array(
  45. 'datefrom' => $iDateFrom,
  46. 'dateto' => $iDateTo
  47. );
  48. $sQuery = "SELECT `sys_profiles`.`content_id` AS `object_id`, `sys_profiles`.`type` , COUNT(`sys_profiles_conn_subscriptions`.`id`) AS `value` FROM `sys_profiles_conn_subscriptions`
  49. INNER JOIN `sys_profiles` ON `sys_profiles`.`id` = `sys_profiles_conn_subscriptions`.`content` WHERE sys_profiles.type='" . $sModuleName . "' AND `sys_profiles_conn_subscriptions`.`added` >= :datefrom AND `sys_profiles_conn_subscriptions`.`added` <= :dateto GROUP BY `sys_profiles`.`content_id`, `sys_profiles`.`type` ORDER BY COUNT(`sys_profiles_conn_subscriptions`.`id`) DESC LIMIT 0," . intval(getParam('bx_analytics_items_count'));
  50. return $this->getAll($sQuery, $aBindings);
  51. }
  52. public function getMostActiveProfiles($sModuleName, $sContentModuleName, $sTableName, $sColumnAuthor, $sColumnAdded, $iDateFrom, $iDateTo)
  53. {
  54. $aBindings = array(
  55. 'datefrom' => $iDateFrom,
  56. 'dateto' => $iDateTo
  57. );
  58. $sQuery = "SELECT `sys_profiles`.`content_id` AS `object_id`, `sys_profiles`.`type`, '" . $sContentModuleName . "' , COUNT(`" . $sTableName . "`.`id`) AS `value` FROM `" . $sTableName . "`
  59. INNER JOIN `sys_profiles` ON `sys_profiles`.`id` = `" . $sTableName . "`.`" . $sColumnAuthor . "` WHERE sys_profiles.type='" . $sModuleName . "' AND `" . $sTableName . "`.`" . $sColumnAdded . "` >= :datefrom AND `" . $sTableName . "`.`" . $sColumnAdded . "` <= :dateto GROUP BY `sys_profiles`.`content_id`, `sys_profiles`.`type` ORDER BY COUNT(`" . $sTableName . "`.`id`) DESC LIMIT 0," . intval(getParam('bx_analytics_items_count'));
  60. return $this->getAll($sQuery, $aBindings);
  61. }
  62. }
  63. /** @} */