Example #1
0
 public function show($groupName)
 {
     $group = Group::name($groupName)->with('creator')->firstOrFail();
     $group->checkAccess();
     $stats = ['contents' => intval(Content::where('group_id', $group->getKey())->count()), 'comments' => intval(Content::where('group_id', $group->getKey())->sum('comments')), 'entries' => intval(Entry::where('group_id', $group->getKey())->count()), 'banned' => intval(GroupBan::where('group_id', $group->getKey())->count()), 'subscribers' => $group->subscribers, 'moderators' => intval(GroupModerator::where('group_id', $group->getKey())->count())];
     return array_merge($group->toArray(), ['stats' => $stats]);
 }
 public function removeModerator()
 {
     $moderator = GroupModerator::findOrFail(request('id'));
     $group = $moderator->group;
     if (!user()->isAdmin($moderator->group)) {
         abort(403, 'Access denied');
     }
     if ($moderator->user_id == $group->creator_id && Auth::id() != $group->creator_id) {
         return response()->json(['status' => 'error']);
     }
     $moderator->delete();
     // Log this action
     $action = new ModeratorAction();
     $action->type = ModeratorAction::TYPE_MODERATOR_REMOVED;
     $action->is_admin = $moderator->type == 'admin' ? true : false;
     $action->moderator()->associate(user());
     $action->target()->associate($moderator);
     $action->group()->associate($group);
     $action->save();
     \Cache::tags(['user.moderated-groups', 'u.' . $moderator->user_id])->flush();
     return response()->json(['status' => 'ok']);
 }
Example #3
0
 public function getInfo($user)
 {
     $stats = ['contents' => (int) $user->contents->count(), 'comments' => (int) $user->comments->count(), 'entries' => (int) $user->entries->count(), 'moderated_groups' => intval(GroupModerator::where('user_id', $user->getKey())->count())];
     return ['name' => $user->name, 'age' => $user->age, 'avatar' => $user->avatar, 'description' => $user->description, 'joined' => current($user->created_at), 'location' => $user->location, 'sex' => $user->sex, 'stats' => $stats];
 }
Example #4
0
 public function createGroup(Request $request)
 {
     // Require 15 minutes break before creating next group
     $group = Group::where('creator_id', Auth::id())->orderBy('created_at', 'desc')->first();
     if ($group && $group->created_at->diffInMinutes() < 30) {
         Input::flash();
         $diff = 30 - $group->created_at->diffInMinutes();
         $minutes = Lang::choice('pluralization.minutes', $diff);
         return Redirect::action('GroupController@showCreateForm')->with('danger_msg', 'Kolejną grupę będziesz mógł utworzyć za ' . $minutes);
     }
     $this->validate($request, ['urlname' => 'required|min:3|max:32|unique:groups|reserved_groupnames|regex:/^[a-zA-Z0-9_żźćńółęąśŻŹĆĄŚĘŁÓŃ]+$/i', 'groupname' => 'required|min:3|max:50', 'desc' => 'max:255']);
     $group = new Group();
     $group->urlname = Input::get('urlname');
     $group->name = Input::get('groupname');
     $group->description = Input::get('description');
     $group->creator()->associate(Auth::user());
     $group->save();
     $moderator = new GroupModerator();
     $moderator->group()->associate($group);
     $moderator->user()->associate(Auth::user());
     $moderator->type = 'admin';
     $moderator->save();
     return Redirect::route('group_contents', $group->urlname)->with('success_msg', 'Nowa grupa o nazwie ' . $group->name . ' została utworzona.');
 }