Files
medicalalert-web-reloaded/wp/wp-content/plugins/facetwp/includes/facets/base.php
Tony Volpe 779393381f Merged in feature/plugins-update (pull request #9)
wp plugin updates from pantheon

* wp plugin updates from pantheon
2023-12-15 18:08:21 +00:00

107 lines
2.9 KiB
PHP

<?php
class FacetWP_Facet
{
/**
* Grab the orderby, as needed by several facet types
* @since 3.0.4
*/
function get_orderby( $facet ) {
$key = $facet['orderby'];
// Count (default)
$orderby = 'counter DESC, f.facet_display_value ASC';
// Display value
if ( 'display_value' == $key ) {
$orderby = 'f.facet_display_value ASC';
}
// Raw value
elseif ( 'raw_value' == $key ) {
$orderby = 'f.facet_value ASC';
}
// Term order
elseif ( 'term_order' == $key && 'tax' == substr( $facet['source'], 0, 3 ) ) {
$term_ids = get_terms( [
'taxonomy' => str_replace( 'tax/', '', $facet['source'] ),
'term_order' => true, // Custom flag
'fields' => 'ids',
] );
if ( ! empty( $term_ids ) && ! is_wp_error( $term_ids ) ) {
$term_ids = implode( ',', $term_ids );
$orderby = "FIELD(f.term_id, $term_ids)";
}
}
// Sort by depth
if ( FWP()->helper->facet_is( $facet, 'hierarchical', 'yes' ) ) {
$orderby = "f.depth, $orderby";
}
return $orderby;
}
/**
* Grab the limit, and support -1
* @since 3.5.4
*/
function get_limit( $facet, $default = 10 ) {
$count = $facet['count'];
if ( '-1' == $count ) {
return 1000;
}
elseif ( ctype_digit( $count ) ) {
return $count;
}
return $default;
}
/**
* Adjust the $where_clause for facets in "OR" mode
*
* FWP()->or_values contains EVERY facet and their matching post IDs
* FWP()->unfiltered_post_ids contains original post IDs
*
* @since 3.2.0
*/
function get_where_clause( $facet ) {
// Ignore the current facet's selections
if ( isset( FWP()->or_values ) && ( 1 < count( FWP()->or_values ) || ! isset( FWP()->or_values[ $facet['name'] ] ) ) ) {
$post_ids = [];
$or_values = FWP()->or_values; // Preserve original
unset( $or_values[ $facet['name'] ] );
$counter = 0;
foreach ( $or_values as $name => $vals ) {
$post_ids = ( 0 == $counter ) ? $vals : array_intersect( $post_ids, $vals );
$counter++;
}
$post_ids = array_intersect( $post_ids, FWP()->unfiltered_post_ids );
}
else {
$post_ids = FWP()->unfiltered_post_ids;
}
$post_ids = empty( $post_ids ) ? [ 0 ] : $post_ids;
return ' AND post_id IN (' . implode( ',', $post_ids ) . ')';
}
/**
* Render some commonly used admin settings
* @since 3.5.6
* @deprecated 3.9
*/
function render_setting( $name ) {
echo FWP()->settings->get_facet_field_html( $name );
}
}