<?php

function pp_plugin_include($file)
{
    $path = pp_plugin_get_path($file);
    if (file_exists($path)) {
        include_once $path;
    }
}
function pp_plugin_get_path($path)
{
    return POWERPACK_ELEMENTS_PATH . $path;
}
if (!function_exists('pp_get_page_templates')) {
    function pp_get_page_templates($type = '')
    {
        $args = array('post_type' => 'elementor_library', 'posts_per_page' => -1);
        if ($type) {
            $args['tax_query'] = array(array('taxonomy' => 'elementor_library_type', 'field' => 'slug', 'terms' => $type));
        }
        $page_templates = get_posts($args);
        $options = array();
        if (!empty($page_templates) && !is_wp_error($page_templates)) {
            foreach ($page_templates as $post) {
                $options[$post->ID] = $post->post_title;
            }
        }
        return $options;
    }
}
if (!function_exists('is_pp_magic_wand')) {
    function is_pp_magic_wand()
    {
        if (file_exists(POWERPACK_ELEMENTS_PATH . 'classes/class-pp-magic-wand.php')) {
            return true;
        }
        return false;
    }
}
if (!function_exists('is_plugin_active')) {
    include_once ABSPATH . 'wp-admin/includes/plugin.php';
}
if (!function_exists('is_pp_woocommerce_active')) {
    function is_pp_woocommerce_active()
    {
        if (class_exists('WooCommerce') || is_plugin_active('woocommerce/woocommerce.php')) {
            return true;
        }
        return false;
    }
}
if (!function_exists('is_pp_woocommerce')) {
    function is_pp_woocommerce()
    {
        if (is_pp_woocommerce_active() && file_exists(POWERPACK_ELEMENTS_PATH . 'modules/woocommerce/module.php')) {
            return true;
        }
        return false;
    }
}
if (!function_exists('is_pp_woo_builder')) {
    function is_pp_woo_builder()
    {
        if (is_pp_woocommerce_active() && file_exists(POWERPACK_ELEMENTS_PATH . 'classes/class-pp-woo-builder.php')) {
            return true;
        }
        return false;
    }
}
function pp_get_modules()
{
    $modules = array('pp-link-effects' => __('Link Effects', 'powerpack'), 'pp-divider' => __('Divider', 'powerpack'), 'pp-recipe' => __('Recipe', 'powerpack'), 'pp-info-box' => __('Info Box', 'powerpack'), 'pp-info-box-carousel' => __('Info Box Carousel', 'powerpack'), 'pp-info-list' => __('Info List', 'powerpack'), 'pp-info-table' => __('Info Table', 'powerpack'), 'pp-tiled-posts' => __('Tiled Posts', 'powerpack'), 'pp-posts' => __('Advanced Posts', 'powerpack'), 'pp-pricing-table' => __('Pricing Table', 'powerpack'), 'pp-price-menu' => __('Price Menu', 'powerpack'), 'pp-business-hours' => __('Businsess Hours', 'powerpack'), 'pp-team-member' => __('Team Member', 'powerpack'), 'pp-team-member-carousel' => __('Team Member Carousel', 'powerpack'), 'pp-counter' => __('Counter', 'powerpack'), 'pp-hotspots' => __('Image Hotspots', 'powerpack'), 'pp-icon-list' => __('Icon List', 'powerpack'), 'pp-dual-heading' => __('Dual Heading', 'powerpack'), 'pp-promo-box' => __('Promo Box', 'powerpack'), 'pp-logo-carousel' => __('Logo Carousel', 'powerpack'), 'pp-logo-grid' => __('Logo Grid', 'powerpack'), 'pp-modal-popup' => __('Modal Popup', 'powerpack'), 'pp-onepage-nav' => __('One Page Navigation', 'powerpack'), 'pp-table' => __('Table', 'powerpack'), 'pp-toggle' => __('Toggle', 'powerpack'), 'pp-image-comparison' => __('Image Comparison', 'powerpack'), 'pp-instafeed' => __('Instagram Feed', 'powerpack'), 'pp-google-maps' => __('Google Maps', 'powerpack'), 'pp-review-box' => __('Review Box', 'powerpack'), 'pp-countdown' => __('Countdown', 'powerpack'), 'pp-buttons' => __('Buttons', 'powerpack'), 'pp-advanced-tabs' => __('Advanced Tabs', 'powerpack'), 'pp-image-gallery' => __('Image Gallery', 'powerpack'), 'pp-image-slider' => __('Image Slider', 'powerpack'), 'pp-advanced-menu' => __('Advanced Menu', 'powerpack'), 'pp-offcanvas-content' => __('Offcanvas Content', 'powerpack'), 'pp-timeline' => __('Timeline', 'powerpack'), 'pp-showcase' => __('Showcase', 'powerpack'), 'pp-card-slider' => __('Card Slider', 'powerpack'), 'pp-flipbox' => __('Flip Box', 'powerpack'), 'pp-image-accordion' => __('Image Accordion', 'powerpack'), 'pp-advanced-accordion' => __('Advanced Accordion', 'powerpack'), 'pp-breadcrumbs' => __('Breadcrumbs', 'powerpack'), 'pp-content-ticker' => __('Content Ticker', 'powerpack'), 'pp-magazine-slider' => __('Magazine Slider', 'powerpack'), 'pp-video' => __('Video', 'powerpack'), 'pp-video-gallery' => __('Video Gallery', 'powerpack'), 'pp-testimonials' => __('Testimonials', 'powerpack'), 'pp-scroll-image' => __('Scroll Image', 'powerpack'), 'pp-album' => __('Album', 'powerpack'), 'pp-twitter-buttons' => __('Twitter Buttons', 'powerpack'), 'pp-twitter-grid' => __('Twitter Grid', 'powerpack'), 'pp-twitter-timeline' => __('Twitter Timeline', 'powerpack'), 'pp-twitter-tweet' => __('Twitter Tweet', 'powerpack'), 'pp-tabbed-gallery' => __('Tabbed Gallery', 'powerpack'), 'pp-devices' => __('Devices', 'powerpack'), 'pp-fancy-heading' => __('Fancy Heading', 'powerpack'), 'pp-faq' => __('FAQ', 'powerpack'), 'pp-how-to' => __('How To', 'powerpack'), 'pp-coupons' => __('Coupons', 'powerpack'), 'pp-categories' => __('Categories', 'powerpack'), 'pp-sitemap' => __('Sitemap', 'powerpack'), 'pp-table-of-contents' => __('Table of Contents', 'powerpack'), 'pp-login-form' => __('Login Form', 'powerpack'), 'pp-registration-form' => __('Registration Form', 'powerpack'), 'pp-random-image' => __('Random Image', 'powerpack'));
    if (function_exists('wpcf7')) {
        $modules['pp-contact-form-7'] = __('Contact Form 7', 'powerpack');
    }
    if (class_exists('GFCommon')) {
        $modules['pp-gravity-forms'] = __('Gravity Forms', 'powerpack');
    }
    if (class_exists('Ninja_Forms')) {
        $modules['pp-ninja-forms'] = __('Ninja Forms', 'powerpack');
    }
    if (class_exists('Caldera_Forms')) {
        $modules['pp-caldera-forms'] = __('Caldera Forms', 'powerpack');
    }
    if (class_exists('WPForms_Pro') || class_exists('WPForms_Lite')) {
        $modules['pp-wpforms'] = __('WPForms', 'powerpack');
    }
    if (function_exists('wpFluentForm')) {
        $modules['pp-fluent-forms'] = __('Fluent Forms', 'powerpack');
    }
    if (class_exists('FrmForm')) {
        $modules['pp-formidable-forms'] = __('Formidable Forms', 'powerpack');
    }
    if (is_pp_woocommerce()) {
        $modules['pp-woo-add-to-cart'] = __('Woo - Add To Cart', 'powerpack');
        $modules['pp-woo-categories'] = __('Woo - Categories', 'powerpack');
        $modules['pp-woo-cart'] = __('Woo - Cart', 'powerpack');
        $modules['pp-woo-offcanvas-cart'] = __('Woo - Offcanvas Cart', 'powerpack');
        $modules['pp-woo-checkout'] = __('Woo - Checkout', 'powerpack');
        $modules['pp-woo-mini-cart'] = __('Woo - Mini Cart', 'powerpack');
        $modules['pp-woo-products'] = __('Woo - Products', 'powerpack');
        $modules['pp-woo-my-account'] = __('Woo - My Account', 'powerpack');
        if (get_option('pp_woo_builder_enable')) {
            $modules['pp-woo-product-tabs'] = __('Woo - Product Tabs', 'powerpack');
            $modules['pp-woo-product-title'] = __('Woo - Product Title', 'powerpack');
            $modules['pp-woo-product-meta'] = __('Woo - Product Meta', 'powerpack');
            $modules['pp-woo-product-price'] = __('Woo - Product Price', 'powerpack');
            $modules['pp-woo-product-rating'] = __('Woo - Product Rating', 'powerpack');
            $modules['pp-woo-product-stock'] = __('Woo - Product Stock', 'powerpack');
            $modules['pp-woo-product-short-description'] = __('Woo - Product Short Description', 'powerpack');
            $modules['pp-woo-product-content'] = __('Woo - Product Content', 'powerpack');
            $modules['pp-woo-product-images'] = __('Woo - Product Images', 'powerpack');
            $modules['pp-woo-product-reviews'] = __('Woo - Product Reviews', 'powerpack');
            $modules['pp-woo-product-upsell'] = __('Woo - Product Upsell', 'powerpack');
            $modules['pp-woo-add-to-cart-notification'] = __('Woo - Add to Cart Notification', 'powerpack');
            $modules['pp-woo-archive-description'] = __('Woo - Archive Description', 'powerpack');
        }
    }
    ksort($modules);
    return $modules;
}
if (!function_exists('is_pp_white_label')) {
    function is_pp_white_label()
    {
        if (file_exists(POWERPACK_ELEMENTS_PATH . 'includes/admin/admin-settings-wl.php')) {
            return true;
        }
        return false;
    }
}
function pp_get_thumbnail_taxonomies()
{
    $taxonomies = array();
    $taxonomy_list = array();
    $post_types = \PowerpackElements\Classes\PP_Posts_Helper::get_post_types();
    foreach ($post_types as $slug => $type) {
        $taxonomies = \PowerpackElements\Classes\PP_Posts_Helper::get_post_taxonomies($slug);
        foreach ((array) $taxonomies as $taxonomy) {
            $taxonomy_list[$taxonomy->name] = $taxonomy->label;
        }
    }
    return $taxonomy_list;
}
function pp_get_extensions()
{
    $extensions = array('pp-display-conditions' => __('Display Conditions', 'powerpack'), 'pp-background-effects' => __('Background Effects', 'powerpack'));
    $extensions = apply_filters('pp_elements_extensions', $extensions);
    return $extensions;
}
function pp_get_enabled_modules()
{
    $enabled_modules = get_option('pp_elementor_modules');
    if (is_array($enabled_modules)) {
        return $enabled_modules;
    }
    if ('disabled' == $enabled_modules) {
        return $enabled_modules;
    }
    return pp_get_modules();
}
function pp_get_enabled_extensions()
{
    $enabled_extensions = get_option('pp_elementor_extensions');
    if (is_array($enabled_extensions)) {
        return $enabled_extensions;
    }
    if ('disabled' == $enabled_extensions) {
        return $enabled_extensions;
    }
    return pp_get_extensions();
}
function pp_get_enabled_taxonomies()
{
    $enabled_taxonomies = get_option('pp_elementor_taxonomy_thumbnail_taxonomies');
    if (is_array($enabled_taxonomies)) {
        return $enabled_taxonomies;
    }
    if ('disabled' == $enabled_taxonomies) {
        return $enabled_taxonomies;
    }
    return pp_get_thumbnail_taxonomies();
}
function pp_get_saved_templates($templates = array())
{
    if (empty($templates)) {
        return array();
    }
    $options = array();
    foreach ($templates as $template) {
        $options[$template['template_id']] = $template['title'];
    }
    return $options;
}
function pp_get_public_post_types_options($singular = false, $any = false, $args = array())
{
    $defaults = array('show_in_nav_menus' => true);
    $post_types = array();
    $post_type_args = wp_parse_args($args, $defaults);
    if ($any) {
        $post_types['any'] = __('Any', 'powerpack');
    }
    if (!function_exists('get_post_types')) {
        return $post_types;
    }
    $_post_types = get_post_types($post_type_args, 'objects');
    foreach ($_post_types as $post_type => $object) {
        $post_types[$post_type] = $singular ? $object->labels->singular_name : $object->label;
    }
    return $post_types;
}
function pp_get_taxonomies_options($post_type = false)
{
    $options = array();
    if (!$post_type) {
        $taxonomies = get_taxonomies(array('show_in_nav_menus' => true), 'objects');
    } else {
        $taxonomies = get_object_taxonomies($post_type, 'objects');
    }
    foreach ($taxonomies as $taxonomy) {
        if (!$taxonomy->publicly_queryable) {
            continue;
        }
        $options[$taxonomy->name] = $taxonomy->label;
    }
    if (empty($options)) {
        $options[0] = __('No taxonomies found', 'powerpack');
        return $options;
    }
    return $options;
}
function pp_get_taxonomy_labels($taxonomy = '')
{
    if (!$taxonomy || '' === $taxonomy) {
        return false;
    }
    $labels = false;
    $taxonomy_object = get_taxonomy($taxonomy);
    if ($taxonomy_object && is_object($taxonomy_object)) {
        $labels = $taxonomy_object->labels;
    }
    return $labels;
}
function pp_get_terms_options($taxonomy, $key = 'slug', $all = true)
{
    if (false !== $all) {
        $all = true === $all ? __('All', 'powerpack') : $all;
        $options = array('' => $all);
    }
    $terms = get_terms(array('taxonomy' => $taxonomy));
    if (empty($terms)) {
        $options[''] = sprintf(__('No terms found', 'powerpack'), $taxonomy);
        return $options;
    }
    foreach ($terms as $term) {
        $term_key = 'id' === $key ? $term->term_id : $term->slug;
        $options[$term_key] = $term->name;
    }
    return $options;
}
function pp_get_terms($taxonomies = array())
{
    $_terms = array();
    if (empty($taxonomies)) {
        return false;
    }
    if (is_array($taxonomies)) {
        foreach ($taxonomies as $taxonomy) {
            $terms = get_the_terms(get_the_ID(), $taxonomy);
            if (empty($terms)) {
                continue;
            }
            foreach ($terms as $term) {
                $_terms[] = $term;
            }
        }
    } else {
        $_terms = get_the_terms(get_the_ID(), $taxonomies);
    }
    if (empty($_terms) || 0 === count($_terms)) {
        return false;
    }
    return $_terms;
}
function pp_get_pages_options()
{
    $options = array();
    $pages = get_pages(array('hierarchical' => false));
    if (empty($pages)) {
        $options[''] = __('No pages found', 'powerpack');
        return $options;
    }
    foreach ($pages as $page) {
        $options[$page->ID] = $page->post_title;
    }
    return $options;
}
function pp_get_users_options()
{
    $options = array();
    $users = get_users(array('fields' => array('ID', 'display_name')));
    if (empty($users)) {
        $options[''] = __('No users found', 'powerpack');
        return $options;
    }
    foreach ($users as $user) {
        $options[$user->ID] = $user->display_name;
    }
    return $options;
}
function pp_get_most_parents_category($categories = array())
{
    $counted_cats = array();
    if (!is_array($categories)) {
        return $categories;
    }
    foreach ($categories as $category) {
        $category_parents = get_category_parents($category->term_id, false, ',');
        $category_parents = explode(',', $category_parents);
        $counted_cats[$category->term_id] = count($category_parents);
    }
    arsort($counted_cats);
    reset($counted_cats);
    return key($counted_cats);
}
function pp_sort_terms_hierarchicaly(array &$cats, array &$into, $parentId = 0)
{
    foreach ($cats as $i => $cat) {
        if ($cat->parent == $parentId) {
            $into[$cat->term_id] = $cat;
            unset($cats[$i]);
        }
    }
    foreach ($into as $topCat) {
        $topCat->children = array();
        pp_sort_terms_hierarchicaly($cats, $topCat->children, $topCat->term_id);
    }
}
function pp_posts_where_by_title_name($where, &$wp_query)
{
    global $wpdb;
    if ($s = $wp_query->get('search_title_name')) {
        $where .= ' AND (' . $wpdb->posts . '.post_title LIKE \'%' . esc_sql($wpdb->esc_like($s)) . '%\' OR ' . $wpdb->posts . '.post_name LIKE \'%' . esc_sql($wpdb->esc_like($s)) . '%\')';
    }
    return $where;
}
function pp_value_compare($left_value, $right_value, $operator)
{
    switch ($operator) {
        case 'is':
            return $left_value == $right_value;
        case 'not':
            return $left_value != $right_value;
        default:
            return $left_value === $right_value;
    }
}
function pp_header_enabled()
{
    $header_id = get_option('pp_header_footer_template_header');
    $status = false;
    if ('' !== $header_id) {
        $status = true;
    }
    return apply_filters('pp_header_enabled', $status);
}
function pp_footer_enabled()
{
    $footer_id = get_option('pp_header_footer_template_footer');
    $status = false;
    if ('' !== $footer_id) {
        $status = true;
    }
    return apply_filters('pp_footer_enabled', $status);
}
function pp_get_elementor()
{
    return \Elementor\Plugin::$instance;
}