HEX
Server: nginx/1.27.1
System: Linux in-4 5.15.0-131-generic #141-Ubuntu SMP Fri Jan 10 21:18:28 UTC 2025 x86_64
User: ilikadirect (1186)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system,proc_open,popen,parse_ini_file,show_source
Upload Files
File: /storage/v6964/testingff/public_html/fdfctr/wp-content/plugins/staff-list/inc/db-all.php
<?php
//=== ALL START === Returns all record IDs, sorted. Uses include/exclude categories for subsets.  ============
//Not sored, hidden removed. Shortcode category filters implemented. Parameters = cat excluded, included.
function abcfsl_db_staff_ids_all_filtered_not_sorted( $parentID, $catsPar ) {

    $catDefaults = array(
        'scodeCat' => '',
        'scodeCatExcl' => ''
    );
    $catsPar = wp_parse_args( $catsPar, $catDefaults );
    
    $allIDs = abcfsl_db_staff_ids_not_sorted( $parentID );
    $allIDs = abcfsl_db_all_staff_ids_scode_cat_incl( $parentID, $allIDs, $catsPar['scodeCat'] );
    $allIDs = abcfsl_db_all_staff_ids_scode_cat_excl( $parentID, $allIDs, $catsPar['scodeCatExcl'] );
    return $allIDs;
}

//-- New, implemented in 3.7.1. Replaced abcfsl_db_staff_ids_sorted_scode_cat_incl_excl
//-- Called from abcfsl_db_staff_member_ids
//-- Parameters are merged into a single array.
//-- Used for all layouts and all filter options. 
//-- OUTPUT: All post IDs, sorted. 
//-- Minus category shortcode options (included/excluded).
//-- Minus hidden (or hidden only or all including hidden). hiddenRecords shordcode 
function abcfsl_db_all_staff_ids_sorted( $parentID, $allPar ) {    
    
    $allPar = abcfsl_db_all_par_fix( $parentID, $allPar );

    $allIDs = abcfsl_db_all_staff_ids_sorted_all( $parentID, $allPar );
    $allIDs = abcfsl_db_all_staff_ids_scode_cat_incl( $parentID, $allIDs, $allPar['scodeCat'] );
    $allIDs = abcfsl_db_all_staff_ids_scode_cat_excl( $parentID, $allIDs, $allPar['scodeCatExcl'] );
    return $allIDs;
}

//Fix missing values if any.
function abcfsl_db_all_par_fix( $parentID, $allPar )  {
    
    $orderDefaults = array(
        'scodeOrder' => '',
        'sortType' => '',
        'dSort' => '',
        'cSort' => '',
        'dSortOrder' => '',
        'cSortOrder' => '',
        'scodeCat' => '',
        'scodeCatExcl' => '',
        'hiddenRecords' => 0        
    );

    $allPar = wp_parse_args( $allPar, $orderDefaults );
    $sortType = $allPar['sortType']; 

    if( empty( $sortType ) ){
        $sortTypeSaved = get_post_meta( $parentID, '_sortType', true );
        if( empty( $sortTypeSaved ) ) { 
            $sortType = 'P'; 
        }
        else{
            $sortType = $sortTypeSaved;
        }
    }

    // M = Manual
    // P = Post Title
    // T = Sort Text
    switch ( $sortType ) {
        case 'P' :
        case 'T' :         
            break; 
        case 'M' :
            $sortType = 'T';
            break;                                 
        default:
            $sortType = 'P';           
            break;
    }

    $allPar['sortType'] = $sortType;
    return $allPar;
}

//====================================================================================
// OUT = IDs. Select, order and remove hidden. 
// Used by by Staff List, Staff List Search and OLD Staff Search
// Used by SLS
function abcfsl_db_all_staff_ids_sorted_all( $parentID, $allPar )  {

    // order="DESC"
    //c-sort= F4 post-title sort-text
    //d-sort= F4 post-title sort-text
    //c-sort-order="DESC" "ASC"
    //d-sort-order="DESC" "ASC"
   
    $sortType = $allPar['sortType']; 
    $scodeOrder = $allPar['scodeOrder'];  
    $cSort = $allPar['cSort'];
    $dSort = $allPar['dSort'];
    $dSortOrder = $allPar['dSortOrder'];
    $cSortOrder = $allPar['cSortOrder']; // default ASC
    $hiddenRecords = $allPar['hiddenRecords'];
    

    //---Sort order defaults -----------------------
    if( empty( $dSortOrder) ){ $dSortOrder = 'ASC'; }
    if( empty( $cSortOrder) ){ $cSortOrder = 'ASC'; }
    //-- Sort Type: M-Manual; P-Post Title; T-Sort Text; -----------
    //if( empty( $sortType ) ) { $sortType = 'P'; } 

    $sortTypeOptns = abcfsl_db_all_scode_sort_type( $scodeOrder, $cSort, $dSort );

    $scodeSortType = $sortTypeOptns['scodeSortType'];
    $scodeOrder = $sortTypeOptns['scodeOrder'];
    $cSortField = $sortTypeOptns['cSortField'];
    $cSortType = $sortTypeOptns['cSortType'];
    $dSortType = $sortTypeOptns['dSortType'];

    //--Not custom sort (template options) -----------------------------------------    
    if ( $scodeSortType == 'TP' ) {
        return abcfsl_db_staff_ids_not_custom( $parentID, $sortType, $scodeOrder, $hiddenRecords );
    }

    //-- Custom sort. By single field --------------------------------
    if ( $scodeSortType == 'CS' ) {

        if ( $cSortType == 'P' ) {
            return abcfsl_db_staff_ids_not_custom( $parentID, $cSortType, $cSortOrder, $hiddenRecords );      
        }

        if ( $cSortType == 'T' ) {
            return abcfsl_db_staff_ids_not_custom( $parentID, $cSortType, $cSortOrder, $hiddenRecords );      
        }

        //Sorted by single custom field only.
        if ( $cSortType == 'C' ) {
            $outIDs = abcfsl_db_staff_ids_custom( $parentID, $cSortField, $cSortOrder ); 
            return abcfsl_db_all_remove_hidden( $parentID, $outIDs, $hiddenRecords );           
        }
 
    }

    //-- Custom sort. Double ----------------------------------------------
    if ( $scodeSortType == 'CD' ) {

        if ( $cSortType == 'P' && $dSortType == 'T' ) {
            $outIDs = abcfsl_db_staff_ids_custom_double_P_T( $parentID, $cSortOrder, $dSortOrder );
            return abcfsl_db_all_remove_hidden( $parentID, $outIDs, $hiddenRecords );           
        }

        if ( $cSortType == 'T' && $dSortType == 'P' ) {
            $outIDs = abcfsl_db_staff_ids_custom_double_T_P( $parentID, $cSortOrder, $dSortOrder ); 
            return abcfsl_db_all_remove_hidden( $parentID, $outIDs, $hiddenRecords );          
        }

        //Sorted by custom field + Post Title or Sort Text. 
        if ( $cSortType == 'C' && $dSortType == 'P' ) {
            $outIDs = abcfsl_db_staff_ids_custom_double_C_P( $parentID, $cSortField, $cSortOrder, $dSortOrder ); 
            return abcfsl_db_all_remove_hidden( $parentID, $outIDs, $hiddenRecords );          
        }  

        if ( $cSortType == 'C' && $dSortType == 'T' ) {
            $outIDs = abcfsl_db_staff_ids_custom_double_C_T( $parentID, $cSortField, $cSortOrder, $dSortOrder ); 
            return abcfsl_db_all_remove_hidden( $parentID, $outIDs, $hiddenRecords );          
        }  
    }
}

function abcfsl_db_all_remove_hidden( $parentID, $outIDs, $hiddenRecords ) {

    //Shortcode hidden-records: 0=Not hidden; 1=All including hidden; 2=Hidden only; .
    switch ( $hiddenRecords ) {
        case 1 :
            break; 
        case 2 :
            $outIDs = abcfsl_db_all_staff_ids_only_hidden( $parentID, $outIDs );
            break;                                 
        default:
            $outIDs = abcfsl_db_all_staff_ids_not_hidden( $parentID, $outIDs );           
            break;
    }

    return $outIDs;
}

//=======================================================================
function abcfsl_db_staff_ids_not_custom( $parentID, $sortType, $scodeOrder, $hiddenRecords ) {

    $outIDs = array();

    if ( $sortType == 'T' || $sortType == 'M'  ) {
        if (  $scodeOrder == 'DESC' ){
            $outIDs = abcfsl_db_staff_ids_T_DESC( $parentID );
        }  
        else{
            $outIDs = abcfsl_db_staff_ids_T_ASC( $parentID ); 
        }     
    }

    if ( $sortType == 'P' ) {
        if (  $scodeOrder == 'DESC' ){
            $outIDs = abcfsl_db_staff_ids_P_DESC( $parentID );                
        } 
        else{
            $outIDs = abcfsl_db_staff_ids_P_ASC( $parentID ); 
        }
    }

    return abcfsl_db_all_remove_hidden( $parentID, $outIDs, $hiddenRecords );

}

function abcfsl_db_staff_ids_custom( $parentID, $cSortField, $cSortOrder ) {

    $outIDs = array();

    if (  $cSortOrder == 'DESC' ){
        $outIDs = abcfsl_db_staff_ids_C_DESC( $parentID, $cSortField );   
    }
    else{
        $outIDs = abcfsl_db_staff_ids_C_ASC( $parentID, $cSortField );
    }

    return $outIDs;
}

//Sorted by custom field (Post Title) + Sort Text.
function abcfsl_db_staff_ids_custom_double_P_T( $parentID, $cSortOrder, $dSortOrder ) {

    $outIDs = array();      
        
    if (  $cSortOrder == 'ASC' && $dSortOrder == 'ASC' ){
        $outIDs = abcfsl_db_staff_ids_P_T_ASC_ASC( $parentID );
    }
    
    if (  $cSortOrder == 'DESC' && $dSortOrder =='ASC' ){
        $outIDs = abcfsl_db_staff_ids_P_T_DESC_ASC( $parentID );
    }
    
    if (  $cSortOrder == 'ASC' && $dSortOrder =='DESC' ){
        $outIDs = abcfsl_db_staff_ids_P_T_ASC_DESC( $parentID );
    }
    
    if (  $cSortOrder == 'DESC' && $dSortOrder == 'DESC' ){
        $outIDs = abcfsl_db_staff_ids_P_T_DESC_DESC( $parentID );
    }

    return $outIDs;
}

//Sorted by custom field (Sort Text) + Post Title.
function abcfsl_db_staff_ids_custom_double_T_P( $parentID, $cSortOrder, $dSortOrder ) {

    $outIDs = array();      
        
    if (  $cSortOrder == 'ASC' && $dSortOrder == 'ASC' ){
        $outIDs = abcfsl_db_staff_ids_T_P_ASC_ASC( $parentID );
    }
    
    if (  $cSortOrder == 'DESC' && $dSortOrder =='ASC' ){
        $outIDs = abcfsl_db_staff_ids_T_P_DESC_ASC( $parentID );
    }
    
    if (  $cSortOrder == 'ASC' && $dSortOrder =='DESC' ){
        $outIDs = abcfsl_db_staff_ids_T_P_ASC_DESC( $parentID );
    }
    
    if (  $cSortOrder == 'DESC' && $dSortOrder == 'DESC' ){
        $outIDs = abcfsl_db_staff_ids_T_P_DESC_DESC( $parentID );
    }

    return $outIDs;
}

//Sorted by custom field (C) + Post Title.
function abcfsl_db_staff_ids_custom_double_C_P( $parentID, $cSortField, $cSortOrder, $dSortOrder ) {

    $outIDs = array();      
        
    if (  $cSortOrder == 'ASC' && $dSortOrder == 'ASC' ){
        $outIDs = abcfsl_db_staff_ids_C_P_ASC_ASC( $parentID, $cSortField );
    }
    
    if (  $cSortOrder == 'DESC' && $dSortOrder =='ASC' ){
        $outIDs = abcfsl_db_staff_ids_C_P_DESC_ASC( $parentID, $cSortField );
    }
    
    if (  $cSortOrder == 'ASC' && $dSortOrder =='DESC' ){
        $outIDs = abcfsl_db_staff_ids_C_P_ASC_DESC( $parentID, $cSortField );
    }
    
    if (  $cSortOrder == 'DESC' && $dSortOrder == 'DESC' ){
        $outIDs = abcfsl_db_staff_ids_C_P_DESC_DESC( $parentID, $cSortField );
    }

    return $outIDs;
}

//Sorted by custom field (C) + Sort Text.
function abcfsl_db_staff_ids_custom_double_C_T( $parentID, $cSortField, $cSortOrder, $dSortOrder ) {

    $outIDs = array();      
        
    if (  $cSortOrder == 'ASC' && $dSortOrder == 'ASC' ){
        $outIDs = abcfsl_db_staff_ids_C_T_ASC_ASC( $parentID, $cSortField );
    }
    
    if (  $cSortOrder == 'DESC' && $dSortOrder =='ASC' ){
        $outIDs = abcfsl_db_staff_ids_C_T_DESC_ASC( $parentID, $cSortField );
    }
    
    if (  $cSortOrder == 'ASC' && $dSortOrder =='DESC' ){
        $outIDs = abcfsl_db_staff_ids_C_T_ASC_DESC( $parentID, $cSortField );
    }
    
    if (  $cSortOrder == 'DESC' && $dSortOrder == 'DESC' ){
        $outIDs = abcfsl_db_staff_ids_C_T_DESC_DESC( $parentID, $cSortField );
    }

    return $outIDs;
}
//=== ALL END ==============================================


//== NOT SORTED, NO ORDER BY
function abcfsl_db_staff_ids_not_sorted( $parentID ) {
    global $wpdb;
    $out = $wpdb->get_col( $wpdb->prepare(
        "SELECT ID
        FROM $wpdb->posts
        WHERE post_parent = %d
        AND post_status = 'publish'", $parentID ));      
    $outIDs = isset( $out ) ? $out : array();

    return abcfsl_db_all_staff_ids_not_hidden( $parentID, $outIDs );
}

//== ORDER BY - START =======================================

//=== NO CUSTOM - ORDER BY menu_order ===========
function abcfsl_db_staff_ids_T_ASC( $parentID ) {
    global $wpdb;
    $out = $wpdb->get_col( $wpdb->prepare(
        "SELECT ID
        FROM $wpdb->posts
        WHERE post_parent = %d
        AND post_status = 'publish'
        ORDER BY menu_order ASC", $parentID ));      
    return isset( $out ) ? $out : array();
}

function abcfsl_db_staff_ids_T_DESC( $parentID ) {
    global $wpdb;
    $out = $wpdb->get_col( $wpdb->prepare(
        "SELECT ID
        FROM $wpdb->posts
        WHERE post_parent = %d
        AND post_status = 'publish'
        ORDER BY menu_order DESC", $parentID ));
    return isset( $out ) ? $out : array();
}

//=== NO CUSTOM - ORDER BY post_title ==============
function abcfsl_db_staff_ids_P_ASC( $parentID ) {
    global $wpdb;
    $out = $wpdb->get_col( $wpdb->prepare(
        "SELECT ID
        FROM $wpdb->posts
        WHERE post_parent = %d
        AND post_status = 'publish'
        ORDER BY post_title ASC", $parentID ));  
    
    $out = isset( $out ) ? $out : array();
    return $out;        
}


function abcfsl_db_staff_ids_P_DESC( $parentID ) {
    global $wpdb;
    $out = $wpdb->get_col( $wpdb->prepare(
        "SELECT ID
        FROM $wpdb->posts
        WHERE post_parent = %d
        AND post_status = 'publish'
        ORDER BY post_title DESC", $parentID ));

    $out = isset( $out ) ? $out : array();
    return $out;
}

//=== CUSTOM - ORDER BY custom field (C) ================
function abcfsl_db_staff_ids_C_ASC( $parentID, $cSortField ) {
    global $wpdb;
    $out = $wpdb->get_col( $wpdb->prepare(
        "SELECT p.ID
        FROM $wpdb->posts p
        JOIN $wpdb->postmeta pm ON p.ID = pm.post_id
        WHERE post_parent = %d
        AND post_status = 'publish'
        AND pm.meta_key = %s
        ORDER BY pm.meta_value ASC", $parentID, $cSortField ));

    $out = isset( $out ) ? $out : array();
    return $out;
}

function abcfsl_db_staff_ids_C_DESC( $parentID, $cSortField ) {
    global $wpdb;
    $out = $wpdb->get_col( $wpdb->prepare(
        "SELECT p.ID
        FROM $wpdb->posts p
        JOIN $wpdb->postmeta pm ON p.ID = pm.post_id
        WHERE post_parent = %d
        AND post_status = 'publish'
        AND pm.meta_key = %s
        ORDER BY pm.meta_value DESC", $parentID, $cSortField ));

    $out = isset( $out ) ? $out : array();
    return $out;
}

//=== CUSTOM DOUBLE - ORDER BY post_title, menu_order ===================
function abcfsl_db_staff_ids_P_T_ASC_ASC( $parentID ) {
    global $wpdb;
    $out = $wpdb->get_col( $wpdb->prepare(
        "SELECT ID
        FROM $wpdb->posts
        WHERE post_parent = %d
        AND post_status = 'publish'
        ORDER BY post_title ASC, menu_order ASC", $parentID ));  
    
    $out = isset( $out ) ? $out : array();
    return $out;        
}

function abcfsl_db_staff_ids_P_T_ASC_DESC( $parentID ) {
    global $wpdb;
    $out = $wpdb->get_col( $wpdb->prepare(
        "SELECT ID
        FROM $wpdb->posts
        WHERE post_parent = %d
        AND post_status = 'publish'
        ORDER BY post_title ASC, menu_order DESC", $parentID ));  
    
    $out = isset( $out ) ? $out : array();
    return $out;        
}

function abcfsl_db_staff_ids_P_T_DESC_ASC( $parentID ) {
    global $wpdb;
    $out = $wpdb->get_col( $wpdb->prepare(
        "SELECT ID
        FROM $wpdb->posts
        WHERE post_parent = %d
        AND post_status = 'publish'
        ORDER BY post_title DESC, menu_order ASC", $parentID ));  
    
    $out = isset( $out ) ? $out : array();
    return $out;        
}

function abcfsl_db_staff_ids_P_T_DESC_DESC( $parentID ) {
    global $wpdb;
    $out = $wpdb->get_col( $wpdb->prepare(
        "SELECT ID
        FROM $wpdb->posts
        WHERE post_parent = %d
        AND post_status = 'publish'
        ORDER BY post_title DESC, menu_order DESC", $parentID ));  
    
    $out = isset( $out ) ? $out : array();
    return $out;        
}

//=== CUSTOM DOUBLE - ORDER BY menu_order, post_title =======
function abcfsl_db_staff_ids_T_P_ASC_ASC( $parentID ) {
    global $wpdb;
    $out = $wpdb->get_col( $wpdb->prepare(
        "SELECT ID
        FROM $wpdb->posts
        WHERE post_parent = %d
        AND post_status = 'publish'
        ORDER BY menu_order ASC, post_title ASC", $parentID ));  
    
    $out = isset( $out ) ? $out : array();
    return $out;        
}

function abcfsl_db_staff_ids_T_P_ASC_DESC( $parentID ) {
    global $wpdb;
    $out = $wpdb->get_col( $wpdb->prepare(
        "SELECT ID
        FROM $wpdb->posts
        WHERE post_parent = %d
        AND post_status = 'publish'
        ORDER BY menu_order ASC, post_title DESC", $parentID ));  
    
    $out = isset( $out ) ? $out : array();
    return $out;        
}

function abcfsl_db_staff_ids_T_P_DESC_ASC( $parentID ) {
    global $wpdb;
    $out = $wpdb->get_col( $wpdb->prepare(
        "SELECT ID
        FROM $wpdb->posts
        WHERE post_parent = %d
        AND post_status = 'publish'
        ORDER BY menu_order DESC, post_title ASC", $parentID ));  
    
    $out = isset( $out ) ? $out : array();
    return $out;        
}

function abcfsl_db_staff_ids_T_P_DESC_DESC( $parentID ) {
    global $wpdb;
    $out = $wpdb->get_col( $wpdb->prepare(
        "SELECT ID
        FROM $wpdb->posts
        WHERE post_parent = %d
        AND post_status = 'publish'
        ORDER BY menu_order DESC, post_title DESC", $parentID ));  
    
    $out = isset( $out ) ? $out : array();
    return $out;        
}

//=== CUSTOM DOUBLE - ORDER BY custom field (C) + post_title ========
function abcfsl_db_staff_ids_C_P_ASC_ASC( $parentID, $cSortField ) {
    global $wpdb;
    $out = array();

    $out = $wpdb->get_col( $wpdb->prepare(
        "SELECT p.ID
        FROM $wpdb->posts p
        JOIN $wpdb->postmeta pm ON p.ID = pm.post_id
        WHERE post_parent = %d
        AND post_status = 'publish'
        AND pm.meta_key = %s
        ORDER BY pm.meta_value ASC, p.post_title ASC", $parentID, $cSortField ));

    $out = isset( $out ) ? $out : array();
    return $out;
}

function abcfsl_db_staff_ids_C_P_DESC_ASC( $parentID, $cSortField ) {
    global $wpdb;
    $out = $wpdb->get_col( $wpdb->prepare(
        "SELECT p.ID
        FROM $wpdb->posts p
        JOIN $wpdb->postmeta pm ON p.ID = pm.post_id
        WHERE post_parent = %d
        AND post_status = 'publish'
        AND pm.meta_key = %s
        ORDER BY pm.meta_value DESC, p.post_title ASC", $parentID, $cSortField ));
    
    $out = isset( $out ) ? $out : array();
    return $out;
}

function abcfsl_db_staff_ids_C_P_ASC_DESC( $parentID, $cSortField ) {
    global $wpdb;
    $out = $wpdb->get_col( $wpdb->prepare(
        "SELECT p.ID
        FROM $wpdb->posts p
        JOIN $wpdb->postmeta pm ON p.ID = pm.post_id
        WHERE post_parent = %d
        AND post_status = 'publish'
        AND pm.meta_key = %s
        ORDER BY pm.meta_value ASC, p.post_title DESC", $parentID, $cSortField ));

    $out = isset( $out ) ? $out : array();
    return $out;
}

function abcfsl_db_staff_ids_C_P_DESC_DESC( $parentID, $cSortField ) {
    global $wpdb;
    $out = $wpdb->get_col( $wpdb->prepare(
        "SELECT p.ID
        FROM $wpdb->posts p
        JOIN $wpdb->postmeta pm ON p.ID = pm.post_id
        WHERE post_parent = %d
        AND post_status = 'publish'
        AND pm.meta_key = %s
        ORDER BY pm.meta_value DESC, p.post_title DESC", $parentID, $cSortField ));

    $out = isset( $out ) ? $out : array();
    return $out;
}

//=== CUSTOM DOUBLE - ORDER BY custom field (C) + menu_order =================
function abcfsl_db_staff_ids_C_T_ASC_ASC( $parentID, $cSortField ) {
    global $wpdb;
    $out = $wpdb->get_col( $wpdb->prepare(
        "SELECT p.ID
        FROM $wpdb->posts p
        JOIN $wpdb->postmeta pm ON p.ID = pm.post_id
        WHERE post_parent = %d
        AND post_status = 'publish'
        AND pm.meta_key = %s
        ORDER BY pm.meta_value ASC, p.menu_order ASC", $parentID, $cSortField ));

    $out = isset( $out ) ? $out : array();
    return $out;
}

function abcfsl_db_staff_ids_C_T_DESC_ASC( $parentID, $cSortField ) {
    global $wpdb;
    $out = $wpdb->get_col( $wpdb->prepare(
        "SELECT p.ID
        FROM $wpdb->posts p
        JOIN $wpdb->postmeta pm ON p.ID = pm.post_id
        WHERE post_parent = %d
        AND post_status = 'publish'
        AND pm.meta_key = %s
        ORDER BY pm.meta_value DESC, p.menu_order ASC", $parentID, $cSortField ));
    
    $out = isset( $out ) ? $out : array();
    return $out;
}

function abcfsl_db_staff_ids_C_T_ASC_DESC( $parentID, $cSortField ) {
    global $wpdb;
    $out = $wpdb->get_col( $wpdb->prepare(
        "SELECT p.ID
        FROM $wpdb->posts p
        JOIN $wpdb->postmeta pm ON p.ID = pm.post_id
        WHERE post_parent = %d
        AND post_status = 'publish'
        AND pm.meta_key = %s
        ORDER BY pm.meta_value ASC, p.menu_order DESC", $parentID, $cSortField ));

    $out = isset( $out ) ? $out : array();
    return $out;
}

function abcfsl_db_staff_ids_C_T_DESC_DESC( $parentID, $cSortField ) {
    global $wpdb;
    $out = $wpdb->get_col( $wpdb->prepare(
        "SELECT p.ID
        FROM $wpdb->posts p
        JOIN $wpdb->postmeta pm ON p.ID = pm.post_id
        WHERE post_parent = %d
        AND post_status = 'publish'
        AND pm.meta_key = %s
        ORDER BY pm.meta_value DESC, p.menu_order DESC", $parentID, $cSortField ));

    $out = isset( $out ) ? $out : array();
    return $out;
}
//== ORDER BY END ===================================================

function abcfsl_db_all_staff_ids_scode_cat_incl( $parentID, $allIDs, $scodeCatIncl ) {

    if( !empty( $scodeCatIncl ) ) {
        //Staff IDs, filtered by shordcode categories. NOT sorted.
        $catsIDs = abcfsl_db_staff_ids_not_sorted_cats( $parentID, $scodeCatIncl );

        //Return only not in excluded in categories
        $allIDs = array_intersect( $allIDs, $catsIDs );
    }
    //Staff IDs, sorted.
    return $allIDs;
}

function abcfsl_db_all_staff_ids_scode_cat_excl( $parentID, $allIDs, $scodeCatExcl ) {

    if( !empty( $scodeCatExcl ) ) {
        //Staff IDs, filtered by shordcode categories. NOT sorted.
        $catsIDs = abcfsl_db_staff_ids_not_sorted_cats( $parentID, $scodeCatExcl );

        //Return only not in excluded in categories
        $allIDs = array_diff( $allIDs, $catsIDs );
    }
    //Staff IDs, sorted.
    return $allIDs;
}

//Get all not hidden-records.
// Used by SLS
function abcfsl_db_all_staff_ids_not_hidden( $parentID, $allIDs ) {

    $hiddenIDs = abcfsl_db_staff_members_hidden( $parentID );

    //Remove excluded. EXCLUDED hidden-records
    //Return an array that contains the entries from array1 that are not present in array2.
    return array_diff ( $allIDs, $hiddenIDs );
}

function abcfsl_db_all_staff_ids_only_hidden( $parentID, $allIDs ) {

    $hiddenIDs = abcfsl_db_staff_members_hidden( $parentID );

    //Return  only those elements of the array1 that are present in array2.
    return array_intersect ( $hiddenIDs, $allIDs );
}

function abcfsl_db_all_scode_sort_type( $scodeOrder, $cSort, $dSort ){

    // TP-template option, CS-custom single, CD-custom double
    $out['scodeSortType'] = '';
    $out['scodeOrder'] = '';
    $out['cSortField'] = '';
    $out['cSortType'] = '';
    $out['dSortType'] = '';

    if( empty( $scodeOrder ) ) {
        if( empty( $cSort ) ) { 
            $out['scodeSortType'] = 'TP'; 
            $out['scodeOrder'] = 'ASC';
            return $out;
        }
    }

    if( !empty( $scodeOrder ) ) {
        $out['scodeSortType'] = 'TP'; 
        $out['scodeOrder'] = $scodeOrder;
        return $out;
    }

    if( !empty( $cSort ) && empty( $dSort ) ) { 
        $out['scodeSortType'] = 'CS'; 
        $customSingle = abcfsl_db_custom_sort_single( $cSort );
        $out['cSortField'] = $customSingle['cSortField'];
        $out['cSortType'] = $customSingle['cSortType'];
        return $out;
    }

    if( empty( $cSort ) && !empty( $dSort ) ) { 
        $out['scodeSortType'] = 'TP'; 
        $out['scodeOrder'] = 'ASC';
        return $out;
    }

    if( !empty( $cSort ) && !empty( $dSort ) ) { 

        $out['scodeSortType'] = 'CD'; 

        $customSingle = abcfsl_db_custom_sort_single( $cSort );
        $out['cSortField'] = $customSingle['cSortField'];
        $out['cSortType'] = $customSingle['cSortType'];

        $customDouble = abcfsl_db_custom_sort_double( $dSort, $cSort );
        $dSortType = $customDouble['dSortType'];
        $out['dSortType'] = $dSortType;

        if ( $dSortType == '' ) {
            $out['scodeSortType'] = 'CS';
            return $out;
        }

        if ( $dSortType == $out['cSortType'] ) { 
            $out['scodeSortType'] = 'CS';
            return $out;
        }
    }

    return $out;
}

function abcfsl_db_custom_sort_single( $cSort ){

    $out['cSortField'] = '';
    $out['cSortType'] = '';

    if( empty( $cSort ) ) { return $out; }

    $cSort = strtoupper( $cSort ); 
    switch ( $cSort ) {
        case 'POST-TITLE' :
            $out['cSortType'] = 'P';
            $out['cSortField'] = 'P';            
            break;
        case 'SORT-TEXT' :
            $out['cSortType'] = 'T';
            $out['cSortField'] = 'T';
            break;                       
        default:
            $out['cSortType'] = 'C';            
            //'_txt_F1'
            $out['cSortField'] = '_txt_' . $cSort;            
            break;
    }

    return $out;
}

function abcfsl_db_custom_sort_double( $dSort, $cSort ){

    //$out['dSortField'] = '';
    $out['dSortType'] = '';

    if( empty( $cSort ) ) { return $out; }

    $dSort = strtoupper( $dSort ); 
    switch ( $dSort ) {
        case 'POST-TITLE' :
            $out['dSortType'] = 'P';
            //$out['dSortField'] = 'P';            
            break;
        case 'SORT-TEXT' :
            $out['dSortType'] = 'T';
            //$out['dSortField'] = 'T';
            break;                       
    }

    return $out;
}
//=== USED BY OTHER PLUGINS START ==================================

// Old name. Used by other plugins.
function abcfsl_db_staff_members_not_hidden( $parentID, $postIDs ) {
    return abcfsl_db_all_staff_ids_not_hidden( $parentID, $postIDs );
}

function abcfsl_db_staff_ids_sorted_all( $parentID, $allPar ){
    return abcfsl_db_all_staff_ids_sorted_all( $parentID, $allPar );
}

//-- All post IDs, sorted. Minus category shortcode options (included/excluded). Minus hidden. 
//-- Used by SLT
//-- In SL replaced by abcfsl_db_all_staff_ids_sorted 
function abcfsl_db_staff_ids_sorted_scode_cat_incl_excl( $parentID, $scodeCatIncl, $scodeCatExcl, $orderPar ) {

    $orderPar = abcfsl_db_all_par_fix( $parentID, $orderPar );

    $allIDs = abcfsl_db_all_staff_ids_sorted_all( $parentID, $orderPar );
    $allIDs = abcfsl_db_all_staff_ids_scode_cat_incl( $parentID, $allIDs, $scodeCatIncl );
    $allIDs = abcfsl_db_all_staff_ids_scode_cat_excl( $parentID, $allIDs, $scodeCatExcl );
    return $allIDs;
}

function abcfsl_db_staff_ids_scode_cat_incl( $parentID, $allIDs, $scodeCatIncl ) {

    return abcfsl_db_all_staff_ids_scode_cat_incl( $parentID, $allIDs, $scodeCatIncl );
}

function abcfsl_db_staff_ids_scode_cat_excl( $parentID, $allIDs, $scodeCatExcl ) {
  
    return abcfsl_db_all_staff_ids_scode_cat_excl( $parentID, $allIDs, $scodeCatExcl );
}

//=== USED BY OTHER PLUGINS END ==================================

//###############################################################
// function abcfsl_db_staff_ids_sorted_all_OLD( $parentID, $orderPar )  {

//     // order="DESC"
//     //c-sort= F4 post-title sort-text
//     //d-sort= F4 post-title sort-text
//     //c-sort-order="DESC" "ASC"
//     //d-sort-order="DESC" "ASC"

//     $orderPar = abcfsl_db_order_par_fix( $parentID, $orderPar );
   
//     $sortType = $orderPar['sortType']; 
//     $scodeOrder = $orderPar['scodeOrder'];  
//     $cSort = $orderPar['cSort'];
//     $dSort = $orderPar['dSort'];
//     $dSortOrder = $orderPar['dSortOrder'];
//     $cSortOrder = $orderPar['cSortOrder']; // default ASC

//     //---Sort order defaults -----------------------
//     if( empty( $dSortOrder) ){ $dSortOrder = 'ASC'; }
//     if( empty( $cSortOrder) ){ $cSortOrder = 'ASC'; }
//     //-- Sort Type: M-Manual; P-Post Title; T-Sort Text; -----------
//     if( empty( $sortType ) ) { $sortType = 'P'; } 

//     $sortTypeOptns = abcfsl_db_all_scode_sort_type( $scodeOrder, $cSort, $dSort );

//     $scodeSortType = $sortTypeOptns['scodeSortType'];
//     $scodeOrder = $sortTypeOptns['scodeOrder'];
//     $cSortField = $sortTypeOptns['cSortField'];
//     $cSortType = $sortTypeOptns['cSortType'];
//     $dSortType = $sortTypeOptns['dSortType'];

//     //--Not custom sort -----------------------------------------    
//     if ( $scodeSortType == 'TP' ) {
//         return abcfsl_db_staff_ids_not_custom( $parentID, $sortType, $scodeOrder );
//     }

//     //-- Custom sort. Single  --------------------------------
//     if ( $scodeSortType == 'CS' ) {

//         if ( $cSortType == 'P' ) {
//             return abcfsl_db_staff_ids_not_custom( $parentID, $cSortType, $cSortOrder );           
//         }

//         if ( $cSortType == 'T' ) {
//             return abcfsl_db_staff_ids_not_custom( $parentID, $cSortType, $cSortOrder );           
//         }

//         //Sorted by custom field only.
//         if ( $cSortType == 'C' ) {
//             return abcfsl_db_staff_ids_custom( $parentID, $cSortField, $cSortOrder );           
//         }
 
//     }

//     //-- Custom sort. Double ----------------------------------------------
//     if ( $scodeSortType == 'CD' ) {

//         if ( $cSortType == 'P' && $dSortType == 'T' ) {
//             return abcfsl_db_staff_ids_custom_double_P_T( $parentID, $cSortOrder, $dSortOrder );           
//         }

//         if ( $cSortType == 'T' && $dSortType == 'P' ) {
//             return abcfsl_db_staff_ids_custom_double_T_P( $parentID, $cSortOrder, $dSortOrder );           
//         }

//         //Sorted by custom field + Post Title or Sort Text. 
//         if ( $cSortType == 'C' && $dSortType == 'P' ) {
//             return abcfsl_db_staff_ids_custom_double_C_P( $parentID, $cSortField, $cSortOrder, $dSortOrder );           
//         }  

//         if ( $cSortType == 'C' && $dSortType == 'T' ) {
//             return abcfsl_db_staff_ids_custom_double_C_T( $parentID, $cSortField, $cSortOrder, $dSortOrder );           
//         }  
//     }
// }

//Fix missing values if any.
// function abcfsl_db_order_par_fix( $parentID, $orderPar )  {
    
//     $orderDefaults = array(
//         'scodeOrder' => '',
//         'sortType' => '',
//         'dSort' => '',
//         'cSort' => '',
//         'dSortOrder' => '',
//         'cSortOrder' => '',
//         'scodeCat' => '',
//         'scodeCatExcl' => '',
//         'hiddenRecords' => 0
//     );

//     $orderPar = wp_parse_args( $orderPar, $orderDefaults );
//     $sortType = $orderPar['sortType']; 

//     //Fix for abcfsls_db_staff_ids_no_menu. Used by abcfsls_db_mf_MFP_NEW
//     //if( $orderPar['dSortOrder'] == '' && $orderPar['scodeOrder'] != '' ) { $orderPar['dSortOrder'] = $orderPar['scodeOrder']; }

//     if( empty( $sortType ) ){
//         $sortTypeSaved = get_post_meta( $parentID, '_sortType', true );
//         if( empty( $sortTypeSaved ) ) { 
//             $sortType = 'P'; 
//         }
//         else{
//             $sortType = $sortTypeSaved;
//         }
//     }

//     // M = Manual
//     // P = Post Title
//     // T = Sort Text
//     switch ( $sortType ) {
//         case 'P' :
//         case 'T' :         
//             break; 
//         case 'M' :
//             $sortType = 'T';
//             break;                                 
//         default:
//             $sortType = 'P';           
//             break;
//     }

//     $orderPar['sortType'] = $sortType;

//     return $orderPar;
// }