Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Admin\Controllers;
- use App\Attribute;
- use App\Category;
- use App\Country;
- use App\Http\Controllers\Controller;
- use App\Language;
- use App\Manufacturer;
- use App\NewsletterEmail;
- use App\Product;
- use App\ProductAttribute;
- use App\ProductDiscountedPrice;
- use App\ProductDownload;
- use App\ProductPrice;
- use App\ProductSpecialPrice;
- use App\Region;
- use App\Site;
- use App\User;
- use DB;
- use Encore\Admin\Facades\Admin;
- use Encore\Admin\Layout\Content;
- use Illuminate\Http\Request;
- use Symfony\Component\HttpFoundation\StreamedResponse;
- class ExportController extends Controller
- {
- /**
- * Index interface.
- *
- * @return Content
- */
- public function index()
- {
- return Admin::content(function (Content $content) {
- $content
- ->header(_i('Export'))
- ->breadcrumb(
- ['text' => _i('Export')]
- );
- // Init data
- $data = [];
- $data["sites"] = Site::orderBy('id', 'asc')
- ->withTranslation()
- ->get();
- $content->body(view('admin.export', $data));
- });
- }
- /**
- * Run export
- */
- public function export(Request $request){
- $export_type = $request->input('type');
- switch ($export_type){
- case "categories":
- return $this->exportCategories($request);
- break;
- case "manufacturers":
- return $this->exportManufacturers($request);
- break;
- case "products":
- return $this->exportProducts($request);
- break;
- case "product_prices":
- return $this->exportProductPrices($request);
- break;
- case "product_special_prices":
- return $this->exportProductSpecialPrices($request);
- break;
- case "product_discounted_prices":
- return $this->exportProductDiscountedPrices($request);
- break;
- case "product_attributes":
- return $this->exportProductAttributes($request);
- break;
- case "product_downloads":
- return $this->exportProductDownloads($request);
- break;
- case "attributes":
- return $this->exportAttributes($request);
- break;
- case "countries":
- return $this->exportCountries($request);
- case "regions":
- return $this->exportRegions($request);
- case "users":
- return $this->exportUsers($request);
- break;
- case "newsletter":
- return $this->exportNewsletter($request);
- break;
- }
- admin_error(_i('Error'), _i('Please select export type!'));
- return redirect('/admin/export');
- }
- /**
- * Export categories
- * @return StreamedResponse
- */
- public function exportCategories(Request $request){
- @set_time_limit(0);
- $response = new StreamedResponse(function() use($request) {
- // Get CSV Settings
- $delimiter = $request->input('csv_delimiter', ';');
- $enclosure = $request->input('csv_enclosure', '"');
- // Open output stream
- $handle = fopen('php://output', 'w');
- fputs($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
- // Get languages
- $languages = Language::get();
- // Fields
- $fields = [];
- $fields[] = 'id';
- $fields[] = 'root_cat';
- $fields[] = 'seo_url';
- // Get translated fields
- foreach ($languages as $lang){
- $fields[] = 'name['.$lang->getLocaleLanguage().']';
- }
- $fields[] = 'image';
- $fields[] = 'hidden';
- // Add CSV headers
- fputcsv($handle, $fields, $delimiter, $enclosure);
- // Get all items
- Category::chunk(500, function($items) use($handle, $languages, $delimiter, $enclosure) {
- foreach ($items as $item) {
- // Prepare export data
- $data = [];
- $data[] = $item->id;
- $data[] = $item->root_cat;
- $data[] = $item->seo_url;
- foreach ($languages as $lang){
- $data[] = $item->{'name:'.$lang->getLocaleLanguage()};
- }
- $data[] = $item->image;
- $data[] = $item->hidden;
- // Add a new row with data
- fputcsv($handle, $data, $delimiter, $enclosure);
- }
- });
- // Close the output stream
- fclose($handle);
- }, 200, [
- 'Content-Type' => 'text/csv',
- 'Content-Disposition' => 'attachment; filename="export.csv"',
- ]);
- return $response;
- }
- /**
- * Export manufacturers
- * @return StreamedResponse
- */
- public function exportManufacturers(Request $request){
- @set_time_limit(0);
- $response = new StreamedResponse(function() use($request) {
- // Get CSV Settings
- $delimiter = $request->input('csv_delimiter', ';');
- $enclosure = $request->input('csv_enclosure', '"');
- // Open output stream
- $handle = fopen('php://output', 'w');
- fputs($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
- // Fields
- $fields = [];
- $fields[] = 'id';
- $fields[] = 'name';
- $fields[] = 'image';
- // Add CSV headers
- fputcsv($handle, $fields, $delimiter, $enclosure);
- // Get all items
- Manufacturer::chunk(500, function($items) use($handle, $delimiter, $enclosure) {
- foreach ($items as $item) {
- // Prepare export data
- $data = [];
- $data[] = $item->id;
- $data[] = $item->name;
- $data[] = $item->image;
- // Add a new row with data
- fputcsv($handle, $data, $delimiter, $enclosure);
- }
- });
- // Close the output stream
- fclose($handle);
- }, 200, [
- 'Content-Type' => 'text/csv',
- 'Content-Disposition' => 'attachment; filename="export.csv"',
- ]);
- return $response;
- }
- /**
- * Export attributes
- * @return StreamedResponse
- */
- public function exportAttributes(Request $request){
- @set_time_limit(0);
- $response = new StreamedResponse(function() use($request) {
- // Get CSV Settings
- $delimiter = $request->input('csv_delimiter', ';');
- $enclosure = $request->input('csv_enclosure', '"');
- // Open output stream
- $handle = fopen('php://output', 'w');
- fputs($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
- // Get languages
- $languages = Language::get();
- // Fields
- $fields = [];
- $fields[] = 'id';
- // Get translated fields
- foreach ($languages as $lang){
- $fields[] = 'name['.$lang->getLocaleLanguage().']';
- }
- $fields[] = 'use_in_filters';
- $fields[] = 'sort';
- // Add CSV headers
- fputcsv($handle, $fields, $delimiter, $enclosure);
- // Get all items
- Attribute::chunk(500, function($items) use($handle, $delimiter, $enclosure, $languages) {
- foreach ($items as $item) {
- // Prepare export data
- $data = [];
- $data[] = $item->id;
- // Get translated fields
- foreach ($languages as $lang){
- $data[] = $item->{'name:'.$lang->getLocaleLanguage()};
- }
- $data[] = $item->use_in_filters;
- $data[] = $item->sort;
- // Add a new row with data
- fputcsv($handle, $data, $delimiter, $enclosure);
- }
- });
- // Close the output stream
- fclose($handle);
- }, 200, [
- 'Content-Type' => 'text/csv',
- 'Content-Disposition' => 'attachment; filename="export.csv"',
- ]);
- return $response;
- }
- /**
- * Export product attributes
- * @return StreamedResponse
- */
- public function exportProductAttributes(Request $request){
- @set_time_limit(0);
- $response = new StreamedResponse(function() use($request) {
- // Get CSV Settings
- $delimiter = $request->input('csv_delimiter', ';');
- $enclosure = $request->input('csv_enclosure', '"');
- // Open output stream
- $handle = fopen('php://output', 'w');
- fputs($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
- // Get site
- $site = Site::getCurrent();
- // Get languages from database
- $languages = Language::where('id', '!=', $site->language->id)->get();
- // Fields
- $fields = [];
- $fields[] = 'stock_no';
- $fields[] = 'attribute_name['.$site->language->getLocaleLanguage().']';
- $fields[] = 'attribute_value['.$site->language->getLocaleLanguage().']';
- // Get translated fields
- foreach ($languages as $lang){
- $fields[] = 'attribute_name['.$lang->getLocaleLanguage().']';
- $fields[] = 'attribute_value['.$lang->getLocaleLanguage().']';
- }
- $fields[] = 'use_in_filters';
- // Add CSV headers
- fputcsv($handle, $fields, $delimiter, $enclosure);
- // Get all items
- ProductAttribute::where('locale', $site->language->getLocaleLanguage())
- ->with('product')
- ->orderBy('product_id', 'asc')
- ->chunk(500, function($items) use($handle, $delimiter, $enclosure, $languages, $site) {
- foreach ($items as $item) {
- if(!empty($item->product)) {
- // Get attribute lang
- $attribute = Attribute::find($item->attribute_id);
- // Prepare export data
- $data = [];
- $data[] = $item->product->stock_no;
- $data[] = $attribute->{'name:' . $site->language->getLocaleLanguage()};
- $data[] = $item->value;
- // Get translated fields
- foreach ($languages as $lang) {
- // Get language field
- $lang_val = ProductAttribute::where('attribute_id', $item->attribute_id)
- ->where('product_id', $item->product_id)
- ->where('locale', $lang->getLocaleLanguage())
- ->first();
- if ($lang_val) {
- $data[] = $attribute{'name:' . $lang->getLocaleLanguage()};
- $data[] = $lang_val->value;
- } else {
- $data[] = "";
- $data[] = "";
- }
- }
- $data[] = $attribute->use_in_filters;
- // Add a new row with data
- fputcsv($handle, $data, $delimiter, $enclosure);
- }
- }
- });
- // Close the output stream
- fclose($handle);
- }, 200, [
- 'Content-Type' => 'text/csv',
- 'Content-Disposition' => 'attachment; filename="export.csv"',
- ]);
- return $response;
- }
- /**
- * Export product prices
- * @return StreamedResponse
- */
- public function exportProductPrices(Request $request){
- @set_time_limit(0);
- // Get site id
- $site_id = $request->input('site_id');
- if(!$site_id){
- admin_error(_i('Error'), _i('Please select site!'));
- return redirect('/admin/export');
- }
- $response = new StreamedResponse(function() use($request, $site_id) {
- // Get CSV Settings
- $delimiter = $request->input('csv_delimiter', ';');
- $enclosure = $request->input('csv_enclosure', '"');
- // Open output stream
- $handle = fopen('php://output', 'w');
- fputs($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
- // Fields
- $fields = [];
- $fields[] = 'stock_no';
- $fields[] = 'price';
- $fields[] = 'price_in_shop';
- // Add CSV headers
- fputcsv($handle, $fields, $delimiter, $enclosure);
- // Get all items
- ProductPrice::where('site_id', $site_id)
- ->with('product')
- ->orderBy('product_id', 'asc')
- ->chunk(500, function($items) use($handle, $delimiter, $enclosure) {
- foreach ($items as $item) {
- if(!empty($item->product)) {
- // Prepare export data
- $data = [];
- $data[] = $item->product->stock_no;
- $data[] = $item->price;
- $data[] = $item->price_in_shop;
- // Add a new row with data
- fputcsv($handle, $data, $delimiter, $enclosure);
- }
- }
- });
- // Close the output stream
- fclose($handle);
- }, 200, [
- 'Content-Type' => 'text/csv',
- 'Content-Disposition' => 'attachment; filename="export.csv"',
- ]);
- return $response;
- }
- /**
- * Export product special prices
- * @return StreamedResponse
- */
- public function exportProductSpecialPrices(Request $request){
- @set_time_limit(0);
- // Get site id
- $site_id = $request->input('site_id');
- if(!$site_id){
- admin_error(_i('Error'), _i('Please select site!'));
- return redirect('/admin/export');
- }
- $response = new StreamedResponse(function() use($request, $site_id) {
- // Get CSV Settings
- $delimiter = $request->input('csv_delimiter', ';');
- $enclosure = $request->input('csv_enclosure', '"');
- // Open output stream
- $handle = fopen('php://output', 'w');
- fputs($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
- // Fields
- $fields = [];
- $fields[] = 'stock_no';
- $fields[] = 'special_price';
- $fields[] = 'special_price_from';
- $fields[] = 'special_price_to';
- // Add CSV headers
- fputcsv($handle, $fields, $delimiter, $enclosure);
- // Get all items
- ProductSpecialPrice::where('site_id', $site_id)
- ->with('product')
- ->orderBy('product_id', 'asc')
- ->chunk(500, function($items) use($handle, $delimiter, $enclosure) {
- foreach ($items as $item) {
- if(!empty($item->product)) {
- // Prepare export data
- $data = [];
- $data[] = $item->product->stock_no;
- $data[] = $item->special_price;
- $data[] = $item->special_price_from;
- $data[] = $item->special_price_to;
- // Add a new row with data
- fputcsv($handle, $data, $delimiter, $enclosure);
- }
- }
- });
- // Close the output stream
- fclose($handle);
- }, 200, [
- 'Content-Type' => 'text/csv',
- 'Content-Disposition' => 'attachment; filename="export.csv"',
- ]);
- return $response;
- }
- /**
- * Export product discounted prices
- * @return StreamedResponse
- */
- public function exportProductDiscountedPrices(Request $request){
- @set_time_limit(0);
- // Get site id
- $site_id = $request->input('site_id');
- if(!$site_id){
- admin_error(_i('Error'), _i('Please select site!'));
- return redirect('/admin/export');
- }
- $response = new StreamedResponse(function() use($request, $site_id) {
- // Get CSV Settings
- $delimiter = $request->input('csv_delimiter', ';');
- $enclosure = $request->input('csv_enclosure', '"');
- // Open output stream
- $handle = fopen('php://output', 'w');
- fputs($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
- // Fields
- $fields = [];
- $fields[] = 'stock_no';
- $fields[] = 'order_amount';
- $fields[] = 'price';
- // Add CSV headers
- fputcsv($handle, $fields, $delimiter, $enclosure);
- // Get all items
- ProductDiscountedPrice::where('site_id', $site_id)
- ->with('product')
- ->orderBy('product_id', 'asc')
- ->chunk(500, function($items) use($handle, $delimiter, $enclosure) {
- foreach ($items as $item) {
- if(!empty($item->product)) {
- // Prepare export data
- $data = [];
- $data[] = $item->product->stock_no;
- $data[] = $item->order_amount;
- $data[] = $item->price;
- // Add a new row with data
- fputcsv($handle, $data, $delimiter, $enclosure);
- }
- }
- });
- // Close the output stream
- fclose($handle);
- }, 200, [
- 'Content-Type' => 'text/csv',
- 'Content-Disposition' => 'attachment; filename="export.csv"',
- ]);
- return $response;
- }
- /**
- * Export product downloads
- * @return StreamedResponse
- */
- public function exportProductDownloads(Request $request){
- @set_time_limit(0);
- $response = new StreamedResponse(function() use($request) {
- // Get CSV Settings
- $delimiter = $request->input('csv_delimiter', ';');
- $enclosure = $request->input('csv_enclosure', '"');
- // Open output stream
- $handle = fopen('php://output', 'w');
- fputs($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
- // Fields
- $fields = [];
- $fields[] = 'stock_no';
- $fields[] = 'locale';
- $fields[] = 'name';
- $fields[] = 'file';
- // Add CSV headers
- fputcsv($handle, $fields, $delimiter, $enclosure);
- // Get all items
- ProductDownload::with('product')
- ->orderBy('product_id', 'asc')
- ->chunk(500, function($items) use($handle, $delimiter, $enclosure) {
- foreach ($items as $item) {
- if(!empty($item->product)) {
- // Prepare export data
- $data = [];
- $data[] = $item->product->stock_no;
- $data[] = $item->locale;
- $data[] = $item->name;
- $data[] = $item->file;
- // Add a new row with data
- fputcsv($handle, $data, $delimiter, $enclosure);
- }
- }
- });
- // Close the output stream
- fclose($handle);
- }, 200, [
- 'Content-Type' => 'text/csv',
- 'Content-Disposition' => 'attachment; filename="export.csv"',
- ]);
- return $response;
- }
- /**
- * Export products
- * @return StreamedResponse
- */
- public function exportProducts(Request $request){
- @set_time_limit(0);
- $response = new StreamedResponse(function() use($request) {
- // Get CSV Settings
- $delimiter = $request->input('csv_delimiter', ';');
- $enclosure = $request->input('csv_enclosure', '"');
- // Open output stream
- $handle = fopen('php://output', 'w');
- fputs($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
- // Get languages
- $languages = Language::get();
- // Fields
- $fields = [];
- $fields[] = 'id';
- $fields[] = 'categories_ids';
- $fields[] = 'root_categories_names';
- $fields[] = 'categories_names';
- $fields[] = 'manufacturer_id';
- $fields[] = 'seo_url';
- // Get translated fields
- foreach ($languages as $lang){
- $fields[] = 'name['.$lang->getLocaleLanguage().']';
- }
- $fields[] = 'image';
- $fields[] = 'images';
- $fields[] = 'stock_no';
- $fields[] = 'ean';
- $fields[] = 'part_no';
- $fields[] = 'in_stock';
- // Get translated fields
- foreach ($languages as $lang){
- $fields[] = 'in_stock_text['.$lang->getLocaleLanguage().']';
- $fields[] = 'out_of_stock_text['.$lang->getLocaleLanguage().']';
- }
- $fields[] = 'minimum_order';
- $fields[] = 'weight';
- $fields[] = 'is_gift';
- $fields[] = 'gift_from_price';
- // Get description fields
- foreach ($languages as $lang) {
- $fields[] = 'short_description['.$lang->getLocaleLanguage().']';
- $fields[] = 'long_description['.$lang->getLocaleLanguage().']';
- $fields[] = 'technical_description['.$lang->getLocaleLanguage().']';
- $fields[] = 'in_delivery_description['.$lang->getLocaleLanguage().']';
- $fields[] = 'equipment_description['.$lang->getLocaleLanguage().']';
- $fields[] = 'features_description['.$lang->getLocaleLanguage().']';
- $fields[] = 'aditional_info_description['.$lang->getLocaleLanguage().']';
- $fields[] = 'youtube_video_link['.$lang->getLocaleLanguage().']';
- }
- $fields[] = 'accessories';
- $fields[] = 'similar';
- $fields[] = 'hidden';
- // Add CSV headers
- fputcsv($handle, $fields, $delimiter, $enclosure);
- // Get all items
- Product::with('categories')
- ->with('gallery')
- ->with('accessories')
- ->with('similar')
- ->with('alldescriptions')
- ->chunk(500, function($items) use($handle, $delimiter, $enclosure, $languages) {
- foreach ($items as $item) {
- // Get product categories
- $categories = $item->categories->pluck("id")->toArray();
- $rootcats = $item->categories->pluck("root_cat")->toArray();
- $categories_text = implode(',',$categories);
- $catnames = Array();
- $rootcatnames = Array();
- foreach ($categories as $cat) {
- $cattrans = DB::table('category_translations')->where('category_id', $cat)->get();
- $catname = $cattrans[0]->name;
- array_push($catnames, $catname);
- }
- foreach ($rootcats as $rcat) {
- $rcattrans = DB::table('category_translations')->where('category_id', $rcat)->get();
- $rcatname = $rcattrans[0]->name;
- array_push($rootcatnames, $rcatname);
- }
- $category_names_text = implode(',',$catnames);
- $root_category_names_text = implode(',',$rootcatnames);
- // Get product images
- $images = $item->gallery->pluck("image")->toArray();
- $images_text = implode(',', $images);
- // Get product accessories
- $accessories = $item->accessories->pluck("stock_no")->toArray();
- $accessories_text = implode(',', $accessories);
- // Get product similar
- $similar = $item->similar->pluck("stock_no")->toArray();
- $similar_text = implode(',', $similar);
- // Prepare export data
- $data = [];
- $data[] = $item->id;
- $data[] = $categories_text;
- $data[] = $root_category_names_text;
- $data[] = $category_names_text;
- $data[] = $item->manufacturer_id;
- $data[] = $item->seo_url;
- // Get lang fields
- foreach ($languages as $lang) {
- $data[] = $item->{'name:'.$lang->getLocaleLanguage()};
- }
- $data[] = $item->image;
- $data[] = $images_text;
- $data[] = $item->stock_no;
- $data[] = $item->ean;
- $data[] = $item->part_no;
- $data[] = $item->in_stock;
- // Get lang fields
- foreach ($languages as $lang) {
- $data[] = $item->{'in_stock_text:'.$lang->getLocaleLanguage()};
- $data[] = $item->{'out_of_stock_text:'.$lang->getLocaleLanguage()};
- }
- $data[] = $item->minimum_order;
- $data[] = $item->weight;
- $data[] = $item->is_gift;
- $data[] = $item->gift_from_price;
- // Get lang fields
- foreach ($languages as $lang) {
- $data[] = $this->getProductDescriptionValue($item, $lang, 'short');
- $data[] = $this->getProductDescriptionValue($item, $lang, 'long');
- $data[] = $this->getProductDescriptionValue($item, $lang, 'technical');
- $data[] = $this->getProductDescriptionValue($item, $lang, 'in_delivery');
- $data[] = $this->getProductDescriptionValue($item, $lang, 'equipment');
- $data[] = $this->getProductDescriptionValue($item, $lang, 'features');
- $data[] = $this->getProductDescriptionValue($item, $lang, 'aditional_info');
- $data[] = $this->getProductDescriptionValue($item, $lang, 'youtube');
- }
- $data[] = $accessories_text;
- $data[] = $similar_text;
- $data[] = $item->hidden;
- // Add a new row with data
- fputcsv($handle, $data, $delimiter, $enclosure);
- }
- });
- // Close the output stream
- fclose($handle);
- }, 200, [
- 'Content-Type' => 'text/csv',
- 'Content-Disposition' => 'attachment; filename="export.csv"',
- ]);
- return $response;
- }
- /**
- * @param Product $product
- * @param Language $lang
- * @param string $type Description Type
- * @return string
- */
- private function getProductDescriptionValue($product, $lang, $type){
- $description = $product->alldescriptions->where('locale', $lang->getLocaleLanguage())->where('type', $type)->first();
- if($description){
- return $description->value;
- }
- return "";
- }
- /**
- * Export users
- * @return StreamedResponse
- */
- public function exportUsers(Request $request){
- @set_time_limit(0);
- // Get site id
- $site_id = $request->input('site_id');
- if(!$site_id){
- admin_error(_i('Error'), _i('Please select site!'));
- return redirect('/admin/export');
- }
- $response = new StreamedResponse(function() use($request, $site_id) {
- // Get CSV Settings
- $delimiter = $request->input('csv_delimiter', ';');
- $enclosure = $request->input('csv_enclosure', '"');
- // Open output stream
- $handle = fopen('php://output', 'w');
- fputs($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
- // Fields
- $fields = [];
- $fields[] = 'id';
- $fields[] = 'country_id';
- $fields[] = 'region_id';
- $fields[] = 'email';
- $fields[] = 'first_name';
- $fields[] = 'last_name';
- $fields[] = 'date_of_birth';
- $fields[] = 'user_type';
- $fields[] = 'company';
- $fields[] = 'company_id';
- $fields[] = 'address';
- $fields[] = 'city';
- $fields[] = 'zip';
- $fields[] = 'phone';
- $fields[] = 'mobile';
- $fields[] = 'newsletter';
- $fields[] = 'discount';
- $fields[] = 'created_at';
- // Add CSV headers
- fputcsv($handle, $fields, $delimiter, $enclosure);
- // Get all items
- User::where('site_id', $site_id)->chunk(500, function($items) use($handle, $delimiter, $enclosure) {
- foreach ($items as $item) {
- // Prepare export data
- $data = [];
- $data[] = $item->id;
- $data[] = $item->country_id;
- $data[] = $item->region_id;
- $data[] = $item->email;
- $data[] = $item->first_name;
- $data[] = $item->last_name;
- $data[] = $item->date_of_birth;
- $data[] = $item->user_type;
- $data[] = $item->company;
- $data[] = $item->company_id;
- $data[] = $item->address;
- $data[] = $item->city;
- $data[] = $item->zip;
- $data[] = $item->phone;
- $data[] = $item->mobile;
- $data[] = $item->newsletter;
- $data[] = $item->discount;
- $data[] = $item->created_at;
- // Add a new row with data
- fputcsv($handle, $data, $delimiter, $enclosure);
- }
- });
- // Close the output stream
- fclose($handle);
- }, 200, [
- 'Content-Type' => 'text/csv',
- 'Content-Disposition' => 'attachment; filename="export.csv"',
- ]);
- return $response;
- }
- /**
- * Export regions
- * @return StreamedResponse
- */
- public function exportRegions(Request $request){
- @set_time_limit(0);
- $response = new StreamedResponse(function() use($request) {
- // Get CSV Settings
- $delimiter = $request->input('csv_delimiter', ';');
- $enclosure = $request->input('csv_enclosure', '"');
- // Open output stream
- $handle = fopen('php://output', 'w');
- fputs($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
- // Fields
- $fields = [];
- $fields[] = 'id';
- $fields[] = 'country_id';
- $fields[] = 'name';
- // Add CSV headers
- fputcsv($handle, $fields, $delimiter, $enclosure);
- // Get all items
- Region::chunk(500, function($items) use($handle, $delimiter, $enclosure) {
- foreach ($items as $item) {
- // Prepare export data
- $data = [];
- $data[] = $item->id;
- $data[] = $item->country_id;
- $data[] = $item->name;
- // Add a new row with data
- fputcsv($handle, $data, $delimiter, $enclosure);
- }
- });
- // Close the output stream
- fclose($handle);
- }, 200, [
- 'Content-Type' => 'text/csv',
- 'Content-Disposition' => 'attachment; filename="export.csv"',
- ]);
- return $response;
- }
- /**
- * Export countries
- * @return StreamedResponse
- */
- public function exportCountries(Request $request){
- @set_time_limit(0);
- $response = new StreamedResponse(function() use($request) {
- // Get CSV Settings
- $delimiter = $request->input('csv_delimiter', ';');
- $enclosure = $request->input('csv_enclosure', '"');
- // Open output stream
- $handle = fopen('php://output', 'w');
- fputs($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
- // Fields
- $fields = [];
- $fields[] = 'id';
- $fields[] = 'name';
- // Add CSV headers
- fputcsv($handle, $fields, $delimiter, $enclosure);
- // Get all items
- Country::chunk(500, function($items) use($handle, $delimiter, $enclosure) {
- foreach ($items as $item) {
- // Prepare export data
- $data = [];
- $data[] = $item->id;
- $data[] = $item->name;
- // Add a new row with data
- fputcsv($handle, $data, $delimiter, $enclosure);
- }
- });
- // Close the output stream
- fclose($handle);
- }, 200, [
- 'Content-Type' => 'text/csv',
- 'Content-Disposition' => 'attachment; filename="export.csv"',
- ]);
- return $response;
- }
- /**
- * Export newsletter applications
- * @return StreamedResponse
- */
- public function exportNewsletter(Request $request){
- @set_time_limit(0);
- // Get site id
- $site_id = $request->input('site_id');
- if(!$site_id){
- admin_error(_i('Error'), _i('Please select site!'));
- return redirect('/admin/export');
- }
- $response = new StreamedResponse(function() use($request, $site_id) {
- // Get CSV Settings
- $delimiter = $request->input('csv_delimiter', ';');
- $enclosure = $request->input('csv_enclosure', '"');
- // Open output stream
- $handle = fopen('php://output', 'w');
- fputs($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
- // Get all items
- NewsletterEmail::where('site_id', $site_id)->chunk(500, function($items) use($handle, $delimiter, $enclosure) {
- foreach ($items as $item) {
- // Prepare export data
- $data = [];
- $data[] = $item->email;
- // Add a new row with data
- fputcsv($handle, $data, $delimiter, $enclosure);
- }
- });
- // Close the output stream
- fclose($handle);
- }, 200, [
- 'Content-Type' => 'text/csv',
- 'Content-Disposition' => 'attachment; filename="export.csv"',
- ]);
- return $response;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement