GIF94;
| Path : /var/www/wordpress/wp-content/plugins/oxygen/subplugins/breakdance-elements/lib/ |
| Current File : /var/www/wordpress/wp-content/plugins/oxygen/subplugins/breakdance-elements/lib/term-builder.php |
<?php
namespace Breakdance\LoopBuilder;
function loopTerms($loop, $filterbar, $propertiesData, $actionData)
{
foreach ($loop->get_terms() as $loopIndex => $term) {
setCurrentTerm($term);
$block = getBlockForLoopIndex($propertiesData, $loopIndex);
$itemClasses = getItemClasses($term, 'term', $actionData);
$termTag = $propertiesData['content']['repeated_block']['tag'] ?? 'article';
$attrs = getFilterAttributesForPost($filterbar, $itemClasses);
renderTerm(
$actionData,
$termTag,
$attrs,
$block['id']
);
}
}
function renderTerm($actionData, $termTag, $attrs, $blockId)
{
$term = getCurrentTerm();
bdox_run_action("breakdance_before_loop_item", $term, 'term', $actionData);
bdox_run_action("breakdance_terms_loop_before_term", $actionData);
?>
<<?php echo $termTag; ?> <?php echo $attrs; ?>>
<?php
if ($blockId) {
echo \Breakdance\Render\renderGlobalBlock($blockId);
} else {
if ($_REQUEST['triggeringDocument'] ?? true) {
echo '<div class="breakdance-empty-ssr-message">Choose a ' . \Breakdance\BreakdanceOxygen\Strings\__bdox('global_block') . ' from the dropdown.</div>';
} else {
echo "<!-- Breakdance error: $blockId not found -->";
}
}
?>
</<?php echo $termTag; ?>>
<?php
bdox_run_action("breakdance_terms_loop_after_term", $actionData);
bdox_run_action("breakdance_after_loop_item", $term, 'term', $actionData);
}
function getTermQueryArgs($propertiesData)
{
$loadFromQuery = $propertiesData['content']['query']['load_terms_by_query'] ?? false;
$paginationEnabled = $propertiesData['content']['pagination']['pagination'] ?? false;
if ($loadFromQuery) {
$code = $propertiesData['content']['query']['term_query'];
$taxQuery = eval($code);
} else {
$taxQuery = [
'taxonomy' => $propertiesData['content']['query']['taxonomy'] ?? 'category',
'hide_empty' => $propertiesData['content']['query']['hide_empty'] ?? false,
'number' => $propertiesData['content']['query']['limit'] ?? ($paginationEnabled ? 10 : ''),
'orderby' => $propertiesData['content']['query']['orderby'] ?? 'name',
'order' => $propertiesData['content']['query']['order'] ?? 'ASC',
];
}
if ($paginationEnabled) {
$paged = getTermPage();
$taxQuery['offset'] = max(0, $paged - 1) * $taxQuery['number'];
}
return $taxQuery;
}
function getTermQuery($propertiesData)
{
$taxQuery = getTermQueryArgs($propertiesData);
return new \WP_Term_Query($taxQuery);
}
function countTermsInQuery($propertiesData)
{
$taxQuery = getTermQueryArgs($propertiesData);
// Reset number and offset to get all terms
$taxQuery['number'] = '';
$taxQuery['offset'] = '';
$terms = new \WP_Term_Query($taxQuery);
return count($terms->get_terms());
}
/*
* @param $preview boolean
* @return \WP_Term|null
*/
function getCurrentTerm($preview = false)
{
global $breakdance_current_term;
if ($preview && is_null($breakdance_current_term)) {
if (is_tax()) {
return get_queried_object();
} else {
$taxonomies = get_object_taxonomies(get_post_type()) ?: ['category'];
if (!empty($taxonomies)) {
$first_taxonomy = $taxonomies[0];
$term = get_terms([
'taxonomy' => $first_taxonomy,
'hide_empty' => false,
'number' => 1
]);
if (!empty($term) && !is_wp_error($term)) {
return $term[0];
}
}
}
return null;
}
return $breakdance_current_term;
}
function setCurrentTerm($term)
{
global $breakdance_current_term;
$breakdance_current_term = $term;
}
function resetCurrentTerm()
{
global $breakdance_current_term;
$breakdance_current_term = null;
}
function isTermAjaxRequest()
{
return $_SERVER['REQUEST_METHOD'] === 'POST' && str_contains($_POST['ssrFilePath'], 'Term_Loop_Builder');
}
function getTermPage()
{
if (isTermAjaxRequest()) {
$paged = isset($_POST['paged']) ? intval($_POST['paged']) : 0;
} else {
$paged = isset($_GET['term_page']) ? intval($_GET['term_page']) : 0;
}
return $paged;
}
function getTermsMaxPage($propertiesData)
{
$args = getTermQueryArgs($propertiesData);
$totalTerms = countTermsInQuery($propertiesData);
$perPage = $args['number'];
return $totalTerms > 0 && $perPage > 0 ? ceil($totalTerms / $perPage) : 1;
}