BxDolAuditQuery.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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 UnaCore UNA Core
  7. * @{
  8. */
  9. /**
  10. * @see BxDolCategories
  11. */
  12. class BxDolAuditQuery extends BxDolDb implements iBxDolSingleton
  13. {
  14. protected function __construct()
  15. {
  16. if (isset($GLOBALS['bxDolClasses'][get_class($this)]))
  17. trigger_error ('Multiple instances are not allowed for the class: ' . get_class($this), E_USER_ERROR);
  18. parent::__construct();
  19. $this->_sTable = 'sys_audit';
  20. }
  21. /**
  22. * Prevent cloning the instance
  23. */
  24. public function __clone()
  25. {
  26. if (isset($GLOBALS['bxDolClasses'][get_class($this)]))
  27. trigger_error('Clone is not allowed for the class: ' . get_class($this), E_USER_ERROR);
  28. }
  29. /**
  30. * Get singleton instance of the class
  31. */
  32. public static function getInstance()
  33. {
  34. $sClass = __CLASS__;
  35. if(!isset($GLOBALS['bxDolClasses'][__CLASS__]))
  36. $GLOBALS['bxDolClasses'][__CLASS__] = new $sClass();
  37. return $GLOBALS['bxDolClasses'][__CLASS__];
  38. }
  39. public function getData($aParams = array(), &$aItems = false)
  40. {
  41. $aMethod = array('name' => 'getAll', 'params' => array(0 => 'query'));
  42. $sSelectClause = "`sc`.*";
  43. $sJoinClause = $sWhereClause = $sGroupClause = $sLimitClause = "";
  44. $sOrderClause = "`sc`.`added` ASC";
  45. if(isset($aParams['count_only']) && $aParams['count_only'] === true) {
  46. $aMethod['name'] = 'getOne';
  47. $sSelectClause = "COUNT(`sc`.`id`)";
  48. }
  49. switch($aParams['type']) {
  50. case 'profile_list':
  51. $aMethod['name'] = 'getColumn';
  52. $sSelectClause = " DISTINCT `sc`.`profile_id`";
  53. break;
  54. case 'action_list':
  55. $aMethod['name'] = 'getColumn';
  56. $sSelectClause = " DISTINCT `sc`.`action_lang_key`";
  57. break;
  58. }
  59. if(!empty($sGroupClause))
  60. $sGroupClause = "GROUP BY " . $sGroupClause;
  61. if(!empty($sOrderClause))
  62. $sOrderClause = "ORDER BY " . $sOrderClause;
  63. $aMethod['params'][0] = "SELECT " . $sSelectClause . "
  64. FROM `" . $this->_sTable . "` AS `sc`" . $sJoinClause . "
  65. WHERE 1" . $sWhereClause . " " . $sGroupClause . " " . $sOrderClause. " " . $sLimitClause;
  66. $oRv = call_user_func_array(array($this, $aMethod['name']), $aMethod['params']);
  67. if ($aItems === false)
  68. return $oRv;
  69. $aItems = $oRv;
  70. }
  71. }
  72. /** @} */