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.']);
     }
 }
示例#2
0
 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;
 }
示例#3
0
@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)
示例#4
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) 
示例#5
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;
 }