/**
  * 动作:激活账号
  * @param  string $activationCode 激活令牌
  * @return Response
  */
 public function getActivate($activationCode)
 {
     // 数据库验证令牌
     $activation = Activation::where('token', $activationCode)->first();
     // 数据库中无令牌,抛出404
     is_null($activation) and App::abort(404);
     // 数据库中有令牌
     // 激活对应用户
     $user = User::where('email', $activation->email)->first();
     $user->activated_at = new Carbon();
     $user->save();
     // 删除令牌
     $activation->delete();
     // 激活成功提示
     return View::make('authority.activationSuccess');
 }
 /**
  * Handling user activation
  *
  * return @Response
  */
 public function activation($code)
 {
     $code = Activation::where('code', '=', $code)->first();
     if ($code) {
         $user = User::find($code->user);
         if ($user) {
             Auth::login($user);
         }
         $code->delete();
         $result = ['success' => true];
         if ($user->type == 'artist') {
             return View::make('artist.activation', $result);
         }
         if ($user->type == 'charity') {
             return View::make('charity.activation', $result);
         }
         if ($user->type == 'customer') {
             return View::make('customer.activation', $result);
         }
     } else {
         return View::make('charity.activation');
     }
 }
 /**
  * Show artist profile
  * 
  * return @Response
  */
 public function showprofile($user)
 {
     $profile = User::where('profile_url', '=', $user)->where('approved', '=', '0')->where('deleted_at', '=', null)->first();
     if (!is_null($profile)) {
         $activation = Activation::where('user', '=', $profile->id)->first();
         $page = Page::where('title', '=', 'faq-artist')->first();
         $transactions = Purchase::where('artist', '=', $profile->id)->get();
         if ($activation) {
             return View::make('artist.not-activated');
         } else {
             if ($profile) {
                 if ($profile->active == 1) {
                     $songs = Song::where('artist', '=', $profile->id)->where('completed', '=', '1')->orderBy('id', 'desc')->paginate(10);
                     $bundles = Bundle::where('artist', '=', $profile->id)->get();
                     $wall = new \Illuminate\Database\Eloquent\Collection();
                     $wall = $wall->merge($songs);
                     $wall = $wall->merge($bundles);
                     //dd($wall);
                     $followers = Follow::where('artist', '=', $profile->id)->get();
                     $countries = [];
                     foreach ($followers as $f) {
                         if (empty($f->profile->country)) {
                             $f->profile->country = 'Country unknown';
                         }
                         if (isset($countries[$f->profile->country])) {
                             $countries[$f->profile->country]++;
                         } else {
                             $countries[$f->profile->country] = 1;
                         }
                     }
                     $events = ArtistEvent::where('artist', '=', $profile->id)->where('date', '>', \Carbon\Carbon::now())->orderBy('id', 'desc')->take(3)->get();
                     $songs_in = [];
                     foreach ($songs as $s) {
                         $songs_in[] = $s->id;
                     }
                     if (count($songs_in) > 0) {
                         $comments = Comment::whereIn('song', $songs_in)->orderBy('id', 'desc')->take(3)->get();
                     } else {
                         $comments = "";
                     }
                     $wall->sortByDesc('created_at');
                     //dd($wall);
                     $notifications = MyNotification::where('user', '=', $profile->id)->get();
                     return View::make('artist.profile-new', ['profile' => $profile, 'songs' => $songs, 'events' => $events, 'comments' => $comments, 'notifications' => $notifications, 'wall' => $wall, 'page' => $page, 'transactions' => $transactions, 'countries' => $countries]);
                 } else {
                     return Redirect::to('profile/settings');
                 }
             } else {
                 App::abort(404);
             }
         }
     } else {
         App::abort(404);
     }
 }
 /**
  * Action: Activate account
  * @param  string $activationCode Activation tokens
  * @return Response
  */
 public function getActivate($activationCode)
 {
     // Database authentication tokens
     $activation = Activation::where('token', $activationCode)->first();
     // No tokens in the database, throw 404
     is_null($activation) and App::abort(404);
     // Database tokens
     // Activate the corresponding user
     $user = User::where('email', $activation->email)->first();
     $user->activated_at = new Carbon();
     $user->save();
     // Delete tokens
     $activation->delete();
     // Activation success
     return View::make('authority.activationSuccess');
 }