Advertisement
Guest User

Untitled

a guest
May 21st, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 17.99 KB | None | 0 0
  1.     public static function updateSetting($shop, $request)
  2.     {
  3.         $result = true;
  4.         $geo_campaign = self::getShopGeoCampaignClone($shop, $request['setting']['key']);
  5.         $data_set = [];
  6.  
  7.         if (isset($request['locality_settings']) && isset($request['setting']['default_loc'])) {
  8.             $data_set = array_map(function($locality_setting) {
  9.                 return ($locality_setting == null) ? '' : $locality_setting;
  10.             }, $request['locality_settings']);
  11.  
  12.             if ($request['locality_settings']['location_string']) {
  13.                 Tools::sendAmplitudeEvent([
  14.                     'shop_domain' => $shop,
  15.                     'event_name' => 'Campaign: Include Location',
  16.                     'event_props' => [
  17.                         'Campaign name' => empty($geo_campaign[0]['popup_header']) ? '' : $geo_campaign[0]['popup_header'],
  18.                         'Campaign type' => empty($geo_campaign[0]['type']) ? 'Banner' : self::getNormalType($geo_campaign[0]['type']),
  19.                         'Location' => $request['locality_settings']['location_string'],
  20.                     ],
  21.                 ]);
  22.             }
  23.  
  24.         } elseif (isset($request['popup_settings'])) {
  25.             $popup_params = (array) DB::table('shopify_geo_data')
  26.                     ->select('popup_params')
  27.                     ->where([['id', $request['setting']['key']], ['shop', $shop]])
  28.                     ->first();
  29.  
  30.             $popup_params = empty($popup_params['popup_params']) ? [] : unserialize($popup_params['popup_params']);
  31.             $popup_params[$request['popup_settings']['key']] = $request['popup_settings']['value'];
  32.             $data_set = ['popup_params' => serialize($popup_params)];
  33.  
  34.         } elseif (isset($request['setting']['type'])
  35.             && $request['setting']['type'] == 'zip_codes_add'
  36.         ) {
  37.             $zip_codes = [];
  38.             $old = (array) DB::table('shopify_geo_data')
  39.                 ->select('zip_codes')
  40.                 ->where([['id', $request['setting']['key']], ['shop', $shop]])
  41.                 ->first();
  42.             $zip_codes = empty($old['zip_codes']) ? [] : unserialize($old['zip_codes']);
  43.  
  44.             @$zip_codes[$request['setting']['value']['num']] = $request['setting']['value']['zip'];
  45.  
  46.             $result = empty($old) ? $zip_codes : $zip_codes + $old;
  47.  
  48.             Tools::sendAmplitudeEvent([
  49.                 'shop_domain' => $shop,
  50.                 'event_name' => 'Campaign: Zip code',
  51.                 'event_props' => [
  52.                     'Campaign name' => empty($geo_campaign[0]['popup_header']) ? '' : $geo_campaign[0]['popup_header'],
  53.                     'Campaign type' => empty($geo_campaign[0]['type']) ? 'Banner' : self::getNormalType($geo_campaign[0]['type']),
  54.                     'Status' => 'Enabled',
  55.                     'Value' => $request['setting']['value']['zip'],
  56.                 ],
  57.             ]);
  58.  
  59.             $data_set = ['zip_codes' => serialize($result)];
  60.  
  61.         } elseif (isset($request['setting']['type'])
  62.             && $request['setting']['type'] == 'zip_codes_update'
  63.         ) {
  64.             $zip_codes = (array) DB::table('shopify_geo_data')
  65.                 ->select('zip_codes')
  66.                 ->where([['id', $request['setting']['key']], ['shop', $shop]])
  67.                 ->first();
  68.             $zip_codes = empty($zip_codes['zip_codes']) ? [] : unserialize($zip_codes['zip_codes']);
  69.  
  70.             if (isset($zip_codes[$request['setting']['value']])) {
  71.                 unset($zip_codes[$request['setting']['value']]);
  72.             }
  73.  
  74.             $data_set = ['zip_codes' => serialize($zip_codes)];
  75.  
  76.         } elseif (isset($request['setting']['type'])
  77.             && $request['setting']['type'] == 'check_zip'
  78.         ) {
  79.             $popup_geo_data = (array) DB::table('shopify_geo_data')
  80.                 ->select('popup_params', 'type', 'show_zip_finish')
  81.                 ->where([['id', $request['setting']['key']], ['shop', $shop]])
  82.                 ->first();
  83.  
  84.             $popup_params = empty($popup_geo_data['popup_params']) ? [] : unserialize($popup_geo_data['popup_params']);
  85.             $popup_type = $popup_geo_data['type'];
  86.             $show_zip_finish = $popup_geo_data['show_zip_finish'];
  87.  
  88.             if (!isset($popup_params['zip_welcome_text'])) {
  89.                 $popup_params['zip_welcome_text'] = __('geo_tools.placeholder_zip_welcome_text');
  90.             }
  91.  
  92.             if (!isset($popup_params['zip_finish_text'])) {
  93.                 $popup_params['zip_finish_text'] = __('geo_tools.placeholder_zip_finish_text');
  94.             }
  95.  
  96.             if ($popup_type == 'subscribe') {
  97.                 $show_zip_finish = 0;
  98.             }
  99.  
  100.             if (!$request['setting']['value']) {
  101.                 Tools::sendAmplitudeEvent([
  102.                     'shop_domain' => $shop,
  103.                     'event_name' => 'Campaign: Zip code',
  104.                     'event_props' => [
  105.                         'Campaign name' => empty($geo_campaign[0]['popup_header']) ? '' : $geo_campaign[0]['popup_header'],
  106.                         'Campaign type' => empty($geo_campaign[0]['type']) ? 'Banner' : self::getNormalType($geo_campaign[0]['type']),
  107.                         'Status' => 'Disabled',
  108.                     ],
  109.                 ]);
  110.             }
  111.  
  112.             $data_set = [
  113.                 $request['setting']['type'] => $request['setting']['value'],
  114.                 'show_zip_finish' => $show_zip_finish,
  115.                 'popup_params' => serialize($popup_params)
  116.             ];
  117.  
  118.         } elseif (isset($request['product_popup_settings'])) {
  119.             $popup_params = (array) DB::table('shopify_geo_data')
  120.                 ->where([['id', $request['setting']['key']], ['shop', $shop]])
  121.                 ->first();
  122.             $popup_params = empty($popup_params['popup_params']) ? [] : unserialize($popup_params['popup_params']);
  123.  
  124.             foreach ($request['product_popup_settings'] as $key => $value) {
  125.                 $popup_params[$value['key']] = $value['value'];
  126.             }
  127.  
  128.             $data_set = ['popup_params' => serialize($popup_params)];
  129.  
  130.         } elseif (isset($request['setting']['type'])
  131.             && $request['setting']['type'] == 'date_range'
  132.             && !empty($request['setting']['value'])
  133.         ) {
  134.             list($from_date, $to_date) = array_pad(explode(' - ', $request['setting']['value']), 2, '');
  135.             $_from_date = empty($from_date) ? 0 : strtotime($from_date . ' 00:00:00');
  136.             $_to_date = empty($to_date) ? 0 : strtotime($to_date . ' 23:59:59');
  137.  
  138.             if (!empty($_to_date) && $_to_date < $_from_date) {
  139.                 $_from_date = strtotime($to_date . ' 00:00:00');
  140.                 $_to_date = strtotime($from_date . ' 23:59:59');
  141.             }
  142.  
  143.             $data_set = [
  144.                 $request['setting']['type'] => $request['setting']['value'],
  145.                 'from_date' => $_from_date,
  146.                 'to_date' => $_to_date,
  147.             ];
  148.  
  149.         } elseif (isset($request['upd_additional_urls'])
  150.             && isset($request['setting']['additional_url_id'])
  151.         ) {
  152.             $add_urls = (array) DB::table('shopify_geo_data')
  153.                 ->where([['id', $request['setting']['key']], ['shop', $shop]])
  154.                 ->first();
  155.  
  156.             $add_urls = empty($add_urls['additional_urls']) ? [] : unserialize($add_urls['additional_urls']);
  157.  
  158.             if (isset($request['setting']['remove_additional_url'])) {
  159.                 unset($add_urls[$request['setting']['additional_url_id']]);
  160.  
  161.             } else {
  162.                 $add_urls[$request['setting']['additional_url_id']] = $request['upd_additional_urls'];
  163.             }
  164.  
  165.             $data_set = ['additional_urls' => serialize($add_urls)];
  166.  
  167.         } elseif (isset($request['upd_not_additional_urls'])
  168.             && isset($request['setting']['additional_url_id'])
  169.         ) {
  170.             $add_urls = (array) DB::table('shopify_geo_data')
  171.                 ->where([['id', $request['setting']['key']], ['shop', $shop]])
  172.                 ->first();
  173.  
  174.             $add_urls = empty($add_urls['no_display_custom_url']) ? [] : unserialize($add_urls['no_display_custom_url']);
  175.  
  176.             if (isset($request['setting']['remove_additional_url'])) {
  177.                 unset($add_urls[$request['setting']['additional_url_id']]);
  178.  
  179.             } else {
  180.                 $add_urls[$request['setting']['additional_url_id']] = $request['upd_not_additional_urls'];
  181.             }
  182.  
  183.             $data_set = ['no_display_custom_url' => serialize($add_urls)];
  184.  
  185.         } elseif (isset($request['setting']['add_additional_url'])
  186.             && isset($request['setting']['additional_url_id'])
  187.         ) {
  188.             $add_urls = (array) DB::table('shopify_geo_data')
  189.                 ->where([['id', $request['setting']['key']], ['shop', $shop]])
  190.                 ->first();
  191.  
  192.             if (isset($request['setting']['setting_name'])) {
  193.                 $add_urls = empty($add_urls[$request['setting']['setting_name']]) ? [] : unserialize($add_urls[$request['setting']['setting_name']]);
  194.                 $add_urls[$request['setting']['additional_url_id']] = [];
  195.                 $data_set = [$request['setting']['setting_name'] => serialize($add_urls)];
  196.  
  197.             } else {
  198.                 $add_urls = empty($add_urls['additional_urls']) ? [] : unserialize($add_urls['additional_urls']);
  199.                 $add_urls[$request['setting']['additional_url_id']] = [];
  200.                 $data_set = ['additional_urls' => serialize($add_urls)];
  201.             }
  202.  
  203.         } elseif (isset($request['upd_additional_locs'])
  204.             && isset($request['setting']['additional_loc_id'])
  205.         ) {
  206.             $add_locations = (array) DB::table('shopify_geo_data')
  207.                     ->where([['id', $request['setting']['key']], ['shop', $shop]])
  208.                     ->first();
  209.             $add_locations = empty($add_locations['additional_locs']) ? [] : unserialize($add_locations['additional_locs']);
  210.  
  211.             if (isset($request['setting']['remove_additional_loc'])) {
  212.                 unset($add_locations[$request['setting']['additional_loc_id']]);
  213.             } else {
  214.                 $add_locations[$request['setting']['additional_loc_id']] = $request['upd_additional_locs'];
  215.  
  216.                 if ($request['upd_additional_locs']['location_string'] && !empty($geo_campaign)) {
  217.                     $campaign = reset($geo_campaign);
  218.  
  219.                     Tools::sendAmplitudeEvent([
  220.                         'shop_domain' => $shop,
  221.                         'event_name' => 'Campaign: Include Location',
  222.                         'event_props' => [
  223.                             'Campaign name' => $campaign['popup_header'],
  224.                             'Campaign type' => self::getNormalType($campaign['type']),
  225.                             'Location' => $request['upd_additional_locs']['location_string'],
  226.                         ],
  227.                     ]);
  228.                 }
  229.             }
  230.  
  231.             $data_set = ['additional_locs' => serialize($add_locations)];
  232.  
  233.         } elseif (isset($request['setting']['add_additional_loc'])
  234.             && isset($request['setting']['additional_loc_id'])
  235.         ) {
  236.             $add_locations = (array) DB::table('shopify_geo_data')
  237.                 ->where([['id', $request['setting']['key']], ['shop', $shop]])
  238.                 ->first();
  239.             $add_locations = empty($add_locations['additional_locs']) ? [] : unserialize($add_locations['additional_locs']);
  240.  
  241.             $add_locations[$request['setting']['additional_loc_id']] = [];
  242.             $data_set = ['additional_locs' => serialize($add_locations)];
  243.  
  244.         } elseif (isset($request['exclude_location'])
  245.             && isset($request['setting']['additional_loc_id'])
  246.         ) {
  247.             $add_locations = (array) DB::table('shopify_geo_data')
  248.                 ->where([['id', $request['setting']['key']], ['shop', $shop]])
  249.                 ->first();
  250.             $add_locations = empty($add_locations['exclude_location']) ? [] : unserialize($add_locations['exclude_location']);
  251.  
  252.             if (isset($request['setting']['remove_additional_loc'])) {
  253.                 unset($add_locations[$request['setting']['additional_loc_id']]);
  254.             } else {
  255.                 $add_locations[$request['setting']['additional_loc_id']] = $request['exclude_location'];
  256.  
  257.                 if ($request['exclude_location']['location_string']) {
  258.                     Tools::sendAmplitudeEvent([
  259.                         'shop_domain' => $shop,
  260.                         'event_name' => 'Campaign: Exclude Location',
  261.                         'event_props' => [
  262.                             'Campaign name' => empty($geo_campaign[0]['popup_header']) ? '' : $geo_campaign[0]['popup_header'],
  263.                             'Campaign type' => empty($geo_campaign[0]['type']) ? 'Banner' : self::getNormalType($geo_campaign[0]['type']),
  264.                             'Location' => $request['exclude_location']['location_string'],
  265.                         ],
  266.                     ]);
  267.                 }
  268.             }
  269.  
  270.             $data_set = ['exclude_location' => serialize($add_locations)];
  271.  
  272.         } elseif (isset($request['setting']['add_exclude_additional_loc'])
  273.             && isset($request['setting']['additional_loc_id'])
  274.         ) {
  275.             $add_locations = (array) DB::table('shopify_geo_data')
  276.                 ->where([['id', $request['setting']['key']], ['shop', $shop]])
  277.                 ->first();
  278.             $add_locations = empty($add_locations['exclude_location']) ? [] : unserialize($add_locations['exclude_location']);
  279.  
  280.             $add_locations[$request['setting']['additional_loc_id']] = [];
  281.             $data_set = ['exclude_location' => serialize($add_locations)];
  282.  
  283.         } elseif (isset($request['setting']['add_additional_action'])
  284.             && isset($request['setting']['additional_action_id'])
  285.         ) {
  286.             $additional_actions = (array) DB::table('shopify_geo_data')
  287.                 ->where([['id', $request['setting']['key']], ['shop', $shop]])
  288.                 ->first();
  289.  
  290.             $add_actions = empty($additional_actions['additional_actions']) ? [] : unserialize($additional_actions['additional_actions']);
  291.  
  292.             $add_actions[$request['setting']['additional_action_id']] = [
  293.                 'action_type' => 'button',
  294.                 'action_link' => 'collections',
  295.                 'action_custom_link' => '',
  296.                 'action_text' => '',
  297.             ];
  298.             $data_set = ['additional_actions' => serialize($add_actions)];
  299.  
  300.         } elseif (isset($request['setting']['additional_action_id'])
  301.             && isset($request['setting']['remove_additional_action'])
  302.         ) {
  303.             $add_actions = (array) DB::table('shopify_geo_data')
  304.                 ->where([['id', $request['setting']['key']], ['shop', $shop]])
  305.                 ->first();
  306.             $add_actions = empty($add_actions['additional_actions']) ? [] : unserialize($add_actions['additional_actions']);
  307.  
  308.             unset($add_actions[$request['setting']['additional_action_id']]);
  309.  
  310.             $data_set = ['additional_actions' => serialize($add_actions)];
  311.  
  312.         } elseif (isset($request['upd_additional_action'])
  313.             && isset($request['setting']['additional_action_id']) && !isset($request['setting']['remove_additional_action'])
  314.         ) {
  315.             $add_actions = (array) DB::table('shopify_geo_data')
  316.                 ->where([['id', $request['setting']['key']], ['shop', $shop]])
  317.                 ->first();
  318.  
  319.             $add_actions = empty($add_actions['additional_actions']) ? [] : unserialize($add_actions['additional_actions']);
  320.  
  321.             $add_actions[$request['setting']['additional_action_id']][$request['setting']['additional_action_name']] = $request['upd_additional_action'];
  322.  
  323.             $data_set = ['additional_actions' => serialize($add_actions)];
  324.  
  325.         } else {
  326.             if (isset($request['setting']['type'])) {
  327.                 if ($request['setting']['type'] == 'status') {
  328.                     $is_free_or_custom = Tariffs::canCreateAllowed();
  329.                     $is_custom = Tariffs::isCustomTariff();
  330.  
  331.                     if ($is_free_or_custom && $request['setting']['value'] == 'A') {
  332.                         $is_free_tariff = Tariffs::isFreeTariff();
  333.                         $popup_type = self::getPopupType($request['setting']['key']);
  334.                         $allowed_types_list = self::getAllowedTypesFree($shop);
  335.                         $enabled_custom_types_list = self::getCurrentCustomCampaigns($shop);
  336.                         $active_popup_type_count = self::getActivePopupsCount($shop, $popup_type);
  337.  
  338.                         if (!$allowed_types_list[$popup_type] && $is_free_tariff) {
  339.                             return ['error' => __('geo_tools.not_allowed_enable_tariff')];
  340.                         }
  341.  
  342.                         if ($active_popup_type_count == 1 && !$enabled_custom_types_list[$popup_type]) {
  343.                             return ['warning' => __('geo_tools.not_allowed_enable_more_than_one')];
  344.                         }
  345.                     } elseif ($is_custom) {
  346.                         $popup_type = self::getPopupType($request['setting']['key']);
  347.                         $enabled_custom_types_list = self::getCurrentCustomCampaigns($shop);
  348.  
  349.                         if (isset($enabled_custom_types_list[$popup_type]) && !$enabled_custom_types_list[$popup_type]) {
  350.                             return ['error' => __('geo_tools.not_allowed_enable_tariff')];
  351.                         }
  352.                     }
  353.  
  354.                     $result = ['success' => true];
  355.                 }
  356.  
  357.                 $value = isset($request['setting']['value']) ? $request['setting']['value'] : '';
  358.                 $data_set = [
  359.                     $request['setting']['type'] => $value
  360.                 ];
  361.             }
  362.         }
  363.  
  364.         if (!empty($data_set)) {
  365.             DB::table('shopify_geo_data')
  366.                 ->where([['id', $request['setting']['key']], ['shop', $shop]])
  367.                 ->update($data_set);
  368.         }
  369.  
  370.         return $result;
  371.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement