diff options
Diffstat (limited to 'site/app')
| -rw-r--r-- | site/app/Http/Controllers/FKFeedController.php | 132 | ||||
| -rw-r--r-- | site/app/Http/Controllers/FKOfferController.php | 4 | ||||
| -rw-r--r-- | site/app/Http/Controllers/FKSearchController.php | 80 |
3 files changed, 214 insertions, 2 deletions
diff --git a/site/app/Http/Controllers/FKFeedController.php b/site/app/Http/Controllers/FKFeedController.php new file mode 100644 index 0000000..8e50cea --- /dev/null +++ b/site/app/Http/Controllers/FKFeedController.php @@ -0,0 +1,132 @@ +<?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 Illuminate\Support\Facades\Input; +use App\Libraries\Utility; + +class FKFeedController extends Controller { + /** + * Shows the index page. + * + * @return Response + */ + public function showPage(Request $request) { + + /* + * Sorting + */ + $sort_by = Input::get("sort"); + 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()); + $view_name = str_replace("/angebote/", "", $view_name); + + if ( "search" == $view_name ) { + $query = Input::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 { + $data = DB::table($view_name . '_view')->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 ( "" != Input::get('sort') ) { + $piwik->doTrackEvent("sort", Input::get('sort') ); + } + if ( "" != Input::get('order') ) { + $piwik->doTrackEvent("order", Input::get('order') ); + } + if ( "" != Input::get('q') ) { + $piwik->doTrackEvent("search_phrase", Input::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->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 ) { + + # 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="'.$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->add($offer->name, $offer->shop, $offer->url, $offer->created_at, $desc, $desc); + } + + return $feed->render('atom'); + + } +} diff --git a/site/app/Http/Controllers/FKOfferController.php b/site/app/Http/Controllers/FKOfferController.php index 3c761b3..8487426 100644 --- a/site/app/Http/Controllers/FKOfferController.php +++ b/site/app/Http/Controllers/FKOfferController.php @@ -60,13 +60,13 @@ class FKOfferController extends Controller { $data = DB::table($view_name . '_view')->whereNotNull('url')->orderBy($sort_by, $order_by)->simplePaginate(20); $count = DB::table($view_name . '_view')->whereNotNull('url')->count(); - $rss_feed = "/" . $view_name . "/feed/"; + $rss_feed = "/angebote/" . $view_name . "/feed/"; $query_string = ""; $query_params = Input::except('page'); foreach( $query_params as $key => $value) { $query_string .= "&" . $key . "=" . $value; } - if ( "" != $query_string ) { + if ( "search" == $view_name && "" != $query_string ) { $query_string = ltrim($query_string, "&"); $rss_feed .= "?" . $query_string; } diff --git a/site/app/Http/Controllers/FKSearchController.php b/site/app/Http/Controllers/FKSearchController.php new file mode 100644 index 0000000..a148bba --- /dev/null +++ b/site/app/Http/Controllers/FKSearchController.php @@ -0,0 +1,80 @@ +<?php +namespace App\Http\Controllers; +use Illuminate\Http\Request; +use App\Helpers\CryptoHelper; + +use Illuminate\Support\Facades\DB; +use App\Http\Controllers\Controller; + +use Illuminate\Support\Facades\Input; + +use App\Libraries\Utility; + +class FKSearchController extends Controller { + /** + * Shows the index page. + * + * @return Response + */ + public function showPage(Request $request) { + + /* + * Sorting + */ + $sort_by = Input::get("sort"); + 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 ( "desc" != $order_by ) { + if ( "created_at" == $sort_by &&"asc" != $order_by ) { + $order_by = "desc"; + } else { + $order_by = "asc"; + } + } + + $query = Input::get("q"); + $q = "%" . Utility::escapeLike($query) . "%"; + $data = DB::table('all_view')->whereNotNull('url')->where('name', 'like', $q)->orWhere('spirit_type', 'like', $q)->orWhere('shop', 'like', $q)->orderBy($sort_by, $order_by)->simplePaginate(20); + $count = DB::table('all_view')->whereNotNull('url')->where('name', 'like', $q)->orWhere('spirit_type', 'like', $q)->orWhere('shop', 'like', $q); + + $query_string = ""; + $query_params = Input::except('page'); + foreach( $query_params as $key => $value) { + $query_string .= "&" . $key . "=" . $value; + } + $query_string = ltrim($query_string, "&"); + + /* + * For strftime() in view. + */ + #setlocale(LC_TIME, 'de_DE.utf8'); + + return view('fk-search', ['data' => $data, 'count' => $count, 'search_phrase' => $query, 'rss_feed' => '/angebote/search/feed/?' . $query_string ]); + } +} |
