public function delete() { // Remove all relationships $this->memberships()->detach(); $this->medias()->detach(); $this->pricelists()->delete(); // Delete all media links foreach (ModuleMediaMembership::where('module_id', $this->id)->get() as $mmm) { $mmm->delete(); } // Remove all relationships $this->tags()->detach(); // Delete all images foreach ($this->images as $image) { $image->delete(); } // Delete all translations $this->translations()->delete(); // Delete asset images folder $upload_dir = \Config::get('redminportal::image.upload_dir'); $deleteFolder = new Image(); $url_path = RHelper::joinPaths($upload_dir, $this->table, $this->id); $deleteFolder->deleteFiles($url_path); return parent::delete(); }
public function getDelete($sid) { // Find the membership using the user id $membership = Membership::find($sid); if ($membership == null) { $errors = new \Illuminate\Support\MessageBag(); $errors->add('deleteError', "The membership cannot be found. It could have already been deleted."); return \Redirect::to('/admin/memberships')->withErrors($errors); } // Cannot delete if in use $modMediaMembership = ModuleMediaMembership::where('membership_id', $sid)->get(); if (count($modMediaMembership) > 0) { $errors = new \Illuminate\Support\MessageBag(); $errors->add('deleteError', "The membership cannot be deleted because it is in used."); return \Redirect::to('/admin/memberships')->withErrors($errors); } // Delete the membership $membership->delete(); return \Redirect::to('admin/memberships'); }
/** * 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 postStore() { $sid = \Input::get('id'); $rules = array('image' => 'mimes:jpg,jpeg,png,gif|max:500', 'name' => 'required|unique:modules,name' . (isset($sid) ? ',' . $sid : ''), 'short_description' => 'required', 'sku' => 'required|alpha_dash|unique:modules,sku' . (isset($sid) ? ',' . $sid : ''), 'category_id' => 'required', 'tags' => 'regex:/^[a-z,0-9 -]+$/i'); $validation = \Validator::make(\Input::all(), $rules); if ($validation->passes()) { $name = \Input::get('name'); $sku = \Input::get('sku'); $short_description = \Input::get('short_description'); $long_description = \Input::get('long_description'); $image = \Input::file('image'); $featured = \Input::get('featured') == '' ? false : true; $active = \Input::get('active') == '' ? false : true; $category_id = \Input::get('category_id'); $tags = \Input::get('tags'); $module = isset($sid) ? Module::find($sid) : new Module(); if ($module == null) { $errors = new \Illuminate\Support\MessageBag(); $errors->add('editError', "The module cannot be found because it does not exist or may have been deleted."); return \Redirect::to('/admin/modules')->withErrors($errors); } $module->name = $name; $module->sku = $sku; $module->short_description = $short_description; $module->long_description = $long_description; $module->featured = $featured; $module->active = $active; $module->category_id = $category_id; // Create or save changes $module->save(); // Save translations $translations = \Config::get('redminportal::translation'); foreach ($translations as $translation) { $lang = $translation['lang']; if ($lang == 'en') { continue; } $translated_content = array('name' => \Input::get($lang . '_name'), 'short_description' => \Input::get($lang . '_short_description'), 'long_description' => \Input::get($lang . '_long_description')); // Check if lang exist $translated_model = $module->translations->where('lang', $lang)->first(); if ($translated_model == null) { $translated_model = new Translation(); } $translated_model->lang = $lang; $translated_model->content = json_encode($translated_content); $module->translations()->save($translated_model); } // Save pricelist foreach (Membership::all() as $membership) { $pricelist = Pricelist::where('module_id', $module->id)->where('membership_id', $membership->id)->first(); if ($pricelist == null) { $pricelist = new Pricelist(); $pricelist->module_id = $module->id; $pricelist->membership_id = $membership->id; } $price_active = \Input::get('price_active_' . $membership->id) == '' ? false : true; $price = \Input::get('price_' . $membership->id); if (!empty($price)) { $pricelist->active = $price_active; $pricelist->price = $price; $pricelist->save(); } else { // Empty price means to delete, but check that it is not used $pricelist_used = UserPricelist::where('pricelist_id', $pricelist->id)->get(); if (count($pricelist_used) == 0) { $pricelist->delete(); } } } // Save medias $media_checkbox = \Input::get('media_checkbox'); if (isset($sid)) { // Remove all existing medias $existing_medias = ModuleMediaMembership::where('module_id', $module->id)->get(); foreach ($existing_medias as $remove_media) { $remove_media->delete(); } } if (is_array($media_checkbox)) { foreach ($media_checkbox as $check) { $media_pair = explode('_', $check); $media_id = $media_pair[0]; $membership_id = $media_pair[1]; $modMediaMembership = new ModuleMediaMembership(); $modMediaMembership->module_id = $module->id; $modMediaMembership->membership_id = $membership_id; $modMediaMembership->media_id = $media_id; $modMediaMembership->save(); } } if (!empty($tags)) { // Delete old tags $module->tags()->detach(); // Save tags foreach (explode(',', $tags) as $tagName) { Tag::addTag($module, $tagName); } } if (\Input::hasFile('image')) { //Upload the file $helper_image = new RImage(); $filename = $helper_image->upload($image, 'modules/' . $module->id, true); if ($filename) { // create photo $newimage = new Image(); $newimage->path = $filename; // save photo to the loaded model $module->images()->save($newimage); } } //if it validate } else { if (isset($sid)) { return \Redirect::to('admin/modules/edit/' . $sid)->withErrors($validation)->withInput(); } else { return \Redirect::to('admin/modules/create')->withErrors($validation)->withInput(); } } return \Redirect::to('admin/modules'); }
public function getDelete($sid) { // Find the media using the user id $media = Media::find($sid); if ($media == null) { $errors = new \Illuminate\Support\MessageBag(); $errors->add('deleteError', "We are having problem deleting this entry. Please try again."); return redirect('admin/medias')->withErrors($errors); } // Check if used by Module $mmms = ModuleMediaMembership::where('media_id', $sid)->get(); if (count($mmms) > 0) { // Check for orphan $orphan = true; foreach ($mmms as $mmm) { if ($mmm->module != null) { $orphan = false; break; } } if (!$orphan) { $errors = new \Illuminate\Support\MessageBag(); $errors->add('deleteError', "This media cannot be deleted because it is link to a module."); return redirect('admin/medias')->withErrors($errors); } } // Delete the media $media->delete(); return redirect('admin/medias'); }