function presscore_blog_ajax_loading_responce($ajax_data = array())
 {
     global $post, $wp_query, $paged, $page;
     extract($ajax_data);
     if (!$nonce || !$post_id || !$post_paged || !$target_page || !wp_verify_nonce($nonce, 'presscore-posts-ajax')) {
         $responce = array('success' => false, 'reason' => 'corrupted data');
     } else {
         require_once PRESSCORE_EXTENSIONS_DIR . '/aq_resizer.php';
         require_once PRESSCORE_DIR . '/template-hooks.php';
         require_once PRESSCORE_EXTENSIONS_DIR . '/dt-pagination.php';
         // get page
         query_posts(array('post_type' => 'page', 'page_id' => $post_id, 'post_status' => 'publish', 'page' => $target_page));
         $html = '';
         if (have_posts() && !post_password_required()) {
             while (have_posts()) {
                 the_post();
                 // main loop
                 $config = Presscore_Config::get_instance();
                 $config->set('template', 'blog');
                 $config->set('layout', empty($page_data['layout']) ? 'masonry' : $page_data['layout']);
                 presscore_config_base_init();
                 presscore_react_on_categorizer();
                 do_action('presscore_before_loop');
                 ob_start();
                 $query = presscore_get_blog_query();
                 if ($query->have_posts()) {
                     $page_layout = presscore_get_current_layout_type();
                     $current_post = $posts_count;
                     while ($query->have_posts()) {
                         $query->the_post();
                         /*
                         						// check if current post already loaded
                         						$key_in_loaded = array_search( $post->ID, $loaded_items );
                         						if ( false !== $key_in_loaded ) {
                         							unset( $loaded_items[ $key_in_loaded ] );
                         							continue;
                         						}
                         */
                         presscore_populate_post_config();
                         switch ($page_layout) {
                             case 'masonry':
                                 presscore_get_template_part('theme', 'blog/masonry/blog-masonry-post');
                                 break;
                             case 'list':
                                 // global posts counter
                                 $config->set('post.query.var.current_post', ++$current_post);
                                 presscore_get_template_part('theme', 'blog/list/blog-list-post');
                                 break;
                         }
                     }
                     wp_reset_postdata();
                 }
                 $html .= ob_get_clean();
             }
             $responce = array('success' => true);
             ///////////////////
             // pagination //
             ///////////////////
             $next_page_link = dt_get_next_posts_url($query->max_num_pages);
             if ($next_page_link) {
                 $responce['nextPage'] = dt_get_paged_var() + 1;
             } else {
                 $responce['nextPage'] = 0;
             }
             $load_style = $config->get('load_style');
             // pagination style
             if (presscore_is_load_more_pagination()) {
                 $pagination = dt_get_next_page_button($query->max_num_pages, 'paginator paginator-more-button with-ajax');
                 if ($pagination) {
                     $responce['currentPage'] = dt_get_paged_var();
                     $responce['paginationHtml'] = $pagination;
                 } else {
                     $responce['currentPage'] = $post_paged;
                 }
                 $responce['paginationType'] = 'more';
             } else {
                 if ('ajax_pagination' == $load_style) {
                     ob_start();
                     dt_paginator($query, array('class' => 'paginator with-ajax', 'ajaxing' => true));
                     $pagination = ob_get_clean();
                     if ($pagination) {
                         $responce['paginationHtml'] = $pagination;
                     }
                     $responce['paginationType'] = 'paginator';
                 }
             }
             /////////////////
             // response //
             /////////////////
             $responce['itemsToDelete'] = array_values($loaded_items);
             // $responce['query'] = $page_query->query;
             $responce['order'] = $query->query['order'];
             $responce['orderby'] = $query->query['orderby'];
         }
         // main loop
         $responce['html'] = $html;
     }
     return $responce;
 }
 protected function custom_loop()
 {
     do_action('presscore_before_loop');
     $page_query = presscore_get_filtered_posts(array('post_type' => 'dt_portfolio', 'taxonomy' => 'dt_portfolio_category'));
     if ($page_query->have_posts()) {
         $page_layout = presscore_get_current_layout_type();
         $current_post = $this->input['posts_count'];
         while ($page_query->have_posts()) {
             $page_query->the_post();
             // populate post config
             presscore_populate_portfolio_config();
             // post template
             switch ($page_layout) {
                 case 'masonry':
                     presscore_get_template_part('mod_portfolio', 'masonry/project');
                     break;
                 case 'list':
                     // global posts counter
                     $this->config->set('post.query.var.current_post', ++$current_post);
                     presscore_get_template_part('mod_portfolio', 'list/project');
                     break;
             }
         }
         wp_reset_postdata();
     }
     return $page_query;
 }
 function presscore_populate_post_config($target_post_id = 0)
 {
     $config = Presscore_Config::get_instance();
     global $post;
     if ($target_post_id) {
         $post_id = $target_post_id;
     } elseif ($post && !empty($post->ID)) {
         $post_id = $post->ID;
     } else {
         return false;
     }
     $prefix = '_dt_post_options_';
     /////////////////////////
     // post preview width //
     /////////////////////////
     if ('list' == presscore_get_current_layout_type()) {
         $post_preview_media_width = $config->get('post.preview.media.width');
         if ($post_preview_media_width >= 100) {
             $post_preview_width = 'wide';
         } else {
             $post_preview_width = get_post_meta($post_id, "{$prefix}preview", true);
         }
     } else {
         $post_preview_width = get_post_meta($post_id, "{$prefix}preview", true);
     }
     $config->set('post.preview.width', $post_preview_width, 'normal');
     $config->set('post.preview.gallery.style', get_post_meta($post_id, "{$prefix}preview_style_gallery", true), 'standard_gallery');
     $config->set('post.preview.gallery.sideshow.proportions', get_post_meta($post_id, "{$prefix}slider_proportions", true), array('width' => '', 'height' => ''));
     $config->set('post.preview.video.style', get_post_meta($post_id, "{$prefix}preview_style_video", true), 'image');
     return true;
 }
Exemple #4
0
 /**
  * Get portfolio posts in masonry layout.
  *
  */
 public static function get_masonry_content($ajax_data = array())
 {
     global $post, $wp_query, $paged, $page;
     extract($ajax_data);
     if (!$nonce || !$post_id || !$post_paged || !$target_page || !wp_verify_nonce($nonce, 'presscore-posts-ajax')) {
         $responce = array('success' => false, 'reason' => 'corrupted data');
     } else {
         ////////////////////
         // theme files //
         ////////////////////
         /**
          * Include AQResizer.
          *
          */
         require_once PRESSCORE_EXTENSIONS_DIR . '/aq_resizer.php';
         /**
          * Include helpers.
          *
          */
         require_once PRESSCORE_DIR . '/helpers.php';
         /**
          * Include template actions and filters.
          *
          */
         require_once PRESSCORE_DIR . '/template-hooks.php';
         /**
          * Include paginator.
          *
          */
         require_once PRESSCORE_EXTENSIONS_DIR . '/dt-pagination.php';
         /**
          * Mobile detection library.
          *
          */
         if (!class_exists('Mobile_Detect')) {
             require_once PRESSCORE_EXTENSIONS_DIR . '/mobile-detect.php';
         }
         // get page
         query_posts(array('post_type' => 'page', 'page_id' => $post_id, 'post_status' => 'publish', 'page' => $target_page));
         $config = Presscore_Config::get_instance();
         $config->set('template', 'portfolio');
         presscore_config_base_init($post_id);
         if ($config->get('justified_grid') && isset($sender) && in_array($sender, array('filter', 'paginator'))) {
             $loaded_items = array();
         }
         presscore_react_on_categorizer();
         $html = '';
         $responce = array('success' => true);
         if (have_posts() && !post_password_required()) {
             while (have_posts()) {
                 the_post();
                 // main loop
                 ob_start();
                 presscore_portfolio_meta_new_controller();
                 do_action('presscore_before_loop');
                 $ppp = $config->get('posts_per_page');
                 $order = $config->get('order');
                 $orderby = $config->get('orderby');
                 $display = $config->get('display');
                 $request_display = $config->get('request_display');
                 // $layout = 'masonry';
                 $all_terms = get_categories(array('type' => 'dt_portfolio', 'hide_empty' => 1, 'hierarchical' => 0, 'taxonomy' => 'dt_portfolio_category', 'pad_counts' => false));
                 $all_terms_array = array();
                 foreach ($all_terms as $term) {
                     $all_terms_array[] = $term->term_id;
                 }
                 $page_args = array('post_type' => 'dt_portfolio', 'post_status' => 'publish', 'paged' => dt_get_paged_var(), 'order' => $order, 'orderby' => 'name' == $orderby ? 'title' : $orderby);
                 if ($ppp) {
                     $page_args['posts_per_page'] = intval($ppp);
                 }
                 if ('all' != $display['select'] && !empty($display['terms_ids'])) {
                     $page_args['tax_query'] = array(array('taxonomy' => 'dt_portfolio_category', 'field' => 'term_id', 'terms' => array_values($display['terms_ids']), 'operator' => 'IN'));
                     if ('except' == $display['select']) {
                         $terms_arr = array_diff($all_terms_array, $display['terms_ids']);
                         sort($terms_arr);
                         if ($terms_arr) {
                             $page_args['tax_query']['relation'] = 'OR';
                             $page_args['tax_query'][1] = $page_args['tax_query'][0];
                             $page_args['tax_query'][0]['terms'] = $terms_arr;
                             $page_args['tax_query'][1]['operator'] = 'NOT IN';
                         }
                         add_filter('posts_clauses', 'dt_core_join_left_filter');
                     }
                 }
                 // filter
                 if ($request_display) {
                     // except
                     if (0 == current($request_display['terms_ids'])) {
                         // ninjaaaa
                         $request_display['terms_ids'] = $all_terms_array;
                     }
                     $page_args['tax_query'] = array(array('taxonomy' => 'dt_portfolio_category', 'field' => 'term_id', 'terms' => array_values($request_display['terms_ids']), 'operator' => 'IN'));
                     if ('except' == $request_display['select']) {
                         $page_args['tax_query'][0]['operator'] = 'NOT IN';
                     }
                 }
                 $page_query = new WP_Query($page_args);
                 remove_filter('posts_clauses', 'dt_core_join_left_filter');
                 update_post_thumbnail_cache($page_query);
                 if ($page_query->have_posts()) {
                     $page_layout = presscore_get_current_layout_type();
                     $current_post = $posts_count;
                     while ($page_query->have_posts()) {
                         $page_query->the_post();
                         // populate post config
                         presscore_populate_portfolio_config();
                         // post template
                         switch ($page_layout) {
                             case 'masonry':
                                 dt_get_template_part('portfolio/masonry/portfolio-masonry-post');
                                 break;
                             case 'list':
                                 // global posts counter
                                 $config->set('post.query.var.current_post', ++$current_post);
                                 dt_get_template_part('portfolio/list/portfolio-list-post');
                                 break;
                         }
                     }
                     wp_reset_postdata();
                 }
                 $html .= ob_get_clean();
             }
             ///////////////////
             // pagination //
             ///////////////////
             $next_page_link = dt_get_next_posts_url($page_query->max_num_pages);
             if ($next_page_link) {
                 $responce['nextPage'] = dt_get_paged_var() + 1;
             } else {
                 $responce['nextPage'] = 0;
             }
             $load_style = $config->get('load_style');
             // pagination style
             if (presscore_is_load_more_pagination()) {
                 $pagination = dt_get_next_page_button($page_query->max_num_pages, 'paginator paginator-more-button with-ajax');
                 if ($pagination) {
                     $responce['currentPage'] = dt_get_paged_var();
                     $responce['paginationHtml'] = $pagination;
                 } else {
                     $responce['currentPage'] = $post_paged;
                 }
                 $responce['paginationType'] = 'more';
             } else {
                 if ('ajax_pagination' == $load_style) {
                     ob_start();
                     dt_paginator($page_query, array('class' => 'paginator with-ajax', 'ajaxing' => true));
                     $pagination = ob_get_clean();
                     if ($pagination) {
                         $responce['paginationHtml'] = $pagination;
                     }
                     $responce['paginationType'] = 'paginator';
                 }
             }
             /////////////////
             // response //
             /////////////////
             $responce['itemsToDelete'] = array_values($loaded_items);
             // $responce['query'] = $page_query->query;
             $responce['order'] = strtolower($page_query->query['order']);
             $responce['orderby'] = strtolower($page_query->query['orderby']);
         }
         // main loop
         $responce['html'] = $html;
     }
     return $responce;
 }
 function presscore_display_posts_filter($args = array())
 {
     $default_args = array('post_type' => 'post', 'taxonomy' => 'category', 'query' => null);
     $args = wp_parse_args($args, $default_args);
     $config = presscore_get_config();
     $load_style = $config->get('load_style');
     // categorizer
     $filter_args = array();
     if ($config->get('template.posts_filter.terms.enabled')) {
         // $posts_ids = $terms_ids = array();
         $display = $config->get('display');
         $select = $display['select'];
         // categorizer args
         $filter_args = array('taxonomy' => $args['taxonomy'], 'post_type' => $args['post_type'], 'select' => $select);
         if ('default' == $load_style && 'masonry' == $config->get('layout')) {
             if ($args['query'] && $args['query']->have_posts()) {
                 foreach ($args['query']->posts as $p) {
                     $p_ids[] = $p->ID;
                 }
                 // get posts terms
                 $terms_ids = wp_get_object_terms($p_ids, $args['taxonomy'], array('fields' => 'ids'));
                 $terms_ids = array_unique($terms_ids);
                 $filter_args['terms'] = $terms_ids;
             }
             $filter_args['select'] = 'only';
         } elseif ('category' == $display['type']) {
             $terms_ids = empty($display['terms_ids']) ? array() : $display['terms_ids'];
             $filter_args['terms'] = $terms_ids;
         } elseif ('albums' == $display['type']) {
             $posts_ids = isset($display['posts_ids']) ? $display['posts_ids'] : array();
             $filter_args['post_ids'] = $posts_ids;
         }
     }
     $filter_class = '';
     if ('default' != $load_style) {
         $filter_class .= ' with-ajax';
     }
     if ('list' == presscore_get_current_layout_type()) {
         $filter_class .= ' without-isotope';
     }
     // display categorizer
     presscore_get_category_list(array('data' => dt_prepare_categorizer_data($filter_args), 'class' => 'filter' . $filter_class));
 }
 function presscore_populate_portfolio_config($target_post_id = 0)
 {
     $config = Presscore_Config::get_instance();
     global $post;
     if ($target_post_id) {
         $post_id = $target_post_id;
     } elseif ($post && !empty($post->ID)) {
         $post_id = $post->ID;
     } else {
         return false;
     }
     /////////////////////////////
     // project media library //
     /////////////////////////////
     $prefix = '_dt_project_media_';
     $project_library = get_post_meta($post_id, "{$prefix}items", true);
     $config->set('post.media.library', $project_library, array());
     ////////////////////////////////
     // post preview media style //
     ////////////////////////////////
     $prefix = '_dt_project_options_';
     // if project media library is empty - treat preview style as featured image
     if (!empty($project_library)) {
         $project_preview_media_style = get_post_meta($post_id, "{$prefix}preview_style", true);
     } else {
         $project_preview_media_style = 'featured_image';
     }
     $config->set('post.preview.media.style', $project_preview_media_style, 'featured_image');
     /////////////////////////
     // post preview width //
     /////////////////////////
     if ('list' == presscore_get_current_layout_type()) {
         $post_preview_media_width = $config->get('post.preview.media.width');
         if ($post_preview_media_width >= 100) {
             $post_preview_width = 'wide';
         } else {
             $post_preview_width = get_post_meta($post_id, "{$prefix}preview", true);
         }
     } else {
         $post_preview_width = get_post_meta($post_id, "{$prefix}preview", true);
     }
     $config->set('post.preview.width', $post_preview_width, 'normal');
     ////////////////////
     // project link //
     ////////////////////
     // allways show project link for post preview
     $config->set('post.buttons.link.enabled', get_post_meta($post_id, "{$prefix}show_link", true), false);
     $config->set('post.buttons.link.title', get_post_meta($post_id, "{$prefix}link_name", true), '');
     $config->set('post.buttons.link.url', get_post_meta($post_id, "{$prefix}link", true), '#');
     $config->set('post.buttons.link.target_blank', get_post_meta($post_id, "{$prefix}link_target", true), '');
     //////////////////////////////////
     // is project content visible //
     //////////////////////////////////
     if (in_the_loop()) {
         $show_title = $config->get('show_titles') && get_the_title();
         $show_description = $config->get('show_excerpts') && get_the_excerpt();
         $show_links = $config->get('show_links') && $config->get('show_details') && $config->get('show_zoom') && has_post_thumbnail() && !post_password_required();
         $show_meta = $config->get('post.meta.fields.date') && $config->get('post.meta.fields.categories') && $config->get('post.meta.fields.comments') && $config->get('post.meta.fields.author');
     } else {
         $show_project_content = true;
     }
     $config->set('post.preview.content.visible', $show_title || $show_description || $show_links || $show_meta);
     return true;
 }
 /**
  * Add post format classes to post.
  */
 function presscore_post_class_filter($classes = array())
 {
     $config = Presscore_Config::get_instance();
     $is_archive = is_search() || is_archive();
     // post preview width
     if (!$is_archive && 'wide' == $config->get('post.preview.width')) {
         $classes[] = 'media-wide';
     }
     // post preview background
     if ($config->get('post.preview.background.enabled')) {
         $classes[] = 'bg-on';
     }
     $current_layout_type = presscore_get_current_layout_type();
     // only for layouts from masonry family
     if ('masonry' == $current_layout_type) {
         // fullwidth preview background
         if ($config->get('post.preview.background.enabled') && 'fullwidth' == $config->get('post.preview.background.style')) {
             $classes[] = 'fullwidth-img';
         }
         if (!$config->get('post.media.library') && !has_post_thumbnail()) {
             $classes[] = 'no-img';
         }
         // preview content alignment
         if ('center' == $config->get('post.preview.description.alignment')) {
             $classes[] = 'text-centered';
         }
     }
     if (!$config->get('post.preview.content.visible')) {
         $classes[] = 'description-off';
     }
     if (is_single()) {
         $hentry_key = array_search('hentry', $classes);
         if ($hentry_key !== false) {
             unset($classes[$hentry_key]);
         }
     }
     return $classes;
 }