Esempio n. 1
0
 public function postPuzzle()
 {
     $user = Auth::user();
     if (!$user) {
         $msg = 'Please log in';
         $returnData = array('errors' => array($msg));
         return response()->json($returnData, 401);
     }
     if (!Input::has('template_slug')) {
         $msg = 'No puzzle template selected';
         $returnData = array('errors' => array($msg));
         return response()->json($returnData, 401);
     }
     $p = new Puzzle();
     $args = array();
     $args['user_id'] = $user->id;
     $pt = PuzzleTemplate::where('slug', Input::get('template_slug'))->first();
     $args['puzzle_template_id'] = $pt->id;
     if (!isset($args['name'])) {
         $args['name'] = $user->name . "'s " . $pt->name . " Puzzle";
     }
     if ($p->validate($args)) {
         return Puzzle::create($args);
     } else {
         $returnData = array('errors' => $p->errors());
         return response()->json($returnData, 401);
     }
 }
Esempio n. 2
0
 public function profile()
 {
     $guesses = Puzzle::leftJoin('puzzle_templates', 'puzzle_templates.id', '=', 'puzzles.puzzle_template_id')->join('puzzle_guesses', 'puzzle_guesses.puzzle_id', '=', 'puzzles.id')->selectRaw('puzzles.slug puzzle_slug, puzzles.name puzzle_name, puzzle_templates.slug template_slug')->where('puzzle_guesses.user_id', $this->id)->orderBy('updated_timestamp_utc', 'desc')->get();
     $puzzles = Puzzle::leftJoin('puzzle_templates', 'puzzle_templates.id', '=', 'puzzles.puzzle_template_id')->where('puzzles.user_id', $this->id)->where('puzzles.active', 1)->whereNull('deleted_timestamp_utc')->selectRaw('puzzles.slug puzzle_slug, puzzles.name puzzle_name, puzzle_templates.slug template_slug')->get();
     $templates = PuzzleTemplate::where('active', 1)->where(function ($query) {
         $query->where('user_id', $this->id)->orWhereRaw('id in (select puzzle_template_id from puzzles where user_id = ?)', array($this->id))->orWhereRaw('id in (select puzzles.puzzle_template_id from puzzle_guesses inner join puzzles on puzzle_guesses.puzzle_id = puzzles.id where puzzle_guesses.user_id = ?)', array($this->id));
     })->select('id', 'height', 'width', 'slug', 'name', 'symmetrical', 'user_id')->with('puzzleTemplateSquares')->get();
     foreach ($templates as $template_key => $t) {
         foreach ($t->puzzleTemplateSquares as $k => $s) {
             $square = $templates[$template_key]->puzzleTemplateSquares[$k];
             $row = $square->row;
             $col = $square->col;
             $templates[$template_key]->puzzleTemplateSquares[$row . '-' . $col] = $square;
             unset($templates[$template_key]->puzzleTemplateSquares[$row . '-' . $col]->row);
             unset($templates[$template_key]->puzzleTemplateSquares[$row . '-' . $col]->col);
             unset($templates[$template_key]->puzzleTemplateSquares[$row . '-' . $col]->puzzle_template_id);
             unset($templates[$template_key]->puzzleTemplateSquares[$row . '-' . $col]->id);
             unset($templates[$template_key]->puzzleTemplateSquares[$k]);
         }
         $templates[$t->slug] = $templates[$template_key];
         $templates[$t->slug]['clue_squares'] = $t->clueSquares();
         unset($templates[$template_key]);
     }
     return array('username' => $this->username, 'user_id' => $this->id, 'name' => $this->name, 'profile_image_base_url' => isset($this->twitter->profile_image_url) ? str_replace("_normal.jpeg", "", $this->twitter->profile_image_url) : "", 'templates' => $templates, 'puzzles' => $puzzles, 'attempted_puzzles' => $guesses, 'twitter_handle' => isset($this->twitter->screen_name) ? $this->twitter->screen_name : "");
 }
Esempio n. 3
0
 public static function findSlug($name)
 {
     $slug = strtolower(preg_replace("/[^a-zA-Z\\d]/", "-", $name));
     $origslug = $slug;
     $exists = PuzzleTemplate::where('slug', $slug)->first();
     $i = 0;
     while ($exists) {
         $slug = $origslug . "-" . $i++;
         $exists = PuzzleTemplate::where('slug', $slug)->first();
     }
     return $slug;
 }