/**
  * Test (Pass): access postStore to create with input, price for 1 membership and medias
  */
 public function testStoreMediasPass()
 {
     // Add membership
     $membership = new Membership();
     $membership->name = "Gold";
     $membership->rank = 5;
     $membership->save();
     // Add media
     $media = new Media();
     $media->name = 'This is the title';
     $media->path = 'path/to/somewhere';
     $media->sku = 'UNIQUESKU001';
     $media->short_description = 'This is the body';
     $media->category_id = 1;
     $media->active = true;
     $media->save();
     $input = array('name' => 'This is title', 'short_description' => 'This is body', 'cn_name' => 'CN name', 'cn_short_description' => 'CN short body', 'category_id' => 1, 'sku' => 'UNIQUESKU001', 'price_1' => 99.98999999999999, 'media_checkbox' => array('1_1'), 'price_active_1' => true);
     $this->call('POST', '/admin/modules/store', $input);
     $this->assertRedirectedTo('/admin/modules');
     $pricelist = Pricelist::where('module_id', 1)->where('membership_id', 1)->first();
     $this->assertTrue($pricelist != null);
     $this->assertTrue($pricelist->module_id == 1);
     $this->assertTrue($pricelist->membership_id == 1);
     $this->assertTrue($pricelist->price == 99.98999999999999);
     $this->assertTrue($pricelist->active == true);
     $modMediaMembership = ModuleMediaMembership::where('module_id', 1)->where('membership_id', 1)->where('media_id', 1)->first();
     $this->assertTrue($modMediaMembership != null);
 }
 public function getEditmedias($sid, $module_id)
 {
     $medias = Media::where('category_id', $sid)->orderBy('name')->get();
     $memberships = Membership::orderBy('rank')->get();
     $modMediaMembership = array();
     foreach (ModuleMediaMembership::where('module_id', $module_id)->get() as $mmm) {
         $modMediaMembership[$mmm->media_id][$mmm->membership_id] = true;
     }
     return \View::make('redminportal::modules/medias')->with('medias', $medias)->with('memberships', $memberships)->with('modMediaMembership', $modMediaMembership);
 }
 public function getDelete($sid)
 {
     // Find the category using the user id
     $category = Category::find($sid);
     if ($category == null) {
         $errors = new \Illuminate\Support\MessageBag();
         $errors->add('deleteError', "The category cannot be found because it does not exist or may have been deleted.");
         return redirect('/admin/categories')->withErrors($errors);
     }
     // Find if there's any child
     $children = Category::where('category_id', $sid)->count();
     if ($children > 0) {
         $errors = new \Illuminate\Support\MessageBag();
         $errors->add('deleteError', "The category '" . $category->name . "' cannot be deleted because it has " . $children . " children categories.");
         return redirect('/admin/categories')->withErrors($errors);
     }
     // Check in use by media
     $medias = Media::where('category_id', $sid)->get();
     if (count($medias) > 0) {
         $errors = new \Illuminate\Support\MessageBag();
         $errors->add('deleteError', "The category '" . $category->name . "' cannot be deleted because it is in used.");
         return redirect('/admin/categories')->withErrors($errors);
     }
     // Delete the category
     $category->delete();
     return redirect('admin/categories');
 }
 public function getDuration($sid)
 {
     $media = Media::find($sid);
     $status = array();
     $status['data'] = '';
     if ($media == null) {
         $status['status'] = 'error';
         return $status;
     }
     $media_folder = public_path() . '/assets/medias/' . $media->category_id . '/' . $sid;
     $file = $media_folder . "/" . $media->path;
     if (file_exists($file) && $media->mimetype != 'application/pdf') {
         $object = $this->retrieveId3Info($file);
         $media->options = json_encode($object);
         $media->save();
         if (isset($object['duration'])) {
             $status['data'] = $object['duration'];
         }
     }
     $status['status'] = 'success';
     return $status;
 }
 public function getDuration($sid)
 {
     $media = Media::find($sid);
     $status = array();
     $status['data'] = '';
     if ($media == null) {
         $status['status'] = 'error';
         return $status;
     }
     $media_folder = public_path() . '/assets/medias/' . $media->category_id . '/' . $sid;
     $filepath = $media_folder . "/" . $media->path;
     if (file_exists($filepath) && $media->mimetype != 'application/pdf') {
         $file = new FileInfo($filepath);
         // Get playtime of the file
         $playtime = $file->getPlaytime();
         // Save playtime
         $options = json_decode($media->options);
         if (!is_array($options)) {
             $options = array();
             // Create a new array
         }
         $options['duration'] = $playtime ? $playtime : '';
         $status['data'] = $options['duration'];
         $media->options = json_encode($options);
         try {
             $media->save();
         } catch (Exception $exp) {
             $status['status'] = 'error';
             return $status;
         }
     }
     $status['status'] = 'success';
     return $status;
 }