summaryrefslogtreecommitdiff
path: root/app/Http/Controllers/FeedController.php
diff options
context:
space:
mode:
authorhorus2021-01-21 20:15:02 +0100
committerhorus2021-01-21 20:15:02 +0100
commitcee42aa17a6bb354df0600e6632702a2b4df7d82 (patch)
treeed46566748af04c5a932a42fcac2d4a71a000df5 /app/Http/Controllers/FeedController.php
parent0ac587eb5790ed710aadc4eeaac6abdc18d448fd (diff)
downloadkategorischeraperitif-cee42aa17a6bb354df0600e6632702a2b4df7d82.tar.gz
Rename RSSController to FeedController.
Diffstat (limited to 'app/Http/Controllers/FeedController.php')
-rw-r--r--app/Http/Controllers/FeedController.php151
1 files changed, 151 insertions, 0 deletions
diff --git a/app/Http/Controllers/FeedController.php b/app/Http/Controllers/FeedController.php
new file mode 100644
index 0000000..adc2896
--- /dev/null
+++ b/app/Http/Controllers/FeedController.php
@@ -0,0 +1,151 @@
+<?php
+namespace App\Http\Controllers;
+use Illuminate\Http\Request;
+use App\Helpers\CryptoHelper;
+
+use Illuminate\Support\Facades\DB;
+use App\Http\Controllers\Controller;
+
+use Carbon;
+use App\Libraries\Utility;
+use App\Libraries\TemplateFunction;
+
+class FeedController extends Controller {
+ /**
+ * Shows the index page.
+ *
+ * @return Response
+ */
+ public function showPage(Request $request) {
+
+ /*
+ * Sorting
+ */
+ $sort_by = $request->get("filter");
+ switch ($sort_by) {
+ case("price"):
+ $sort_by = "discounted_price";
+ break;
+ case("discounted_price"):
+ $sort_by = "discounted_price";
+ break;
+ case("name"):
+ $sort_by = "name";
+ break;
+ case("shop"):
+ $sort_by = "shop";
+ break;
+ case("procent"):
+ $sort_by = "procent";
+ break;
+ case("time"):
+ $sort_by = "created_at";
+ break;
+ case("created_at"):
+ $sort_by = "created_at";
+ break;
+ default:
+ $sort_by = "created_at";
+ break;
+ }
+
+ $order_by = $request->input("order");
+ if ( "asc" != $order_by ) {
+ $order_by = "desc";
+ }
+
+ /*
+ * Database query
+ */
+ $view_name = str_replace("_feed", "", \Request::route()->getName());
+
+ if ( "search" == $view_name ) {
+ if ( "" != $request->get("q") ) {
+ $query = $request->get("q");
+ $q = "%" . Utility::escapeLike($query) . "%";
+ $data = DB::table('all_view')->whereNotNull('url')->where('name', 'like', $q)->orWhere('spirit_type', 'like', $q)->orderBy($sort_by, $order_by)->limit(20)->get();
+ } else if ( "" != $request->get('type') ) {
+ $data = DB::table('all_view')->where('spirit_type', '=', $request->get('type'))->whereNotNull('url')->orderBy($sort_by, $order_by)->limit(20)->get();
+ } else if ( "" != $request->get('shop') ) {
+ $data = DB::table('all_view')->where('shop', '=', $request->get('shop'))->whereNotNull('url')->orderBy($sort_by, $order_by)->limit(20)->get();
+ } else {
+ $view_name = 'all'; // empty search will be processed in the next step
+ }
+ }
+
+ // either empty search or generic feed
+ if ( !isset($data) ) {
+ $data = DB::table($view_name . '_view')->where('procent', '>=', 10)->orderBy($sort_by, $order_by)->limit(20)->get();
+ }
+
+ /*
+ * For strftime().
+ */
+ setlocale(LC_TIME, 'de_DE.utf8');
+
+ /*
+ if ( "" != env('PIWIK_RSS_ID') ) {
+ $piwik = new \PiwikTracker( env('PIWIK_RSS_ID'), env('PIWIK_RSS_URL') );
+ $piwik->setTokenAuth( env('PIWIK_RSS_AUTH_TOKEN') );
+ $piwik->setVisitorId( $piwik->getVisitorId() );
+ $piwik->setIp( $request->header('X_REAL_IP') );
+ $piwik->setUrl( $request->fullUrl() );
+
+ $piwik->setUrlReferrer( $request->server('HTTP_REFERER') );
+ $piwik->setBrowserLanguage( $request->server('HTTP_ACCEPT_LANGUAGE') );
+ $piwik->setUserAgent( $request->server('HTTP_USER_AGENT') );
+
+ $piwik->doTrackPageView( ucfirst($view_name) . "-Feed" );
+
+ if ( "" != $request->get('filter') ) {
+ $piwik->doTrackEvent("sort", $request->get('sort') );
+ }
+ if ( "" != $request->get('order') ) {
+ $piwik->doTrackEvent("order", $request->get('order') );
+ }
+ if ( "" != $request->get('q') ) {
+ $piwik->doTrackEvent("search_phrase", $request->get('q') );
+ }
+ }
+ */
+
+
+
+ $feed = \App::make("feed");
+
+ $feed->title = "Sonderangebote";
+ $feed->description = 'Finde immer die günstigsten Angebote im Bereich Spirituosen. Regelmäßig neue Schnäppchen.';
+ $feed->logo = url('https://angebote.fuselkoenig.de/img/paw-400-400.png');
+ $feed->link = url( $request->fullUrl() );
+ #$feed->setDateFormat('timestamp'); // 'datetime', 'timestamp' or 'carbon'
+ $feed->setDateFormat('datetime'); // 'datetime', 'timestamp' or 'carbon'
+ $feed->pubdate = strftime('%Y-%m-%d', $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 ) {
+
+ # Adds campagin
+ $offer->url = $offer->url . "?pk_campaign=feed&pk_kwd=" . urlencode($offer->name) . "&pk_source=" . $view_name . "_feed";
+
+ if ( "" != env('PIWIK_RSS_ID') ) {
+ //$piwik->doTrackContentImpression($offer->spirit_type, $offer->name, $offer->long_url);
+ }
+
+ $desc = '<p><img src="'.TemplateFunction::Camo($offer->image_url).'"></p><p><strong>'.$offer->spirit_type.'</strong><br>'. $offer->name . ' gesenkt auf <strong>' . \TF::fF($offer->discounted_price) . '€</strong> statt ' . \TF::fF($offer->original_price) . '€ ('.$offer->procent.'% Rabatt auf '. $offer->shop .').';
+
+ $feed->addItem( [
+ 'title' => $offer->name,
+ 'author' => $offer->shop,
+ 'url' => $offer->url,
+ 'link' => $offer->url,
+ 'pubdate' => strftime('%Y-%m-%d', $offer->created_at),
+ 'description' => $desc,
+ 'content' => $desc ] );
+ }
+
+ return $feed->render('atom');
+
+ }
+}