Controller.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. <?php
  2. namespace App\Http\Controllers\Teacher;
  3. use Illuminate\Routing\Controller as BaseController;
  4. use Illuminate\Support\Facades\Auth;
  5. use Request;
  6. use Illuminate\Pagination\LengthAwarePaginator;
  7. use Illuminate\Pagination\Paginator;
  8. use Illuminate\Support\Collection;
  9. /**
  10. * 父控制类类
  11. *
  12. * @author wangzhoudong <m@9026.com>
  13. */
  14. abstract class Controller extends BaseController
  15. {
  16. protected $_user;
  17. protected $_serviceAdminRole;
  18. public function __construct() {
  19. $this->middleware(function ($request, $next) {
  20. $this->_user = Auth::guard('teacher')->user();
  21. view()->share('_user',$this->_user);
  22. return $next($request);
  23. });
  24. }
  25. /**
  26. * 检测表单篡改
  27. *
  28. * @return true|exception
  29. */
  30. protected function checkFormHash()
  31. {
  32. return (new Formhash())->checkFormHash();
  33. }
  34. /**
  35. * 启用操作日志记录
  36. */
  37. protected function setActionLog($extDatas = [])
  38. {
  39. return app()->make(Mark::BIND_NAME)->setMarkYes()->setExtDatas($extDatas);
  40. }
  41. /**
  42. * 显示提示消息
  43. */
  44. public function showMessage($msg, $links = NULL, $data = NULL, $redirect = true)
  45. {
  46. $this->_showMessage($msg, $links, $data, SUCESS_CODE, $redirect);
  47. }
  48. /**
  49. * 显示错误消息
  50. */
  51. public function showWarning($msg, $links = NULL, $data = NULL, $redirect = true)
  52. {
  53. $this->_showMessage($msg, $links, $data, FAILURE_CODE, $redirect);
  54. }
  55. /**
  56. * 显示消息
  57. */
  58. public function _showMessage($msgs, $links, $data, $code, $redirect)
  59. {
  60. header("Content-type:text/html;charset=utf-8");
  61. if(!is_array($msgs)) {
  62. $msgs = array($msgs);
  63. }
  64. $urls = $links;
  65. if(!is_array($links)) {
  66. $urls = array();
  67. if($links) {
  68. $urls[0]['url'] = $links;
  69. }elseif(isset($_SERVER['HTTP_REFERER'])) {
  70. $urls[0]['url'] = $_SERVER['HTTP_REFERER'];
  71. }else{
  72. $urls[0]['url'] = 'javascript:history.back();';
  73. }
  74. $urls[0]['title'] = '点击立即跳转';
  75. }
  76. if($redirect) {
  77. $redirect = $urls[0]['url'];
  78. $redirect = (strstr($redirect, 'javascript:') !== false) ? $redirect : "location.href='{$redirect}'";
  79. } else {
  80. $redirect = '';
  81. }
  82. if(Request::ajax()){
  83. $retval['msg'] = $msgs;
  84. $retval['redirect'] = $redirect;
  85. $retval['data'] = $data;
  86. $retval['status'] = $code;
  87. echo json_encode($retval);exit;
  88. return ;
  89. }
  90. if($links=="refresh") {
  91. echo "<script>alert('{$msgs[0]}');</script>";
  92. echo "<script>window.close();</script>";
  93. echo "<script>opener.location.reload();</script>";
  94. exit;
  95. }
  96. if($code==SUCESS_CODE) {
  97. $ico = '<i class="fa fa-check"></i>';
  98. $titleHtml = '信息提示';
  99. }else{
  100. $ico = '<i class="fa fa-warning"></i>';
  101. $titleHtml = '错误警告';
  102. }
  103. $msgHtml = '';
  104. foreach ($msgs as $msg) {
  105. $msgHtml .= "<li>$msg</li>";
  106. }
  107. $urlHtml = '';
  108. foreach ($urls as $url) {
  109. if($url['url'] == 'history_back'){
  110. $u = "javascript:history.back();";
  111. }else{
  112. $u = $url['url'];
  113. }
  114. $urlHtml .= '&nbsp;<a class="btn btn-primary" href="' . $u . '" >' . $url['title'] . '</a>';
  115. }
  116. $html ='<!DOCTYPE html>
  117. <html>
  118. <head>
  119. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  120. <meta name="renderer" content="webkit">
  121. <title>' . $titleHtml .'</title>
  122. <link href="/base/css/bootstrap.min.css?v=3.4.0.css" rel="stylesheet">
  123. <link href="/base/css/font-awesome.min.css?v=4.3.0.css" rel="stylesheet">
  124. <link href="/base/css/style.min.css?v=3.0.0.css" rel="stylesheet">
  125. <script type="text/javascript">
  126. setTimeout(function(){
  127. var url = "' . $urls[0]['url'] . '";
  128. if(url == "history_back"){
  129. window.location.href = history.back();
  130. }else{
  131. window.location.href = url;
  132. }
  133. }, 3000);
  134. </script>
  135. </head>
  136. <body class="gray-bg">
  137. <div class="ibox-content middle-box" style="width:600px; margin-top: 150px;">
  138. <h2 class="text-center">' . $ico . ' ' . $titleHtml . '</h2>
  139. <ul class="todo-list m-t ui-sortable">
  140. ' . $msgHtml . '
  141. </ul>
  142. <div class="text-center">
  143. 该页面将在 3 秒钟后自动转向
  144. </div>
  145. <div class="text-center" style="margin-top: 10px;">
  146. ' . $urlHtml . '
  147. <a href="javascript:history.back();" class="btn btn-success">
  148. 返回
  149. </a>
  150. </div>
  151. </div>
  152. </body>
  153. </html>';
  154. exit($html);
  155. }
  156. public function paginate($items, $perPage = 15, $page = null, $options = [])
  157. {
  158. $page = $page ?: (Paginator::resolveCurrentPage() ?: 1);
  159. $items = $items instanceof Collection ? $items : Collection::make($items);
  160. $options['path'] = $this->getPaginateUrl();
  161. return new LengthAwarePaginator($items->forPage($page, $perPage), $items->count(), $perPage, $page, $options);
  162. }
  163. public function getPaginateUrl()
  164. {
  165. $url = url()->full();
  166. $url_arr = explode('?', $url);
  167. $url_end = '';
  168. if(count($url_arr) > 1) {
  169. $params = explode('&', $url_arr[1]);
  170. $params_arr = [];
  171. foreach($params as $key => $value) {
  172. $param = explode('=', $value);
  173. $params_arr[$param[0]] = count($param) > 1 ? $param[1] : '';
  174. }
  175. $id = 0;
  176. foreach($params_arr as $key => $value) {
  177. if($key != 'page') {
  178. $prefix = $id == 0 ? '?' : '&';
  179. $url_end .= $prefix . $key . '=' . $value;
  180. ++$id;
  181. }
  182. }
  183. }
  184. return $url_arr[0] . $url_end;
  185. }
  186. }