HEX
Server: Apache
System: Linux web5.visualcom.es 4.18.0-477.21.1.lve.1.el8.x86_64 #1 SMP Tue Sep 5 23:08:35 UTC 2023 x86_64
User: ensaco.es (10019)
PHP: 8.3.32
Disabled: opcache_get_status
Upload Files
File: /var/www/vhosts/ensaco.es/httpdocs/wp-content/plugins/itempress/inc/sync-tasks.php
<?php

if (!defined('ABSPATH')) {
    exit;
}



function itempress_sync_normalize_type(string $type): string
{
    $type = sanitize_key($type);
    return in_array($type, ['home', 'tag', 'category'], true) ? $type : 'home';
}

function itempress_sync_normalize_key(string $type, string $key): string
{
    $type = itempress_sync_normalize_type($type);
    $key = sanitize_title($key);

    if ($type === 'home' || $key === '') {
        return 'default';
    }

    return $key;
}

function itempress_sync_task_id(string $type, string $key): string
{
    $type = itempress_sync_normalize_type($type);
    $key = itempress_sync_normalize_key($type, $key);
    return md5($type . '|' . $key);
}

function itempress_sync_state_option(string $task_id): string
{
    return 'itempress_sync_state_' . $task_id;
}

function itempress_sync_get_state(string $type, string $key): array
{
    $task_id = itempress_sync_task_id($type, $key);
    $state = get_option(itempress_sync_state_option($task_id), []);
    return is_array($state) ? $state : [];
}

function itempress_sync_save_state(string $task_id, array $state): void
{
    $state['updated_at'] = current_time('mysql');
    update_option(itempress_sync_state_option($task_id), $state, false);
}

function itempress_sync_get_queue(): array
{
    $queue = get_option('itempress_sync_queue', []);
    if (!is_array($queue)) {
        return [];
    }

    return array_values(array_unique(array_filter(array_map('sanitize_text_field', $queue))));
}

function itempress_sync_save_queue(array $queue): void
{
    $queue = array_values(array_unique(array_filter(array_map('sanitize_text_field', $queue))));
    update_option('itempress_sync_queue', $queue, false);
}


function itempress_get_next_tag(): string|false
{
    $term_query = new WP_Term_Query([
        'taxonomy'   => 'itempress_tag',
        'hide_empty' => true,
        'number'     => 1,
        'orderby'    => 'term_group',
        'order'      => 'ASC',
    ]);
    $tags = $term_query->get_terms();
    if (!empty($tags) && !is_wp_error($tags)) {
        return $tags[0]->name;
    }
    return false;
}


function itempress_mark_tag_done(string $tag_name): void
{
    $term = get_term_by('name', $tag_name, 'itempress_tag');
    if ($term && !is_wp_error($term)) {
        wp_update_term($term->term_id, 'itempress_tag', [
            'term_group' => 1,
        ]);
    }
}