예제 #1
0
 public function description()
 {
     $description = $this->description;
     $description = preg_replace_callback("/\\[\\[([\\w\\W]+?)\\]\\]/", function ($match) {
         $arguments = explode("/", $match[1]);
         switch (strtolower($arguments[0])) {
             case 'influence':
                 $capName = $arguments[1];
                 return InfluenceCap::whereHas('definition', function ($q) use($capName) {
                     $q->where('name', $capName);
                 })->first()->capacityString();
         }
     }, $description);
     return $description;
 }
예제 #2
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;
 }
 public function removeInfluenceField()
 {
     $id = Input::get("delete_id");
     InfluenceCap::find($id)->delete();
     return Redirect::to('/dashboard/storyteller/influence/caps');
 }