/**
 * Define default meta boxes for templates
 * 
 * @param  array $hidden Hidden Meta Boxes
 * @param  string|WP_Screen $screen Current screen
 * @param  bool $use_defaults Use default Meta Boxes or not
 * 
 * @return array Hidden Meta Boxes
 */
function presscore_hidden_meta_boxes($hidden, $screen, $use_defaults)
{
    static $extra_hidden = null;
    // return saved result
    if (null !== $extra_hidden) {
        return $extra_hidden;
    }
    global $DT_META_BOXES;
    $template = dt_get_template_name();
    $meta_boxes = array();
    foreach ($DT_META_BOXES as $meta_box) {
        // if field 'only_on' is empty - show metabox everywhere
        // if current template in templates list - show metabox
        if (empty($meta_box['only_on']) || empty($meta_box['only_on']['template']) || in_array($template, (array) $meta_box['only_on']['template'])) {
            // find metabox id in hidden list
            $bad_key = array_search($meta_box['id'], $hidden);
            // show current metabox
            if (false !== $bad_key) {
                unset($hidden[$bad_key]);
            }
            continue;
        }
        $meta_boxes[] = $meta_box['id'];
    }
    // save result
    $extra_hidden = $hidden;
    if (!empty($meta_boxes)) {
        $extra_hidden = array_unique(array_merge($hidden, $meta_boxes));
    }
    return $extra_hidden;
}
 /**
  * Ajax pagination controller.
  *
  */
 function presscore_ajax_pagination_controller()
 {
     $ajax_data = array('nonce' => isset($_POST['nonce']) ? $_POST['nonce'] : false, 'post_id' => isset($_POST['postID']) ? absint($_POST['postID']) : false, 'post_paged' => isset($_POST['paged']) ? absint($_POST['paged']) : false, 'target_page' => isset($_POST['targetPage']) ? absint($_POST['targetPage']) : false, 'page_data' => isset($_POST['pageData']) ? $_POST['pageData'] : false, 'term' => isset($_POST['term']) ? $_POST['term'] : '', 'orderby' => isset($_POST['orderby']) ? $_POST['orderby'] : '', 'order' => isset($_POST['order']) ? $_POST['order'] : '', 'loaded_items' => isset($_POST['visibleItems']) ? array_map('absint', $_POST['visibleItems']) : array(), 'sender' => isset($_POST['sender']) ? $_POST['sender'] : '', 'posts_count' => isset($_POST['postsCount']) ? $_POST['postsCount'] : 0);
     if ($ajax_data['post_id'] && 'page' == get_post_type($ajax_data['post_id'])) {
         $template = dt_get_template_name($ajax_data['post_id'], true);
     } else {
         if (is_array($ajax_data['page_data'])) {
             switch ($ajax_data['page_data'][0]) {
                 case 'archive':
                     $template = 'archive';
                     break;
                 case 'search':
                     $template = 'search';
             }
         }
     }
     $response = array('success' => false, 'reason' => 'undefined template');
     do_action('presscore_before_ajax_response', $template);
     switch ($template) {
         case 'template-albums-jgrid.php':
         case 'template-albums.php':
             $response = Presscore_Inc_Albums_Post_Type::get_albums_masonry_content($ajax_data);
             break;
         case 'template-portfolio-masonry.php':
         case 'template-portfolio-list.php':
         case 'template-portfolio-jgrid.php':
             $response = Presscore_Inc_Portfolio_Post_Type::get_masonry_content($ajax_data);
             break;
         case 'template-media.php':
         case 'template-media-jgrid.php':
             $response = Presscore_Inc_Albums_Post_Type::get_media_masonry_content($ajax_data);
             break;
         case 'template-blog-masonry.php':
         case 'template-blog-list.php':
             $response = presscore_blog_ajax_loading_responce($ajax_data);
             break;
         case 'template-testimonials.php':
             $response = presscore_testimonials_ajax_loading_responce($ajax_data);
             break;
     }
     $response = apply_filters('presscore_ajax_pagination_response', $response, $ajax_data, $template);
     $response = json_encode($response);
     // responce output
     header("Content-Type: application/json");
     echo $response;
     // IMPORTANT: don't forget to "exit"
     exit;
 }
 /**
  * Ajax pagination controller.
  *
  */
 function presscore_ajax_pagination_controller()
 {
     $ajax_data = array('nonce' => isset($_POST['nonce']) ? $_POST['nonce'] : false, 'post_id' => isset($_POST['postID']) ? absint($_POST['postID']) : false, 'post_paged' => isset($_POST['paged']) ? absint($_POST['paged']) : false, 'target_page' => isset($_POST['targetPage']) ? absint($_POST['targetPage']) : false, 'page_data' => isset($_POST['pageData']) ? $_POST['pageData'] : false, 'term' => isset($_POST['term']) ? $_POST['term'] : '', 'orderby' => isset($_POST['orderby']) ? $_POST['orderby'] : '', 'order' => isset($_POST['order']) ? $_POST['order'] : '', 'loaded_items' => isset($_POST['visibleItems']) ? array_map('absint', $_POST['visibleItems']) : array(), 'sender' => isset($_POST['sender']) ? $_POST['sender'] : '', 'posts_count' => isset($_POST['postsCount']) ? $_POST['postsCount'] : 0);
     if ($ajax_data['post_id'] && 'page' == get_post_type($ajax_data['post_id'])) {
         $template = dt_get_template_name($ajax_data['post_id'], true);
     } else {
         if (is_array($ajax_data['page_data'])) {
             switch ($ajax_data['page_data'][0]) {
                 case 'archive':
                     $template = 'archive';
                     break;
                 case 'search':
                     $template = 'search';
             }
         }
     }
     do_action('presscore_before_ajax_response', $template);
     $response = array('success' => false, 'reason' => 'undefined template');
     if (in_array($template, array('template-blog-list.php', 'template-blog-masonry.php'))) {
         $response = presscore_blog_ajax_loading_responce($ajax_data);
     }
     $response = apply_filters('presscore_ajax_pagination_response', $response, $ajax_data, $template);
     wp_send_json($response);
 }
 function presscore_congif_populate_media_vars()
 {
     $config = Presscore_Config::get_instance();
     $post_id = $config->get('post_id');
     ////////////////////
     // posts filter //
     ////////////////////
     $prefix = '_dt_media_options_';
     $config->set('order', get_post_meta($post_id, "{$prefix}order", true));
     $config->set('orderby', get_post_meta($post_id, "{$prefix}orderby", true));
     $config->set('display', get_post_meta($post_id, "_dt_albums_media_display", true));
     $config->set('posts_per_page', get_post_meta($post_id, "{$prefix}ppp", true));
     //////////////
     // layout //
     //////////////
     $config->set('layout', get_post_meta($post_id, "{$prefix}layout", true), 'masonry');
     $config->set('item_padding', get_post_meta($post_id, "{$prefix}item_padding", true), 20);
     //////////////
     // images //
     //////////////
     $config->set('image_layout', get_post_meta($post_id, "{$prefix}image_layout", true), 'original');
     $config->set('thumb_proportions', get_post_meta($post_id, "{$prefix}thumb_proportions", true), array('width' => 1, 'height' => 1));
     /////////////////////////
     // titles & excerpts //
     /////////////////////////
     $config->set('show_excerpts', get_post_meta($post_id, "{$prefix}show_exerpts", true), true);
     $config->set('show_titles', get_post_meta($post_id, "{$prefix}show_titles", true), true);
     //////////////////////////
     // is content visible //
     //////////////////////////
     $config->set('post.preview.content.visible', $config->get('show_titles') || $config->get('show_excerpts'));
     //////////////////
     // load style //
     //////////////////
     $load_style = get_post_meta($post_id, "{$prefix}load_style", true);
     $load_style = $load_style ? $load_style : 'default';
     $hide_last_row = 'default' == $load_style ? get_post_meta($post_id, "{$prefix}hide_last_row", true) : false;
     $config->set('load_style', $load_style);
     $config->set('hide_last_row', $hide_last_row, false);
     $config->set('post.preview.load.effect', get_post_meta($post_id, "{$prefix}load_effect", true), 'fade_in');
     /////////////////
     // paginator //
     /////////////////
     $config->set('show_all_pages', get_post_meta($post_id, "{$prefix}show_all_pages", true), false);
     $template_name = dt_get_template_name($post_id, true);
     if ('template-media.php' == $template_name) {
         $config->set('post.preview.width.min', get_post_meta($post_id, "{$prefix}target_width", true), 370);
         $config->set('template.columns.number', get_post_meta($post_id, "{$prefix}columns_number", true), 3);
         // preview description under image or disabled
         $config->set('post.preview.description.style', $config->get('post.preview.content.visible') ? 'under_image' : 'disabled');
     } else {
         if ('template-media-jgrid.php' == $template_name) {
             $config->set('justified_grid', true);
             $config->set('layout', 'grid');
             $config->set('target_height', get_post_meta($post_id, "{$prefix}target_height", true), 250);
             // preview description on hover centered
             $config->set('post.preview.description.style', 'on_hoover_centered');
         }
     }
     ///////////////
     // content //
     ///////////////
     $config->set('full_width', get_post_meta($post_id, "{$prefix}full_width", true), false);
 }
 private function set_template_blog_vars()
 {
     global $post;
     $prefix = '_dt_blog_options_';
     // populate options
     $this->set('display', get_post_meta($this->options['post_id'], "_dt_blog_display", true));
     $this->set('order', get_post_meta($this->options['post_id'], "{$prefix}order", true));
     $this->set('orderby', get_post_meta($this->options['post_id'], "{$prefix}orderby", true));
     switch (dt_get_template_name($this->options['post_id'], true)) {
         case 'template-blog-masonry.php':
             $this->set('layout', get_post_meta($this->options['post_id'], "{$prefix}layout", true));
             break;
         default:
             $this->set('layout', 'list');
     }
     $this->set('image_layout', get_post_meta($this->options['post_id'], "{$prefix}image_layout", true));
     $this->set('thumb_proportions', get_post_meta($this->options['post_id'], "{$prefix}thumb_proportions", true));
     $this->set('posts_per_page', get_post_meta($this->options['post_id'], "{$prefix}ppp", true));
     $this->set('columns', get_post_meta($this->options['post_id'], "{$prefix}columns", true));
     $this->set('all_the_same_width', get_post_meta($this->options['post_id'], "{$prefix}posts_same_width", true));
     $this->set('show_all_pages', get_post_meta($this->options['post_id'], "{$prefix}show_all_pages", true));
     $this->set('full_width', get_post_meta($this->options['post_id'], "{$prefix}full_width", true));
     $this->set('item_padding', get_post_meta($this->options['post_id'], "{$prefix}item_padding", true));
     if ('' === $this->options['item_padding']) {
         $this->options['item_padding'] = 20;
     }
     $this->set('target_width', get_post_meta($this->options['post_id'], "{$prefix}target_width", true));
     if ('' === $this->options['target_width']) {
         $this->options['target_width'] = 370;
     }
     // load style
     $this->set('load_style', get_post_meta($this->options['post_id'], "{$prefix}load_style", true));
 }
 function presscore_congif_populate_portfolio_vars()
 {
     $config = presscore_config();
     $config->set_post_id($config->get('post_id'));
     $post_id = $config->get_post_id();
     $prefix = '_dt_portfolio_options_';
     $config->set_meta_prefix($prefix);
     // for categorizer compatibility
     if (!$config->get('order')) {
         $config->set_meta('order', 'order');
     }
     if (!$config->get('orderby')) {
         $config->set_meta('orderby', 'orderby');
     }
     if (!$config->get('display')) {
         $display = get_post_meta($post_id, '_dt_portfolio_display', true);
         if (!isset($display['terms_ids'])) {
             $display['terms_ids'] = null;
         }
         $config->set('display', $display);
     }
     $config->map(array('template.posts_filter.terms.enabled' => array('meta', 'show_filter'), 'template.posts_filter.orderby.enabled' => array('meta', 'show_orderby'), 'template.posts_filter.order.enabled' => array('meta', 'show_order'), 'posts_per_page' => array('meta', 'ppp'), 'full_width' => array('meta', 'full_width'), 'item_padding' => array('meta', 'item_padding', 20), 'post.preview.media.width' => array('meta', 'thumb_width', 30), 'load_style' => array('meta', 'load_style', 'default'), 'all_the_same_width' => array('meta', 'posts_same_width'), 'image_layout' => array('meta', 'image_layout'), 'thumb_proportions' => array('meta', 'thumb_proportions'), 'show_titles' => array('meta', 'show_titles'), 'show_excerpts' => array('meta', 'show_exerpts'), 'post.meta.fields.date' => array('meta', 'show_date_in_post_meta'), 'post.meta.fields.categories' => array('meta', 'show_categories_in_post_meta'), 'post.meta.fields.comments' => array('meta', 'show_comments_in_post_meta'), 'post.meta.fields.author' => array('meta', 'show_author_in_post_meta'), 'show_links' => array('meta', 'show_links'), 'show_details' => array('meta', 'show_details'), 'show_zoom' => array('meta', 'show_zoom'), 'show_all_pages' => array('meta', 'show_all_pages'), 'post.preview.buttons.details.enabled' => array('value', false), 'post.preview.background.enabled' => array('value', false), 'post.preview.background.style' => array('value', false)));
     // layout
     $template_name = dt_get_template_name($post_id, true);
     switch ($template_name) {
         case 'template-portfolio-masonry.php':
             $config->map(array('layout' => array('meta', 'masonry_layout'), 'post.preview.description.style' => array('meta', 'description', 'under_image'), 'post.preview.hover.animation' => array('meta', 'hover_animation', 'fade'), 'post.preview.hover.color' => array('meta', 'hover_bg_color', 'theme'), 'post.preview.hover.content.visibility' => array('meta', 'hover_content_visibility', 'on_hoover'), 'post.preview.hover.lines.animation' => array('meta', 'lines_animation_effect', '1'), 'post.preview.hover.title.visibility' => array('meta', 'title_visibility', 'on_hoover'), 'post.preview.width.min' => array('meta', 'target_width', 370), 'template.columns.number' => array('meta', 'columns_number', 3), 'post.preview.load.effect' => array('meta', 'load_effect', 'fade_in')));
             $description_style = $config->get('post.preview.description.style');
             // content alignment
             if ('on_hoover_centered' == $description_style) {
                 $config->set_meta('post.preview.description.alignment', 'bg_post_content_alignment');
             } else {
                 if ('bg_with_lines' == $description_style) {
                     $config->set('post.preview.description.alignment', false);
                 } else {
                     $config->set_meta('post.preview.description.alignment', 'post_content_alignment');
                 }
             }
             // preview background
             if ('under_image' == $description_style) {
                 $background_under_posts = get_post_meta($post_id, "{$prefix}bg_under_masonry_posts", true);
                 $config->set('post.preview.background.enabled', !in_array($background_under_posts, array('disabled', '')));
                 $config->set('post.preview.background.style', $background_under_posts, false);
             }
             break;
         case 'template-portfolio-jgrid.php':
             $config->map(array('layout' => array('value', 'grid'), 'post.preview.description.style' => array('meta', 'jgrid_description', 'on_hoover_centered'), 'post.preview.hover.animation' => array('meta', 'jgrid_hover_animation', 'fade'), 'post.preview.hover.color' => array('meta', 'jgrid_hover_bg_color', 'theme'), 'post.preview.hover.content.visibility' => array('meta', 'jgrid_hover_content_visibility', 'on_hoover'), 'post.preview.hover.lines.animation' => array('meta', 'jgrid_lines_animation_effect', '1'), 'post.preview.hover.title.visibility' => array('meta', 'jgrid_title_visibility', 'on_hoover'), 'target_height' => array('meta', 'target_height', 250), 'post.preview.load.effect' => array('meta', 'load_effect', 'fade_in'), 'justified_grid' => array('value', true), 'all_the_same_width' => array('value', true), 'hide_last_row' => array('meta', 'hide_last_row', false)));
             $description_style = $config->get('post.preview.description.style');
             // content alignment
             if ('on_hoover_centered' == $description_style) {
                 $config->set_meta('post.preview.description.alignment', 'jgrid_bg_post_content_alignment');
             } else {
                 if ('bg_with_lines' == $description_style) {
                     $config->set('post.preview.description.alignment', false);
                 } else {
                     $config->set_meta('post.preview.description.alignment', 'jgrid_post_content_alignment');
                 }
             }
             if ('default' != $config->get('load_style')) {
                 $config->set('hide_last_row', false);
             }
             break;
             // list layout
         // list layout
         default:
             $config->map(array('layout' => array('meta', 'list_layout'), 'post.preview.hover.color' => array('meta', 'list_hover_bg_color', 'accent'), 'post.preview.background.enabled' => array('meta', 'bg_under_list_posts', false), 'post.preview.background.style' => array('value', 'with_paddings'), 'post.preview.buttons.details.enabled' => array('meta', 'show_details_buttons', true), 'post.preview.load.effect' => array('value', 'fade_in')));
     }
 }