Ejemplo n.º 1
0
 public function get_members(){
     $find = Character::find()
         ->realm($this->realm->id)
         ->join("INNER", 'arena_team_member' ,array('weekgames','weekwins','seasongames','seasonwins','personalrating','arenateamid'),'guid')
         ->where(array('arena_team_member.arenateamid' => $this->arenateamid));
     $members = $find->all();
     return $members;
 }
Ejemplo n.º 2
0
 static function charname_unused($charname, $realmid){
     $char = Character::find()->realm($realmid)->where(array('name' => $charname))->first();
     if(isset($char->name) && $char->name == $charname){
         return false;
     } else {
         return true;
     }
 }
Ejemplo n.º 3
0
 function testErase(){
     echo $this->char->erase();
     var_dump($char->errors);
     $this->assertEquals(isset(Character::find()->realm($this->source_realmid)->where(array('guid' => $this->guid))->first()->name),false);
     echo $this->char->load_dump_to_realm($this->source_realmid);
     var_dump($char->errors);
     $this->assertEquals(isset(Character::find()->realm($this->source_realmid)->where(array('guid' => $this->guid))->first()->name),true);
 }
Ejemplo n.º 4
0
 public function get_members(){
     $find = Character::find()
         ->realm($this->realm->id)
         ->join("INNER", 'guild_member' ,array('rank','guildid'),'guid')
         ->where(array('guild_member.guildid' => $this->guildid))
         ->order('guild_member.rank')
         ->limit(500);
     $members = $find->all();
     return $members;
 }
Ejemplo n.º 5
0
 public function afterSave($created, $options)
 {
     // Mark the user as absent in all his games
     // Get characters, so we can also have the game list
     App::uses('Character', 'Model');
     $Character = new Character();
     $params = array();
     $params['recursive'] = -1;
     $params['fields'] = array('Character.id', 'Character.game_id', 'Character.level', 'Character.default_role_id');
     $params['group'] = 'game_id';
     $params['conditions']['user_id'] = $this->data['Availability']['user_id'];
     $params['conditions']['main'] = 1;
     if ($characters = $Character->find('all', $params)) {
         App::uses('Event', 'Model');
         $Event = new Event();
         $Event->Behaviors->detach('Commentable');
         App::uses('EventsCharacter', 'Model');
         $EventsCharacter = new EventsCharacter();
         foreach ($characters as $character) {
             // Get events for this period
             $params = array();
             $params['recursive'] = -1;
             $params['fields'] = array('Event.id');
             $params['conditions']['game_id'] = $character['Character']['game_id'];
             $params['conditions']['character_level <='] = $character['Character']['level'];
             $params['conditions']['time_start >='] = $this->data['Availability']['start'] . ' 00:00:00';
             $params['conditions']['time_start <='] = $this->data['Availability']['end'] . ' 23:59:59';
             if ($events = $Event->find('all', $params)) {
                 foreach ($events as $event) {
                     // If already registered to this event, update it
                     $paramsEventsCharacter = array();
                     $paramsEventsCharacter['recursive'] = -1;
                     $paramsEventsCharacter['fields'] = array('id');
                     $paramsEventsCharacter['conditions']['event_id'] = $event['Event']['id'];
                     $paramsEventsCharacter['conditions']['user_id'] = $this->data['Availability']['user_id'];
                     if ($eventCharacter = $EventsCharacter->find('first', $paramsEventsCharacter)) {
                         $eventCharacter['EventsCharacter']['status'] = 0;
                         $EventsCharacter->save($eventCharacter['EventsCharacter']);
                     } else {
                         $toSave = array();
                         $toSave['event_id'] = $event['Event']['id'];
                         $toSave['user_id'] = $this->data['Availability']['user_id'];
                         $toSave['character_id'] = $character['Character']['id'];
                         $toSave['raids_role_id'] = $character['Character']['default_role_id'];
                         $toSave['comment'] = $this->data['Availability']['comment'];
                         $toSave['status'] = 0;
                         $EventsCharacter->__add($toSave);
                     }
                 }
             }
         }
     }
     return true;
 }
 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.']);
     }
 }
Ejemplo n.º 7
0
 public function testUpdate()
 {
     require __DIR__ . '/config/database_test.php';
     $db = new DatabaseConnection($host, $database, $user, $password);
     $character1 = ['name' => 'Lion Woods', 'description' => 'A wonderful zombie that plays golf better than Tiger Woods', 'type' => 'zombie', 'dead' => '1', 'stage' => '2', 'hp' => '67'];
     $character2 = ['name' => 'Guybrush Threepwood', 'description' => 'How appropriate. You fight like a cow', 'type' => 'pirate', 'dead' => '0', 'stage' => '5', 'hp' => '100'];
     $id = Character::insert($db, $character1);
     Character::update($db, $id, $character2);
     $actual = Character::find($db, $id);
     $character2['id'] = $id;
     $expected = $character2;
     $this->assertEquals($expected, $actual, 'Character::update() not working properly');
 }
 /**
  * @expectedException     StatusCodeException
  * @expectedExceptionCode 404
  */
 public function testPostControllerAndDeleteController()
 {
     require __DIR__ . '/config/database_test.php';
     $controller = new CharacterController();
     $actionMethodName = 'postCharacter';
     $db = new DatabaseConnection($host, $database, $user, $password);
     // Test PostController
     $params = ['name' => 'Guybrush Threepwood', 'description' => 'How appropriate. You fight like a cow', 'type' => 'pirate', 'dead' => '0', 'stage' => '5', 'hp' => '100'];
     $actual = call_user_func_array([$controller, $actionMethodName], [$db, $params]);
     $id = $actual['id'];
     unset($actual['id']);
     $this->assertEquals($params, $actual, 'Inserted row not the same that expected');
     // Testing DeleteController
     $actionMethodName = 'deleteCharacter';
     $actual = call_user_func_array([$controller, $actionMethodName], [$db, $id]);
     Character::find($db, $id);
 }
 public function awardExperience(GameSession $session)
 {
     $ids = Input::get("ids");
     $costumes = Input::get("costumes");
     $nom1s = Input::get("nom1s");
     $nom2s = Input::get("nom2s");
     $overrides = Input::get("overrides");
     $save = Input::get("save");
     $missingCharacters = [];
     foreach ($ids as $index => $id) {
         $character = Character::find($id);
         if ($character) {
             $checkIn = GameSessionCheckIn::where(['session_id' => $session->id, 'character_id' => $character->id])->first();
             $checkIn->costume = $costumes[$index] == "true" ? 1 : 0;
             $checkIn->nominated = $nom1s[$index] == "true" ? 1 : 0;
             $checkIn->nominated_twice = $nom2s[$index] == "true" ? 1 : 0;
             $checkIn->bonus = $overrides[$index];
             $checkIn->total_experience = 1 + ($checkIn->costume ? 1 : 0) + ($checkIn->nominated ? 1 : 0) + ($checkIn->nominated_twice ? 1 : 0) + $checkIn->bonus;
             $checkIn->save();
             if (!isset($save)) {
                 $owner = $character->owner;
                 $owner->sendMessage(null, "Experience awarded to " . $character->name, "The Storytellers have awarded your character " . $checkIn->total_experience . " Experience. You can now use the character editor to make changes to it at" . " your leisure. Remember, changes should be submitted by 6:00pm on the Wednesday" . " before a game to ensure that they have the chance to review them.");
                 $character->awardExperience($checkIn->total_experience);
                 $character->save();
             }
         } else {
             $missingCharacters[] = $id;
         }
     }
     if (!isset($save)) {
         $session->submitted = true;
         $session->save();
         foreach (User::listStorytellers() as $st) {
             $st->sendMessage(null, "Experience successfully awarded", "The action to award experience for the session on " . $session->date . " has completed." . (sizeof($missingCharacters) > 0 ? "\n\n" . sizeof($missingCharacters) . " characters were" . " not found (" . implode(",", $missingCharacters) . ")" : ''));
         }
         return Redirect::to("/dashboard");
     } else {
         return Redirect::to("/dashboard/storyteller/session/experience/{$session->id}");
     }
 }
Ejemplo n.º 10
0
 public function previousVersion()
 {
     if ($this->version != 1) {
         return Character::find($this->character_id)->version($this->version - 1)->first();
     }
     return null;
 }
Ejemplo n.º 11
0
					<div class="clan-title">
						{{RulebookClan::find($q->hidden_id)->name}}
					</div>
					<div class="clan-members">
						<?php 
$member_query = DB::table('characters')->select('characters.id')->where('active', true)->join('characters_versions', function ($join) {
    $join->on('characters_versions.character_id', '=', 'characters.id');
    $join->on('characters_versions.version', '=', 'characters.approved_version');
})->join('characters_clan', function ($join) {
    $join->on('characters.id', '=', 'characters_clan.character_id');
    $join->on('characters_clan.version_id', '=', 'characters_versions.id');
})->where('characters_clan.hidden_id', $q->hidden_id)->orderBy('name');
?>
						@foreach($member_query->get() as $member)
							<?php 
$character = Character::find($member->id);
?>
							<div class="row clan-member">
								@if($character->is_npc)
									<div class="columns small-12 npc">
										{{$character->printName()}}
										<div class="position-list">
											{{CharacterPosition::with('definition')->where('character_id', $character->id)->get()
												->map(function($item, $key) { return $item->definition; })->implode('name', ', ')}}
										</div>
									</div>
								@else
									<div class="row">
										<div class="columns small-6">
											{{$character->printName()}}
										</div>
 function erase($params){
     $char = Character::find()->where(array('guid' => $params['guid']))->realm($params['rid'])->first();
     if ($char->guid == $params['guid']) {
         $bu_answer = $char->write_dump(true);
         if(isset($params['hard']) && $params['hard'] == 1){
             if($bu_answer != false){
                 $answer = $char->erase(true);
             } else {
                 $this->render_ajax('error', 'Can\'t backup Char! Deleting process canceld (' . $char->errors[0] .')');
                 return false;
             }
         } else {
             $answer = $char->erase(false);
         }
         
         if($answer != false){
             Event::trigger(Event::TYPE_CHARACTER_DELETE, User::$current->account, $char, (isset($params['hard']) && $params['hard'] == 1 ? 'hard' : 'soft'));
             $this->render_ajax('success', 'Char successfully erased! ' . $answer);
         } else {
             $this->render_ajax('error', 'Can\'t delete Char! ' . $char->errors[0]);  
         }
     } else {
         $this->render_ajax('error', 'Char not found!');
     }
 }
Ejemplo n.º 13
0
 function get_deleted_characters(){
     $del_chars = array();
     $realms = Realm::find()->available()->all();
     foreach($realms as $realm){
         $result = Character::find()->where(array('deleteinfos_account' => $this->id))->realm($realm->id)->all();
         if(is_array($result))
             $del_chars += $result;
     }
     
     return $del_chars;
 }
Ejemplo n.º 14
0
 public function cost($character_id, $version = -1)
 {
     $character = Character::find($character_id);
     return $this->getOptionCost($this->option1()->first(), $character, $version) + $this->getOptionCost($this->option2()->first(), $character, $version) + ($this->option3 == null ? 0 : $this->getOptionCost($this->option3()->first(), $character, $version));
 }
 public function transferExperience(Character $to)
 {
     $from = Character::find(Input::get("from"));
     if ($from != null && $to != null) {
         $to->experience += $from->availableExperience();
         $from->experience -= $from->availableExperience();
         $to->save();
         $from->save();
         Cache::forget("character-experience-" . $to->id);
         Cache::forget("character-experience-" . $from->id);
         return Redirect::to("dashboard/storyteller/characters");
     } else {
         return Response::json(['success' => false, 'message' => 'Invalid data.']);
     }
 }
Ejemplo n.º 16
0
            return Redirect::guest('login');
        }
    }
});
Route::filter('auth.basic', function () {
    return Auth::basic();
});
Route::filter('storyteller', function () {
    if (Auth::guest() || !Auth::user()->isStoryteller()) {
        return App::abort(403);
    }
});
Route::filter('ownsCharacter', function ($route) {
    $character = $route->parameter('character');
    if (!$character instanceof Character) {
        $character = Character::find(Input::get("characterId"));
    }
    $user = Auth::user();
    if ($character->user_id != $user->id && !$user->isStoryteller()) {
        return App::abort(403);
    }
});
Route::filter('updateUserLastNoticed', function ($route) {
    if (Auth::check()) {
        $user = Auth::user();
        $user->last_online = new DateTime();
        $user->save();
    }
});
/*
|--------------------------------------------------------------------------
Ejemplo n.º 17
0
 function test_find()
 {
     //Arrange
     $description_id = 1;
     $race_id = 1;
     $stat_id = 1;
     $test_character = new Character($description_id, $race_id, $stat_id);
     $test_character->save();
     $description_id2 = 2;
     $race_id2 = 2;
     $stat_id2 = 2;
     $test_character2 = new Character($description_id2, $race_id2, $stat_id2);
     $test_character2->save();
     //Act
     $result = Character::find($test_character->getId());
     //Assert
     $this->assertEquals($test_character, $result);
 }
Ejemplo n.º 18
0
 private function sendStats()
 {
     $stats = array();
     // Website
     $stats['Website']['url'] = Router::url('/', true);
     $stats['Website']['version'] = Configure::read('mushraider.version');
     $stats['Website']['php'] = phpversion();
     $stats['Website']['lang'] = Configure::read('Settings.language');
     // Events
     App::uses('Event', 'Model');
     $EventModel = new Event();
     $params = array();
     $params['recursive'] = -1;
     $params['order'] = array('time_start ASC');
     if ($firstEvent = $EventModel->find('first', $params)) {
         $stats['Event']['first'] = $firstEvent['Event']['time_start'];
     } else {
         $stats['Event']['first'] = null;
     }
     $params['conditions']['time_start <='] = date('Y-m-d');
     $params['order'] = array('time_start DESC');
     if ($lastEvent = $EventModel->find('first', $params)) {
         $stats['Event']['last'] = $lastEvent['Event']['time_start'];
     } else {
         $stats['Event']['last'] = null;
     }
     $params = array();
     $params['recursive'] = -1;
     $params['conditions']['time_start <='] = date('Y-m-d');
     $countEvents = $EventModel->find('count', $params);
     $stats['Event']['total'] = $countEvents;
     // Reports
     App::uses('Report', 'Model');
     $ReportModel = new Report();
     $params = array();
     $params['recursive'] = -1;
     $countReports = $ReportModel->find('count', $params);
     $stats['Report']['total'] = $countReports;
     // Users
     App::uses('User', 'Model');
     $UserModel = new User();
     $params = array();
     $params['recursive'] = -1;
     $countUsers = $UserModel->find('count', $params);
     $stats['User']['total'] = $countUsers;
     // Characters
     App::uses('Character', 'Model');
     $CharacterModel = new Character();
     $params = array();
     $params['recursive'] = -1;
     $countCharacters = $CharacterModel->find('count', $params);
     $stats['Character']['total'] = $countCharacters;
     // Games
     App::uses('Game', 'Model');
     $GameModel = new Game();
     $params = array();
     $params['recursive'] = -1;
     if ($games = $GameModel->find('all', $params)) {
         foreach ($games as $game) {
             $stats['Game'][$game['Game']['slug']]['title'] = $game['Game']['title'];
             $stats['Game'][$game['Game']['slug']]['imported'] = $game['Game']['import_modified'] > 0 ? 1 : 0;
             $params = array();
             $params['recursive'] = -1;
             $params['conditions']['game_id'] = $game['Game']['id'];
             $params['group'] = array('user_id');
             $countCharacters = $CharacterModel->find('count', $params);
             $stats['Game'][$game['Game']['slug']]['players'] = $countCharacters;
         }
     }
     // Bridge
     $bridgeSetting = json_decode($this->SettingModel->getOption('bridge'));
     $stats['Bridge']['enabled'] = !empty($bridgeSetting) && $bridgeSetting->enabled ? 1 : 0;
     // Widgets
     App::uses('Widget', 'Model');
     $WidgetModel = new Widget();
     $params = array();
     $params['recursive'] = -1;
     if ($widgets = $WidgetModel->find('all', $params)) {
         foreach ($widgets as $widget) {
             if (!isset($stats['Widget'][$widget['Widget']['controller']])) {
                 $stats['Widget'][$widget['Widget']['controller']]['total'] = 1;
             } else {
                 $stats['Widget'][$widget['Widget']['controller']]['total']++;
             }
         }
     }
     App::uses('HttpSocket', 'Network/Http');
     $this->http = new HttpSocket();
     $this->http->post('http://stats.mushraider.com/acquire', $stats);
 }
    function members($params){
        $guild = Guild::find()->where(array('guildid' => $params['id']))->realm($params['rid'])->first();

        $find = Character::find()
            ->realm($guild->realm->id)
            ->join("INNER", 'guild_member' ,array('rank','guildid'),'guid')
            ->where(array('guild_member.guildid' => $guild->guildid))
            ->order('guild_member.rank');

        if(isset($params['page'])) $find->page($params['page']);
        $members = $find->all();
        $members_count = $find->count();

        $data = array(
            'members' => $members,
            'members_count' => $members_count
        );
        $this->render_partial("members",$data);
    }
Ejemplo n.º 20
0
 public function afterSave($created, $options)
 {
     // If users are absent for this event, add them as "absent" automatically
     App::uses('Availability', 'Model');
     $AvailabilityModel = new Availability();
     $params = array();
     $params['recursive'] = 1;
     $params['fields'] = array('Availability.id', 'Availability.user_id', 'Availability.comment');
     $params['contain']['User'] = array();
     $params['conditions']['start <='] = $this->data['Event']['time_start'];
     $params['conditions']['end >='] = $this->data['Event']['time_start'];
     if ($availabilities = $AvailabilityModel->find('all', $params)) {
         App::uses('Character', 'Model');
         $CharacterModel = new Character();
         foreach ($availabilities as $availability) {
             $params = array();
             $params['recursive'] = -1;
             $params['fields'] = array('Character.id', 'Character.game_id', 'Character.level', 'Character.default_role_id');
             $params['group'] = 'game_id';
             $params['conditions']['user_id'] = $availability['Availability']['user_id'];
             $params['conditions']['game_id'] = $this->data['Event']['game_id'];
             $params['conditions']['main'] = 1;
             if ($characters = $CharacterModel->find('all', $params)) {
                 App::uses('EventsCharacter', 'Model');
                 $EventsCharacterModel = new EventsCharacter();
                 foreach ($characters as $character) {
                     // If already registered to this event, update it
                     $paramsEventsCharacter = array();
                     $paramsEventsCharacter['recursive'] = -1;
                     $paramsEventsCharacter['fields'] = array('id');
                     $paramsEventsCharacter['conditions']['event_id'] = $this->data['Event']['id'];
                     $paramsEventsCharacter['conditions']['user_id'] = $availability['Availability']['user_id'];
                     if ($eventCharacter = $EventsCharacterModel->find('first', $paramsEventsCharacter)) {
                         $eventCharacter['EventsCharacter']['status'] = 0;
                         $EventsCharacterModel->save($eventCharacter['EventsCharacter']);
                     } else {
                         $toSave = array();
                         $toSave['event_id'] = $this->data['Event']['id'];
                         $toSave['user_id'] = $availability['Availability']['user_id'];
                         $toSave['character_id'] = $character['Character']['id'];
                         $toSave['raids_role_id'] = $character['Character']['default_role_id'];
                         $toSave['comment'] = $availability['Availability']['comment'];
                         $toSave['status'] = 0;
                         $EventsCharacterModel->__add($toSave);
                     }
                 }
             }
         }
     }
 }
Ejemplo n.º 21
0
@foreach(CharacterQuestionnaire::where('character_id', $character->id)->get() as $index => $q)
<b>{{$index + 1}}. {{RulebookQuestionnaire::find($q->questionnaire_id)->question}}</b>
<div class="panel">
	<p>{{$q->response}}</p>
</div>
@endforeach
<?php 
$c = Character::find($character->id);
?>
@if($c->backstory_file)<a href="/content/backstories/{{$c->backstory_file}}">Backstory</a>@endif
 function game_talk($type = null)
 {
     $this->render(false);
     if (isset($this->data['Chat']['message']) && !empty($this->data['Chat']['message'])) {
         $message = $this->data['Chat']['message'];
         $message = str_replace('code.dot', '.', $message);
         $message = str_replace('code.question', '?', $message);
         $message = str_replace('code.colon', ':', $message);
         $message = str_replace('code.slash', '/', $message);
         if ($type == 'general' || $type == 'trade' || $type == 'map' || $type == 'private') {
             $ChatData = array();
             $ChatData['type'] = $type;
             $ChatData['character_id_to'] = 0;
             // Kijken of deze character bestaat
             if (eregi('^(@([a-z0-9]+))(.*)?', $message, $parts)) {
                 $name = $parts[2];
                 App::import('Model', 'Character');
                 $Character = new Character();
                 $someCharacter = $Character->find('first', array('conditions' => array('Character.name' => $name)));
                 if (!empty($someCharacter)) {
                     $ChatData['character_id_to'] = $someCharacter['Character']['id'];
                     $message = eregi_replace('^(@([a-z0-9]+))', '', $message);
                     $ChatData['type'] = 'private';
                 } else {
                     $message = __('Nobody could hear you...', true);
                     $ChatData['type'] = 'private';
                     $ChatData['character_id_to'] = $this->characterInfo['id'];
                 }
             }
             $ChatData['id'] = null;
             $ChatData['character_id_from'] = $this->characterInfo['id'];
             $ChatData['message'] = urldecode($message);
             $ChatData['display'] = 'no';
             $this->Chat->save($ChatData);
         }
     }
 }
Ejemplo n.º 23
0
 public function save()
 {
     $user = Auth::user();
     $character = Character::find(Input::get('characterId'));
     if (!$character) {
         $character = new Character();
         $characterIsNew = true;
     }
     if (!isset($character->user_id)) {
         $character->user_id = $user->id;
     }
     $character->name = Input::get("sheet.name");
     $character->save();
     CharacterVersion::where('character_id', $character->id)->where('version', '>', $character->approved_version)->delete();
     $version = CharacterVersion::createNewVersion($character, Input::has("comment") ? Input::get("comment") : null);
     if ($version->isNewCharacter()) {
         $version->setHasDroppedMorality(Input::get("sheet.hasDroppedMorality") == "true");
     }
     try {
         $version->setEditingUser($user);
         if (Input::get("sheet.sect.selected")) {
             $version->setSect(RulebookSect::find(Input::get("sheet.sect.selected")), RulebookSect::find(Input::get("sheet.sect.displaying")));
         }
         if (Input::get("sheet.clan.selected")) {
             $version->setClan(RulebookClan::find(Input::get("sheet.clan.selected")), RulebookClan::find(Input::get("sheet.clan.displaying")));
         }
         $version->setClanOptions(Input::get("sheet.clanOptions.0"), Input::get("sheet.clanOptions.1"), Input::get("sheet.clanOptions.2"));
         if (Input::get("sheet.nature")) {
             $version->setNature(RulebookNature::find(Input::get("sheet.nature")));
         }
         if (Input::get("sheet.willpower")) {
             $version->setWillpower(Input::get("sheet.willpower.dots"), Input::get("sheet.willpower.traits"));
         }
         if (Input::get("sheet.attributes")) {
             $version->setAttributes(Input::get("sheet.attributes.physicals"), Input::get("sheet.attributes.mentals"), Input::get("sheet.attributes.socials"));
         }
         foreach ((array) Input::get("sheet.abilities") as $ability) {
             if (array_key_exists("specialization", $ability)) {
                 $version->addAbilityWithSpecialization(RulebookAbility::find($ability["id"]), $ability["count"], $ability["specialization"], $ability["name"]);
             } else {
                 $version->addAbility(RulebookAbility::find($ability["id"]), $ability["count"], $ability["name"]);
             }
         }
         foreach ((array) Input::get("sheet.disciplines") as $discipline) {
             $version->updateDiscipline(RulebookDiscipline::find($discipline["id"]), $discipline["count"], array_key_exists("path", $discipline) ? $discipline["path"] : 0);
         }
         foreach ((array) Input::get("newRituals") as $newRitualData) {
             $version->addRitualToBook($newRitualData["name"], $newRitualData["description"], $newRitualData["type"]);
         }
         foreach ((array) Input::get("sheet.rituals") as $ritualId) {
             $version->addRitual($ritualId);
         }
         if (Input::get("sheet.path")) {
             $version->updatePath(RulebookPath::find(Input::get("sheet.path")), Input::get("sheet.virtues.0"), Input::get("sheet.virtues.1"), Input::get("sheet.virtues.2"), Input::get("sheet.virtues.3"));
         }
         foreach ((array) Input::get("sheet.merits") as $meritData) {
             $version->addMerit(RulebookMerit::find($meritData["id"]), array_key_exists("description", $meritData) ? $meritData["description"] : null);
         }
         foreach ((array) Input::get("sheet.flaws") as $flawData) {
             $version->addFlaw(RulebookFlaw::find($flawData["id"]), array_key_exists("description", $flawData) ? $flawData["description"] : null);
         }
         foreach ((array) Input::get("sheet.derangements") as $derangementData) {
             $version->addDerangement(RulebookDerangement::find($derangementData["id"]), array_key_exists("description", $derangementData) ? $derangementData["description"] : null);
         }
         foreach ((array) Input::get("sheet.backgrounds") as $backgroundData) {
             $version->addBackground(RulebookBackground::find($backgroundData["id"]), $backgroundData["count"], array_key_exists("description", $backgroundData) ? $backgroundData["description"] : null);
         }
         foreach ((array) Input::get("sheet.elderPowers") as $elderData) {
             $version->addElderPower($elderData);
         }
         foreach ((array) Input::get("sheet.comboDisciplines") as $comboData) {
             $version->addComboDiscipline($comboData);
         }
         $version->clearUntouchedRecords();
     } catch (Exception $e) {
         throw $e;
     }
     return $version;
 }
Ejemplo n.º 24
0
 public static function render($body)
 {
     //First off, look for tags.
     $matches = [];
     $body = preg_replace_callback("/\\[\\[([\\w\\W]+?)\\]\\]/", function ($match) {
         $arguments = explode("/", $match[1]);
         switch (strtolower($arguments[0])) {
             case "change":
                 $id = intval($arguments[1]);
                 $char = Character::find($id);
                 if ($char && (Auth::user()->isStoryteller() || Auth::user()->id == $char->user_id) && sizeof($arguments) == 3) {
                     return View::make('partials/changes', ['character' => $char, 'version' => $arguments[2]])->render();
                 }
                 break;
             case "questionnaire":
                 $id = intval($arguments[1]);
                 $char = Character::find($id);
                 if ($char && (Auth::user()->isStoryteller() || Auth::user()->id == $char->user_id)) {
                     return View::make('partials/questionnaire', ['character' => $char])->render();
                 }
                 break;
             case "handbook":
                 return "<div class='handbook-page'>" . View::make('partials/handbookPage', ['title' => $arguments[1]])->render() . "</div>";
             case 'influence':
                 if (sizeof($arguments) == 2) {
                     $capName = $arguments[1];
                     $cap = InfluenceCap::whereHas('definition', function ($q) use($capName) {
                         $q->where('name', $capName);
                     })->first();
                     if ($cap) {
                         return $cap->capacityString();
                     }
                 }
                 break;
             case "character":
                 $char = Auth::user()->activeCharacter();
                 if (sizeof($arguments) == 3 && $char) {
                     $type = $arguments[1];
                     $value = $arguments[2];
                     switch (strtolower($type)) {
                         case "background":
                             return $char->getBackgroundDots($value);
                     }
                 }
                 break;
             case "deadline":
                 //Determine if we're past the deadline.
                 $now = new DateTime();
                 $now->setTime(0, 0);
                 $nextGame = GameSession::where('date', '>=', $now)->orderBy('date')->first();
                 if ($nextGame) {
                     $date = new DateTime($nextGame->date);
                     $date->setTimezone(new DateTimeZone("America/Chicago"));
                     $date->modify("6 hours");
                     //Fix timezone offset
                     $date->setTime(19, 00);
                     $deadlineDate = new DateTime($nextGame->date);
                     $deadlineDate->setTimezone(new DateTimeZone("America/Chicago"));
                     $deadlineDate->modify('previous Wednesday, 6 PM CST');
                     if (new DateTime() > $deadlineDate) {
                         return '<span class="past-deadline">No more changes can be submitted this cycle.</span>';
                     }
                     return 'Changes can still be submitted.';
                 }
                 return 'Could not find the next session';
                 break;
         }
         return $match[0];
     }, $body);
     //Check for @mentions
     $body = preg_replace_callback("/(?<=^|(?<=[^a-zA-Z0-9-_\\.]))@([A-Za-z0-9!#\$%\\-^&*]+|{[A-Za-z]+[A-Za-z0-9 !#\$%\\-^&*]+})/", function ($match) {
         $username = $match[1];
         if (strtolower($username) == "andrew") {
             $username = "******";
         }
         if ($username[0] == "{") {
             $username = substr($username, 1, strlen($username) - 2);
         }
         $user = User::where('username', 'like', $username)->first();
         if ($user) {
             return "<div class='mention'>@" . $user->mailtoLink() . "</div>";
         }
         return $username;
     }, $body);
     return $body;
 }
Ejemplo n.º 25
0
@stop
@section('script')
<script src="/js/foundation/foundation.tooltip.js"></script>
<script src="/js/foundation/foundation.magellan.js"></script>
<script src="/js/foundation/foundation.accordion.js"></script>
<script src="/js/knockout-groupedOptions.js"></script>
<script src="http://underscorejs.org/underscore.js"></script>
<script type="text/javascript">
	var preloaded = {
		userId: {{Auth::user()->id}},
		isStoryteller: {{Auth::user()->isStoryteller() ? "true" : "false"}},
		characterId: {{isset($character_id) ? $character_id : -1}}
	}
	<?php 
if (isset($character_id)) {
    $character = Character::find($character_id);
    if ($character->in_review) {
        echo 'document.location = "/dashboard";';
    }
    ?>
		preloaded.editingVersion = {{$character->approved_version}};
		preloaded.newVersion = {{$character->activeVersion() == $character->latestVersion()->version ? "true" : "false"}};
		preloaded.experienceSpent = {{$character->getExperienceCost($character->latestVersion()->version)}};
		preloaded.experienceTotal =	10 + {{$character->experience}};
		preloaded.cData = {{json_encode($character->getVersion($character->latestVersion()->version, false))}};

	<?php 
}
?>
</script>
<script src="/js/generator.beta.js"></script>
Ejemplo n.º 26
0
 /**
  * Update a character with that ID
  *
  * @param DatabaseConnection database class instance
  * @param mixed $id number, could be a string or an int
  * @return string '{}'
  */
 public function deleteCharacter(DatabaseConnection $db, $id)
 {
     Character::find($db, $id);
     Character::delete($db, $id);
     return '{}';
 }
 function update()
 {
     if (isset($this->characterInfo['Character']['id'])) {
         $conditions = array('Character.id' => $this->characterInfo['Character']['id']);
         App::import('Model', 'Character');
         $Character = new Character();
         $Character->recursive = 2;
         $Character->unbindModelAll();
         $Character->bindModel(array('belongsTo' => array('Area', 'Type', 'Avatar')));
         $Character->bindModel(array('hasAndBelongsToMany' => array('Stat')));
         $someCharacter = $Character->find('first', array('conditions' => $conditions));
         if (!empty($someCharacter)) {
             // Put it in the session
             $this->characterInfo = $someCharacter;
             $this->Session->write('character', $someCharacter);
         }
     }
 }