public function removeCharacterForumPermission(Forum $forum) { $character = Character::find(Input::get('character')); if ($character != null) { ForumCharacterPermission::where(['character_id' => $character->id, 'forum_id' => $forum->id])->delete(); Cache::flush(); return Redirect::to("dashboard/storyteller/manage/forums/{$forum->id}/characters"); } else { return Response::json(['success' => false, 'message' => 'Invalid data.']); } }
public function rawTopicsForUser($user_id) { $user = User::find($user_id); $query = DB::table('forums_topics')->select(DB::raw("forums_topics.id, forum_id, title, first_post, is_complete, is_sticky, views, forums_topics.created_at, forums_topics.updated_at, fpost.topic_id"))->where('forum_id', $this->id)->leftJoin('forums_posts as fpost', 'forums_topics.first_post', '=', 'fpost.id'); if ($this->time_limited && !$user->isStoryteller()) { $char = $user->activeCharacter(); if ($char) { $timestamp = 0; $date_added = ForumCharacterPermission::where(['forum_id' => $this->id, 'character_id' => $char->id]); if ($date_added->exists()) { $timestamp = $date_added->first()->created_at; } else { if (!$this->is_private) { //Get version 1 creation date. $timestamp = CharacterVersion::where(['character_id' => $char->id, 'version' => 1])->first()->created_at; } } $query = $query->where(function ($q) use($timestamp) { $q->where('fpost.created_at', '>', $timestamp); $q->orWhere('forums_topics.is_sticky', true); }); } else { $query = $query->where('fpost.id', '<', 0); } } if ($this->player_specific_threads) { if (!$user->isStoryteller()) { $query = $query->leftJoin("forums_topics_added_users as added", function ($join) use($user_id) { $join->on("added.topic_id", "=", "forums_topics.id")->where('added.user_id', '=', $user_id); })->where(function ($q) use($user_id) { $q->where('fpost.posted_by', $user_id)->orWhereNotNull('added.user_id'); }); } } return $query; }
@endif <h3 class="topic-title">{{$topic->title}}</h3> <?php $added_users = $topic->addedUsers; $added_successfully = []; $added_failure = []; $before_time = []; foreach ($added_users as $u) { if ($u->user->canAccessTopic($topic->id)) { $added_successfully[] = $u->user->username; } else { $added_failure[] = $u->user->username; } } if ($forum->is_private) { foreach (ForumCharacterPermission::where(['forum_id' => $forum->id])->get() as $c) { if (!$c->character->owner->canAccessTopic($topic->id)) { $before_time[] = $c->character->name; } } } ?> @if(count($added_successfully) > 0 || count($added_failure) > 0 || count($before_time) > 0) <div class="added-user-list"> @if(count($added_successfully) > 0) {{Helpers::nl_join($added_successfully)}} can also see this thread.<br> @endif @if(count($added_failure) > 0) {{Helpers::nl_join($added_failure)}} {{count($added_failure) == 1 ? "has" : "have"}} been added, but can't view the thread.<br> @endif @if(count($before_time) > 0)
<ul class="button-group breadcrumb-group"> <li><a href="/forums" class="button small secondary"><i class="icon-home"></i></a></li> <li><a href="#" class="button small secondary">{{$forum->name}}</a></li> </ul> @if($forum->topic_permission == null || Auth::user()->hasPermissionById($forum->topic_permission)) <a href="/forums/{{$forum->id}}/post" class="button secondary small right"><i class="icon-plus"></i> New Topic</a> @endif <h3 class="topic-title">{{$forum->name}}</h3> @if(ForumCharacterPermission::where('forum_id', $forum->id)->count() > 0) <div class="character-access-list">Characters with access: <?php $list = []; foreach (ForumCharacterPermission::where('forum_id', $forum->id)->get() as $perm) { $list[] = $perm->character->name; } ?> {{implode(", ", $list)}} </div> @endif <?php $user = Auth::user(); $topics = $forum->topicsForUserInOrder($user->id); $pageSize = $user->getSettingValue("Threads Per Page"); $pagination = $topics->paginate($pageSize ? $pageSize : 15); ?> <div class="topic-pagination">{{$pagination->links()}}</div> @if($pagination->count() == 0)
public function forums() { //Everyone has access to unrestricted forums. $collection = Forum::with('category')->whereNotNull('category_id')->orderBy('position')->get(); $character = $this->activeCharacter(); $sect = $character ? $character->sect()->first() : null; $clan = $character ? $character->clan()->first() : null; if (!$this->isStoryteller()) { foreach ($collection as $k => $c) { $allowed = true; if ($c->sect_id != 0) { if ($sect) { $sect_id = $sect->hidden_id ? $sect->hidden_id : $sect->sect_id; if ($sect_id != $c->sect_id) { $allowed = false; } } else { $allowed = false; } } if ($c->clan_id != null) { if ($clan) { $clan_id = $clan->hidden_id ? $clan->hidden_id : $clan->clan_id; if ($clan_id != $c->clan_id) { $allowed = false; } } else { $allowed = false; } } if ($c->background_id != null) { if ($character == null) { $allowed = false; } else { if ($character->backgrounds()->where('background_id', $c->background_id)->count() == 0) { $allowed = false; } } } if ($c->read_permission != null) { if (!$this->hasPermissionById($c->read_permission)) { $allowed = false; } } if ($c->is_private) { if ($character == null) { $allowed = false; } else { if (!ForumCharacterPermission::where(['forum_id' => $c->id, 'character_id' => $character->id])->exists()) { $allowed = false; } } } if (!$allowed) { $collection->forget($k); } } } return $collection; }