Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static function updateSetting($shop, $request)
- {
- $result = true;
- $geo_campaign = self::getShopGeoCampaignClone($shop, $request['setting']['key']);
- $data_set = [];
- if (isset($request['locality_settings']) && isset($request['setting']['default_loc'])) {
- $data_set = array_map(function($locality_setting) {
- return ($locality_setting == null) ? '' : $locality_setting;
- }, $request['locality_settings']);
- if ($request['locality_settings']['location_string']) {
- Tools::sendAmplitudeEvent([
- 'shop_domain' => $shop,
- 'event_name' => 'Campaign: Include Location',
- 'event_props' => [
- 'Campaign name' => empty($geo_campaign[0]['popup_header']) ? '' : $geo_campaign[0]['popup_header'],
- 'Campaign type' => empty($geo_campaign[0]['type']) ? 'Banner' : self::getNormalType($geo_campaign[0]['type']),
- 'Location' => $request['locality_settings']['location_string'],
- ],
- ]);
- }
- } elseif (isset($request['popup_settings'])) {
- $popup_params = (array) DB::table('shopify_geo_data')
- ->select('popup_params')
- ->where([['id', $request['setting']['key']], ['shop', $shop]])
- ->first();
- $popup_params = empty($popup_params['popup_params']) ? [] : unserialize($popup_params['popup_params']);
- $popup_params[$request['popup_settings']['key']] = $request['popup_settings']['value'];
- $data_set = ['popup_params' => serialize($popup_params)];
- } elseif (isset($request['setting']['type'])
- && $request['setting']['type'] == 'zip_codes_add'
- ) {
- $zip_codes = [];
- $old = (array) DB::table('shopify_geo_data')
- ->select('zip_codes')
- ->where([['id', $request['setting']['key']], ['shop', $shop]])
- ->first();
- $zip_codes = empty($old['zip_codes']) ? [] : unserialize($old['zip_codes']);
- @$zip_codes[$request['setting']['value']['num']] = $request['setting']['value']['zip'];
- $result = empty($old) ? $zip_codes : $zip_codes + $old;
- Tools::sendAmplitudeEvent([
- 'shop_domain' => $shop,
- 'event_name' => 'Campaign: Zip code',
- 'event_props' => [
- 'Campaign name' => empty($geo_campaign[0]['popup_header']) ? '' : $geo_campaign[0]['popup_header'],
- 'Campaign type' => empty($geo_campaign[0]['type']) ? 'Banner' : self::getNormalType($geo_campaign[0]['type']),
- 'Status' => 'Enabled',
- 'Value' => $request['setting']['value']['zip'],
- ],
- ]);
- $data_set = ['zip_codes' => serialize($result)];
- } elseif (isset($request['setting']['type'])
- && $request['setting']['type'] == 'zip_codes_update'
- ) {
- $zip_codes = (array) DB::table('shopify_geo_data')
- ->select('zip_codes')
- ->where([['id', $request['setting']['key']], ['shop', $shop]])
- ->first();
- $zip_codes = empty($zip_codes['zip_codes']) ? [] : unserialize($zip_codes['zip_codes']);
- if (isset($zip_codes[$request['setting']['value']])) {
- unset($zip_codes[$request['setting']['value']]);
- }
- $data_set = ['zip_codes' => serialize($zip_codes)];
- } elseif (isset($request['setting']['type'])
- && $request['setting']['type'] == 'check_zip'
- ) {
- $popup_geo_data = (array) DB::table('shopify_geo_data')
- ->select('popup_params', 'type', 'show_zip_finish')
- ->where([['id', $request['setting']['key']], ['shop', $shop]])
- ->first();
- $popup_params = empty($popup_geo_data['popup_params']) ? [] : unserialize($popup_geo_data['popup_params']);
- $popup_type = $popup_geo_data['type'];
- $show_zip_finish = $popup_geo_data['show_zip_finish'];
- if (!isset($popup_params['zip_welcome_text'])) {
- $popup_params['zip_welcome_text'] = __('geo_tools.placeholder_zip_welcome_text');
- }
- if (!isset($popup_params['zip_finish_text'])) {
- $popup_params['zip_finish_text'] = __('geo_tools.placeholder_zip_finish_text');
- }
- if ($popup_type == 'subscribe') {
- $show_zip_finish = 0;
- }
- if (!$request['setting']['value']) {
- Tools::sendAmplitudeEvent([
- 'shop_domain' => $shop,
- 'event_name' => 'Campaign: Zip code',
- 'event_props' => [
- 'Campaign name' => empty($geo_campaign[0]['popup_header']) ? '' : $geo_campaign[0]['popup_header'],
- 'Campaign type' => empty($geo_campaign[0]['type']) ? 'Banner' : self::getNormalType($geo_campaign[0]['type']),
- 'Status' => 'Disabled',
- ],
- ]);
- }
- $data_set = [
- $request['setting']['type'] => $request['setting']['value'],
- 'show_zip_finish' => $show_zip_finish,
- 'popup_params' => serialize($popup_params)
- ];
- } elseif (isset($request['product_popup_settings'])) {
- $popup_params = (array) DB::table('shopify_geo_data')
- ->where([['id', $request['setting']['key']], ['shop', $shop]])
- ->first();
- $popup_params = empty($popup_params['popup_params']) ? [] : unserialize($popup_params['popup_params']);
- foreach ($request['product_popup_settings'] as $key => $value) {
- $popup_params[$value['key']] = $value['value'];
- }
- $data_set = ['popup_params' => serialize($popup_params)];
- } elseif (isset($request['setting']['type'])
- && $request['setting']['type'] == 'date_range'
- && !empty($request['setting']['value'])
- ) {
- list($from_date, $to_date) = array_pad(explode(' - ', $request['setting']['value']), 2, '');
- $_from_date = empty($from_date) ? 0 : strtotime($from_date . ' 00:00:00');
- $_to_date = empty($to_date) ? 0 : strtotime($to_date . ' 23:59:59');
- if (!empty($_to_date) && $_to_date < $_from_date) {
- $_from_date = strtotime($to_date . ' 00:00:00');
- $_to_date = strtotime($from_date . ' 23:59:59');
- }
- $data_set = [
- $request['setting']['type'] => $request['setting']['value'],
- 'from_date' => $_from_date,
- 'to_date' => $_to_date,
- ];
- } elseif (isset($request['upd_additional_urls'])
- && isset($request['setting']['additional_url_id'])
- ) {
- $add_urls = (array) DB::table('shopify_geo_data')
- ->where([['id', $request['setting']['key']], ['shop', $shop]])
- ->first();
- $add_urls = empty($add_urls['additional_urls']) ? [] : unserialize($add_urls['additional_urls']);
- if (isset($request['setting']['remove_additional_url'])) {
- unset($add_urls[$request['setting']['additional_url_id']]);
- } else {
- $add_urls[$request['setting']['additional_url_id']] = $request['upd_additional_urls'];
- }
- $data_set = ['additional_urls' => serialize($add_urls)];
- } elseif (isset($request['upd_not_additional_urls'])
- && isset($request['setting']['additional_url_id'])
- ) {
- $add_urls = (array) DB::table('shopify_geo_data')
- ->where([['id', $request['setting']['key']], ['shop', $shop]])
- ->first();
- $add_urls = empty($add_urls['no_display_custom_url']) ? [] : unserialize($add_urls['no_display_custom_url']);
- if (isset($request['setting']['remove_additional_url'])) {
- unset($add_urls[$request['setting']['additional_url_id']]);
- } else {
- $add_urls[$request['setting']['additional_url_id']] = $request['upd_not_additional_urls'];
- }
- $data_set = ['no_display_custom_url' => serialize($add_urls)];
- } elseif (isset($request['setting']['add_additional_url'])
- && isset($request['setting']['additional_url_id'])
- ) {
- $add_urls = (array) DB::table('shopify_geo_data')
- ->where([['id', $request['setting']['key']], ['shop', $shop]])
- ->first();
- if (isset($request['setting']['setting_name'])) {
- $add_urls = empty($add_urls[$request['setting']['setting_name']]) ? [] : unserialize($add_urls[$request['setting']['setting_name']]);
- $add_urls[$request['setting']['additional_url_id']] = [];
- $data_set = [$request['setting']['setting_name'] => serialize($add_urls)];
- } else {
- $add_urls = empty($add_urls['additional_urls']) ? [] : unserialize($add_urls['additional_urls']);
- $add_urls[$request['setting']['additional_url_id']] = [];
- $data_set = ['additional_urls' => serialize($add_urls)];
- }
- } elseif (isset($request['upd_additional_locs'])
- && isset($request['setting']['additional_loc_id'])
- ) {
- $add_locations = (array) DB::table('shopify_geo_data')
- ->where([['id', $request['setting']['key']], ['shop', $shop]])
- ->first();
- $add_locations = empty($add_locations['additional_locs']) ? [] : unserialize($add_locations['additional_locs']);
- if (isset($request['setting']['remove_additional_loc'])) {
- unset($add_locations[$request['setting']['additional_loc_id']]);
- } else {
- $add_locations[$request['setting']['additional_loc_id']] = $request['upd_additional_locs'];
- if ($request['upd_additional_locs']['location_string'] && !empty($geo_campaign)) {
- $campaign = reset($geo_campaign);
- Tools::sendAmplitudeEvent([
- 'shop_domain' => $shop,
- 'event_name' => 'Campaign: Include Location',
- 'event_props' => [
- 'Campaign name' => $campaign['popup_header'],
- 'Campaign type' => self::getNormalType($campaign['type']),
- 'Location' => $request['upd_additional_locs']['location_string'],
- ],
- ]);
- }
- }
- $data_set = ['additional_locs' => serialize($add_locations)];
- } elseif (isset($request['setting']['add_additional_loc'])
- && isset($request['setting']['additional_loc_id'])
- ) {
- $add_locations = (array) DB::table('shopify_geo_data')
- ->where([['id', $request['setting']['key']], ['shop', $shop]])
- ->first();
- $add_locations = empty($add_locations['additional_locs']) ? [] : unserialize($add_locations['additional_locs']);
- $add_locations[$request['setting']['additional_loc_id']] = [];
- $data_set = ['additional_locs' => serialize($add_locations)];
- } elseif (isset($request['exclude_location'])
- && isset($request['setting']['additional_loc_id'])
- ) {
- $add_locations = (array) DB::table('shopify_geo_data')
- ->where([['id', $request['setting']['key']], ['shop', $shop]])
- ->first();
- $add_locations = empty($add_locations['exclude_location']) ? [] : unserialize($add_locations['exclude_location']);
- if (isset($request['setting']['remove_additional_loc'])) {
- unset($add_locations[$request['setting']['additional_loc_id']]);
- } else {
- $add_locations[$request['setting']['additional_loc_id']] = $request['exclude_location'];
- if ($request['exclude_location']['location_string']) {
- Tools::sendAmplitudeEvent([
- 'shop_domain' => $shop,
- 'event_name' => 'Campaign: Exclude Location',
- 'event_props' => [
- 'Campaign name' => empty($geo_campaign[0]['popup_header']) ? '' : $geo_campaign[0]['popup_header'],
- 'Campaign type' => empty($geo_campaign[0]['type']) ? 'Banner' : self::getNormalType($geo_campaign[0]['type']),
- 'Location' => $request['exclude_location']['location_string'],
- ],
- ]);
- }
- }
- $data_set = ['exclude_location' => serialize($add_locations)];
- } elseif (isset($request['setting']['add_exclude_additional_loc'])
- && isset($request['setting']['additional_loc_id'])
- ) {
- $add_locations = (array) DB::table('shopify_geo_data')
- ->where([['id', $request['setting']['key']], ['shop', $shop]])
- ->first();
- $add_locations = empty($add_locations['exclude_location']) ? [] : unserialize($add_locations['exclude_location']);
- $add_locations[$request['setting']['additional_loc_id']] = [];
- $data_set = ['exclude_location' => serialize($add_locations)];
- } elseif (isset($request['setting']['add_additional_action'])
- && isset($request['setting']['additional_action_id'])
- ) {
- $additional_actions = (array) DB::table('shopify_geo_data')
- ->where([['id', $request['setting']['key']], ['shop', $shop]])
- ->first();
- $add_actions = empty($additional_actions['additional_actions']) ? [] : unserialize($additional_actions['additional_actions']);
- $add_actions[$request['setting']['additional_action_id']] = [
- 'action_type' => 'button',
- 'action_link' => 'collections',
- 'action_custom_link' => '',
- 'action_text' => '',
- ];
- $data_set = ['additional_actions' => serialize($add_actions)];
- } elseif (isset($request['setting']['additional_action_id'])
- && isset($request['setting']['remove_additional_action'])
- ) {
- $add_actions = (array) DB::table('shopify_geo_data')
- ->where([['id', $request['setting']['key']], ['shop', $shop]])
- ->first();
- $add_actions = empty($add_actions['additional_actions']) ? [] : unserialize($add_actions['additional_actions']);
- unset($add_actions[$request['setting']['additional_action_id']]);
- $data_set = ['additional_actions' => serialize($add_actions)];
- } elseif (isset($request['upd_additional_action'])
- && isset($request['setting']['additional_action_id']) && !isset($request['setting']['remove_additional_action'])
- ) {
- $add_actions = (array) DB::table('shopify_geo_data')
- ->where([['id', $request['setting']['key']], ['shop', $shop]])
- ->first();
- $add_actions = empty($add_actions['additional_actions']) ? [] : unserialize($add_actions['additional_actions']);
- $add_actions[$request['setting']['additional_action_id']][$request['setting']['additional_action_name']] = $request['upd_additional_action'];
- $data_set = ['additional_actions' => serialize($add_actions)];
- } else {
- if (isset($request['setting']['type'])) {
- if ($request['setting']['type'] == 'status') {
- $is_free_or_custom = Tariffs::canCreateAllowed();
- $is_custom = Tariffs::isCustomTariff();
- if ($is_free_or_custom && $request['setting']['value'] == 'A') {
- $is_free_tariff = Tariffs::isFreeTariff();
- $popup_type = self::getPopupType($request['setting']['key']);
- $allowed_types_list = self::getAllowedTypesFree($shop);
- $enabled_custom_types_list = self::getCurrentCustomCampaigns($shop);
- $active_popup_type_count = self::getActivePopupsCount($shop, $popup_type);
- if (!$allowed_types_list[$popup_type] && $is_free_tariff) {
- return ['error' => __('geo_tools.not_allowed_enable_tariff')];
- }
- if ($active_popup_type_count == 1 && !$enabled_custom_types_list[$popup_type]) {
- return ['warning' => __('geo_tools.not_allowed_enable_more_than_one')];
- }
- } elseif ($is_custom) {
- $popup_type = self::getPopupType($request['setting']['key']);
- $enabled_custom_types_list = self::getCurrentCustomCampaigns($shop);
- if (isset($enabled_custom_types_list[$popup_type]) && !$enabled_custom_types_list[$popup_type]) {
- return ['error' => __('geo_tools.not_allowed_enable_tariff')];
- }
- }
- $result = ['success' => true];
- }
- $value = isset($request['setting']['value']) ? $request['setting']['value'] : '';
- $data_set = [
- $request['setting']['type'] => $value
- ];
- }
- }
- if (!empty($data_set)) {
- DB::table('shopify_geo_data')
- ->where([['id', $request['setting']['key']], ['shop', $shop]])
- ->update($data_set);
- }
- return $result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement