public function store()
 {
     // return Input::all();
     $emailRule = Auth::guest() ? 'required' : '';
     $rules = ['name' => 'required|min:6', 'url' => 'required|url|min:11', 'email' => $emailRule];
     $messages = ['name.required' => Config::get('site.validate.name.required'), 'name.min' => Config::get('site.validate.name.min'), 'url.required' => Config::get('site.validate.url.required'), 'url.url' => Config::get('site.validate.url.url'), 'url.min' => Config::get('site.validate.url.min'), 'email.required' => Config::get('site.validate.email.required')];
     $validator = Validator::make(Input::all(), $rules, $messages);
     if ($validator->fails()) {
         return Redirect::back()->withErrors($validator)->withInput();
     }
     // Extracts the YouTube ID from various URL structures
     $name = Input::get('name');
     $url = Input::get('url');
     if (preg_match('%(?:youtube(?:-nocookie)?\\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\\.be/)([^"&?/ ]{11})%i', $url, $match)) {
         $id = $match[1];
         $image_url = "http://img.youtube.com/vi/{$id}/hqdefault.jpg";
     } else {
         return Redirect::back()->withMessage(Config::get('site.message.youtube-failed'));
     }
     $storedMP4 = MP4::whereName(Input::get('name'))->first();
     if ($storedMP4) {
         if (Request::ajax()) {
             $response = [];
             $response['success'] = true;
             $response['url'] = "/mp4/{$storedMP3->id}";
             return $response;
         }
         return Redirect::to("mp4/{$storedMP4->id}");
     }
     // Check if there's a user logged in. If not, use the admin ID.
     $admin_id = User::whereAdmin(1)->first()->id;
     $user_id = Auth::check() ? Auth::user()->id : $admin_id;
     // Insert the infos in the database
     $mp4 = new MP4();
     $mp4->name = Input::get('name');
     $mp4->youtube_id = $id;
     $mp4->image = $image_url;
     $mp4->user_id = $user_id;
     $mp4->category_id = Input::get('cat');
     $mp4->description = Input::get('description');
     $mp4->save();
     if (App::environment() == 'production') {
         TKPM::tweet($mp4, 'mp4');
     }
     if (Auth::guest() && Input::has('email')) {
         $mp4->userEmail = Input::get('email');
         $data = ['mp4' => $mp4, 'subject' => 'Felisitasyon!!! Ou fèk mete yon nouvo mizik'];
         TKPM::sendMail('emails.user.guest4', $data, 'guest4');
     } else {
         // Send a  email to the new user letting them know their video has been uploaded
         $data = ['mp4' => $mp4, 'subject' => 'Felisitasyon!!! Ou fèk mete yon nouvo videyo'];
         TKPM::sendMail('emails.user.mp4', $data, 'mp4');
     }
     Cache::flush();
     return Redirect::to('mp4/' . $mp4->id);
 }
 public function store()
 {
     // return Input::all();
     $email_rule = Auth::guest() ? 'required' : '';
     $rules = ['name' => 'required|min:6', 'mp3' => 'required|mimes:mpga|max:64000000', 'image' => 'required|image', 'email' => $email_rule];
     $messages = ['name.required' => Config::get('site.validate.name.required'), 'name.min' => Config::get('site.validate.name.min'), 'mp3.required' => Config::get('site.validate.mp3.required'), 'mp3.mimes' => Config::get('site.validate.mp3.mimes'), 'mp3.size' => Config::get('site.validate.mp3.size'), 'image.required' => Config::get('site.validate.image.required'), 'image.image' => Config::get('site.validate.image.image'), 'email.required' => Config::get('site.validate.email.required')];
     $validator = Validator::make(Input::all(), $rules, $messages);
     if ($validator->fails()) {
         if (Request::ajax()) {
             $response = [];
             $response['success'] = false;
             $response['errors'] = $validator->messages();
             return $response;
         }
         return Redirect::to('/mp3/up')->withErrors($validator)->withInput();
     }
     $storedMP3 = MP3::whereName(Input::get('name'))->first();
     if ($storedMP3) {
         if (Request::ajax()) {
             $response = [];
             $response['success'] = true;
             $response['url'] = $storedMP3->price == 'paid' ? "/mp3/{$storedMP3->id}/edit" : "/mp3/{$storedMP3->id}";
             return $response;
         }
         return Redirect::to("mp3/{$storedMP3->id}");
     }
     /****** MP3 Uploading *******/
     $price = Input::get('price');
     $name = Input::get('name');
     $mp3 = Input::file('mp3');
     $mp3_size = TKPM::size($mp3->getClientsize());
     $mp3_ext = $mp3->getClientOriginalExtension();
     $mp3_name = Str::slug($name, '-') . '-' . Str::random(32) . '.' . $mp3_ext;
     $mp3_upload_path = Config::get('site.mp3_upload_path');
     $mp3_success = $mp3->move($mp3_upload_path, $mp3_name);
     /************ Image Uploading *****************/
     $img = Input::file('image');
     $img_type = $img->getMimeType();
     $img_ext = $img->getClientOriginalExtension();
     $img_name = Str::slug($name, '-') . '-' . Str::random(32) . '.' . $img_ext;
     $img_upload_path = Config::get('site.image_upload_path');
     $img_success = $img->move($img_upload_path, $img_name);
     if ($img_success) {
         TKPM::image($img_name, 250, 250, 'thumbs');
         TKPM::image($img_name, 100, null, 'thumbs/tiny');
         TKPM::image($img_name, 640, 360, 'show');
     }
     $admin_id = User::whereAdmin(1)->first()->id;
     $user_id = Auth::check() ? Auth::user()->id : $admin_id;
     if ($mp3_success && $img_success) {
         $mp3 = new MP3();
         $mp3->name = ucwords($name);
         $mp3->mp3name = $mp3_name;
         $mp3->image = $img_name;
         $mp3->user_id = $user_id;
         $mp3->category_id = Input::get('cat');
         $mp3->size = $mp3_size;
         if ($price == 'free') {
             $mp3->publish = 1;
         }
         $mp3->price = $price;
         if (!$price) {
             $mp3->publish = 1;
             $mp3->price = 'free';
         }
         $mp3->description = Input::get('description');
         $mp3->save();
         /************** GETID3 **************/
         TKPM::tag($mp3, $img_name, $img_type);
         /******* Flush the cache ********/
         Cache::flush();
         if ($mp3->price == 'paid') {
             // Send an email to the new user letting them know their music has been uploaded
             $data = ['mp3' => $mp3, 'subject' => 'Felisitasyon!!! Ou fèk mete yon nouvo mizik pou vann.'];
             TKPM::sendMail('emails.user.buy', $data, 'mp3');
         } elseif (Auth::guest() && Input::has('email')) {
             $mp3->userEmail = Input::get('email');
             $data = ['mp3' => $mp3, 'subject' => 'Felisitasyon!!! Ou fèk mete yon nouvo mizik'];
             TKPM::sendMail('emails.user.guest3', $data, 'guest3');
         } else {
             // Send an email to the new user letting them know their music has been uploaded
             $data = ['mp3' => $mp3, 'subject' => 'Felisitasyon!!! Ou fèk mete yon nouvo mizik'];
             TKPM::sendMail('emails.user.mp3', $data, 'mp3');
         }
         if (!App::isLocal()) {
             TKPM::tweet($mp3, 'mp3');
         }
         if (Request::ajax()) {
             $response = [];
             $response['success'] = true;
             $response['url'] = $price == 'paid' ? "/mp3/{$mp3->id}/edit" : "/mp3/{$mp3->id}";
             return $response;
         }
         Cache::forget('latest.musics');
         if ($price == 'paid') {
             return Redirect::to("mp3/{$mp3->id}/edit");
         }
         return Redirect::to('mp3/' . $mp3->id);
     } else {
         if (Request::ajax()) {
             $response = [];
             $response['success'] = false;
             $response['message'] = 'Nou regrèt men nou pa reyisi mete mizik ou a. Eseye ankò.';
             return $response;
         }
         return Redirect::to(Request::url())->with('message', 'Nou regrèt men nou pa reyisi mete mizik ou a. Eseye ankò.');
     }
 }
 public function deleteUser($id = null)
 {
     $del = Input::get('del');
     if (!empty($id) && Auth::user()->is_admin()) {
         $admin = Auth::user();
         $user = User::find($id);
         $mp3s = $user->mp3s()->get();
         $mp4s = $user->mp4s()->get();
         foreach ($mp3s as $mp3) {
             $mp3->user_id = $admin->id;
             $mp3->save();
             Vote::whereObj('MP3')->whereObjId($mp3->id)->whereUserId($user->id)->delete();
         }
         foreach ($mp4s as $mp4) {
             $mp4->user_id = $admin->id;
             $mp4->save();
             Vote::whereObj('MP4')->whereObjId($mp4->id)->whereUserId($user->id)->delete();
         }
         $user->delete();
         return Redirect::back();
     }
     $user = Auth::user();
     $admin = User::whereAdmin(1)->first();
     $mp3s = $user->mp3s()->get();
     $mp4s = $user->mp4s()->get();
     foreach ($mp3s as $mp3) {
         Vote::whereObj('MP3')->whereObjId($mp3->id)->whereUserId($user->id)->delete();
         if ($del) {
             $mp3->delete();
             File::delete(Config::get('site.mp3_upload_path') . '/' . $mp3->mp3name);
             File::delete(Config::get('site.image_upload_path') . '/' . $mp3->image);
             File::delete(Config::get('site.image_upload_path') . '/thumbs/' . $mp3->image);
             File::delete(Config::get('site.image_upload_path') . '/tiny/' . $mp3->image);
         } else {
             $mp3->user_id = $admin->id;
             $mp3->save();
         }
     }
     foreach ($mp4s as $mp4) {
         Vote::whereObj('MP4')->whereObjId($mp4->id)->whereUserId($user->id)->delete();
         if ($del) {
             $mp4->delete();
         } else {
             $mp4->user_id = $admin->id;
             $mp4->save();
         }
     }
     Auth::logout();
     $user->delete();
     Cache::flush();
     $aff = '';
     if ($del) {
         $aff = 'Mizik ak Videyo ou yo efase tou avèk siskè. Ou ka <a href="/register">kreye yon nouvo kont</a> nenpòt lè ou vle.';
     }
     return Redirect::to('/')->withMessage('Kont ou an efase avèk sikè. ' . $aff);
 }