From ef460c65ab5e6e3bfdb27ef596d00fc93314eb72 Mon Sep 17 00:00:00 2001 From: horus Date: Tue, 13 Feb 2018 14:28:40 +0100 Subject: Adds RSS-Feeds. --- site/app/Http/Controllers/FeedController.php | 89 +++++++++++++++++++ site/app/Http/Controllers/PageFeedController.php | 34 +++++++ site/composer.json | 3 +- site/composer.lock | 62 ++++++++++++- site/public/css/custom.css | 3 + site/resources/views/feeds.blade.php | 107 +++++++++++++++++++++++ site/resources/views/layouts/base.blade.php | 4 +- site/resources/views/offer.blade.php | 4 + site/resources/views/snippets/footer.blade.php | 15 +++- site/resources/views/snippets/navbar.blade.php | 9 ++ site/routes/web.php | 10 +++ 11 files changed, 336 insertions(+), 4 deletions(-) create mode 100644 site/app/Http/Controllers/FeedController.php create mode 100644 site/app/Http/Controllers/PageFeedController.php create mode 100644 site/resources/views/feeds.blade.php (limited to 'site') diff --git a/site/app/Http/Controllers/FeedController.php b/site/app/Http/Controllers/FeedController.php new file mode 100644 index 0000000..7ac39c1 --- /dev/null +++ b/site/app/Http/Controllers/FeedController.php @@ -0,0 +1,89 @@ +input("order"); + if ( "desc" != $order_by ) { + $order_by = "asc"; + } + + /* + * Database query + */ + $view_name = str_replace("_feed", "", \Request::route()->getName()); + #$data = DB::table($view_name . '_view')->orderBy('created_at', 'DESC')->limit(100)->get(); + $data = DB::table($view_name . '_view')->orderBy($sort_by, $order_by)->limit(20)->get(); + + /* + * For strftime(). + */ + setlocale(LC_TIME, 'de_DE.utf8'); + + $feed = \App::make("feed"); + + $feed->title = "Sonderangebote"; + $feed->description = 'Finde immer die günstigsten Angebote im Bereich Spirituosen. Täglich neue Schnäppchen.'; + $feed->logo = 'https://fuselkoenig.de/favicon.ico'; + $feed->link = url('feed'); + $feed->setDateFormat('timestamp'); // 'datetime', 'timestamp' or 'carbon' + $feed->pubdate = $data[0]->created_at; + $feed->lang = 'de'; + $feed->setShortening(true); // true or false + $feed->setTextLimit(5000); // maximum length of description text + + foreach ( $data as $offer ) { + $desc = '

'.$offer->spirit_type.'
Statt ' . \TF::fF($offer->original_price) . '€ nur noch ' . \TF::fF($offer->discounted_price) . "€ (".$offer->procent."% Rabatt)."; + $feed->add($offer->name, $offer->shop, $offer->url, $offer->created_at, $desc, $offer->name); + } + + return $feed->render('atom'); + + } +} diff --git a/site/app/Http/Controllers/PageFeedController.php b/site/app/Http/Controllers/PageFeedController.php new file mode 100644 index 0000000..e29c8ca --- /dev/null +++ b/site/app/Http/Controllers/PageFeedController.php @@ -0,0 +1,34 @@ + 19.98 ORDER BY created_at DESC LIMIT 1)"; + } + # todo: schlägt manchmal fehl + $query .= " UNION (SELECT name, image_url, spirit_type, spirit_type AS url, spirit_type AS feedname, '' AS linktext, created_at FROM ". $view ."_view WHERE original_price > 19.98 AND (procent < (SELECT MAX(procent) FROM all_view)) ORDER BY procent LIMIT 1)"; + + $data = DB::select($query); + + return view('feeds', ['data' => $data, 'views' => $views]); + } +} diff --git a/site/composer.json b/site/composer.json index 27695dc..39587c4 100644 --- a/site/composer.json +++ b/site/composer.json @@ -8,7 +8,8 @@ "php": ">=7.1.3", "fideloper/proxy": "~4.0", "laravel/framework": "5.6.*", - "laravel/tinker": "~1.0" + "laravel/tinker": "~1.0", + "roumen/feed": "^2.12" }, "require-dev": { "filp/whoops": "~2.0", diff --git a/site/composer.lock b/site/composer.lock index 6116aa7..c48b766 100644 --- a/site/composer.lock +++ b/site/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "bf3c948f982e4ea5ec2fcaef27270719", + "content-hash": "1ff6dde5a4092d06ccfcce8fc2b7d989", "packages": [ { "name": "dnoegel/php-xdg-base-dir", @@ -1263,6 +1263,66 @@ ], "time": "2018-01-20T00:28:24+00:00" }, + { + "name": "roumen/feed", + "version": "v2.12.1", + "source": { + "type": "git", + "url": "https://github.com/Laravelium/laravel-feed.git", + "reference": "1fd410a282b489c94ebc6b993f161a9447fda172" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Laravelium/laravel-feed/zipball/1fd410a282b489c94ebc6b993f161a9447fda172", + "reference": "1fd410a282b489c94ebc6b993f161a9447fda172", + "shasum": "" + }, + "require": { + "illuminate/support": "5.6.*", + "php": ">=7.1.3" + }, + "require-dev": { + "phpunit/phpunit": "~7.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Roumen\\Feed\\FeedServiceProvider" + ], + "aliases": { + "Feed": "Roumen\\Feed\\Feed" + } + } + }, + "autoload": { + "psr-0": { + "Roumen\\Feed": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roumen Damianoff", + "email": "roumen@damianoff.com", + "homepage": "https://damianoff.com", + "role": "Developer" + } + ], + "description": "A simple feed generator for Laravel.", + "homepage": "https://laravelium.com", + "keywords": [ + "atom", + "feed", + "generator", + "laravel", + "rss" + ], + "time": "2018-02-07T20:50:19+00:00" + }, { "name": "swiftmailer/swiftmailer", "version": "v6.0.2", diff --git a/site/public/css/custom.css b/site/public/css/custom.css index 742b363..3fe47d0 100644 --- a/site/public/css/custom.css +++ b/site/public/css/custom.css @@ -107,3 +107,6 @@ footer { padding-right: 5px; opacity: 0.9; } +.footer-link { + padding-left: 0px !important; +} diff --git a/site/resources/views/feeds.blade.php b/site/resources/views/feeds.blade.php new file mode 100644 index 0000000..8914967 --- /dev/null +++ b/site/resources/views/feeds.blade.php @@ -0,0 +1,107 @@ +@extends('layouts.base') + +@section('content') +

+
+
+

Angebote als RSS Feeds

+

Finde immer die günstigsten Angebote im Bereich Spirituosen, praktischerweise als RSS-Feed direkt aufs Handy.

+

Zurück zur Übersicht...

+
+
+ + +feedname = "Feed aller Angebote"; + $offer->linktext = "Zum Feed aller Angebote."; + $offer->url = "all"; + $offer->spirit_type = "Alle Angebote"; + } else if ( !in_array(strtolower($offer->spirit_type), $views) ) { + // card of misc offers + $offer->url = "misc"; + $offer->feedname = "Feed der weiteren Angebote"; + $offer->linktext = "Zum Feed der weiteren Angebote."; + $offer->spirit_type = "Verschiedenes"; + } else { + // main cards + $offer->url = lcfirst($offer->url) ; + $offer->feedname = $offer->feedname . "-Feed"; + $offer->linktext = "Zum ". $offer->spirit_type ." Feed"; + } + $offer->url = $offer->url . "/feed/"; + + if ( $count % 2 == 0) { +?> +
+ + +
+
+ {{ $offer->name }} +
+
+ {{ $offer->spirit_type }} +
+

+ + Hier geht es zum {{ $offer->feedname }} + +

+ + {{ $offer->linktext }} +
+ {{ $offer->name }} +
+
+ + +
+ +
+ + + + +@endsection + + +@section('scripts') + +@endsection diff --git a/site/resources/views/layouts/base.blade.php b/site/resources/views/layouts/base.blade.php index 13d35dc..4ebaff6 100644 --- a/site/resources/views/layouts/base.blade.php +++ b/site/resources/views/layouts/base.blade.php @@ -6,7 +6,7 @@ - Alkobote + Angebote | Fuselkoenig.de
diff --git a/site/routes/web.php b/site/routes/web.php index 65a1237..4c64112 100644 --- a/site/routes/web.php +++ b/site/routes/web.php @@ -18,6 +18,16 @@ Route::get('/wodka', 'OfferController@showPage')->name('wodka'); Route::get('/gin', 'OfferController@showPage')->name('gin'); Route::get('/rum', 'OfferController@showPage')->name('rum'); Route::get('/misc', 'OfferController@showPage')->name('misc'); +Route::get('/all', 'OfferController@showPage')->name('all'); + +Route::get('/feeds', 'PageFeedController@showPage')->name('feed'); + +Route::get('/whisky/feed', 'FeedController@showPage')->name('whisky_feed'); +Route::get('/wodka/feed', 'FeedController@showPage')->name('wodka_feed'); +Route::get('/gin/feed', 'FeedController@showPage')->name('gin_feed'); +Route::get('/rum/feed', 'FeedController@showPage')->name('rum_feed'); +Route::get('/misc/feed', 'FeedController@showPage')->name('misc_feed'); +Route::get('/all/feed', 'FeedController@showPage')->name('all_feed'); Route::get('/welcome', function () { return view('welcome'); -- cgit v1.2.3