/** * Run the database seeds. * * @return void */ public function run() { DB::statement('SET FOREIGN_KEY_CHECKS=0;'); LiveStream::truncate(); MediaItem::truncate(); MediaItemComment::truncate(); MediaItemLike::truncate(); MediaItemLiveStream::truncate(); MediaItemVideo::truncate(); Permission::truncate(); PermissionGroup::truncate(); QualityDefinition::truncate(); LiveStreamUri::truncate(); Playlist::truncate(); Show::truncate(); SiteUser::truncate(); User::truncate(); VideoFile::truncate(); DB::table("media_item_to_playlist")->truncate(); DB::table("permission_to_group")->truncate(); DB::table("user_to_group")->truncate(); DB::statement('SET FOREIGN_KEY_CHECKS=1;'); $this->command->info('Tables truncated!'); }
public function anyEdit($id = null) { Auth::getUser()->hasPermissionOr401(Config::get("permissions.liveStreams"), 1); $liveStream = null; $editing = false; if (!is_null($id)) { $liveStream = LiveStream::find($id); if (is_null($liveStream)) { App::abort(404); return; } $editing = true; } $formSubmitted = isset($_POST['form-submitted']) && $_POST['form-submitted'] === "1"; // has id 1 // populate $formData with default values or received values $formData = FormHelpers::getFormData(array(array("enabled", ObjectHelpers::getProp(false, $liveStream, "enabled") ? "y" : ""), array("shownAsLivestream", ObjectHelpers::getProp(false, $liveStream, "shown_as_livestream") ? "y" : ""), array("name", ObjectHelpers::getProp("", $liveStream, "name")), array("description", ObjectHelpers::getProp("", $liveStream, "description")), array("cover-art-id", ObjectHelpers::getProp("", $liveStream, "coverArtFile", "id")), array("urls", json_encode(array()))), !$formSubmitted); // this will contain any additional data which does not get saved anywhere $additionalFormData = array("coverArtFile" => FormHelpers::getFileInfo($formData['cover-art-id']), "urlsInput" => null, "urlsInitialData" => null); if (!$formSubmitted) { $additionalFormData['urlsInput'] = ObjectHelpers::getProp(json_encode(array()), $liveStream, "urls_for_input"); $additionalFormData['urlsInitialData'] = ObjectHelpers::getProp(json_encode(array()), $liveStream, "urls_for_orderable_list"); } else { $additionalFormData['urlsInput'] = LiveStream::generateInputValueForUrlsOrderableList(JsonHelpers::jsonDecodeOrNull($formData['urls'], true)); $additionalFormData['urlsInitialData'] = LiveStream::generateInitialDataForUrlsOrderableList(JsonHelpers::jsonDecodeOrNull($formData["urls"], true)); } $errors = null; if ($formSubmitted) { $modelCreated = DB::transaction(function () use(&$formData, &$liveStream, &$errors) { Validator::extend('valid_file_id', FormHelpers::getValidFileValidatorFunction()); Validator::extend('valid_urls', function ($attribute, $value, $parameters) { return LiveStream::isValidDataFromUrlsOrderableList(JsonHelpers::jsonDecodeOrNull($value, true)); }); $validator = Validator::make($formData, array('name' => array('required', 'max:50'), 'description' => array('max:500'), 'cover-art-id' => array('valid_file_id'), 'urls' => array('required', 'valid_urls')), array('name.required' => FormHelpers::getRequiredMsg(), 'name.max' => FormHelpers::getLessThanCharactersMsg(50), 'description.max' => FormHelpers::getLessThanCharactersMsg(500), 'cover-art-id.valid_file_id' => FormHelpers::getInvalidFileMsg(), 'urls.required' => FormHelpers::getGenericInvalidMsg(), 'urls.valid_urls' => FormHelpers::getGenericInvalidMsg())); if (!$validator->fails()) { // everything is good. save/create model if (is_null($liveStream)) { $liveStream = new LiveStream(); } $liveStream->name = $formData['name']; $liveStream->description = FormHelpers::nullIfEmpty($formData['description']); $liveStream->enabled = FormHelpers::toBoolean($formData['enabled']); $liveStream->shown_as_livestream = FormHelpers::toBoolean($formData['shownAsLivestream']); $coverArtFileId = FormHelpers::nullIfEmpty($formData['cover-art-id']); $file = Upload::register(Config::get("uploadPoints.coverArt"), $coverArtFileId, $liveStream->coverArtFile); EloquentHelpers::associateOrNull($liveStream->coverArtFile(), $file); if ($liveStream->save() === false) { throw new Exception("Error saving LiveStream."); } $liveStream->liveStreamUris()->delete(); // detaches all. this causes any corresponding dvrBridgeServiceUrl's to be deleted as well which must happen on any change $urlsData = json_decode($formData['urls'], true); foreach ($urlsData as $a) { $qualityDefinition = QualityDefinition::find(intval($a['qualityState']['id'])); $url = $a['url']; $dvrBridgeServiceUri = $a['dvrBridgeServiceUrl']; $nativeDvr = $a['nativeDvr']; $type = $a['type']; $support = $a['support']; $supportedDevices = null; if ($support === "pc") { $supportedDevices = "desktop"; } else { if ($support === "mobile") { $supportedDevices = "mobile"; } } $liveStreamUri = new LiveStreamUri(array("uri" => $url, "dvr_bridge_service_uri" => $dvrBridgeServiceUri, "has_dvr" => $nativeDvr, "type" => $type, "supported_devices" => $supportedDevices, "enabled" => $support !== "none")); $liveStreamUri->qualityDefinition()->associate($qualityDefinition); $liveStream->liveStreamUris()->save($liveStreamUri); } // the transaction callback result is returned out of the transaction function return true; } else { $errors = $validator->messages(); return false; } }); if ($modelCreated) { return Redirect::to(Config::get("custom.admin_base_url") . "/livestreams"); } // if not valid then return form again with errors } $view = View::make('home.admin.livestreams.edit'); $view->editing = $editing; $view->form = $formData; $view->additionalForm = $additionalFormData; $view->coverArtUploadPointId = Config::get("uploadPoints.coverArt"); $view->formErrors = $errors; $view->cancelUri = Config::get("custom.admin_base_url") . "/livestreams"; $this->setContent($view, "livestreams", "livestreams-edit"); }