per_page) || is_null($request)) { $pagination = 5; } else { $pagination = $request->per_page; } return Podcast::searchFilter($request) ->where('id', '!=', 1) ->with(['episodes', 'imported', 'owner']) ->paginate($pagination) ->toJson(); } public function store(Request $request) { return $this->save($request); } /** * Method used to update a smart block * @param Request $request * @param $id * @return mixed */ public function update(Request $request) { return $this->save($request); } public function destroy($id) { try { PodcastEpisode::where('podcast_id', $id)->delete(); ImportedPodcast::where('podcast_id', $id)->delete(); Podcast::destroy($id); return true; } catch(\Exception $e) { return response()->json(['message' => $e->getMessage()], 500); } } public function show(Request $request, $id) { $xml = simplexml_load_file($request->url); return $xml->channel; } public function getEpisodes(Request $request) { $xml = simplexml_load_file($request->url, null, LIBXML_NOCDATA); $xmlArray = (array) $xml->channel; //episodes are stored in `item` array return $xmlArray['item']; } protected function save(Request $request) { $user = Auth::user(); $xml = simplexml_load_file($request->url); $itunes = $xml->channel->children('itunes', TRUE); $dbPodcast = Podcast::firstOrNew(['id' => $request->id]); $dbPodcast->fill([ 'url' => $request->url, 'title' => $xml->channel->title, 'creator' => $itunes->author, 'description' => $itunes->subtitle, 'language' => $xml->channel->language, 'copyright' => $xml->channel->copyright, 'link' => $xml->channel->link, 'itunes_author'=> $itunes->author, 'itunes_keywords' => '', 'itunes_summary' => $itunes->summary, 'itunes_subtitle' => $itunes->subtitle, 'itunes_category' => '', 'itunes_explicit' => $itunes->explicit, 'owner' => $user->id, ])->save(); return response()->json([ 'podcast' => $dbPodcast, 'episodes' => $xml->channel->children('item', TRUE) ]); } }