function x_soliloquy_remove_license_functionality()
 {
     if (is_admin()) {
         //
         // 1. Remove the settings menu.
         // 2. Remove license notices.
         //
         remove_action('admin_menu', array(Soliloquy_Settings::get_instance(), 'admin_menu'));
         // 1
         remove_action('admin_notices', array(Soliloquy_License::get_instance(), 'notices'));
         // 2
     }
 }
 /**
  * Pings the remote server for addons data.
  *
  * @since 1.0.0
  *
  * @param string $key The user license key.
  * @return bool|array False if no key or failure, array of addon data otherwise.
  */
 public function get_addons_data($key)
 {
     $addons = Soliloquy_License::get_instance()->perform_remote_request('get-addons-data', array('tgm-updater-key' => $key));
     // If there was an API error, set transient for only 10 minutes.
     if (!$addons) {
         set_transient('_sol_addons', false, 10 * MINUTE_IN_SECONDS);
         return false;
     }
     // If there was an error retrieving the addons, set the error.
     if (isset($addons->error)) {
         set_transient('_sol_addons', false, 10 * MINUTE_IN_SECONDS);
         return false;
     }
     // Otherwise, our request worked. Save the data and return it.
     set_transient('_sol_addons', $addons, DAY_IN_SECONDS);
     return $addons;
 }
 /**
  * Returns the singleton instance of the class.
  *
  * @since 1.0.0
  *
  * @return object The Soliloquy_License object.
  */
 public static function get_instance()
 {
     if (!isset(self::$instance) && !self::$instance instanceof Soliloquy_License) {
         self::$instance = new Soliloquy_License();
     }
     return self::$instance;
 }
Example #4
0
/**
 * Upgrades sliders from v1 to v2. This also upgrades any current v2 users to the
 * proper post type. This is a mess and it was my fault. :-( I apologize to my customers
 * for making this so rough. You deserve better, and I will work hard to do better by
 * you! Thanks for hanging in there faithfully with me!
 *
 * @since 1.0.0
 */
function soliloquy_ajax_upgrade_sliders()
{
    // Run a security check first.
    check_ajax_referer('soliloquy-upgrade', 'nonce');
    // Increase the time limit to account for large slider sets and suspend cache invalidations.
    set_time_limit(Soliloquy_Common::get_instance()->get_max_execution_time());
    wp_suspend_cache_invalidation(true);
    // Update the license key from v1 to v2 if necessary.
    $v2_license = get_option('soliloquy');
    if (!$v2_license || empty($v2_license['key']) || empty($v2_license['type'])) {
        $v1_license = get_option('soliloquy_license_key');
        $new_license = Soliloquy::default_options();
        if (!empty($v1_license['license'])) {
            $new_license['key'] = $v1_license['license'];
        }
        update_option('soliloquy', $new_license);
        // Force the new key to be validated.
        Soliloquy_License::get_instance()->validate_key(true);
    }
    // Grab all sliders from v1 and convert them to the new system.
    $sliders = get_posts(array('post_type' => 'soliloquy', 'posts_per_page' => -1));
    // Loop through sliders and convert them.
    foreach ((array) $sliders as $slider) {
        // Grab meta from the v1 and v2 sliders.
        $meta = get_post_meta($slider->ID, '_soliloquy_settings', true);
        $v2_meta = get_post_meta($slider->ID, '_sol_slider_data', true);
        // Move meta from v1 to v2, or if already using v2, use v2 as a starting point.
        if (empty($v2_meta)) {
            $new_meta = array('id' => $slider->ID, 'config' => array(), 'slider' => array(), 'status' => 'active');
        } else {
            $new_meta = $v2_meta;
        }
        // Splice meta from v1 to v2.
        if (!empty($new_meta['config']['gutter'])) {
            $new_meta['config']['gutter'] = 0;
        }
        if (!empty($new_meta['config']['position'])) {
            $new_meta['config']['position'] = 'none';
        }
        if (!empty($new_meta['config']['mobile'])) {
            $new_meta['config']['mobile'] = 0;
        }
        $new_meta['config']['title'] = $slider->post_title;
        $new_meta['config']['slug'] = $slider->post_name;
        if (!empty($meta['width'])) {
            $new_meta['config']['slider_width'] = absint($meta['width']);
        }
        if (!empty($meta['height'])) {
            $new_meta['config']['slider_height'] = absint($meta['height']);
        }
        if (!empty($meta['default']) && 'cropped' !== $meta['default']) {
            $new_meta['config']['slider'] = 0;
        }
        if (!empty($meta['custom'])) {
            if ($meta['custom']) {
                if ('full' == $meta['custom']) {
                    $new_meta['config']['slider_size'] = 'default';
                } else {
                    $new_meta['config']['slider_size'] = $meta['custom'];
                    global $_wp_additional_image_sizes;
                    if (isset($_wp_additional_image_sizes[$meta['custom']])) {
                        $width = absint($_wp_additional_image_sizes[$meta['custom']]['width']);
                        $height = absint($_wp_additional_image_sizes[$meta['custom']]['height']);
                    } else {
                        $width = absint(get_option($meta['custom'] . '_size_w'));
                        $height = absint(get_option($meta['custom'] . '_size_h'));
                    }
                    if ($width) {
                        $new_meta['config']['slider_width'] = $width;
                    }
                    if ($height) {
                        $new_meta['config']['slider_height'] = $height;
                    }
                }
            }
        }
        if (!empty($meta['transition'])) {
            if ('slide-horizontal' == $meta['transition']) {
                $new_meta['config']['transition'] = 'horizontal';
            } else {
                if ('slide-vertical' == $meta['transition']) {
                    $new_meta['config']['transition'] = 'vertical';
                } else {
                    $new_meta['config']['transition'] = 'fade';
                }
            }
        }
        if (!empty($meta['speed'])) {
            $new_meta['config']['duration'] = $meta['speed'];
        }
        if (!empty($meta['duration'])) {
            $new_meta['config']['speed'] = $meta['duration'];
        }
        if (!empty($meta['animate'])) {
            $new_meta['config']['auto'] = $meta['animate'];
        }
        if (!empty($meta['navigation'])) {
            $new_meta['config']['arrows'] = $meta['navigation'] ? 1 : 0;
        } else {
            $new_meta['config']['arrows'] = 0;
        }
        if (!empty($meta['control'])) {
            $new_meta['config']['control'] = $meta['control'] ? 1 : 0;
        } else {
            $new_meta['config']['control'] = 0;
        }
        if (!empty($meta['keyboard'])) {
            $new_meta['config']['keyboard'] = $meta['keyboard'];
        }
        if (!empty($meta['pauseplay'])) {
            $new_meta['config']['pauseplay'] = $meta['pauseplay'];
        }
        if (!empty($meta['random'])) {
            $new_meta['config']['random'] = $meta['random'];
        }
        if (!empty($meta['number'])) {
            $new_meta['config']['start'] = $meta['number'];
        }
        if (!empty($meta['loop'])) {
            $new_meta['config']['loop'] = $meta['loop'];
        }
        if (!empty($meta['hover'])) {
            $new_meta['config']['hover'] = $meta['hover'];
        }
        if (!empty($meta['css'])) {
            $new_meta['config']['css'] = $meta['css'];
        }
        if (!empty($meta['smooth'])) {
            $new_meta['config']['smooth'] = $meta['smooth'];
        }
        if (!empty($meta['delay'])) {
            $new_meta['config']['delay'] = $meta['delay'];
        }
        // Set to the classic theme to keep people from going nuts with a theme change.
        if (!empty($meta['theme']) && 'metro' == $meta['theme']) {
            $new_meta['config']['slider_theme'] = 'metro';
        } else {
            $new_meta['config']['slider_theme'] = 'classic';
        }
        // Grab all attachments and add them to the slider.
        $attachments = get_posts(array('orderby' => 'menu_order', 'order' => 'ASC', 'post_type' => 'attachment', 'post_parent' => $slider->ID, 'post_status' => null, 'posts_per_page' => -1));
        // Loop through attachments and add them to the slider.
        foreach ((array) $attachments as $slide) {
            switch ($slide->post_mime_type) {
                case 'soliloquy/video':
                    $new_meta['slider'][$slide->ID] = array('status' => 'active', 'id' => $slide->ID, 'src' => '', 'title' => isset($slide->post_title) ? $slide->post_title : '', 'link' => '', 'url' => isset($slide->post_content) ? $slide->post_content : '', 'thumb' => '', 'caption' => isset($slide->post_excerpt) ? $slide->post_excerpt : '', 'type' => 'video');
                    break;
                case 'soliloquy/html':
                    $new_meta['slider'][$slide->ID] = array('status' => 'active', 'id' => $slide->ID, 'src' => '', 'title' => isset($slide->post_title) ? $slide->post_title : '', 'link' => '', 'code' => isset($slide->post_content) ? $slide->post_content : '', 'type' => 'html');
                    break;
                default:
                    $url = wp_get_attachment_image_src($slide->ID, 'full');
                    $alt_text = get_post_meta($slide->ID, '_wp_attachment_image_alt', true);
                    $new_meta['slider'][$slide->ID] = array('status' => 'active', 'id' => $slide->ID, 'src' => isset($url[0]) ? esc_url($url[0]) : '', 'title' => get_the_title($slide->ID), 'link' => get_post_meta($slide->ID, '_soliloquy_image_link', true), 'linktab' => get_post_meta($slider->ID, '_soliloquy_image_link_tab', true), 'alt' => !empty($alt_text) ? $alt_text : get_the_title($slide->ID), 'caption' => !empty($slide->post_excerpt) ? $slide->post_excerpt : '', 'filter' => get_post_meta($slide->ID, '_soliloquy_filters_image_filter', true), 'type' => 'image');
                    break;
            }
        }
        // Convert v1 Pinterest addon data to v2 if necessary.
        $pinterest = get_post_meta($slider->ID, '_soliloquy_pinterest', true);
        if (!empty($pinterest['enable'])) {
            $new_meta['config']['pinterest'] = $pinterest['enable'];
        }
        if (!empty($pinterest['position'])) {
            $new_meta['config']['pinterest_position'] = str_replace('-', '_', $pinterest['position']);
        }
        // Convert v1 carousel addon to v2 if necessary.
        $carousel = get_post_meta($slider->ID, '_soliloquy_carousel', true);
        if (!empty($carousel['width'])) {
            $new_meta['config']['carousel'] = 1;
            $new_meta['config']['carousel_width'] = $carousel['width'];
        }
        if (!empty($carousel['margin'])) {
            $new_meta['config']['carousel_margin'] = $carousel['margin'];
        }
        if (!empty($carousel['mminimum'])) {
            $new_meta['config']['carousel_min'] = $carousel['minimum'];
        }
        if (!empty($carousel['maximum'])) {
            $new_meta['config']['carousel_maximum'] = $carousel['maximum'];
        }
        if (!empty($carousel['move'])) {
            $new_meta['config']['carousel_move'] = $carousel['move'];
        }
        // Convert v1 thumbnails addon to v2 if necessary.
        $thumbnails = get_post_meta($slider->ID, '_soliloquy_thumbnails', true);
        if (!empty($thumbnails['use'])) {
            $new_meta['config']['thumbnails'] = $thumbnails['use'];
        }
        if (!empty($thumbnails['width'])) {
            $new_meta['config']['thumbnails_width'] = $thumbnails['width'];
        }
        if (!empty($thumbnails['margin'])) {
            $new_meta['config']['thumbnails_margin'] = $thumbnails['margin'];
        }
        if (!empty($thumbnails['minimum'])) {
            $new_meta['config']['thumbnails_num'] = $thumbnails['minimum'];
        }
        if (!empty($thumbnails['position'])) {
            $new_meta['config']['thumbnails_position'] = $thumbnails['position'];
        }
        // Convert v1 featured content to v 2 if necessary.
        $fc = get_post_meta($slider->ID, '_soliloquy_fc', true);
        if (!empty($meta['type']) && 'featured' == $meta['type']) {
            $new_meta['config']['type'] = 'fc';
        }
        if (!empty($fc['post_types'])) {
            $new_meta['config']['fc_post_types'] = $fc['post_types'];
        }
        if (!empty($fc['terms'])) {
            $new_meta['config']['fc_terms'] = $fc['terms'];
        }
        if (!empty($fc['query'])) {
            $new_meta['config']['fc_query'] = $fc['query'];
        }
        if (!empty($fc['include_exclude'])) {
            $new_meta['config']['fc_inc_ex'] = $fc['include_exclude'];
        }
        if (!empty($fc['orderby'])) {
            $new_meta['config']['fc_orderby'] = $fc['orderby'];
        }
        if (!empty($fc['order'])) {
            $new_meta['config']['fc_order'] = $fc['order'];
        }
        if (!empty($fc['number'])) {
            $new_meta['config']['fc_number'] = $fc['number'];
        }
        if (!empty($fc['offset'])) {
            $new_meta['config']['fc_offset'] = $fc['offset'];
        }
        if (!empty($fc['post_status'])) {
            $new_meta['config']['fc_status'] = $fc['post_status'];
        }
        if (!empty($fc['post_url'])) {
            $new_meta['config']['fc_post_url'] = $fc['post_url'];
        }
        if (!empty($fc['post_title'])) {
            $new_meta['config']['fc_post_title'] = $fc['post_title'];
        }
        if (!empty($fc['post_title_link'])) {
            $new_meta['config']['fc_post_title_link'] = $fc['post_title_link'];
        }
        if (!empty($fc['content_type'])) {
            $new_meta['config']['fc_content_type'] = str_replace('-', '_', $fc['content_type']);
        }
        if (!empty($fc['post_content_length'])) {
            $new_meta['config']['fc_content_length'] = $fc['post_content_length'];
        }
        if (!empty($fc['ellipses'])) {
            $new_meta['config']['fc_content_ellipses'] = $fc['ellipses'];
        }
        if (!empty($fc['read_more'])) {
            $new_meta['config']['fc_read_more'] = $fc['read_more'];
        }
        if (!empty($fc['read_more_text'])) {
            $new_meta['config']['fc_read_more_text'] = $fc['read_more_text'];
        }
        if (!empty($fc['fallback'])) {
            $new_meta['config']['fc_fallback'] = $fc['fallback'];
        }
        // Convert v1 Instagram addon to v2 if necessary.
        $instagram = get_post_meta($slider->ID, '_soliloquy_instagram', true);
        // Update the Instagram db option from v1 to v2 if v2 does not already exist.
        $v2_auth = get_option('soliloquy_instagram');
        if (!$v2_auth || empty($v2_auth['token']) || empty($v2_auth['id'])) {
            $v1_auth = get_option('soliloquy_instagram_data');
            $new_auth = array();
            if (!empty($v1_auth->access_token)) {
                $new_auth['token'] = $v1_auth->access_token;
            }
            if (!empty($v1_auth->user->id)) {
                $new_auth['id'] = $v1_auth->user->id;
            }
            update_option('soliloquy_instagram', $new_auth);
        }
        if (!empty($meta['type']) && 'instagram' == $meta['type']) {
            $new_meta['config']['type'] = 'instagram';
        }
        if (!empty($instagram['number'])) {
            $new_meta['config']['instagram_number'] = $instagram['number'];
        }
        if (!empty($instagram['link'])) {
            $new_meta['config']['instagram_link'] = $instagram['link'];
        }
        if (!empty($instagram['caption'])) {
            $new_meta['config']['instagram_caption'] = $instagram['caption'];
        }
        if (!empty($instagram['random'])) {
            $new_meta['config']['instagram_random'] = $instagram['random'];
        }
        if (!empty($instagram['cache'])) {
            $new_meta['config']['instagram_cache'] = $instagram['cache'];
        }
        // Convert v1 lightbox addon to v2 if necessary. This is a new lightbox engine so not a lot of crossover here.
        $lightbox = get_post_meta($slider->ID, '_soliloquy_lightbox', true);
        if (!empty($lightbox['auto'])) {
            $new_meta['config']['lightbox'] = $lightbox['auto'];
        }
        if (!empty($lightbox['lightbox_theme'])) {
            $new_meta['config']['lightbox_theme'] = 'base';
        }
        // Update the post meta for the new slider.
        update_post_meta($slider->ID, '_sol_slider_data', $new_meta);
        // Force the post to update.
        wp_update_post(array('ID' => $slider->ID, 'post_type' => 'soliloquy'));
        // Flush caches for any sliders.
        Soliloquy_Common::get_instance()->flush_slider_caches($slider->ID, $new_meta['config']['slug']);
    }
    // Now grab any v2 sliders and convert the post type back to the proper system.
    $v2_sliders = get_posts(array('post_type' => 'soliloquyv2', 'posts_per_page' => -1));
    // Loop through the sliders, grab the data, delete and backwards convert them back to 'soliloquy' post type.
    foreach ((array) $v2_sliders as $slider) {
        // Grab any slider meta and add the attachment ID to the data array.
        $slider_meta = get_post_meta($slider->ID, '_sol_slider_data', true);
        if (!empty($slider_meta['slider'])) {
            foreach ($slider_meta['slider'] as $id => $data) {
                $slider_meta['slider'][$id]['id'] = $id;
            }
        }
        update_post_meta($slider->ID, '_sol_slider_data', $slider_meta);
        $data = array('ID' => $slider->ID, 'post_type' => 'soliloquy');
        wp_update_post($data);
        // Flush caches for any sliders.
        Soliloquy_Common::get_instance()->flush_slider_caches($slider->ID);
    }
    // Turn off cache suspension and flush the cache to remove any cache inconsistencies.
    wp_suspend_cache_invalidation(false);
    wp_cache_flush();
    // Update the option to signify that upgrading is complete.
    update_option('soliloquy_upgrade', true);
    // Send back the response.
    echo json_encode(true);
    die;
}