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']); }
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]; }
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.'); }