function themify_builder_init()
{
    global $ThemifyBuilder;
    if (class_exists('Themify_Builder')) {
        $ThemifyBuilder = new Themify_Builder();
        if ($ThemifyBuilder->builder_check()) {
            $ThemifyBuilder->init();
        }
    }
    // class_exists check
}
function themify_builder_init()
{
    global $ThemifyBuilder, $Themify_Builder_Layouts;
    if (class_exists('Themify_Builder')) {
        if (Themify_Builder_Model::builder_check()) {
            $Themify_Builder_Layouts = new Themify_Builder_Layouts();
            $ThemifyBuilder = new Themify_Builder();
            $ThemifyBuilder->init();
            $themify_builder_plugin_compat = new Themify_Builder_Plugin_Compat();
            $themify_builder_import_export = new Themify_Builder_Import_Export();
        }
    }
    // class_exists check
    if (is_admin() && current_user_can('update_plugins')) {
        include THEMIFY_BUILDER_DIR . '/themify-builder-updater.php';
    }
}
 public function save_data($builder_data, $post_id)
 {
     global $ThemifyBuilder;
     /* if it's serialized, convert to array */
     if (is_serialized($builder_data)) {
         $builder_data = stripslashes_deep(unserialize($builder_data));
     }
     $builder_data = self::array_map_deep($builder_data, 'wp_slash');
     $builder_data = json_encode($builder_data);
     /* slashes are removed by update_post_meta, apply twice to protect slashes */
     $builder_data = wp_slash($builder_data);
     /* save the data in json format */
     update_post_meta($post_id, $this->meta_key, $builder_data);
     /* remove the old data format */
     delete_post_meta($post_id, $ThemifyBuilder->meta_key);
     Themify_Builder::remove_cache($post_id);
 }
 /**
  * Add inline CSS styles for animations
  * @since 2.2.7
  */
 public function add_builder_inline_css()
 {
     // Setup Animation
     self::$inview_selectors = apply_filters('themify_builder_animation_inview_selectors', array());
     self::$new_selectors = apply_filters('themify_builder_create_animation_selectors', array());
     $global_selectors = isset(self::$new_selectors['selectors']) ? self::$new_selectors['selectors'] : array();
     $specific_selectors = isset(self::$new_selectors['specificSelectors']) ? array_keys(self::$new_selectors['specificSelectors']) : array();
     $instyle_selectors = array_merge(self::$inview_selectors, $global_selectors, $specific_selectors);
     if (count($instyle_selectors) > 0) {
         $inline_style = '.js.csstransitions ' . join(', .js.csstransitions ', $instyle_selectors) . '{ visibility:hidden; }';
         echo sprintf('<style>%s</style>', $inline_style);
     }
 }
 /**
  * Check cache is disabled or builder is active or in admin
  * 
  * return boolean
  */
 public static function is_cache_activate()
 {
     $active = is_user_logged_in() && current_user_can('manage_options') || themify_get('setting-page_builder_cache') || is_admin() ? true : (class_exists('Themify_Builder') ? Themify_Builder::is_front_builder_activate() : FALSE);
     return apply_filters('themify_builder_is_cache_active', $active);
 }
 /**
  * Hook to content filter to show builder output
  * @param $content
  * @return string
  */
 function builder_show_on_front($content)
 {
     global $post, $wp_query, $wp_current_filter;
     // Exclude builder output in admin post list mode excerpt, Dont show builder on product single description
     if (is_admin() && !defined('DOING_AJAX') || is_post_type_archive() && !is_post_type_archive('product') || in_array('get_the_excerpt', $wp_current_filter) || post_password_required() || isset($wp_query->query_vars['product_cat']) || is_tax('product_tag') || is_singular('product') && 'product' == get_post_type()) {
         return $content;
     }
     if (is_post_type_archive('product') && get_query_var('paged') == 0 && $this->builder_is_plugin_active('woocommerce/woocommerce.php')) {
         $post = get_post(woocommerce_get_page_id('shop'));
     }
     if (!is_object($post)) {
         return $content;
     }
     $display = apply_filters('themify_builder_display', true, $post->ID);
     if (false === $display) {
         return $content;
     }
     // Infinite-loop prevention
     if (empty($this->post_ids)) {
         $this->post_ids[] = $post->ID;
     } elseif (in_array($post->ID, $this->post_ids)) {
         // we have already rendered this, go back.
         return $content;
     }
     // Builder display position
     $display_position = apply_filters('themify_builder_display_position', 'below', $post->ID);
     $this->post_ids[] = $post->ID;
     $builder_data = $this->get_builder_data($post->ID);
     if (!is_array($builder_data) || strpos($content, '#more-')) {
         $builder_data = array();
     }
     self::$post_id = get_the_ID();
     if ($this->in_the_loop) {
         $builder_output = $this->retrieve_template('builder-output-in-the-loop.php', array('builder_output' => $builder_data, 'builder_id' => $post->ID), '', '', false);
     } else {
         $builder_output = $this->retrieve_template('builder-output.php', array('builder_output' => $builder_data, 'builder_id' => $post->ID), '', '', false);
     }
     if ('above' == $display_position) {
         $content = $builder_output . $content;
     } else {
         $content .= $builder_output;
     }
     $this->post_ids = array_unique($this->post_ids);
     if (array_shift($this->post_ids) == $post->ID) {
         // the loop is finished, reset the ID list
         $this->post_ids = array();
     }
     return $content;
 }
 /**
  * Add inline CSS styles for animations
  * @since 2.2.7
  */
 public function add_builder_inline_css()
 {
     // Setup Animation
     self::$inview_selectors = apply_filters('themify_builder_animation_inview_selectors', array());
     self::$new_selectors = apply_filters('themify_builder_create_animation_selectors', array());
     $global_selectors = isset(self::$new_selectors['selectors']) ? self::$new_selectors['selectors'] : array();
     $specific_selectors = isset(self::$new_selectors['specificSelectors']) ? array_keys(self::$new_selectors['specificSelectors']) : array();
     $instyle_selectors = array_merge(self::$inview_selectors, $global_selectors, $specific_selectors);
     if (count($instyle_selectors) > 0) {
         // If there's animation only, load at least main styles and scripts
         add_action('wp_enqueue_scripts', array($this, 'load_templates_js_css'));
         $inline_style = '.js.csstransitions ' . join(', .js.csstransitions ', $instyle_selectors) . '{ visibility:hidden; }';
         echo sprintf('<style>%s</style>', $inline_style);
     }
 }