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,
]);
}
}