1
0

BxDolAuditQuery.php 2.7 KB

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