Advertisement
Guest User

Untitled

a guest
Mar 30th, 2020
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 38.11 KB | None | 0 0
  1. <?php
  2.  
  3.  
  4.  
  5. namespace App\Admin\Controllers;
  6.  
  7.  
  8.  
  9. use App\Attribute;
  10.  
  11. use App\Category;
  12.  
  13. use App\Country;
  14.  
  15. use App\Http\Controllers\Controller;
  16.  
  17. use App\Language;
  18.  
  19. use App\Manufacturer;
  20.  
  21. use App\NewsletterEmail;
  22.  
  23. use App\Product;
  24.  
  25. use App\ProductAttribute;
  26.  
  27. use App\ProductDiscountedPrice;
  28.  
  29. use App\ProductDownload;
  30.  
  31. use App\ProductPrice;
  32.  
  33. use App\ProductSpecialPrice;
  34.  
  35. use App\Region;
  36.  
  37. use App\Site;
  38.  
  39. use App\User;
  40.  
  41. use DB;
  42.  
  43. use Encore\Admin\Facades\Admin;
  44.  
  45. use Encore\Admin\Layout\Content;
  46.  
  47. use Illuminate\Http\Request;
  48.  
  49. use Symfony\Component\HttpFoundation\StreamedResponse;
  50.  
  51.  
  52.  
  53. class ExportController extends Controller
  54.  
  55. {
  56.  
  57. /**
  58.  
  59. * Index interface.
  60.  
  61. *
  62.  
  63. * @return Content
  64.  
  65. */
  66.  
  67. public function index()
  68.  
  69. {
  70.  
  71. return Admin::content(function (Content $content) {
  72.  
  73. $content
  74.  
  75. ->header(_i('Export'))
  76.  
  77. ->breadcrumb(
  78.  
  79. ['text' => _i('Export')]
  80.  
  81. );
  82.  
  83.  
  84.  
  85. // Init data
  86.  
  87. $data = [];
  88.  
  89. $data["sites"] = Site::orderBy('id', 'asc')
  90.  
  91. ->withTranslation()
  92.  
  93. ->get();
  94.  
  95.  
  96.  
  97. $content->body(view('admin.export', $data));
  98.  
  99. });
  100.  
  101. }
  102.  
  103.  
  104.  
  105. /**
  106.  
  107. * Run export
  108.  
  109. */
  110.  
  111. public function export(Request $request){
  112.  
  113.  
  114.  
  115. $export_type = $request->input('type');
  116.  
  117.  
  118.  
  119. switch ($export_type){
  120.  
  121. case "categories":
  122.  
  123. return $this->exportCategories($request);
  124.  
  125. break;
  126.  
  127. case "manufacturers":
  128.  
  129. return $this->exportManufacturers($request);
  130.  
  131. break;
  132.  
  133. case "products":
  134.  
  135. return $this->exportProducts($request);
  136.  
  137. break;
  138.  
  139. case "product_prices":
  140.  
  141. return $this->exportProductPrices($request);
  142.  
  143. break;
  144.  
  145. case "product_special_prices":
  146.  
  147. return $this->exportProductSpecialPrices($request);
  148.  
  149. break;
  150.  
  151. case "product_discounted_prices":
  152.  
  153. return $this->exportProductDiscountedPrices($request);
  154.  
  155. break;
  156.  
  157. case "product_attributes":
  158.  
  159. return $this->exportProductAttributes($request);
  160.  
  161. break;
  162.  
  163. case "product_downloads":
  164.  
  165. return $this->exportProductDownloads($request);
  166.  
  167. break;
  168.  
  169. case "attributes":
  170.  
  171. return $this->exportAttributes($request);
  172.  
  173. break;
  174.  
  175. case "countries":
  176.  
  177. return $this->exportCountries($request);
  178.  
  179. case "regions":
  180.  
  181. return $this->exportRegions($request);
  182.  
  183. case "users":
  184.  
  185. return $this->exportUsers($request);
  186.  
  187. break;
  188.  
  189. case "newsletter":
  190.  
  191. return $this->exportNewsletter($request);
  192.  
  193. break;
  194.  
  195. }
  196.  
  197.  
  198.  
  199. admin_error(_i('Error'), _i('Please select export type!'));
  200.  
  201. return redirect('/admin/export');
  202.  
  203. }
  204.  
  205.  
  206.  
  207. /**
  208.  
  209. * Export categories
  210.  
  211. * @return StreamedResponse
  212.  
  213. */
  214.  
  215. public function exportCategories(Request $request){
  216.  
  217. @set_time_limit(0);
  218.  
  219.  
  220.  
  221. $response = new StreamedResponse(function() use($request) {
  222.  
  223.  
  224.  
  225. // Get CSV Settings
  226.  
  227. $delimiter = $request->input('csv_delimiter', ';');
  228.  
  229. $enclosure = $request->input('csv_enclosure', '"');
  230.  
  231.  
  232.  
  233. // Open output stream
  234.  
  235. $handle = fopen('php://output', 'w');
  236.  
  237. fputs($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
  238.  
  239.  
  240.  
  241. // Get languages
  242.  
  243. $languages = Language::get();
  244.  
  245.  
  246.  
  247. // Fields
  248.  
  249. $fields = [];
  250.  
  251. $fields[] = 'id';
  252.  
  253. $fields[] = 'root_cat';
  254.  
  255. $fields[] = 'seo_url';
  256.  
  257.  
  258.  
  259. // Get translated fields
  260.  
  261. foreach ($languages as $lang){
  262.  
  263. $fields[] = 'name['.$lang->getLocaleLanguage().']';
  264.  
  265. }
  266.  
  267.  
  268.  
  269. $fields[] = 'image';
  270.  
  271. $fields[] = 'hidden';
  272.  
  273.  
  274.  
  275. // Add CSV headers
  276.  
  277. fputcsv($handle, $fields, $delimiter, $enclosure);
  278.  
  279.  
  280.  
  281. // Get all items
  282.  
  283. Category::chunk(500, function($items) use($handle, $languages, $delimiter, $enclosure) {
  284.  
  285. foreach ($items as $item) {
  286.  
  287.  
  288.  
  289. // Prepare export data
  290.  
  291. $data = [];
  292.  
  293. $data[] = $item->id;
  294.  
  295. $data[] = $item->root_cat;
  296.  
  297. $data[] = $item->seo_url;
  298.  
  299.  
  300.  
  301. foreach ($languages as $lang){
  302.  
  303. $data[] = $item->{'name:'.$lang->getLocaleLanguage()};
  304.  
  305. }
  306.  
  307.  
  308.  
  309. $data[] = $item->image;
  310.  
  311. $data[] = $item->hidden;
  312.  
  313.  
  314.  
  315. // Add a new row with data
  316.  
  317. fputcsv($handle, $data, $delimiter, $enclosure);
  318.  
  319. }
  320.  
  321. });
  322.  
  323.  
  324.  
  325. // Close the output stream
  326.  
  327. fclose($handle);
  328.  
  329.  
  330.  
  331. }, 200, [
  332.  
  333. 'Content-Type' => 'text/csv',
  334.  
  335. 'Content-Disposition' => 'attachment; filename="export.csv"',
  336.  
  337. ]);
  338.  
  339.  
  340.  
  341. return $response;
  342.  
  343. }
  344.  
  345.  
  346.  
  347. /**
  348.  
  349. * Export manufacturers
  350.  
  351. * @return StreamedResponse
  352.  
  353. */
  354.  
  355. public function exportManufacturers(Request $request){
  356.  
  357. @set_time_limit(0);
  358.  
  359.  
  360.  
  361. $response = new StreamedResponse(function() use($request) {
  362.  
  363.  
  364.  
  365. // Get CSV Settings
  366.  
  367. $delimiter = $request->input('csv_delimiter', ';');
  368.  
  369. $enclosure = $request->input('csv_enclosure', '"');
  370.  
  371.  
  372.  
  373. // Open output stream
  374.  
  375. $handle = fopen('php://output', 'w');
  376.  
  377. fputs($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
  378.  
  379.  
  380.  
  381. // Fields
  382.  
  383. $fields = [];
  384.  
  385. $fields[] = 'id';
  386.  
  387. $fields[] = 'name';
  388.  
  389. $fields[] = 'image';
  390.  
  391.  
  392.  
  393. // Add CSV headers
  394.  
  395. fputcsv($handle, $fields, $delimiter, $enclosure);
  396.  
  397.  
  398.  
  399. // Get all items
  400.  
  401. Manufacturer::chunk(500, function($items) use($handle, $delimiter, $enclosure) {
  402.  
  403. foreach ($items as $item) {
  404.  
  405.  
  406.  
  407. // Prepare export data
  408.  
  409. $data = [];
  410.  
  411. $data[] = $item->id;
  412.  
  413. $data[] = $item->name;
  414.  
  415. $data[] = $item->image;
  416.  
  417.  
  418.  
  419. // Add a new row with data
  420.  
  421. fputcsv($handle, $data, $delimiter, $enclosure);
  422.  
  423. }
  424.  
  425. });
  426.  
  427.  
  428.  
  429. // Close the output stream
  430.  
  431. fclose($handle);
  432.  
  433.  
  434.  
  435. }, 200, [
  436.  
  437. 'Content-Type' => 'text/csv',
  438.  
  439. 'Content-Disposition' => 'attachment; filename="export.csv"',
  440.  
  441. ]);
  442.  
  443.  
  444.  
  445. return $response;
  446.  
  447. }
  448.  
  449.  
  450.  
  451. /**
  452.  
  453. * Export attributes
  454.  
  455. * @return StreamedResponse
  456.  
  457. */
  458.  
  459. public function exportAttributes(Request $request){
  460.  
  461. @set_time_limit(0);
  462.  
  463.  
  464.  
  465. $response = new StreamedResponse(function() use($request) {
  466.  
  467.  
  468.  
  469. // Get CSV Settings
  470.  
  471. $delimiter = $request->input('csv_delimiter', ';');
  472.  
  473. $enclosure = $request->input('csv_enclosure', '"');
  474.  
  475.  
  476.  
  477. // Open output stream
  478.  
  479. $handle = fopen('php://output', 'w');
  480.  
  481. fputs($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
  482.  
  483.  
  484.  
  485. // Get languages
  486.  
  487. $languages = Language::get();
  488.  
  489.  
  490.  
  491. // Fields
  492.  
  493. $fields = [];
  494.  
  495. $fields[] = 'id';
  496.  
  497.  
  498.  
  499. // Get translated fields
  500.  
  501. foreach ($languages as $lang){
  502.  
  503. $fields[] = 'name['.$lang->getLocaleLanguage().']';
  504.  
  505. }
  506.  
  507.  
  508.  
  509. $fields[] = 'use_in_filters';
  510.  
  511. $fields[] = 'sort';
  512.  
  513.  
  514.  
  515. // Add CSV headers
  516.  
  517. fputcsv($handle, $fields, $delimiter, $enclosure);
  518.  
  519.  
  520.  
  521. // Get all items
  522.  
  523. Attribute::chunk(500, function($items) use($handle, $delimiter, $enclosure, $languages) {
  524.  
  525. foreach ($items as $item) {
  526.  
  527.  
  528.  
  529. // Prepare export data
  530.  
  531. $data = [];
  532.  
  533. $data[] = $item->id;
  534.  
  535.  
  536.  
  537. // Get translated fields
  538.  
  539. foreach ($languages as $lang){
  540.  
  541. $data[] = $item->{'name:'.$lang->getLocaleLanguage()};
  542.  
  543. }
  544.  
  545.  
  546.  
  547. $data[] = $item->use_in_filters;
  548.  
  549. $data[] = $item->sort;
  550.  
  551.  
  552.  
  553. // Add a new row with data
  554.  
  555. fputcsv($handle, $data, $delimiter, $enclosure);
  556.  
  557. }
  558.  
  559. });
  560.  
  561.  
  562.  
  563. // Close the output stream
  564.  
  565. fclose($handle);
  566.  
  567.  
  568.  
  569. }, 200, [
  570.  
  571. 'Content-Type' => 'text/csv',
  572.  
  573. 'Content-Disposition' => 'attachment; filename="export.csv"',
  574.  
  575. ]);
  576.  
  577.  
  578.  
  579. return $response;
  580.  
  581. }
  582.  
  583.  
  584.  
  585. /**
  586.  
  587. * Export product attributes
  588.  
  589. * @return StreamedResponse
  590.  
  591. */
  592.  
  593. public function exportProductAttributes(Request $request){
  594.  
  595. @set_time_limit(0);
  596.  
  597.  
  598.  
  599. $response = new StreamedResponse(function() use($request) {
  600.  
  601.  
  602.  
  603. // Get CSV Settings
  604.  
  605. $delimiter = $request->input('csv_delimiter', ';');
  606.  
  607. $enclosure = $request->input('csv_enclosure', '"');
  608.  
  609.  
  610.  
  611. // Open output stream
  612.  
  613. $handle = fopen('php://output', 'w');
  614.  
  615. fputs($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
  616.  
  617.  
  618.  
  619. // Get site
  620.  
  621. $site = Site::getCurrent();
  622.  
  623.  
  624.  
  625. // Get languages from database
  626.  
  627. $languages = Language::where('id', '!=', $site->language->id)->get();
  628.  
  629.  
  630.  
  631. // Fields
  632.  
  633. $fields = [];
  634.  
  635. $fields[] = 'stock_no';
  636.  
  637. $fields[] = 'attribute_name['.$site->language->getLocaleLanguage().']';
  638.  
  639. $fields[] = 'attribute_value['.$site->language->getLocaleLanguage().']';
  640.  
  641.  
  642.  
  643. // Get translated fields
  644.  
  645. foreach ($languages as $lang){
  646.  
  647. $fields[] = 'attribute_name['.$lang->getLocaleLanguage().']';
  648.  
  649. $fields[] = 'attribute_value['.$lang->getLocaleLanguage().']';
  650.  
  651. }
  652.  
  653.  
  654.  
  655. $fields[] = 'use_in_filters';
  656.  
  657.  
  658.  
  659. // Add CSV headers
  660.  
  661. fputcsv($handle, $fields, $delimiter, $enclosure);
  662.  
  663.  
  664.  
  665. // Get all items
  666.  
  667. ProductAttribute::where('locale', $site->language->getLocaleLanguage())
  668.  
  669. ->with('product')
  670.  
  671. ->orderBy('product_id', 'asc')
  672.  
  673. ->chunk(500, function($items) use($handle, $delimiter, $enclosure, $languages, $site) {
  674.  
  675. foreach ($items as $item) {
  676.  
  677. if(!empty($item->product)) {
  678.  
  679. // Get attribute lang
  680.  
  681. $attribute = Attribute::find($item->attribute_id);
  682.  
  683.  
  684.  
  685. // Prepare export data
  686.  
  687. $data = [];
  688.  
  689. $data[] = $item->product->stock_no;
  690.  
  691. $data[] = $attribute->{'name:' . $site->language->getLocaleLanguage()};
  692.  
  693. $data[] = $item->value;
  694.  
  695.  
  696.  
  697. // Get translated fields
  698.  
  699. foreach ($languages as $lang) {
  700.  
  701. // Get language field
  702.  
  703. $lang_val = ProductAttribute::where('attribute_id', $item->attribute_id)
  704.  
  705. ->where('product_id', $item->product_id)
  706.  
  707. ->where('locale', $lang->getLocaleLanguage())
  708.  
  709. ->first();
  710.  
  711. if ($lang_val) {
  712.  
  713. $data[] = $attribute{'name:' . $lang->getLocaleLanguage()};
  714.  
  715. $data[] = $lang_val->value;
  716.  
  717. } else {
  718.  
  719. $data[] = "";
  720.  
  721. $data[] = "";
  722.  
  723. }
  724.  
  725. }
  726.  
  727.  
  728.  
  729. $data[] = $attribute->use_in_filters;
  730.  
  731.  
  732.  
  733. // Add a new row with data
  734.  
  735. fputcsv($handle, $data, $delimiter, $enclosure);
  736.  
  737. }
  738.  
  739. }
  740.  
  741. });
  742.  
  743.  
  744.  
  745. // Close the output stream
  746.  
  747. fclose($handle);
  748.  
  749.  
  750.  
  751. }, 200, [
  752.  
  753. 'Content-Type' => 'text/csv',
  754.  
  755. 'Content-Disposition' => 'attachment; filename="export.csv"',
  756.  
  757. ]);
  758.  
  759.  
  760.  
  761. return $response;
  762.  
  763. }
  764.  
  765.  
  766.  
  767. /**
  768.  
  769. * Export product prices
  770.  
  771. * @return StreamedResponse
  772.  
  773. */
  774.  
  775. public function exportProductPrices(Request $request){
  776.  
  777. @set_time_limit(0);
  778.  
  779.  
  780.  
  781. // Get site id
  782.  
  783. $site_id = $request->input('site_id');
  784.  
  785. if(!$site_id){
  786.  
  787. admin_error(_i('Error'), _i('Please select site!'));
  788.  
  789. return redirect('/admin/export');
  790.  
  791. }
  792.  
  793.  
  794.  
  795. $response = new StreamedResponse(function() use($request, $site_id) {
  796.  
  797.  
  798.  
  799. // Get CSV Settings
  800.  
  801. $delimiter = $request->input('csv_delimiter', ';');
  802.  
  803. $enclosure = $request->input('csv_enclosure', '"');
  804.  
  805.  
  806.  
  807. // Open output stream
  808.  
  809. $handle = fopen('php://output', 'w');
  810.  
  811. fputs($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
  812.  
  813.  
  814.  
  815. // Fields
  816.  
  817. $fields = [];
  818.  
  819. $fields[] = 'stock_no';
  820.  
  821. $fields[] = 'price';
  822.  
  823. $fields[] = 'price_in_shop';
  824.  
  825.  
  826.  
  827. // Add CSV headers
  828.  
  829. fputcsv($handle, $fields, $delimiter, $enclosure);
  830.  
  831.  
  832.  
  833. // Get all items
  834.  
  835. ProductPrice::where('site_id', $site_id)
  836.  
  837. ->with('product')
  838.  
  839. ->orderBy('product_id', 'asc')
  840.  
  841. ->chunk(500, function($items) use($handle, $delimiter, $enclosure) {
  842.  
  843. foreach ($items as $item) {
  844.  
  845. if(!empty($item->product)) {
  846.  
  847. // Prepare export data
  848.  
  849. $data = [];
  850.  
  851. $data[] = $item->product->stock_no;
  852.  
  853. $data[] = $item->price;
  854.  
  855. $data[] = $item->price_in_shop;
  856.  
  857.  
  858.  
  859. // Add a new row with data
  860.  
  861. fputcsv($handle, $data, $delimiter, $enclosure);
  862.  
  863. }
  864.  
  865. }
  866.  
  867. });
  868.  
  869.  
  870.  
  871. // Close the output stream
  872.  
  873. fclose($handle);
  874.  
  875.  
  876.  
  877. }, 200, [
  878.  
  879. 'Content-Type' => 'text/csv',
  880.  
  881. 'Content-Disposition' => 'attachment; filename="export.csv"',
  882.  
  883. ]);
  884.  
  885.  
  886.  
  887. return $response;
  888.  
  889. }
  890.  
  891.  
  892.  
  893. /**
  894.  
  895. * Export product special prices
  896.  
  897. * @return StreamedResponse
  898.  
  899. */
  900.  
  901. public function exportProductSpecialPrices(Request $request){
  902.  
  903. @set_time_limit(0);
  904.  
  905.  
  906.  
  907. // Get site id
  908.  
  909. $site_id = $request->input('site_id');
  910.  
  911. if(!$site_id){
  912.  
  913. admin_error(_i('Error'), _i('Please select site!'));
  914.  
  915. return redirect('/admin/export');
  916.  
  917. }
  918.  
  919.  
  920.  
  921. $response = new StreamedResponse(function() use($request, $site_id) {
  922.  
  923.  
  924.  
  925. // Get CSV Settings
  926.  
  927. $delimiter = $request->input('csv_delimiter', ';');
  928.  
  929. $enclosure = $request->input('csv_enclosure', '"');
  930.  
  931.  
  932.  
  933. // Open output stream
  934.  
  935. $handle = fopen('php://output', 'w');
  936.  
  937. fputs($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
  938.  
  939.  
  940.  
  941. // Fields
  942.  
  943. $fields = [];
  944.  
  945. $fields[] = 'stock_no';
  946.  
  947. $fields[] = 'special_price';
  948.  
  949. $fields[] = 'special_price_from';
  950.  
  951. $fields[] = 'special_price_to';
  952.  
  953.  
  954.  
  955. // Add CSV headers
  956.  
  957. fputcsv($handle, $fields, $delimiter, $enclosure);
  958.  
  959.  
  960.  
  961. // Get all items
  962.  
  963. ProductSpecialPrice::where('site_id', $site_id)
  964.  
  965. ->with('product')
  966.  
  967. ->orderBy('product_id', 'asc')
  968.  
  969. ->chunk(500, function($items) use($handle, $delimiter, $enclosure) {
  970.  
  971. foreach ($items as $item) {
  972.  
  973. if(!empty($item->product)) {
  974.  
  975. // Prepare export data
  976.  
  977. $data = [];
  978.  
  979. $data[] = $item->product->stock_no;
  980.  
  981. $data[] = $item->special_price;
  982.  
  983. $data[] = $item->special_price_from;
  984.  
  985. $data[] = $item->special_price_to;
  986.  
  987.  
  988.  
  989. // Add a new row with data
  990.  
  991. fputcsv($handle, $data, $delimiter, $enclosure);
  992.  
  993. }
  994.  
  995. }
  996.  
  997. });
  998.  
  999.  
  1000.  
  1001. // Close the output stream
  1002.  
  1003. fclose($handle);
  1004.  
  1005.  
  1006.  
  1007. }, 200, [
  1008.  
  1009. 'Content-Type' => 'text/csv',
  1010.  
  1011. 'Content-Disposition' => 'attachment; filename="export.csv"',
  1012.  
  1013. ]);
  1014.  
  1015.  
  1016.  
  1017. return $response;
  1018.  
  1019. }
  1020.  
  1021.  
  1022.  
  1023. /**
  1024.  
  1025. * Export product discounted prices
  1026.  
  1027. * @return StreamedResponse
  1028.  
  1029. */
  1030.  
  1031. public function exportProductDiscountedPrices(Request $request){
  1032.  
  1033. @set_time_limit(0);
  1034.  
  1035.  
  1036.  
  1037. // Get site id
  1038.  
  1039. $site_id = $request->input('site_id');
  1040.  
  1041. if(!$site_id){
  1042.  
  1043. admin_error(_i('Error'), _i('Please select site!'));
  1044.  
  1045. return redirect('/admin/export');
  1046.  
  1047. }
  1048.  
  1049.  
  1050.  
  1051. $response = new StreamedResponse(function() use($request, $site_id) {
  1052.  
  1053.  
  1054.  
  1055. // Get CSV Settings
  1056.  
  1057. $delimiter = $request->input('csv_delimiter', ';');
  1058.  
  1059. $enclosure = $request->input('csv_enclosure', '"');
  1060.  
  1061.  
  1062.  
  1063. // Open output stream
  1064.  
  1065. $handle = fopen('php://output', 'w');
  1066.  
  1067. fputs($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
  1068.  
  1069.  
  1070.  
  1071. // Fields
  1072.  
  1073. $fields = [];
  1074.  
  1075. $fields[] = 'stock_no';
  1076.  
  1077. $fields[] = 'order_amount';
  1078.  
  1079. $fields[] = 'price';
  1080.  
  1081.  
  1082.  
  1083. // Add CSV headers
  1084.  
  1085. fputcsv($handle, $fields, $delimiter, $enclosure);
  1086.  
  1087.  
  1088.  
  1089. // Get all items
  1090.  
  1091. ProductDiscountedPrice::where('site_id', $site_id)
  1092.  
  1093. ->with('product')
  1094.  
  1095. ->orderBy('product_id', 'asc')
  1096.  
  1097. ->chunk(500, function($items) use($handle, $delimiter, $enclosure) {
  1098.  
  1099. foreach ($items as $item) {
  1100.  
  1101. if(!empty($item->product)) {
  1102.  
  1103. // Prepare export data
  1104.  
  1105. $data = [];
  1106.  
  1107. $data[] = $item->product->stock_no;
  1108.  
  1109. $data[] = $item->order_amount;
  1110.  
  1111. $data[] = $item->price;
  1112.  
  1113.  
  1114.  
  1115. // Add a new row with data
  1116.  
  1117. fputcsv($handle, $data, $delimiter, $enclosure);
  1118.  
  1119. }
  1120.  
  1121. }
  1122.  
  1123. });
  1124.  
  1125.  
  1126.  
  1127. // Close the output stream
  1128.  
  1129. fclose($handle);
  1130.  
  1131.  
  1132.  
  1133. }, 200, [
  1134.  
  1135. 'Content-Type' => 'text/csv',
  1136.  
  1137. 'Content-Disposition' => 'attachment; filename="export.csv"',
  1138.  
  1139. ]);
  1140.  
  1141.  
  1142.  
  1143. return $response;
  1144.  
  1145. }
  1146.  
  1147.  
  1148.  
  1149. /**
  1150.  
  1151. * Export product downloads
  1152.  
  1153. * @return StreamedResponse
  1154.  
  1155. */
  1156.  
  1157. public function exportProductDownloads(Request $request){
  1158.  
  1159. @set_time_limit(0);
  1160.  
  1161.  
  1162.  
  1163. $response = new StreamedResponse(function() use($request) {
  1164.  
  1165.  
  1166.  
  1167. // Get CSV Settings
  1168.  
  1169. $delimiter = $request->input('csv_delimiter', ';');
  1170.  
  1171. $enclosure = $request->input('csv_enclosure', '"');
  1172.  
  1173.  
  1174.  
  1175. // Open output stream
  1176.  
  1177. $handle = fopen('php://output', 'w');
  1178.  
  1179. fputs($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
  1180.  
  1181.  
  1182.  
  1183. // Fields
  1184.  
  1185. $fields = [];
  1186.  
  1187. $fields[] = 'stock_no';
  1188.  
  1189. $fields[] = 'locale';
  1190.  
  1191. $fields[] = 'name';
  1192.  
  1193. $fields[] = 'file';
  1194.  
  1195.  
  1196.  
  1197. // Add CSV headers
  1198.  
  1199. fputcsv($handle, $fields, $delimiter, $enclosure);
  1200.  
  1201.  
  1202.  
  1203. // Get all items
  1204.  
  1205. ProductDownload::with('product')
  1206.  
  1207. ->orderBy('product_id', 'asc')
  1208.  
  1209. ->chunk(500, function($items) use($handle, $delimiter, $enclosure) {
  1210.  
  1211. foreach ($items as $item) {
  1212.  
  1213. if(!empty($item->product)) {
  1214.  
  1215. // Prepare export data
  1216.  
  1217. $data = [];
  1218.  
  1219. $data[] = $item->product->stock_no;
  1220.  
  1221. $data[] = $item->locale;
  1222.  
  1223. $data[] = $item->name;
  1224.  
  1225. $data[] = $item->file;
  1226.  
  1227.  
  1228.  
  1229. // Add a new row with data
  1230.  
  1231. fputcsv($handle, $data, $delimiter, $enclosure);
  1232.  
  1233. }
  1234.  
  1235. }
  1236.  
  1237. });
  1238.  
  1239.  
  1240.  
  1241. // Close the output stream
  1242.  
  1243. fclose($handle);
  1244.  
  1245.  
  1246.  
  1247. }, 200, [
  1248.  
  1249. 'Content-Type' => 'text/csv',
  1250.  
  1251. 'Content-Disposition' => 'attachment; filename="export.csv"',
  1252.  
  1253. ]);
  1254.  
  1255.  
  1256.  
  1257. return $response;
  1258.  
  1259. }
  1260.  
  1261.  
  1262.  
  1263. /**
  1264.  
  1265. * Export products
  1266.  
  1267. * @return StreamedResponse
  1268.  
  1269. */
  1270.  
  1271. public function exportProducts(Request $request){
  1272.  
  1273. @set_time_limit(0);
  1274.  
  1275.  
  1276.  
  1277. $response = new StreamedResponse(function() use($request) {
  1278.  
  1279.  
  1280.  
  1281. // Get CSV Settings
  1282.  
  1283. $delimiter = $request->input('csv_delimiter', ';');
  1284.  
  1285. $enclosure = $request->input('csv_enclosure', '"');
  1286.  
  1287.  
  1288.  
  1289. // Open output stream
  1290.  
  1291. $handle = fopen('php://output', 'w');
  1292.  
  1293. fputs($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
  1294.  
  1295.  
  1296.  
  1297. // Get languages
  1298.  
  1299. $languages = Language::get();
  1300.  
  1301.  
  1302.  
  1303. // Fields
  1304.  
  1305. $fields = [];
  1306.  
  1307. $fields[] = 'id';
  1308.  
  1309. $fields[] = 'categories_ids';
  1310.  
  1311. $fields[] = 'root_categories_names';
  1312.  
  1313. $fields[] = 'categories_names';
  1314.  
  1315. $fields[] = 'manufacturer_id';
  1316.  
  1317. $fields[] = 'seo_url';
  1318.  
  1319.  
  1320.  
  1321. // Get translated fields
  1322.  
  1323. foreach ($languages as $lang){
  1324.  
  1325. $fields[] = 'name['.$lang->getLocaleLanguage().']';
  1326.  
  1327. }
  1328.  
  1329.  
  1330.  
  1331. $fields[] = 'image';
  1332.  
  1333. $fields[] = 'images';
  1334.  
  1335. $fields[] = 'stock_no';
  1336.  
  1337. $fields[] = 'ean';
  1338.  
  1339. $fields[] = 'part_no';
  1340.  
  1341. $fields[] = 'in_stock';
  1342.  
  1343.  
  1344.  
  1345. // Get translated fields
  1346.  
  1347. foreach ($languages as $lang){
  1348.  
  1349. $fields[] = 'in_stock_text['.$lang->getLocaleLanguage().']';
  1350.  
  1351. $fields[] = 'out_of_stock_text['.$lang->getLocaleLanguage().']';
  1352.  
  1353. }
  1354.  
  1355.  
  1356.  
  1357. $fields[] = 'minimum_order';
  1358.  
  1359. $fields[] = 'weight';
  1360.  
  1361.  
  1362.  
  1363. $fields[] = 'is_gift';
  1364.  
  1365. $fields[] = 'gift_from_price';
  1366.  
  1367.  
  1368.  
  1369. // Get description fields
  1370.  
  1371. foreach ($languages as $lang) {
  1372.  
  1373. $fields[] = 'short_description['.$lang->getLocaleLanguage().']';
  1374.  
  1375. $fields[] = 'long_description['.$lang->getLocaleLanguage().']';
  1376.  
  1377. $fields[] = 'technical_description['.$lang->getLocaleLanguage().']';
  1378.  
  1379. $fields[] = 'in_delivery_description['.$lang->getLocaleLanguage().']';
  1380.  
  1381. $fields[] = 'equipment_description['.$lang->getLocaleLanguage().']';
  1382.  
  1383. $fields[] = 'features_description['.$lang->getLocaleLanguage().']';
  1384.  
  1385. $fields[] = 'aditional_info_description['.$lang->getLocaleLanguage().']';
  1386.  
  1387. $fields[] = 'youtube_video_link['.$lang->getLocaleLanguage().']';
  1388.  
  1389. }
  1390.  
  1391.  
  1392.  
  1393. $fields[] = 'accessories';
  1394.  
  1395. $fields[] = 'similar';
  1396.  
  1397.  
  1398.  
  1399. $fields[] = 'hidden';
  1400.  
  1401.  
  1402.  
  1403. // Add CSV headers
  1404.  
  1405. fputcsv($handle, $fields, $delimiter, $enclosure);
  1406.  
  1407.  
  1408.  
  1409. // Get all items
  1410.  
  1411. Product::with('categories')
  1412.  
  1413. ->with('gallery')
  1414.  
  1415. ->with('accessories')
  1416.  
  1417. ->with('similar')
  1418.  
  1419. ->with('alldescriptions')
  1420.  
  1421. ->chunk(500, function($items) use($handle, $delimiter, $enclosure, $languages) {
  1422.  
  1423. foreach ($items as $item) {
  1424.  
  1425.  
  1426.  
  1427. // Get product categories
  1428.  
  1429. $categories = $item->categories->pluck("id")->toArray();
  1430. $rootcats = $item->categories->pluck("root_cat")->toArray();
  1431.  
  1432. $categories_text = implode(',',$categories);
  1433.  
  1434. $catnames = Array();
  1435.  
  1436. $rootcatnames = Array();
  1437.  
  1438. foreach ($categories as $cat) {
  1439. $cattrans = DB::table('category_translations')->where('category_id', $cat)->get();
  1440. $catname = $cattrans[0]->name;
  1441. array_push($catnames, $catname);
  1442. }
  1443.  
  1444. foreach ($rootcats as $rcat) {
  1445. $rcattrans = DB::table('category_translations')->where('category_id', $rcat)->get();
  1446. $rcatname = $rcattrans[0]->name;
  1447. array_push($rootcatnames, $rcatname);
  1448. }
  1449.  
  1450. $category_names_text = implode(',',$catnames);
  1451. $root_category_names_text = implode(',',$rootcatnames);
  1452.  
  1453. // Get product images
  1454.  
  1455. $images = $item->gallery->pluck("image")->toArray();
  1456.  
  1457. $images_text = implode(',', $images);
  1458.  
  1459.  
  1460.  
  1461. // Get product accessories
  1462.  
  1463. $accessories = $item->accessories->pluck("stock_no")->toArray();
  1464.  
  1465. $accessories_text = implode(',', $accessories);
  1466.  
  1467.  
  1468.  
  1469. // Get product similar
  1470.  
  1471. $similar = $item->similar->pluck("stock_no")->toArray();
  1472.  
  1473. $similar_text = implode(',', $similar);
  1474.  
  1475.  
  1476.  
  1477.  
  1478.  
  1479. // Prepare export data
  1480.  
  1481. $data = [];
  1482.  
  1483. $data[] = $item->id;
  1484.  
  1485. $data[] = $categories_text;
  1486.  
  1487. $data[] = $root_category_names_text;
  1488.  
  1489. $data[] = $category_names_text;
  1490.  
  1491. $data[] = $item->manufacturer_id;
  1492.  
  1493. $data[] = $item->seo_url;
  1494.  
  1495.  
  1496.  
  1497. // Get lang fields
  1498.  
  1499. foreach ($languages as $lang) {
  1500.  
  1501. $data[] = $item->{'name:'.$lang->getLocaleLanguage()};
  1502.  
  1503. }
  1504.  
  1505.  
  1506.  
  1507. $data[] = $item->image;
  1508.  
  1509.  
  1510.  
  1511. $data[] = $images_text;
  1512.  
  1513.  
  1514.  
  1515. $data[] = $item->stock_no;
  1516.  
  1517. $data[] = $item->ean;
  1518.  
  1519. $data[] = $item->part_no;
  1520.  
  1521.  
  1522.  
  1523. $data[] = $item->in_stock;
  1524.  
  1525.  
  1526.  
  1527. // Get lang fields
  1528.  
  1529. foreach ($languages as $lang) {
  1530.  
  1531. $data[] = $item->{'in_stock_text:'.$lang->getLocaleLanguage()};
  1532.  
  1533. $data[] = $item->{'out_of_stock_text:'.$lang->getLocaleLanguage()};
  1534.  
  1535. }
  1536.  
  1537.  
  1538.  
  1539. $data[] = $item->minimum_order;
  1540.  
  1541. $data[] = $item->weight;
  1542.  
  1543.  
  1544.  
  1545. $data[] = $item->is_gift;
  1546.  
  1547. $data[] = $item->gift_from_price;
  1548.  
  1549.  
  1550.  
  1551. // Get lang fields
  1552.  
  1553. foreach ($languages as $lang) {
  1554.  
  1555. $data[] = $this->getProductDescriptionValue($item, $lang, 'short');
  1556.  
  1557. $data[] = $this->getProductDescriptionValue($item, $lang, 'long');
  1558.  
  1559. $data[] = $this->getProductDescriptionValue($item, $lang, 'technical');
  1560.  
  1561. $data[] = $this->getProductDescriptionValue($item, $lang, 'in_delivery');
  1562.  
  1563. $data[] = $this->getProductDescriptionValue($item, $lang, 'equipment');
  1564.  
  1565. $data[] = $this->getProductDescriptionValue($item, $lang, 'features');
  1566.  
  1567. $data[] = $this->getProductDescriptionValue($item, $lang, 'aditional_info');
  1568.  
  1569. $data[] = $this->getProductDescriptionValue($item, $lang, 'youtube');
  1570.  
  1571. }
  1572.  
  1573.  
  1574.  
  1575. $data[] = $accessories_text;
  1576.  
  1577. $data[] = $similar_text;
  1578.  
  1579.  
  1580.  
  1581. $data[] = $item->hidden;
  1582.  
  1583.  
  1584.  
  1585. // Add a new row with data
  1586.  
  1587. fputcsv($handle, $data, $delimiter, $enclosure);
  1588.  
  1589. }
  1590.  
  1591. });
  1592.  
  1593.  
  1594.  
  1595. // Close the output stream
  1596.  
  1597. fclose($handle);
  1598.  
  1599.  
  1600.  
  1601. }, 200, [
  1602.  
  1603. 'Content-Type' => 'text/csv',
  1604.  
  1605. 'Content-Disposition' => 'attachment; filename="export.csv"',
  1606.  
  1607. ]);
  1608.  
  1609.  
  1610.  
  1611. return $response;
  1612.  
  1613. }
  1614.  
  1615.  
  1616.  
  1617. /**
  1618.  
  1619. * @param Product $product
  1620.  
  1621. * @param Language $lang
  1622.  
  1623. * @param string $type Description Type
  1624.  
  1625. * @return string
  1626.  
  1627. */
  1628.  
  1629. private function getProductDescriptionValue($product, $lang, $type){
  1630.  
  1631. $description = $product->alldescriptions->where('locale', $lang->getLocaleLanguage())->where('type', $type)->first();
  1632.  
  1633. if($description){
  1634.  
  1635. return $description->value;
  1636.  
  1637. }
  1638.  
  1639. return "";
  1640.  
  1641. }
  1642.  
  1643.  
  1644.  
  1645. /**
  1646.  
  1647. * Export users
  1648.  
  1649. * @return StreamedResponse
  1650.  
  1651. */
  1652.  
  1653. public function exportUsers(Request $request){
  1654.  
  1655. @set_time_limit(0);
  1656.  
  1657.  
  1658.  
  1659. // Get site id
  1660.  
  1661. $site_id = $request->input('site_id');
  1662.  
  1663. if(!$site_id){
  1664.  
  1665. admin_error(_i('Error'), _i('Please select site!'));
  1666.  
  1667. return redirect('/admin/export');
  1668.  
  1669. }
  1670.  
  1671.  
  1672.  
  1673. $response = new StreamedResponse(function() use($request, $site_id) {
  1674.  
  1675.  
  1676.  
  1677. // Get CSV Settings
  1678.  
  1679. $delimiter = $request->input('csv_delimiter', ';');
  1680.  
  1681. $enclosure = $request->input('csv_enclosure', '"');
  1682.  
  1683.  
  1684.  
  1685. // Open output stream
  1686.  
  1687. $handle = fopen('php://output', 'w');
  1688.  
  1689. fputs($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
  1690.  
  1691.  
  1692.  
  1693. // Fields
  1694.  
  1695. $fields = [];
  1696.  
  1697. $fields[] = 'id';
  1698.  
  1699. $fields[] = 'country_id';
  1700.  
  1701. $fields[] = 'region_id';
  1702.  
  1703. $fields[] = 'email';
  1704.  
  1705. $fields[] = 'first_name';
  1706.  
  1707. $fields[] = 'last_name';
  1708.  
  1709. $fields[] = 'date_of_birth';
  1710.  
  1711. $fields[] = 'user_type';
  1712.  
  1713. $fields[] = 'company';
  1714.  
  1715. $fields[] = 'company_id';
  1716.  
  1717. $fields[] = 'address';
  1718.  
  1719. $fields[] = 'city';
  1720.  
  1721. $fields[] = 'zip';
  1722.  
  1723. $fields[] = 'phone';
  1724.  
  1725. $fields[] = 'mobile';
  1726.  
  1727. $fields[] = 'newsletter';
  1728.  
  1729. $fields[] = 'discount';
  1730.  
  1731. $fields[] = 'created_at';
  1732.  
  1733.  
  1734.  
  1735. // Add CSV headers
  1736.  
  1737. fputcsv($handle, $fields, $delimiter, $enclosure);
  1738.  
  1739.  
  1740.  
  1741. // Get all items
  1742.  
  1743. User::where('site_id', $site_id)->chunk(500, function($items) use($handle, $delimiter, $enclosure) {
  1744.  
  1745. foreach ($items as $item) {
  1746.  
  1747.  
  1748.  
  1749. // Prepare export data
  1750.  
  1751. $data = [];
  1752.  
  1753. $data[] = $item->id;
  1754.  
  1755. $data[] = $item->country_id;
  1756.  
  1757. $data[] = $item->region_id;
  1758.  
  1759. $data[] = $item->email;
  1760.  
  1761. $data[] = $item->first_name;
  1762.  
  1763. $data[] = $item->last_name;
  1764.  
  1765. $data[] = $item->date_of_birth;
  1766.  
  1767. $data[] = $item->user_type;
  1768.  
  1769. $data[] = $item->company;
  1770.  
  1771. $data[] = $item->company_id;
  1772.  
  1773. $data[] = $item->address;
  1774.  
  1775. $data[] = $item->city;
  1776.  
  1777. $data[] = $item->zip;
  1778.  
  1779. $data[] = $item->phone;
  1780.  
  1781. $data[] = $item->mobile;
  1782.  
  1783. $data[] = $item->newsletter;
  1784.  
  1785. $data[] = $item->discount;
  1786.  
  1787. $data[] = $item->created_at;
  1788.  
  1789.  
  1790.  
  1791. // Add a new row with data
  1792.  
  1793. fputcsv($handle, $data, $delimiter, $enclosure);
  1794.  
  1795. }
  1796.  
  1797. });
  1798.  
  1799.  
  1800.  
  1801. // Close the output stream
  1802.  
  1803. fclose($handle);
  1804.  
  1805.  
  1806.  
  1807. }, 200, [
  1808.  
  1809. 'Content-Type' => 'text/csv',
  1810.  
  1811. 'Content-Disposition' => 'attachment; filename="export.csv"',
  1812.  
  1813. ]);
  1814.  
  1815.  
  1816.  
  1817. return $response;
  1818.  
  1819. }
  1820.  
  1821.  
  1822.  
  1823. /**
  1824.  
  1825. * Export regions
  1826.  
  1827. * @return StreamedResponse
  1828.  
  1829. */
  1830.  
  1831. public function exportRegions(Request $request){
  1832.  
  1833. @set_time_limit(0);
  1834.  
  1835.  
  1836.  
  1837. $response = new StreamedResponse(function() use($request) {
  1838.  
  1839.  
  1840.  
  1841. // Get CSV Settings
  1842.  
  1843. $delimiter = $request->input('csv_delimiter', ';');
  1844.  
  1845. $enclosure = $request->input('csv_enclosure', '"');
  1846.  
  1847.  
  1848.  
  1849. // Open output stream
  1850.  
  1851. $handle = fopen('php://output', 'w');
  1852.  
  1853. fputs($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
  1854.  
  1855.  
  1856.  
  1857. // Fields
  1858.  
  1859. $fields = [];
  1860.  
  1861. $fields[] = 'id';
  1862.  
  1863. $fields[] = 'country_id';
  1864.  
  1865. $fields[] = 'name';
  1866.  
  1867.  
  1868.  
  1869. // Add CSV headers
  1870.  
  1871. fputcsv($handle, $fields, $delimiter, $enclosure);
  1872.  
  1873.  
  1874.  
  1875. // Get all items
  1876.  
  1877. Region::chunk(500, function($items) use($handle, $delimiter, $enclosure) {
  1878.  
  1879. foreach ($items as $item) {
  1880.  
  1881.  
  1882.  
  1883. // Prepare export data
  1884.  
  1885. $data = [];
  1886.  
  1887. $data[] = $item->id;
  1888.  
  1889. $data[] = $item->country_id;
  1890.  
  1891. $data[] = $item->name;
  1892.  
  1893.  
  1894.  
  1895. // Add a new row with data
  1896.  
  1897. fputcsv($handle, $data, $delimiter, $enclosure);
  1898.  
  1899. }
  1900.  
  1901. });
  1902.  
  1903.  
  1904.  
  1905. // Close the output stream
  1906.  
  1907. fclose($handle);
  1908.  
  1909.  
  1910.  
  1911. }, 200, [
  1912.  
  1913. 'Content-Type' => 'text/csv',
  1914.  
  1915. 'Content-Disposition' => 'attachment; filename="export.csv"',
  1916.  
  1917. ]);
  1918.  
  1919.  
  1920.  
  1921. return $response;
  1922.  
  1923. }
  1924.  
  1925.  
  1926.  
  1927. /**
  1928.  
  1929. * Export countries
  1930.  
  1931. * @return StreamedResponse
  1932.  
  1933. */
  1934.  
  1935. public function exportCountries(Request $request){
  1936.  
  1937. @set_time_limit(0);
  1938.  
  1939.  
  1940.  
  1941. $response = new StreamedResponse(function() use($request) {
  1942.  
  1943.  
  1944.  
  1945. // Get CSV Settings
  1946.  
  1947. $delimiter = $request->input('csv_delimiter', ';');
  1948.  
  1949. $enclosure = $request->input('csv_enclosure', '"');
  1950.  
  1951.  
  1952.  
  1953. // Open output stream
  1954.  
  1955. $handle = fopen('php://output', 'w');
  1956.  
  1957. fputs($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
  1958.  
  1959.  
  1960.  
  1961. // Fields
  1962.  
  1963. $fields = [];
  1964.  
  1965. $fields[] = 'id';
  1966.  
  1967. $fields[] = 'name';
  1968.  
  1969.  
  1970.  
  1971. // Add CSV headers
  1972.  
  1973. fputcsv($handle, $fields, $delimiter, $enclosure);
  1974.  
  1975.  
  1976.  
  1977. // Get all items
  1978.  
  1979. Country::chunk(500, function($items) use($handle, $delimiter, $enclosure) {
  1980.  
  1981. foreach ($items as $item) {
  1982.  
  1983.  
  1984.  
  1985. // Prepare export data
  1986.  
  1987. $data = [];
  1988.  
  1989. $data[] = $item->id;
  1990.  
  1991. $data[] = $item->name;
  1992.  
  1993.  
  1994.  
  1995. // Add a new row with data
  1996.  
  1997. fputcsv($handle, $data, $delimiter, $enclosure);
  1998.  
  1999. }
  2000.  
  2001. });
  2002.  
  2003.  
  2004.  
  2005. // Close the output stream
  2006.  
  2007. fclose($handle);
  2008.  
  2009.  
  2010.  
  2011. }, 200, [
  2012.  
  2013. 'Content-Type' => 'text/csv',
  2014.  
  2015. 'Content-Disposition' => 'attachment; filename="export.csv"',
  2016.  
  2017. ]);
  2018.  
  2019.  
  2020.  
  2021. return $response;
  2022.  
  2023. }
  2024.  
  2025.  
  2026.  
  2027. /**
  2028.  
  2029. * Export newsletter applications
  2030.  
  2031. * @return StreamedResponse
  2032.  
  2033. */
  2034.  
  2035. public function exportNewsletter(Request $request){
  2036.  
  2037. @set_time_limit(0);
  2038.  
  2039.  
  2040.  
  2041. // Get site id
  2042.  
  2043. $site_id = $request->input('site_id');
  2044.  
  2045. if(!$site_id){
  2046.  
  2047. admin_error(_i('Error'), _i('Please select site!'));
  2048.  
  2049. return redirect('/admin/export');
  2050.  
  2051. }
  2052.  
  2053.  
  2054.  
  2055. $response = new StreamedResponse(function() use($request, $site_id) {
  2056.  
  2057.  
  2058.  
  2059. // Get CSV Settings
  2060.  
  2061. $delimiter = $request->input('csv_delimiter', ';');
  2062.  
  2063. $enclosure = $request->input('csv_enclosure', '"');
  2064.  
  2065.  
  2066.  
  2067. // Open output stream
  2068.  
  2069. $handle = fopen('php://output', 'w');
  2070.  
  2071. fputs($handle, chr(0xEF) . chr(0xBB) . chr(0xBF));
  2072.  
  2073.  
  2074.  
  2075. // Get all items
  2076.  
  2077. NewsletterEmail::where('site_id', $site_id)->chunk(500, function($items) use($handle, $delimiter, $enclosure) {
  2078.  
  2079. foreach ($items as $item) {
  2080.  
  2081.  
  2082.  
  2083. // Prepare export data
  2084.  
  2085. $data = [];
  2086.  
  2087. $data[] = $item->email;
  2088.  
  2089.  
  2090.  
  2091. // Add a new row with data
  2092.  
  2093. fputcsv($handle, $data, $delimiter, $enclosure);
  2094.  
  2095. }
  2096.  
  2097. });
  2098.  
  2099.  
  2100.  
  2101. // Close the output stream
  2102.  
  2103. fclose($handle);
  2104.  
  2105.  
  2106.  
  2107. }, 200, [
  2108.  
  2109. 'Content-Type' => 'text/csv',
  2110.  
  2111. 'Content-Disposition' => 'attachment; filename="export.csv"',
  2112.  
  2113. ]);
  2114.  
  2115.  
  2116.  
  2117. return $response;
  2118.  
  2119. }
  2120.  
  2121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement