/** * Validate settings filter * * @param string $errors The error message * @param array $args The Query parameters array */ public static function filter_validate_settings($errors, $args) { $dargs = PT_CV_Functions::get_global_variable('dargs'); // echo "<pre>"; // var_dump( 'query args', $args ); // echo "</pre>"; // echo "<pre>"; // var_dump( 'display args', $dargs ); // echo "</pre>"; $messages = array('field' => array('select' => __('Please select an option in : ', PT_CV_TEXTDOMAIN), 'text' => __('Please set value in : ', PT_CV_TEXTDOMAIN)), 'tab' => array('filter' => __('Filter Settings', PT_CV_TEXTDOMAIN), 'display' => __('Display Settings', PT_CV_TEXTDOMAIN))); /** * Validate Query parameters */ // Post type if (empty($args['post_type'])) { $errors[] = $messages['field']['select'] . $messages['tab']['filter'] . ' > ' . __('Content type', PT_CV_TEXTDOMAIN); } /** * Validate common Display parameters */ // View type if (empty($dargs['view-type'])) { $errors[] = $messages['field']['select'] . $messages['tab']['display'] . ' > ' . __('View type', PT_CV_TEXTDOMAIN); } // Layout format if (empty($dargs['layout-format'])) { $errors[] = $messages['field']['select'] . $messages['tab']['display'] . ' > ' . __('Layout format', PT_CV_TEXTDOMAIN); } // Field settings if (!isset($dargs['fields'])) { $errors[] = $messages['field']['select'] . $messages['tab']['display'] . ' > ' . __('Fields settings', PT_CV_TEXTDOMAIN) . ' > ' . __('Fields display', PT_CV_TEXTDOMAIN); } // Item per page if (isset($dargs['pagination-settings'])) { if (empty($dargs['pagination-settings']['items-per-page'])) { $errors[] = $messages['field']['text'] . $messages['tab']['display'] . ' > ' . __('Pagination settings', PT_CV_TEXTDOMAIN) . ' > ' . __('Items per page', PT_CV_TEXTDOMAIN); } } /** * Validate Display parameters of view types */ if (!empty($dargs['view-type'])) { switch ($dargs['view-type']) { case 'grid': if (empty($dargs['number-columns'])) { $errors[] = $messages['field']['text'] . $messages['tab']['display'] . ' > ' . __('View type settings', PT_CV_TEXTDOMAIN) . ' > ' . __('Items per row', PT_CV_TEXTDOMAIN); } break; } } return array_filter($errors); }
/** * Get Pagination settings * * @param array $dargs The settings array of Fields * @param array $args The parameters array * @param array $pargs The pagination settings array */ static function view_get_pagination_settings(&$dargs, &$args, $pargs) { $view_settings = PT_CV_Functions::get_global_variable('view_settings'); // Get Limit value $limit = trim(PT_CV_Functions::setting_value(PT_CV_PREFIX . 'limit', $view_settings)); $limit = empty($limit) || $limit === '-1' ? 10000000 : (int) $limit; $args['limit'] = $args['posts_per_page'] = $limit; $offset = 0; // Get pagination enable/disable $pagination = PT_CV_Functions::setting_value(PT_CV_PREFIX . 'enable-pagination', $view_settings); if ($pagination) { $prefix = PT_CV_PREFIX . 'pagination-'; $field_setting = PT_CV_Functions::settings_values_by_prefix($prefix); $dargs['pagination-settings'] = apply_filters(PT_CV_PREFIX_ . 'pagination_settings', $field_setting, $prefix); // If Items per page is set, get its value $posts_per_page = isset($dargs['pagination-settings']['items-per-page']) ? (int) $dargs['pagination-settings']['items-per-page'] : $limit; if ($posts_per_page > $limit) { $posts_per_page = $limit; } // Set 'posts_per_page' parameter $args['posts_per_page'] = $posts_per_page; // Get offset $paged = self::get_current_page($pargs); $offset = $posts_per_page * ((int) $paged - 1); // Update posts_per_page if (intval($args['posts_per_page']) > $limit - $offset) { $args['posts_per_page'] = $limit - $offset; } } $offset = apply_filters(PT_CV_PREFIX_ . 'settings_args_offset', $offset); // Set 'offset' parameter $args['offset'] = $offset; }
/** * Output pagination * * @param type $max_num_pages The total of pages * @param type $current_page The current pages * @param string $session_id The session ID of current view * * @return type */ static function pagination_output($max_num_pages, $current_page, $session_id) { $dargs = PT_CV_Functions::get_global_variable('dargs'); if (!$max_num_pages || (int) $max_num_pages === 1) { return ''; } $pagination_btn = ''; $type = isset($dargs['pagination-settings']['type']) ? $dargs['pagination-settings']['type'] : 'ajax'; $style = isset($dargs['pagination-settings']['style']) ? $dargs['pagination-settings']['style'] : 'regular'; if ($type == 'normal' || $style == 'regular') { $pagination_btn = sprintf('<ul class="%s" data-totalpages="%s" data-sid="%s">%s</ul>', PT_CV_PREFIX . 'pagination' . ' ' . PT_CV_PREFIX . $type . ' pagination', esc_attr($max_num_pages), esc_attr($session_id), PT_CV_Functions::pagination($max_num_pages, $current_page)); } else { $pagination_btn = apply_filters(PT_CV_PREFIX_ . 'btn_more_html', $pagination_btn, $max_num_pages, $session_id); } // Add loading icon $pagination_btn .= self::html_loading_img(12, PT_CV_PREFIX . 'spinner'); $wrapper_class = apply_filters(PT_CV_PREFIX_ . 'pagination_class', ''); $output = apply_filters(PT_CV_PREFIX_ . 'pagination_output', sprintf('<div class="%s">%s</div>', $wrapper_class . ' ' . PT_CV_PREFIX . 'pagination-wrapper', $pagination_btn)); return $output; }
/** * HTML output of item in Scrollable List * * @param array $content_items The array of Raw HTML output (is not wrapped) of each item * * @return array */ static function scrollable_content($content_items) { $dargs = PT_CV_Functions::get_global_variable('dargs'); // Store content of a Scrollable list $scrollable_content = array(); $rows = $dargs['number-rows'] ? (int) $dargs['number-rows'] : 1; list($columns, $span_width_last, $span_width, $span_class, $row_class) = self::process_column_width(); // Get wrapper class of a scrollable slide $slide_class = apply_filters(PT_CV_PREFIX_ . 'scrollable_slide_class', 'item'); // Split items to slide $slides_item = array_chunk($content_items, $columns * $rows); foreach ($slides_item as $s_idx => $slide) { // Store content of a slide $slide_html = array(); // Split items to rows $columns_item = array_chunk($slide, $columns); // Get HTML of each row foreach ($columns_item as $items_per_row) { $row_html = array(); foreach ($items_per_row as $idx => $content_item) { $_span_width = $idx == count($items_per_row) - 1 ? $span_width_last : $span_width; // Wrap content of item $item_classes = apply_filters(PT_CV_PREFIX_ . 'item_col_class', array($span_class . $_span_width), $_span_width); $item_class = implode(' ', array_filter($item_classes)); $row_html[] = PT_CV_Html::content_item_wrap($content_item, $item_class); } $slide_html[] = sprintf('<div class="%1$s">%2$s</div>', esc_attr($row_class), implode("\n", $row_html)); } // Show first slide $this_class = $slide_class . ($s_idx == 0 ? ' active' : ''); $scrollable_content[] = sprintf('<div class="%s">%s</div>', esc_attr($this_class), implode("\n", $slide_html)); } // Get class of wrapper of content of scrollable list $content_class = apply_filters(PT_CV_PREFIX_ . 'scrollable_content_class', 'carousel-inner'); $content = sprintf('<div class="%s">%s</div>', esc_attr($content_class), implode("\n", $scrollable_content)); return array('scrollable_content' => $content, 'count_slides' => count($slides_item)); }