'rainlab.blog::lang.settings.rssfeed_title', 'description' => 'rainlab.blog::lang.settings.rssfeed_description' ]; } public function defineProperties() { return [ 'categoryFilter' => [ 'title' => 'rainlab.blog::lang.settings.posts_filter', 'description' => 'rainlab.blog::lang.settings.posts_filter_description', 'type' => 'string', 'default' => '', ], 'sortOrder' => [ 'title' => 'rainlab.blog::lang.settings.posts_order', 'description' => 'rainlab.blog::lang.settings.posts_order_description', 'type' => 'dropdown', 'default' => 'created_at desc', ], 'postsPerPage' => [ 'title' => 'rainlab.blog::lang.settings.posts_per_page', 'type' => 'string', 'validationPattern' => '^[0-9]+$', 'validationMessage' => 'rainlab.blog::lang.settings.posts_per_page_validation', 'default' => '10', ], 'blogPage' => [ 'title' => 'rainlab.blog::lang.settings.rssfeed_blog', 'description' => 'rainlab.blog::lang.settings.rssfeed_blog_description', 'type' => 'dropdown', 'default' => 'blog/post', 'group' => 'rainlab.blog::lang.settings.group_links', ], 'postPage' => [ 'title' => 'rainlab.blog::lang.settings.posts_post', 'description' => 'rainlab.blog::lang.settings.posts_post_description', 'type' => 'dropdown', 'default' => 'blog/post', 'group' => 'rainlab.blog::lang.settings.group_links', ], 'source' => [ 'title' => 'Source', 'description' => 'Source google, yandex', 'type' => 'dropdown', 'default' => 'google', ] ]; } public function getSourceOptions(){ return ['google'=>'google','yandex'=>'yandex']; } public function getBlogPageOptions() { return Page::sortBy('baseFileName')->lists('baseFileName', 'baseFileName'); } public function getPostPageOptions() { return Page::sortBy('baseFileName')->lists('baseFileName', 'baseFileName'); } public function getSortOrderOptions() { $options = BlogPost::$allowedSortingOptions; foreach ($options as $key => $value) { $options[$key] = Lang::get($value); } return $options; } public function onRun() { $this->prepareVars(); $xmlFeed = $this->renderPartial('@'.($this->property('source')=='yandex'?'yandex':'default')); return Response::make($xmlFeed, '200')->header('Content-Type', 'text/xml'); } protected function prepareVars() { $this->blogPage = $this->page['blogPage'] = $this->property('blogPage'); $this->postPage = $this->page['postPage'] = $this->property('postPage'); $this->category = $this->page['category'] = $this->loadCategory(); $this->posts = $this->page['posts'] = $this->listPosts(); $this->page['language'] = \App::getLocale(); $this->page['link'] = $this->pageUrl($this->blogPage); $this->page['rssLink'] = $this->currentPageUrl(); //Carbon::setLocale('en'); } protected function listPosts() { $category = $this->category ? $this->category->id : null; /* * List all the posts, eager load their categories */ $posts = BlogPost::with('categories')->listFrontEnd([ 'sort' => $this->property('sortOrder'), 'perPage' => $this->property('postsPerPage'), 'category' => $category ]); /* * Add a "url" helper attribute for linking to each post and category */ $posts->each(function($post) { $post->setUrl($this->postPage, $this->controller); }); return $posts; } protected function loadCategory() { if (!$categoryId = $this->property('categoryFilter')) { return null; } if (!$category = BlogCategory::whereSlug($categoryId)->first()) { return null; } return $category; } }