Selaa lähdekoodia

:art: formatting

visuddhinanda 1 vuosi sitten
vanhempi
sitoutus
a53334eef8
1 muutettua tiedostoa jossa 177 lisäystä ja 180 poistoa
  1. 177 180
      api-v8/app/Http/Controllers/DiscussionController.php

+ 177 - 180
api-v8/app/Http/Controllers/DiscussionController.php

@@ -32,24 +32,24 @@ class DiscussionController extends Controller
     {
         //
         $user = AuthApi::current($request);
-        if($user){
+        if ($user) {
             $userInfo = UserApi::getByUuid($user['user_uid']);
         }
-		switch ($request->get('view')) {
+        switch ($request->get('view')) {
             case 'question-by-topic':
-                $topic = Discussion::where('id',$request->get('id'));
-                $topic->where('status',$request->get('status','active'))
-                      ->select('res_id')->first();
-                if(!$topic){
-			        return $this->error("无效的id");
+                $topic = Discussion::where('id', $request->get('id'));
+                $topic->where('status', $request->get('status', 'active'))
+                    ->select('res_id')->first();
+                if (!$topic) {
+                    return $this->error("无效的id");
                 }
-                $table = Discussion::where('res_id',$topic->res_id);
-                $activeNumber = Discussion::where('res_id',$topic->res_id)
-                                            ->where('status','active')->count();
-                $closeNumber = Discussion::where('res_id',$topic->res_id)
-                                            ->where('status','close')->count();
-                $table->where('status',$request->get('status','active'))
-                                    ->where('parent',null);
+                $table = Discussion::where('res_id', $topic->res_id);
+                $activeNumber = Discussion::where('res_id', $topic->res_id)
+                    ->where('status', 'active')->count();
+                $closeNumber = Discussion::where('res_id', $topic->res_id)
+                    ->where('status', 'close')->count();
+                $table->where('status', $request->get('status', 'active'))
+                    ->where('parent', null);
                 break;
             case 'question':
                 /**
@@ -58,7 +58,7 @@ class DiscussionController extends Controller
                  * basic用户看到别人在别人channel发表的discussion
                  *
                  */
-                if(!$user && $request->get('type')==='discussion'){
+                if (!$user && $request->get('type') === 'discussion') {
                     return $this->ok([
                         "rows" => [],
                         "count" => 0,
@@ -66,20 +66,20 @@ class DiscussionController extends Controller
                         'close' => 0,
                         'can_create' => false,
                         'can_reply' => false,
-                        ]);
+                    ]);
                 }
                 $resType = $request->get('res_type');
-                if($user){
+                if ($user) {
                     switch ($resType) {
                         case 'sentence':
                             # code...
                             break;
                         case 'wbw':
-                            $block_uid = Wbw::where('uid',$request->get('id'))->value('block_uid');
-                            if($block_uid){
-                                $channelId = WbwBlock::where('uid',$block_uid)->value('channel_uid');
-                                if($channelId){
-                                    $canEdit = ChannelApi::userCanEdit($user['user_uid'],$channelId);
+                            $block_uid = Wbw::where('uid', $request->get('id'))->value('block_uid');
+                            if ($block_uid) {
+                                $channelId = WbwBlock::where('uid', $block_uid)->value('channel_uid');
+                                if ($channelId) {
+                                    $canEdit = ChannelApi::userCanEdit($user['user_uid'], $channelId);
                                 }
                             }
                             break;
@@ -91,7 +91,7 @@ class DiscussionController extends Controller
 
 
                 $resId = [$request->get('id')];
-                if(!empty($request->get('course'))){
+                if (!empty($request->get('course'))) {
                     //
                     /**
                      * 如果res id 是答案,获取学员提问
@@ -99,116 +99,118 @@ class DiscussionController extends Controller
                      */
                     //获取学员提问
                     //获取学员channel
-                    if($request->get('show_student') === 'true'){
+                    if ($request->get('show_student') === 'true') {
                         $channelsId = CourseApi::getStudentChannels($request->get('course'));
                         switch ($resType) {
                             case 'wbw':
                                 //获取答案单词编号
-                                $wbwWord = Wbw::where('uid',$request->get('id'))
-                                            ->first();
+                                $wbwWord = Wbw::where('uid', $request->get('id'))
+                                    ->first();
                                 $wbwId = WbwSentenceController::getWbwIdByChannels(
-                                                $channelsId,
-                                                $wbwWord->book_id,
-                                                $wbwWord->paragraph,
-                                                $wbwWord->wid);
-                                $resId = array_merge($resId,$wbwId);
+                                    $channelsId,
+                                    $wbwWord->book_id,
+                                    $wbwWord->paragraph,
+                                    $wbwWord->wid
+                                );
+                                $resId = array_merge($resId, $wbwId);
                                 break;
                             case 'sentence':
                                 break;
                         }
                     }
                 }
-                $table = Discussion::whereIn('res_id',$resId)
-                                    ->where('type', $request->get('type','discussion'))
-                                    ->where('status',$request->get('status','active'))
-                                    ->where('parent',null);
-                if($request->get('type')==='discussion'){
-                    if(isset($userInfo) &&
+                $table = Discussion::whereIn('res_id', $resId)
+                    ->where('type', $request->get('type', 'discussion'))
+                    ->where('status', $request->get('status', 'active'))
+                    ->where('parent', null);
+                if ($request->get('type') === 'discussion') {
+                    if (
+                        isset($userInfo) &&
                         isset($userInfo['roles']) &&
-                        in_array('basic',$userInfo['roles'])){
-                            if(isset($canEdit) && $canEdit===true){
-
-                            }else{
-                               $table = $table->where('editor_uid',$userInfo['id']);
-                            }
+                        in_array('basic', $userInfo['roles'])
+                    ) {
+                        if (isset($canEdit) && $canEdit === true) {
+                        } else {
+                            $table = $table->where('editor_uid', $userInfo['id']);
+                        }
                     }
                 }
-                $activeNumber = Discussion::whereIn('res_id',$resId)
-                                            ->where('parent',null)
-                                            ->where('type', $request->get('type','discussion'))
-                                            ->where('status','active')->count();
-                $closeNumber = Discussion::whereIn('res_id',$resId)
-                                            ->where('parent',null)
-                                            ->where('type', $request->get('type','discussion'))
-                                            ->where('status','close')->count();
+                $activeNumber = Discussion::whereIn('res_id', $resId)
+                    ->where('parent', null)
+                    ->where('type', $request->get('type', 'discussion'))
+                    ->where('status', 'active')->count();
+                $closeNumber = Discussion::whereIn('res_id', $resId)
+                    ->where('parent', null)
+                    ->where('type', $request->get('type', 'discussion'))
+                    ->where('status', 'close')->count();
                 break;
             case 'answer':
-                $table = Discussion::where('parent',$request->get('id'));
-                $activeNumber = Discussion::where('parent',$request->get('id'))
-                                        ->where('status','active')->count();
-                $closeNumber = Discussion::where('parent',$request->get('id'))
-                                        ->where('status','close')->count();
+                $table = Discussion::where('parent', $request->get('id'));
+                $activeNumber = Discussion::where('parent', $request->get('id'))
+                    ->where('status', 'active')->count();
+                $closeNumber = Discussion::where('parent', $request->get('id'))
+                    ->where('status', 'close')->count();
                 break;
             case 'res_id':
                 /**
                  * 先获取顶级节点
                  * 需要确定用户身份,manager查看全部topic 普通用户只显示自己提交的topic
                  */
-                $roots = Discussion::where('res_id',$request->get('id'))
-                                    ->where('type', $request->get('type','discussion'))
-                                    ->whereIn('status',explode(',',$request->get('status','active')) )
-                                    ->where('parent',null)
-                                    ->select('id')
-                                    ->get();
+                $roots = Discussion::where('res_id', $request->get('id'))
+                    ->where('type', $request->get('type', 'discussion'))
+                    ->whereIn('status', explode(',', $request->get('status', 'active')))
+                    ->where('parent', null)
+                    ->select('id')
+                    ->get();
 
                 $table = Discussion::where(function ($query) use ($roots) {
-                                        $query->whereIn('id'  , $roots)
-                                            ->orWhereIn('parent', $roots);
-                                        });
-                $activeNumber = Discussion::where('res_id',$request->get('id'))
-                                            ->where('type', $request->get('type','discussion'))
-                                            ->where('status','active')->count();
-                $closeNumber = Discussion::where('res_id',$request->get('id'))
-                                            ->where('type', $request->get('type','discussion'))
-                                            ->where('status','close')->count();
+                    $query->whereIn('id', $roots)
+                        ->orWhereIn('parent', $roots);
+                });
+                $activeNumber = Discussion::where('res_id', $request->get('id'))
+                    ->where('type', $request->get('type', 'discussion'))
+                    ->where('status', 'active')->count();
+                $closeNumber = Discussion::where('res_id', $request->get('id'))
+                    ->where('type', $request->get('type', 'discussion'))
+                    ->where('status', 'close')->count();
                 break;
             case 'topic-by-user':
                 /**
                  * 某用户发表的全部topic
                  *
                  */
-                if(!$user){
-                    return $this->error('',403,403);
+                if (!$user) {
+                    return $this->error('', 403, 403);
                 }
-                $table = Discussion::where('editor_uid',$user['user_uid'])
-                                    ->where('type', $request->get('type','discussion'))
-                                    ->whereIn('status',explode(',',$request->get('status','active')) )
-                                    ->where('parent',null);
-                $activeNumber = Discussion::where('editor_uid',$user['user_uid'])
-                                            ->where('parent',null)
-                                            ->where('type', $request->get('type','discussion'))
-                                            ->where('status','active')->count();
-                $closeNumber = Discussion::where('editor_uid',$user['user_uid'])
-                                            ->where('parent',null)
-                                            ->where('type', $request->get('type','discussion'))
-                                            ->where('status','close')->count();
+                $table = Discussion::where('editor_uid', $user['user_uid'])
+                    ->where('type', $request->get('type', 'discussion'))
+                    ->whereIn('status', explode(',', $request->get('status', 'active')))
+                    ->where('parent', null);
+                $activeNumber = Discussion::where('editor_uid', $user['user_uid'])
+                    ->where('parent', null)
+                    ->where('type', $request->get('type', 'discussion'))
+                    ->where('status', 'active')->count();
+                $closeNumber = Discussion::where('editor_uid', $user['user_uid'])
+                    ->where('parent', null)
+                    ->where('type', $request->get('type', 'discussion'))
+                    ->where('status', 'close')->count();
                 break;
             case 'all':
-                $table = Discussion::where('parent',null);
-                $activeNumber = Discussion::where('parent',null)
-                                        ->where('status','active')->count();
-                $closeNumber = Discussion::where('parent',null)
-                                        ->where('status','close')->count();
+                $table = Discussion::where('parent', null);
+                $activeNumber = Discussion::where('parent', null)
+                    ->where('status', 'active')->count();
+                $closeNumber = Discussion::where('parent', null)
+                    ->where('status', 'close')->count();
                 break;
         }
-        if(!empty($search)){
-            $table = $table->where('title', 'like', $search."%");
+        if (!empty($search)) {
+            $table = $table->where('title', 'like', $search . "%");
         }
         $count = $table->count();
 
-        $table = $table->orderBy($request->get('order','created_at'),$request->get('dir','desc'));
-        $table = $table->skip($request->get("offset",0))
-              ->take($request->get('limit',1000));
+        $table = $table->orderBy($request->get('order', 'created_at'), $request->get('dir', 'desc'));
+        $table = $table->skip($request->get("offset", 0))
+            ->take($request->get('limit', 1000));
 
         $result = $table->get();
 
@@ -216,11 +218,11 @@ class DiscussionController extends Controller
         $can_reply = false;
         $user = AuthApi::current($request);
 
-        switch ($request->get('type','discussion')) {
+        switch ($request->get('type', 'discussion')) {
             case 'qa':
                 switch ($request->get('res_type')) {
                     case 'article':
-                        if($user && ArticleController::userCanEditId($user['user_uid'],$request->get('id'))){
+                        if ($user && ArticleController::userCanEditId($user['user_uid'], $request->get('id'))) {
                             $can_create = true;
                             $can_reply = true;
                         }
@@ -230,9 +232,9 @@ class DiscussionController extends Controller
             case 'help':
                 switch ($request->get('res_type')) {
                     case 'article':
-                        if($user){
+                        if ($user) {
                             $can_reply = true;
-                            if(ArticleController::userCanEditId($user['user_uid'],$request->get('id'))){
+                            if (ArticleController::userCanEditId($user['user_uid'], $request->get('id'))) {
                                 $can_create = true;
                             }
                         }
@@ -240,7 +242,7 @@ class DiscussionController extends Controller
                 }
                 break;
             case 'discussion':
-                if($user){
+                if ($user) {
                     $can_create = true;
                     $can_reply = true;
                 }
@@ -254,27 +256,27 @@ class DiscussionController extends Controller
             'close' => $closeNumber,
             'can_create' => $can_create,
             'can_reply' => $can_reply,
-            ]);
-
+        ]);
     }
 
-    public function discussion_tree(Request $request){
+    public function discussion_tree(Request $request)
+    {
         $output = [];
         $sentences = $request->get("data");
         foreach ($sentences as $key => $sentence) {
             # 先查句子信息
-            $sentInfo = Sentence::where('book_id',$sentence['book'])
-                                ->where('paragraph',$sentence['paragraph'])
-                                ->where('word_start',$sentence['word_start'])
-                                ->where('word_end',$sentence['word_end'])
-                                ->where('channel_uid',$sentence['channel_id'])
-                                ->first();
-            if($sentInfo){
-                $sentPr = Discussion::where('res_id',$sentInfo['uid'])
-                                ->whereNull('parent')
-                                ->select('title','children_count','editor_uid')
-                                ->orderBy('created_at','desc')->get();
-                if(count($sentPr)>0){
+            $sentInfo = Sentence::where('book_id', $sentence['book'])
+                ->where('paragraph', $sentence['paragraph'])
+                ->where('word_start', $sentence['word_start'])
+                ->where('word_end', $sentence['word_end'])
+                ->where('channel_uid', $sentence['channel_id'])
+                ->first();
+            if ($sentInfo) {
+                $sentPr = Discussion::where('res_id', $sentInfo['uid'])
+                    ->whereNull('parent')
+                    ->select('title', 'children_count', 'editor_uid')
+                    ->orderBy('created_at', 'desc')->get();
+                if (count($sentPr) > 0) {
                     $output[] = [
                         'sentence' => [
                             'book' => $sentInfo->book_id,
@@ -288,11 +290,9 @@ class DiscussionController extends Controller
                         'pr' => $sentPr,
                     ];
                 }
-
             }
-
         }
-        return $this->ok(['rows'=>$output,'count'=>count($output)]);
+        return $this->ok(['rows' => $output, 'count' => count($output)]);
     }
     /**
      * Store a newly created resource in storage.
@@ -303,52 +303,52 @@ class DiscussionController extends Controller
     public function store(Request $request)
     {
         $user = AuthApi::current($request);
-        if(!$user){
-            Log::error('discussion store auth failed {request}',['request'=>$request]);
-            return $this->error(__('auth.failed'),[401],401);
+        if (!$user) {
+            Log::error('discussion store auth failed {request}', ['request' => $request]);
+            return $this->error(__('auth.failed'), [401], 401);
         }
         //
         // validate
         // read more on validation at http://laravel.com/docs/validation
 
-        if($request->has('parent')){
+        if ($request->has('parent')) {
             $rules = [];
             $parentInfo = Discussion::find($request->get('parent'));
-            if(!$parentInfo){
+            if (!$parentInfo) {
                 return $this->error('no record');
             }
-        }else{
+        } else {
             $rules = array(
-            'res_id' => 'required',
-            'res_type' => 'required',
-            'title' => 'required',
-        );
+                'res_id' => 'required',
+                'res_type' => 'required',
+                'title' => 'required',
+            );
         }
 
         $validated = $request->validate($rules);
 
         $discussion = new Discussion;
-        if($request->has('parent')){
+        if ($request->has('parent')) {
             $discussion->res_id = $parentInfo->res_id;
             $discussion->res_type = $parentInfo->res_type;
-        }else{
+        } else {
             $discussion->res_id = $request->get('res_id');
             $discussion->res_type = $request->get('res_type');
         }
-        $discussion->type = $request->get('type','discussion');
+        $discussion->type = $request->get('type', 'discussion');
         $discussion->tpl_id = $request->get('tpl_id');
-        $discussion->title = $request->get('title',null);
-        $discussion->content = $request->get('content',null);
-        $discussion->content_type = $request->get('content_type',"markdown");
-        $discussion->parent = $request->get('parent',null);
+        $discussion->title = $request->get('title', null);
+        $discussion->content = $request->get('content', null);
+        $discussion->content_type = $request->get('content_type', "markdown");
+        $discussion->parent = $request->get('parent', null);
         $discussion->editor_uid = $user['user_uid'];
         $discussion->save();
         //更新parent children_count
-        if($request->has('parent')){
-            $parentInfo->increment('children_count',1);
+        if ($request->has('parent')) {
+            $parentInfo->increment('children_count', 1);
             $parentInfo->save();
         }
-        Mq::publish('discussion',new DiscussionResource($discussion));
+        Mq::publish('discussion', new DiscussionResource($discussion));
 
         return $this->ok(new DiscussionResource($discussion));
     }
@@ -363,10 +363,9 @@ class DiscussionController extends Controller
     {
         //
         return $this->ok(new DiscussionResource($discussion));
-
     }
 
-        /**
+    /**
      * 获取discussion 锚点的数据。以句子为最小单位,逐词解析也要显示单词所在的句子
      *
      * @param  string  $id
@@ -376,37 +375,36 @@ class DiscussionController extends Controller
     {
         //
         $discussion = Discussion::find($id);
+        $content = '';
         switch ($discussion->res_type) {
             case 'wbw':
                 # 从逐词解析表获取逐词解析数据
-                $wbw = Wbw::where('uid',$discussion->res_id)->first();
-                if(!$wbw){
+                $wbw = Wbw::where('uid', $discussion->res_id)->first();
+                if (!$wbw) {
                     return $this->error('no wbw data');
                 }
-                $wbwBlock = WbwBlock::where('uid',$wbw->block_uid)->first();
-                if(!$wbwBlock){
+                $wbwBlock = WbwBlock::where('uid', $wbw->block_uid)->first();
+                if (!$wbwBlock) {
                     return $this->error('no wbwBlock data');
                 }
-                $sent = PaliSentence::where('book',$wbw->book_id)
-                                    ->where('paragraph',$wbw->paragraph)
-                                    ->where('word_begin','<=',$wbw->wid)
-                                    ->where('word_end','>=',$wbw->wid)
-                                    ->first();
-                if(!$sent){
+                $sent = PaliSentence::where('book', $wbw->book_id)
+                    ->where('paragraph', $wbw->paragraph)
+                    ->where('word_begin', '<=', $wbw->wid)
+                    ->where('word_end', '>=', $wbw->wid)
+                    ->first();
+                if (!$sent) {
                     return $this->error('no sent data');
                 }
                 $sentId = "{$sent['book']}-{$sent['paragraph']}-{$sent['word_begin']}-{$sent['word_end']}";
                 $channel = $wbwBlock->channel_uid;
-                $content = MdRender::render("{{".$sentId."}}",[$channel]);
-                return $this->ok($content);
+                $content = MdRender::render("{{" . $sentId . "}}", [$channel]);
                 break;
 
             default:
                 # code...
                 break;
         }
-        return $this->ok();
-
+        return $this->ok($content);
     }
     /**
      * Update the specified resource in storage.
@@ -419,51 +417,50 @@ class DiscussionController extends Controller
     {
         //
         $user = AuthApi::current($request);
-        if(!$user){
-            return $this->error(__('auth.failed'),[403],403);
+        if (!$user) {
+            return $this->error(__('auth.failed'), [403], 403);
         }
         //
         $isManager = false;
         $isResManager = false;
-        if($discussion->editor_uid === $user['user_uid']){
+        if ($discussion->editor_uid === $user['user_uid']) {
             $isManager = true;
-        }else{
+        } else {
             //查看是否是资源拥有者
-            if($discussion->res_type === 'sentence'){
+            if ($discussion->res_type === 'sentence') {
                 $res = Sentence::find($discussion->res_id);
-                if($res){
+                if ($res) {
                     $channelId = $res->channel_uid;
                 }
-            }else if($discussion->res_type === 'wbw'){
-                $res = Wbw::where('uid',$discussion->res_id)->first();
-                if($res){
-                    $block = WbwBlock::where('uid',$res->block_uid)->first();
-                    if($block){
+            } else if ($discussion->res_type === 'wbw') {
+                $res = Wbw::where('uid', $discussion->res_id)->first();
+                if ($res) {
+                    $block = WbwBlock::where('uid', $res->block_uid)->first();
+                    if ($block) {
                         $channelId = $block->channel_uid;
                     }
                 }
             }
-            if(isset($channelId)){
+            if (isset($channelId)) {
                 $channel = Channel::find($channelId);
-                if($channel){
-                    $isResManager = ChannelApi::userCanEdit($user['user_uid'],$channelId);
+                if ($channel) {
+                    $isResManager = ChannelApi::userCanEdit($user['user_uid'], $channelId);
                 }
             }
         }
-        if(!$isManager && !$isResManager){
-            return $this->error(__('auth.failed'),[403],403);
+        if (!$isManager && !$isResManager) {
+            return $this->error(__('auth.failed'), [403], 403);
         }
 
-        $discussion->title = $request->get('title',null);
-        $discussion->content = $request->get('content',null);
-        $discussion->status = $request->get('status','active');
-        if($request->has('type')){
+        $discussion->title = $request->get('title', null);
+        $discussion->content = $request->get('content', null);
+        $discussion->status = $request->get('status', 'active');
+        if ($request->has('type')) {
             $discussion->type = $request->get('type');
         }
         //$discussion->editor_uid = $user['user_uid'];
         $discussion->save();
         return $this->ok(new DiscussionResource($discussion));
-
     }
 
     /**
@@ -472,16 +469,16 @@ class DiscussionController extends Controller
      * @param  \App\Models\Discussion  $discussion
      * @return \Illuminate\Http\Response
      */
-    public function destroy(Request $request,Discussion $discussion)
+    public function destroy(Request $request, Discussion $discussion)
     {
         //
         $user = AuthApi::current($request);
-        if(!$user){
-            return $this->error(__('auth.failed'),[401],401);
+        if (!$user) {
+            return $this->error(__('auth.failed'), [401], 401);
         }
         //TODO 其他有权限的人也可以删除
-        if($discussion->editor_uid !== $user['user_uid']){
-            return $this->error(__('auth.failed'),[403],403);
+        if ($discussion->editor_uid !== $user['user_uid']) {
+            return $this->error(__('auth.failed'), [403], 403);
         }
         $delete = $discussion->delete();
         return $this->ok($delete);