PATH:
var
/
softaculous
/
sitepad
/
editor
/
site-data
/
plugins
/
documentor
/
includes
<?php // We need the ABSPATH if (!defined('ABSPATH')) exit; function pagelayer_sc_dm_sidebar(&$el){ $html = ''; $current_doc_id = documentor()->get_current_doc_id(); $current_hub_id = 0; $doc_hubs = wp_get_post_terms( $current_doc_id, 'docs_hub', ['fields' => 'ids'] ); // Check for explicit Hub assignments if(!empty($doc_hubs) && !is_wp_error($doc_hubs)){ $current_hub_id = $doc_hubs[0]; } else{ // If no explicit Hub, check its Categories for a mapped Hub $doc_cats = wp_get_post_terms( $current_doc_id, 'docs_category', ['fields' => 'ids'] ); if(!empty($doc_cats) && !is_wp_error($doc_cats)){ foreach($doc_cats as $cat_id){ $mapped_hubs = get_term_meta($cat_id, 'documentor_associated_hubs', false); // Grab the first valid Hub mapped to this category if(!empty($mapped_hubs) && is_array($mapped_hubs)){ $current_hub_id = $mapped_hubs[0]; break; } } } } // Fetch only the docs for that hub $include_ids = []; if($current_hub_id > 0){ // Find all categories that belong to this specific Hub $matching_cats = get_terms([ 'taxonomy' => 'docs_category', 'meta_query' => [ [ 'key' => 'documentor_associated_hubs', 'value' => $current_hub_id, 'compare' => '=' ] ], 'fields' => 'ids' ]); $cat_count = (!empty($matching_cats) && !is_wp_error($matching_cats)) ? count($matching_cats) : 0; $tax_query = ['relation' => 'OR']; // Always allow docs explicitly assigned to this Hub. $tax_query[] = array( 'taxonomy' => 'docs_hub', 'field' => 'term_id', 'terms' => $current_hub_id ); // Also allow docs with no explicit Hub if they belong to a mapped category. if($cat_count > 0){ $tax_query[] = array( 'relation' => 'AND', array('taxonomy' => 'docs_category', 'field' => 'term_id', 'terms' => $matching_cats), array('taxonomy' => 'docs_hub', 'operator' => 'NOT EXISTS') ); } // Run the database query to get just the matching document IDs $docs_query = new WP_Query(array( 'post_type' => 'docs', 'posts_per_page' => -1, 'fields' => 'ids', 'tax_query' => $tax_query )); if(!empty($docs_query->posts)){ $include_ids = $docs_query->posts; } else{ $include_ids = array(0); } } $args = array( 'title_li' => '', 'order' => 'menu_order', 'child_of' => empty($el['atts']['hide_parent']) ? 0 : $current_doc_id, 'echo' => false, 'post_type' => 'docs', 'walker' => new Documentor_Walker_Docs(), ); if(!empty($include_ids)){ $args['include'] = implode(',', $include_ids); } $nav_list = wp_list_pages($args); if($nav_list){ $html = '<a class="documentor-sidebar-toggler"><i class="fas fa-times"></i></a>'; $html .= '<ul class="documentor-nav-list'.( $el['atts']['show_child'] ? ' documentor-nav-list-show-childs' : '' ) .'">'; $html .= $nav_list; $html .= '</ul>'; } $el['atts']['post_html'] = $html; } function pagelayer_sc_dm_feedback(&$el){ $show_counts = $el['atts']['show_counts']; $positive_title = $el['atts']['positive_title']; $negative_title = $el['atts']['negative_title']; $el['atts']['pcount'] = ''; $el['atts']['ncount'] = ''; $no_votes = $el['atts']['no_votes']; $positive = (int) get_post_meta( get_the_ID(), 'positive', true ); $negative = (int) get_post_meta( get_the_ID(), 'negative', true ); if($show_counts){ $el['atts']['positive_title'] = $positive ? sprintf( '%s %s', number_format_i18n( $positive ), $positive_title ) : $no_votes; $el['atts']['negative_title'] = $negative ? sprintf( '%s %s', number_format_i18n( $negative ), $negative_title ) : $no_votes; } if($positive){ $el['atts']['pcount'] = '<span class="badge">'. esc_html( number_format_i18n( $positive ) ) .'</span>'; } if($negative){ $el['atts']['ncount'] = '<span class="badge">'. esc_html( number_format_i18n( $negative ) ) .'</span>'; } } function pagelayer_sc_dm_article(&$el){ $children = wp_list_pages( 'title_li=&order=menu_order&child_of=' . get_the_ID() . '&echo=0&depth=1&post_type=' . get_post_type() ); if(!$children && (pagelayer_is_live() || wp_doing_ajax())){ $children = '<li class="page_item"><a href="javascript_void(0)">Sub Category 1</a></li><li class="page_item"><a href="javascript_void(0)">Sub Category 2</a></li>'; } if(!$children){ $el['atts']['heading'] = ''; } $el['atts']['post_html'] = $children; } function pagelayer_sc_dm_title(&$el){ global $post; $title = pagelayer_is_live() ? "Title" : get_the_title( ); $el['atts']['title'] = $title; } function pagelayer_sc_dm_breadcrumbs(&$el){ $breadcrumbs = documentor()->get_breadcrumbs_array(); $html = ''; foreach( $breadcrumbs as $k => $crumb ){ if( $k > 0 ){ $html .= '<li class="delimiter">'. $el['atts']['separator'].'</li>'; } $html .= '<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">'; if(isset($crumb['url'])) $html .= '<a itemprop="item" href="'. esc_url( $crumb['url'] ).'">'; $html .= '<span itemprop="name">'. esc_html( $crumb['label'] ) .'</span>'; if(isset($crumb['url'])) $html .= '</a>'; $html .= '<meta itemprop="position" content="'. esc_attr( $k + 1 ) .'" />'; $html .= '</li>'; } $el['atts']['post_html'] = $html; } function pagelayer_sc_dm_adjacent_links(&$el){ $html = ''; $prev_post_id = documentor()->get_previous_adjacent_doc_id(); $next_post_id = documentor()->get_next_adjacent_doc_id(); if($prev_post_id || $next_post_id){ $html = '<nav class="documentor-single-adjacent-nav">'; if( $prev_post_id ){ $html .= '<span class="nav-previous">'; $html .= '<a href="'.esc_url( get_the_permalink( $prev_post_id ) ) .'" class="documentor-btn documentor-btn-md">'. esc_html( get_the_title( $prev_post_id ) ) .'</a>'; $html .= '</span>'; } if( $next_post_id ){ $html .= '<span class="nav-next">'; $html .= '<a href="'.esc_url( get_the_permalink( $next_post_id ) ) .'" class="documentor-btn documentor-btn-md">'. esc_html( get_the_title( $next_post_id ) ) .'</a>'; $html .= '</span>'; } $html .= '</nav>'; } $el['atts']['post_html'] = $html; } function pagelayer_sc_dm_archive_box(&$el){ global $wp_query; $is_editor = (pagelayer_is_live() || wp_doing_ajax()); // Check if current page is a a linked Hub $is_hub_page = false; if(is_page()){ $linked_hub = get_post_meta(get_the_ID(), '_documentor_linked_hub_id', true); if(!empty($linked_hub)){ $is_hub_page = true; } } //Check if we are on the Main Documentation Archive Page $is_main_docs_page = (!is_tax('docs_hub') && !$is_hub_page && !is_search() && !$is_editor); $html = ''; $show_hub_grid = false; $hub_grid_html = ''; if(pagelayer_is_live() || wp_doing_ajax()){ $args = array( 'post_type' => 'docs', 'posts_per_page' => -1, // phpcs:ignore 'post_parent' => 0, 'orderby' => array( 'menu_order' => 'ASC', 'date' => 'DESC', ), ); $wp_query = new WP_Query( $args ); } // Fetch the Hub ID from either the Taxonomy OR the Page $selected_hub_id = 0; if(is_tax('docs_hub')){ $selected_hub_id = get_queried_object_id(); } elseif(is_page()){ $linked_hub = get_post_meta(get_the_ID(), '_documentor_linked_hub_id', true); if(!empty($linked_hub)){ $selected_hub_id = intval($linked_hub); } } $matching_cats = array(); if($selected_hub_id > 0){ $matching_cats = get_terms(array( 'taxonomy' => 'docs_category', 'meta_query' => array( array( 'key' => 'documentor_associated_hubs', 'value' => $selected_hub_id, 'compare' => '=' ) ), 'fields' => 'ids' )); if(is_wp_error($matching_cats)) $matching_cats = array(); } $current_term = false; if( have_posts()){ while ( have_posts() ){ // Set up global $post data for the current document the_post(); $terms = wp_get_post_terms( get_the_ID(), 'docs_category' ); $hubs = wp_get_post_terms(get_the_ID(), 'docs_hub'); $display_term_name = false; if(empty($selected_hub_id) && !empty($hubs)){ continue; } elseif(!empty($selected_hub_id)){ $has_selected_hub = false; if(!empty($hubs) && !is_wp_error($hubs)){ foreach($hubs as $hub){ if(!empty($hub->term_id) && $selected_hub_id === intval($hub->term_id)){ $has_selected_hub = true; break; } } } if(!$has_selected_hub && !empty($hubs)){ continue; } if($terms && !empty($terms)){ if(!empty($matching_cats)){ foreach($terms as $t){ if(in_array($t->term_id, $matching_cats)){ $display_term_name = $t->name; break; } } } if(!$has_selected_hub && !$display_term_name){ continue; } } elseif(!$has_selected_hub){ continue; } } if($terms && !empty($terms) && !$display_term_name){ // Look through the doc's categories and find the one that belongs to this Hub $display_term_name = $terms[0]->name; } // Print the Correct Header if($display_term_name && $current_term !== $display_term_name){ $current_term = $display_term_name; $html .= '<li class="documentor-archive-list-category">'; $html .= esc_html($current_term); $html .= '</li>'; } $html .= '<li class="documentor-archive-list-item">'; $html .= documentor_loop_title($el['atts']); $html .= documentor_loop_articles($el['atts']); $html .= '</li>'; } } elseif(pagelayer_is_live() || wp_doing_ajax()){ $html .= '<li class="documentor-archive-list-item">'; $html .= documentor_loop_title($el['atts']); $html .= documentor_loop_articles($el['atts']); $html .= '</li>'; } $el['atts']['post_html'] = $html; } function documentor_loop_title($atts){ $html = ''; $articles = get_pages( array( 'child_of' => get_the_ID(), 'post_type' => 'docs', ) ); $articles_count = count( $articles ); $html .= '<a href="'. get_the_permalink().'" class="documentor-archive-list-item-title">'; if($atts['hicon']){ $html .= '<i class="'. $atts['hicon'].'"></i>'; } $html .= get_the_post_thumbnail( '','documentor_archive' ); $html .= '<span>'; $html .= '<span>'; $html .= sprintf( esc_html( _n( '%s Article', '%s Articles', $articles_count, 'documentor' ) ), esc_html( $articles_count ) ); $html .= '</span>'; $html .= '<h2>'. get_the_title() .'</h2>'; $html .= '</span>'; $html .= '</a>'; return $html; } function documentor_loop_articles($atts){ $html =''; $show = $atts['show_articles']; $articles_number = $atts['articles_depth']; if ( -1 === $articles_number ) { $articles_number = 9999; } if ( ! $show || $articles_number < 1 ) { return; } $top_articles = new WP_Query( array( 'post_type' => 'docs', 'posts_per_page' => -1, // phpcs:ignore 'post_parent' => get_the_ID(), 'orderby' => array( 'menu_order' => 'ASC', 'date' => 'DESC', ), ) ); $parent_link = get_permalink(); $count = 0; $nav_list = wp_list_pages( array( 'title_li' => '', 'order' => 'menu_order', 'child_of' => documentor()->get_current_doc_id(), 'echo' => false, 'post_type' => 'docs', 'icon' => $atts['icon'], 'depth' => $articles_number, 'walker' => new Documentor_Walker_Docs(), ) ); if(!$nav_list && (pagelayer_is_live() || wp_doing_ajax())){ $nav_list = '<li class="page_item"><a href="">List</a></li>'; } if ($nav_list) { $show_childs = documentor()->get_option( 'sidebar_show_nav_childs', 'documentor_single', false ); $html .= '<div class="home_page_cats slimscroll-virt">'; $html .= '<ul class="documentor-nav-list'. ( $show_childs ? ' documentor-nav-list-show-childs' : '' ).'">'; $html .= $nav_list; $html .= '</ul>'; $html .= '</div>'; } wp_reset_postdata(); return $html; } function pagelayer_sc_dm_hub_list(&$el){ $hubs = get_terms([ 'taxonomy' => 'docs_hub', 'hide_empty' => false, ]); if(empty($hubs)){ $el['atts']['hub_list_html'] = !empty($el['no_hub']) ? $el['no_hub'] : __('No Doc Hub created yet', 'documentor'); return; } if(is_wp_error($hubs)){ $el['atts']['hub_list_html'] = $hubs->get_error_message(); return; } $active_hubs_count = 0; $boxes_html = ''; foreach($hubs as $hub){ $hub_id = $hub->term_id; $sections = get_posts([ 'post_type' => 'docs', 'post_status' => 'publish', 'posts_per_page' => -1, 'fields' => 'ids', 'post_parent' => 0, 'tax_query' => [ [ 'taxonomy' => 'docs_hub', 'field' => 'term_id', 'terms' => $hub_id, ], ], ]); if(empty($sections)) { continue; } $query = new \WP_Query([ 'post_type' => 'docs', 'post_status' => 'publish', 'post_parent__in' => $sections, 'posts_per_page' => -1, 'fields' => 'ids', ]); $section_count = count($sections); $doc_count = (int) $query->found_posts; // Now we need to get all the sub child docs id if(!empty($query->posts) && is_array($query->posts)){ $query = new \WP_Query([ 'post_type' => 'docs', 'post_status' => 'publish', 'post_parent__in' => $query->posts, 'posts_per_page' => -1, 'fields' => 'ids', ]); $doc_count += (int) $query->found_posts; } if($section_count === 0 && $doc_count === 0){ continue; } $active_hubs_count++; // Robustly find the linked Page URL (Check Term Meta, then Post Meta) $page_url = get_term_link($hub); // Format text grammar $section_text = $section_count === 1 ? '1 Section' : $section_count . ' Sections'; $doc_text = $doc_count === 1 ? '1 Doc' : $doc_count . ' Docs'; $boxes_html .= '<a href="' . esc_url($page_url) . '" class="documentor-hub-box">'; $boxes_html .= '<span class="documentor-hub-title">' . esc_html($hub->name) . '</span>'; $boxes_html .= '<span class="documentor-hub-meta">' . $section_text . ' • ' . $doc_text . '</span>'; $boxes_html .= '</a>'; } if($active_hubs_count <= 0){ $el['atts']['hub_list_html'] = !empty($el['no_hub']) ? $el['no_hub'] : 'No Doc Hub found'; return; } $el['atts']['hub_list_html'] = $boxes_html; }
[-] frontend.php
[edit]
[-] class-export.php
[edit]
[-] template.php
[edit]
[-] class-template-loader.php
[edit]
[+]
admin
[-] class-walker-docs.php
[edit]
[-] class-settings-api.php
[edit]
[-] shortcodes.php
[edit]
[-] shortcode_functions.php
[edit]
[-] class-ajax.php
[edit]
[-] class-suggestion.php
[edit]
[+]
..