Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <?php
  2. namespace Luticate\Utils\Business;
  3. use Luticate\Utils\Dbo\LuDbo;
  4. use Luticate\Utils\LuDataAccess;
  5. abstract class LuBusiness {
  6. public static $parameters = array();
  7. /**
  8. * @param string $name
  9. * @param mixed $default
  10. * @return mixed
  11. */
  12. public static function getParam($name, $default = null)
  13. {
  14. return array_key_exists($name, self::$parameters) ? self::$parameters[$name] : $default;
  15. }
  16. /**
  17. * @param string[] $params
  18. * @return bool
  19. */
  20. public static function hasParam(array $params)
  21. {
  22. foreach ($params as $p) {
  23. if (!array_key_exists($p, self::$parameters)) {
  24. return false;
  25. }
  26. }
  27. return true;
  28. }
  29. /**
  30. * @param string $param
  31. * @param mixed $validate
  32. * @return string
  33. */
  34. public static function checkParam($param, $validate = null)
  35. {
  36. if (!self::hasParam(array($param)))
  37. abort(400, 'Missing parameter: ' . $param);
  38. $value = self::getParam($param);
  39. if ($validate != null) {
  40. if (is_callable($validate)) {
  41. $validate = $validate($value);
  42. }
  43. else {
  44. $validate = preg_match($validate, $value);
  45. }
  46. if (!$validate)
  47. abort(400, 'Bad parameter value: ' . $param);
  48. }
  49. return $value;
  50. }
  51. /**
  52. * @param string
  53. */
  54. public static function unauthorized($reason = 'Unauthorized')
  55. {
  56. abort(401, $reason);
  57. }
  58. /**
  59. * @param string
  60. */
  61. public static function notFound($reason = 'Resource not found')
  62. {
  63. abort(404, $reason);
  64. }
  65. /**
  66. * @param string
  67. */
  68. public static function badInput($reason = 'Invalid user input')
  69. {
  70. abort(400, $reason);
  71. }
  72. /**
  73. * @param $param string
  74. * @param $values string[]
  75. * @return string
  76. */
  77. public static function getParamInArray($param, $values)
  78. {
  79. $value = self::getParam($param);
  80. if (is_null($value) || !in_array($value, $values))
  81. $value = $values[0];
  82. return $value;
  83. }
  84. /**
  85. * @param $param string
  86. * @param $default int
  87. * @return int
  88. */
  89. public static function getParamInt($param, $default = 0)
  90. {
  91. $value = self::getParam($param);
  92. if (!is_null($value) && is_numeric($value))
  93. return (int)$value;
  94. return $default;
  95. }
  96. /**
  97. * @param $id int
  98. * @return LuDbo|null
  99. */
  100. public static function getById($id)
  101. {
  102. $data = static::getDataAccess()->getById($id);
  103. if (is_null($data))
  104. self::notFound(static::getResourceName() . " not found");
  105. return $data;
  106. }
  107. /**
  108. * @param $id int
  109. * @return true
  110. */
  111. public static function deleteById($id)
  112. {
  113. $res = static::getDataAccess()->deleteById($id);
  114. if (!$res)
  115. self::notFound(static::getResourceName() . " not found");
  116. return true;
  117. }
  118. /**
  119. * @return LuDataAccess
  120. */
  121. protected static function getDataAccess()
  122. {
  123. return null;
  124. }
  125. public static function getAll($page = 0, $perPage = PHP_INT_MAX, $query = "")
  126. {
  127. return static::getDataAccess()->getAll($page, $perPage, $query);
  128. }
  129. public static function getResourceName()
  130. {
  131. $match = [];
  132. preg_match('/([^\\\\]*)Business$/', get_called_class(), $match);
  133. return $match[1];
  134. }
  135. }