Example #1
0
 /**
  * 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));
 }