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')
+
Finde immer die günstigsten Angebote im Bereich Spirituosen, praktischerweise als RSS-Feed direkt aufs Handy.
+ +