public function acceptChanges(Character $character) { if ($character->in_review) { $character->approved_version = $character->latestVersion()->version; $character->in_review = false; //Inactivate all other characters this player owns. if (!$character->owner->isStoryteller()) { $was_active = $character->active; foreach (Character::where('user_id', $character->owner->id)->get() as $c) { $c->active = false; $c->save(); } $character->active = true; if (!$was_active) { //This is a new character $character->owner->sendMessage(null, "New Character Accepted", "The Storytellers have accepted your character \"" . $character->name . "\"." . " Any of your characters that were previously active have been inactivated." . " You have been granted access to your new clan's forum, and access to your old" . " clan forum has been revoked. If you have any questions, please post in the " . " \"General Messages\" forum."); $character->approved_at = new DateTime(); $xp_cost = $character->getExperienceCost(1); $character->experience -= 10 - $xp_cost; Cache::forget("character-experience-{$character->id}"); $character->save(); } else { $character->owner->sendMessage(null, "Changes to " . $character->name . " Accepted", "The Storytellers have accepted your changes to \"" . $character->name . "\"." . " You can now access your character and make further changes as necessary."); } } $character->save(); } Cache::forget('forum-listing-' . $character->owner->id); return Redirect::to($_SERVER['HTTP_REFERER']); }
public function saveCharacter() { $user = Auth::user(); if ($user) { // Make sure we have a name. if (strlen(trim(Input::get("sheet.name"))) == 0) { return Response::json(["success" => false, "mode" => 2, "message" => "Characters must have a name."]); } $character = Character::find(Input::get('characterId')); if ($character) { if (Character::where('id', Input::get('characterId'))->first()->user_id != $user->id && !$user->isStoryteller()) { return Response::json(array("success" => false, "mode" => 0, "message" => "Unauthorized")); } } try { DB::beginTransaction(); $version = $this->save(); $character = $version->character; if (Input::get("review") && !($character->getOptionValue("Ignore Validation") || $user->isStoryteller())) { $character->verify($character->approved_version + 1, $character->approved_version == 0); } DB::commit(); } catch (Exception $e) { DB::rollback(); if (get_class($e) == "CharacterValidationException") { return Response::json(array("success" => false, "mode" => 2, "message" => $e->getMessage())); } return Response::json(array("success" => false, "mode" => 0, "message" => $e->getMessage() . "[" . $e->getFile() . "\$" . $e->getLine() . "]")); } if (Input::get("review")) { if ($user->isStoryteller()) { $character->approved_version = $version->version; $character->in_review = false; if (!$character->is_active) { $character->approved_at = new DateTime(); } $character->save(); } else { //41 = Character Changes $character->in_review = true; $character->save(); $topic = ($version->isNewCharacter() ? "New Character " : "Character Changes to ") . "\"" . $character->name . "\" from " . $user->username; $versionNumber = $version->version; Forum::find(41)->post($topic, "[[change/{$character->id}/{$versionNumber}]]"); } } return Response::json(["success" => true, "mode" => 0, "message" => Input::get("review") ? "In review queue." : "Saved successfully."]); } else { return Response::json(array("success" => false, "message" => "Unable to validate user.")); } }
type: 'post', data: { characterId: self.promptDeleteId() }, success: function(data) { document.location = "/dashboard/characters"; } }); } @stop @section('storyteller-content') <?php $request = ["all" => Character::where('id', '>', 0), "complete" => Character::where(array('is_npc' => false, 'in_review' => false, 'active' => true))->where('approved_version', '>', 0), "changed" => Character::where(array('is_npc' => false, 'in_review' => true, 'active' => true))->where('approved_version', '>', 0), "new" => Character::where(array('is_npc' => false, 'in_review' => true, 'active' => false)), "npcs" => Character::where(array('is_npc' => true)), "npcs-active" => Character::where(array('is_npc' => true, 'active' => true))]; ?> <div id="delete-modal" class="reveal-modal" data-reveal aria-labelledby="deleteModalTitle" aria-hidden="true" role="dialog"> <h2 id="deleteModalTitle">Delete <span data-bind="text: promptDeleteName"></span>?</h2> <p>Are you sure you wish to delete <span data-bind="text: promptDeleteName"></span>? <b>This cannot be undone.</b></p> <p>Type this character's name into the box below to confirm the delete.</p> <input type="text" data-bind="textInput: $root.promptDeleteField, valueUpdate: afterkeydown" placeholder="Confirm..." /> <hr> <button class="button alert small" data-bind="click: completeDelete, css: {'disabled': !canDelete() }">Delete</button> <a class="close-reveal-modal" aria-label="Close">×</a> </div> <div class="row left"> <dl class="sub-nav"> <dt>Filter:</dt> <dd class="{{$filter == 'all' ? 'active' : ''}}">
public function activeCharacter() { return Character::where(["user_id" => $this->id, "active" => true])->first(); }
public static function activeNPCs() { return Character::where(['is_npc' => true, 'active' => true]); }