Plugin Directory

Changeset 2795078


Ignore:
Timestamp:
10/06/2022 11:53:11 AM (3 years ago)
Author:
dsky
Message:

migration fixes

Location:
site-search-360/trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • site-search-360/trunk/class-sitesearch360-client.php

    r2794154 r2795078  
    179179        $url = $this->baseUrl . 'plugin?token=' . urlencode($this->token);
    180180        $response = $this->callApi($url, 'POST', $data, false);
    181         $this->sendPublish($response['id'], $this->token);
     181        if (isset($response['id'])) {
     182            $this->sendPublish($response['id'], $this->token);
     183        }
    182184        return $response;
    183185    }
     
    229231       
    230232        return $this->callApi($url, 'GET', null, false);
     233    }
     234
     235    public function hasValidToken() {
     236        $url = $this->baseUrl . 'plugin?token=' . urlencode($this->token)   ;
     237        $res = $this->callApi($url, 'GET', null, false);
     238        if ($res != NULL && isset($res['code'])) {
     239            return $res['code'] != 401;
     240        }
     241        return true;
    231242    }
    232243
  • site-search-360/trunk/class-sitesearch360-plugin.php

    r2794154 r2795078  
    204204        }
    205205        if(get_option('ss360_account_created') && get_option('ss360_pluginConfigId', null)==null){
    206             $sendBody = get_option("ss360_config");
    207             if(isset($ss360_callbacks)){
    208                 foreach ($ss360_callbacks as $key => $value) {
    209                     switch ($key) {
    210                         case 'init':
    211                             $sendBody->callbacks["callbacks." . string($key)] = "function(){$value}";
    212                             break;
    213                         case 'preSuggest':
    214                             $sendBody->callbacks["callbacks." . string($key)] = "function(query, searchBox){$value}";
    215                             break;
    216                         case 'preSearch':
    217                             $sendBody->callbacks["callbacks." . string($key)] = "function(query, sorting, searchBox){if(searchBox!==undefined){searchBox=searchBox.get()[0]};$value}";
    218                             break;
    219                         case 'postSearch':
    220                             $sendBody->callbacks["callbacks." . string($key)] = "function(data){$value}";
    221                             break;
    222                         case 'navigationClick':
    223                             $sendBody->callbacks["callbacks." . string($key)] = "function(contentGroup){$value}";
    224                             break;
    225                         case 'preRender':
    226                             $sendBody->callbacks["callbacks." . string($key)] = "function(suggests, result){$value}";
    227                             break;
    228                         default:
    229                            $sendBody->callbacks["callbacks." . string($key)] = "function(){$value}";
    230                     }
    231                 }
    232             }
    233             $res = $this->client->upgradePluginVersion($sendBody);
     206            $ss360_current_time = time();
     207            $ss360_last_request_time = get_option('ss360_last_upgrade_request_ts');
     208            if ($ss360_last_request_time == null || $ss360_last_request_time < $ss360_current_time - 120) {
     209                $this->upgradeToV14();
     210            }
     211        }
     212    }
     213
     214    public function upgradeToV14() {
     215        $sendBody = json_decode(get_option("ss360_config"), true);
     216        $ss360_callbacks = get_option('ss360_callbacks');
     217        if($ss360_callbacks == NULL) {
     218            $ss360_callbacks = array();
     219        } else {
     220            $ss360_callbacks = json_decode($ss360_callbacks, true);
     221        }
     222
     223        if(isset($ss360_callbacks) && sizeof($ss360_callbacks) > 0){
     224            $ss360_new_callbacks = array();
     225            foreach ($ss360_callbacks as $key => $value) {
     226                if ($value == NULL || empty($value)) {
     227                    continue;
     228                }
     229                switch ($key) {
     230                    case 'init':
     231                        $ss360_new_callbacks["callbacks." . $key] = "function(){{$value}}";
     232                        break;
     233                    case 'preSuggest':
     234                        $ss360_new_callbacks["callbacks." . $key] = "function(query, searchBox){{$value}}";
     235                        break;
     236                    case 'preSearch':
     237                        $ss360_new_callbacks["callbacks." . $key] = "function(query, sorting, searchBox){if(searchBox!==undefined){searchBox=searchBox.get()[0]};$value}";
     238                        break;
     239                    case 'postSearch':
     240                        $ss360_new_callbacks["callbacks." . $key] = "function(data){{$value}}";
     241                        break;
     242                    case 'navigationClick':
     243                        $ss360_new_callbacks["callbacks." . $key] = "function(contentGroup){{$value}}";
     244                        break;
     245                    case 'preRender':
     246                        $ss360_new_callbacks["callbacks." . $key] = "function(suggests, result){{$value}}";
     247                        break;
     248                    default:
     249                       $ss360_new_callbacks["callbacks." . $key] = "function(){{$value}}";
     250                }
     251            }
     252            $sendBody['callbacks'] = $ss360_new_callbacks;
     253        }
     254        $res = $this->client->upgradePluginVersion(json_encode($sendBody));
     255        if (isset($res['id'])) {
    234256            update_option('ss360_pluginConfigId', $res['id']);
    235         }
    236     }
     257        } else {
     258            error_log('SS360 - Could not migrate configuration: ' . json_encode($res));
     259        }
     260        update_option('ss360_last_upgrade_request_ts', time());
     261    }
    237262
    238263    public function sitesearch360ReviewInteracted(){
     
    571596        $woocommerceLabel = esc_html__('WooCommerce Settings', 'site-search-360');
    572597        $is_configured = get_option("ss360_is_configured");
     598        $is_account_created = get_option("ss360_account_created");
    573599        $integration_type = $this->getType();
    574600        $ss360_indexing_mode = get_option("ss360_indexing_mode");
     
    586612            $ss360_indexing_mode = $_POST['ss360_indexing_mode'];
    587613        }
    588         if ($is_configured) {
     614        if ($is_configured && $is_account_created) {
    589615            add_submenu_page('sitesearch360', 'Site Search 360', esc_html__('Dashboard', 'site-search-360'), 'manage_options', 'sitesearch360', array($this, 'sitesearch360AdminPage'));
    590616            add_submenu_page('sitesearch360', $indexControlLabel.' - Site Search 360', $indexControlLabel, 'manage_options','sitesearch360-index-control', array($this, 'sitesearch360IndexControlPage'));
    591617        }
    592         if($is_configured){
     618        $ss360_plugin_config_id = get_option('ss360_pluginConfigId');
     619        if($is_configured && $ss360_plugin_config_id != null && !empty($ss360_plugin_config_id) && $is_account_created){
    593620            if($integration_type=='full' || $integration_type=='suggestions'){
    594621                add_submenu_page('sitesearch360', $searchDesignerLabel.' - Site Search 360', $searchDesignerLabel, 'manage_options','sitesearch360-search-designer', array($this, 'sitesearch360SearchDesignerPage'));
     
    637664
    638665                if ($type != "filter"  && $should_inject_search) {
     666                    $ss360_plugin_config_id = get_option('ss360_pluginConfigId');
     667                    if ($ss360_plugin_config_id != NULL && !empty($ss360_plugin_config_id)) {
    639668                    ?>
    640                     <!-- Site Search 360 WP v<?php $ss360_v = defined('SITESEARCH360_VERSION') ? SITESEARCH360_VERSION : '2.1.1'; echo $ss360_v; ?> -->
    641                     <script src="https://js.sitesearch360.com/plugin/bundle/<?php echo get_option('ss360_pluginConfigId');?>.js?integration=wordpress&integrationMode=<?php echo get_option('ss360_sr_type');?>" async></script>
     669                        <!-- Site Search 360 WP v<?php $ss360_v = defined('SITESEARCH360_VERSION') ? SITESEARCH360_VERSION : '2.1.3'; echo $ss360_v; ?> -->
     670                        <script src="https://js.sitesearch360.com/plugin/bundle/<?php echo get_option('ss360_pluginConfigId');?>.js?integration=wordpress&integrationMode=<?php echo get_option('ss360_sr_type');?>" async></script>
     671                    <?php } else {
     672                        $configuration = json_decode(get_option("ss360_config"), true);
     673                        if($type!='full'){
     674                            if(isset($configuration['searchBox'])){unset($configuration['searchBox']['searchButton']);}
     675                            if(isset($configuration['voiceSearch'])){unset($configuration['voiceSearch']['enabled']);}
     676                        }
     677                        ?>
     678                        <!-- Site Search 360 WP v<?php $ss360_v = defined('SITESEARCH360_VERSION') ? SITESEARCH360_VERSION : '1.1.28'; echo $ss360_v; ?> -->
     679                        <script type="text/javascript">
     680                            var ss360Config = <?php echo json_encode($configuration); ?>;
     681                            if(ss360Config.searchBox === undefined) {
     682                                ss360Config.searchBox = {};
     683                            }
     684                            (function() { // shortcodes support
     685                                var sbSelector = ss360Config.searchBox.selector || '';
     686                                var sbutSelector = ss360Config.searchBox.searchButton || '';
     687                                if(sbSelector.trim().length > 0) {
     688                                    sbSelector += ',';
     689                                }   
     690                                if(sbutSelector.trim().length > 0) {
     691                                    sbutSelector += ',';
     692                                }
     693                                sbSelector += '.ss360-searchbox';
     694                                sbutSelector += '.ss360-searchbutton';
     695                                ss360Config.searchBox.selector = sbSelector;
     696                                ss360Config.searchBox.searchButton = sbutSelector;
     697                                if(document.querySelector('.ss360-search-results-block') !== null) { // always prefer the content block defined via shortcode
     698                                    ss360Config.results = ss360Config.results || {};
     699                                    ss360Config.results.embedConfig = ss360Config.results.embedConfig || {};
     700                                    var contentBlockSelector = ss360Config.results.embedConfig.contentBlock || '';
     701                                    if(contentBlockSelector.indexOf('.ss360-search-results-block') === -1) {
     702                                        if(contentBlockSelector.trim().length > 0) {
     703                                            contentBlockSelector += ',';
     704                                        }
     705                                        contentBlockSelector += '.ss360-search-results-block';
     706                                        ss360Config.results.embedConfig.contentBlock = contentBlockSelector;
     707                                    }
     708                                }
     709                            })();
     710                        </script>
     711                        <script type="text/javascript">
     712                            if (ss360Config.callbacks === undefined) {
     713                                ss360Config.callbacks = {};
     714                            }
     715                            ss360Config.callbacks.preSearch = function (selectedText) {
     716                                if (selectedText === undefined || selectedText.length === 0) {
     717                                    return false;
     718                                }
     719                                return true;
     720                            }
     721                            <?php
     722                            $ss360_callbacks = get_option('ss360_callbacks');
     723                            if($ss360_callbacks == NULL) {
     724                                $ss360_callbacks = array();
     725                            } else {
     726                                $ss360_callbacks = json_decode($ss360_callbacks, true);
     727                            }
     728                        ?>
     729                        <?php if(isset($ss360_callbacks['init']) && $ss360_callbacks['init'] != ''){ ?>
     730                            ss360Config.callbacks.init = function(){<?php echo $ss360_callbacks['init']; ?>};
     731                        <?php } ?>
     732                        <?php if(isset($ss360_callbacks['preSuggest']) && $ss360_callbacks['preSuggest'] != ''){ ?>
     733                            ss360Config.callbacks.preSuggest = function(query, searchBox){<?php echo $ss360_callbacks['preSuggest']; ?>};
     734                        <?php } ?>
     735                        <?php if($type == 'full' && isset($ss360_callbacks['preSearch']) && $ss360_callbacks['preSearch'] != ''){ ?>
     736                            ss360Config.callbacks.preSearch = function(query, sorting, searchBox){if(searchBox!==undefined){searchBox=searchBox.get()[0]};<?php echo $ss360_callbacks['preSearch']; ?>};
     737                        <?php } ?>
     738                        <?php if($type == 'full' && isset($ss360_callbacks['postSearch']) && $ss360_callbacks['postSearch'] != ''){ ?>
     739                            ss360Config.callbacks.postSearch = function(data){<?php echo $ss360_callbacks['postSearch']; ?>};
     740                        <?php } ?>   
     741                        <?php if($type == 'full' && isset($ss360_callbacks['navigationClick']) && $ss360_callbacks['navigationClick'] != ''){ ?>
     742                            ss360Config.callbacks.navigationClick = function(contentGroup){<?php echo $ss360_callbacks['navigationClick']; ?>};
     743                        <?php } ?>                 
     744                        <?php if($type == 'full' && isset($ss360_callbacks['preRender']) && $ss360_callbacks['preRender'] != ''){ ?>
     745                            ss360Config.callbacks.preRender = function(suggests, result){<?php echo $ss360_callbacks['preRender']; ?>};
     746                        <?php } ?>
     747
     748                        </script>
     749                        <?php if ($type == 'suggestions') { ?>
     750                            <script type="text/javascript">
     751                                ss360Config.callbacks.preSearch = function (selectedText, sort, selectedSearchBox) {
     752                                    var form = selectedSearchBox !== undefined ? selectedSearchBox.parents("form")[0] : undefined;
     753                                    if(form !== undefined) {
     754                                        form.submit();
     755                                    } else {
     756                                        var redirectBase = '<?php echo esc_url(home_url('/')); ?>';
     757                                        window.location.href = redirectBase + "?s="+encodeURIComponent(selectedText);
     758                                    }
     759                                    return false;
     760                                }
     761                                ss360Config.searchBox.preventFormParentSubmit = false;
     762                            </script>
     763                        <?php } ?>
     764                        <script src="https://cdn.sitesearch360.com/v14/sitesearch360-v14.min.js" async></script>
     765                    <?php } ?>
    642766                <?php } ?>
    643767                <?php
  • site-search-360/trunk/readme.txt

    r2794158 r2795078  
    66Requires at least: 4.0.0
    77Tested up to: 6.0.2
    8 Stable tag: 2.1.1
     8Stable tag: 2.1.3
    99Requires PHP: 5.2.4
    1010License: GPLv2
     
    7878
    7979== Changelog ==
     80= 2.1.3 =
     81* Fix migrating callbacks.
     82* Add debug log if migration fails.
     83* Add fallback code if migration fails.
     84* Add authentication expired warning.
     85
     86
    8087= 2.1.2 =
    8188* Minor fix.
  • site-search-360/trunk/sitesearch360-admin-page.php

    r2794154 r2795078  
    5656                update_option('ss360_pluginConfigId', $ss360_config_result["ids"][0]);
    5757            } elseif ($ss360_config_result["status"] == "success" && count($ss360_config_result["ids"]) == 0) {
    58                 $ss360_new_id_result = $ss360_client->getNewConfigId();
    59                 update_option('ss360_pluginConfigId', $ss360_new_id_result["id"]);
     58                $ss360_current_config = get_option('ss360_config');
     59                if ($ss360_current_config !=null && !empty($ss360_current_config)) {
     60                    $ss360_plugin = new SiteSearch360Plugin();
     61                    $ss360_plugin->upgradeToV14();
     62                } else {
     63                    $ss360_new_id_result = $ss360_client->getNewConfigId();
     64                    update_option('ss360_pluginConfigId', $ss360_new_id_result["id"]);
     65                }
    6066            }
    6167            $ss360_plugin = new SiteSearch360Plugin();
  • site-search-360/trunk/sitesearch360.php

    r2794154 r2795078  
    66Description: Site Search 360 enhances and improves your standard WordPress search with search suggests, autocompletion, semantic search, and a whole lot of customization. Also, you'll be amazed of how much faster you get relevant search results.
    77Author: SEMKNOX GmbH
    8 Version: 2.1.1
     8Version: 2.1.3
    99Author URI: https://sitesearch360.com
    1010Text Domain: site-search-360
     
    1212*/
    1313
    14 define( 'SITESEARCH360_VERSION', '2.1.1' );
     14define( 'SITESEARCH360_VERSION', '2.1.3' );
    1515
    1616require_once 'class-sitesearch360-widget.php';
  • site-search-360/trunk/uninstall.php

    r2794154 r2795078  
    99        'ss360_old_indexing_notice', 'ss360_active_plan', 'ss360_data_points', 'ss360_inactive_dp', 'ss360_renamed_dp', 'ss360_installation_id', 'ss360_config_modifications',
    1010        'ss360_sync_on_save', 'ss360_sync_on_status','ss360_sync_on_future','ss360_sync_on_delete', 'ss360_callbacks', 'ss360_acf_def', 'ss360_woocommerce_categories', 'ss360_woocommerce_filters', 'ss360_selected_menus', 'ss360_page_limit',
    11         'ss360_inject_search', 'ss360_pluginConfigId');
     11        'ss360_inject_search', 'ss360_pluginConfigId', 'ss360_last_upgrade_request_ts');
    1212   
    1313    global $wpdb;
  • site-search-360/trunk/views/sitesearch360-dashboard.php

    r2794154 r2795078  
    4545        $ss360_selected_menus = array();
    4646    }
     47    $ss360_has_valid_token = $ss360_client->hasValidToken();
    4748?>
    4849
     
    8687                <h1><a href="https://sitesearch360.com" target="_blank"><img aria-label="Site Search 360" src="<?php echo plugins_url('images/logo.svg',  dirname(__FILE__))?>"></a></h1>
    8788                <p class="m-b-0"><?php esc_html_e('Logged in as', 'site-search-360')?> <strong><?php echo $ss360_plugin->getSiteId(); ?></strong>
     89                <?php if (!$ss360_has_valid_token) { ?>
     90                    <p class="alert alert--error"><?php esc_html_e('Your authentication has expired, please log out and log in again to make sure all features are available.', 'site-search-360')?></p>
     91                <?php } ?>
    8892                <?php include('sitesearch360-logout.php') ?>
    8993            </div>
  • site-search-360/trunk/views/sitesearch360-plan.php

    r2643901 r2795078  
    6060    } else if($ss360_tier=='FREE' || $ss360_tier=='COLUMBO'){
    6161        $ss360_upgrade_cta = esc_html__('Upgrade to the Holmes plan', 'site-search-360');
    62         $ss360_cta = esc_html__('($39 per month) to remove the Site Search 360 branding and to add filters to your search.');
     62        $ss360_cta = esc_html__('($49 per month) to remove the Site Search 360 branding and to add filters to your search.');
    6363    }
    6464   
Note: See TracChangeset for help on using the changeset viewer.