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

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