Files
roi-theme/wp-content/plugins/ajax-search-pro/src/server/Misc/Priorities.php
root a22573bf0b Commit inicial - WordPress Análisis de Precios Unitarios
- WordPress core y plugins
- Tema Twenty Twenty-Four configurado
- Plugin allow-unfiltered-html.php simplificado
- .gitignore configurado para excluir wp-config.php y uploads

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-03 21:04:30 -06:00

129 lines
3.4 KiB
PHP
Executable File

<?php
namespace WPDRMS\ASP\Misc;
use WPDRMS\ASP\Utils\Str;
if (!defined('ABSPATH')) die('-1');
class Priorities {
public static function count() {
$count = get_site_option('_asp_priority_count');
if ( $count === false ) {
global $wpdb;
$wpdb->get_var( "SELECT 1 FROM " . wd_asp()->db->table('priorities') . " LIMIT 1" );
$count = $wpdb->num_rows;
update_site_option('_asp_priority_count', $count);
}
return $count;
}
static function ajax_get_posts() {
global $wpdb;
parse_str($_POST['options'], $o);
$w_post_type = '';
$w_filter = '';
$w_limit = (int)$o['p_asp_limit'] + 0;
$w_limit = $w_limit < 1 ? 20 : $w_limit;
$w_limit = $w_limit > 200 ? 200 : $w_limit;
$pt = wd_asp()->db->table("priorities");
if (isset($o['blog_id']) && $o['blog_id'] != 0 && is_multisite())
switch_to_blog($o['p_asp_blog']);
if (isset($o['p_asp_filter']) && $o['p_asp_filter'] != '') {
$w_filter = "AND $wpdb->posts.post_title LIKE '%" . Str::escape($o['p_asp_filter']) . "%'";
}
if (isset($o['p_asp_post_type']) && $o['p_asp_post_type'] != 'all') {
$w_post_type = "AND $wpdb->posts.post_type = '" . Str::escape($o['p_asp_post_type']) . "'";
}
if ( $o['p_asp_post_type'] == 'attachment' ) {
$post_status = "$wpdb->posts.post_status IN ('inherit')";
} else {
$post_status = "$wpdb->posts.post_status IN ('publish', 'pending')";
}
$allowed_orderings = array(
'id DESC', 'id ASC', 'title DESC', 'title ASC', 'priority DESC', 'priority ASC'
);
if ( !isset($o['p_asp_ordering']) || !in_array($o['p_asp_ordering'], $allowed_orderings) ) {
$o['p_asp_ordering'] = 'id DESC';
}
$querystr = "
SELECT
$wpdb->posts.post_title as `title`,
$wpdb->posts.ID as id,
$wpdb->posts.post_date as `date`,
$wpdb->users.user_nicename as `author`,
$wpdb->posts.post_type as `post_type`,
CASE WHEN $pt.priority IS NULL
THEN 100
ELSE $pt.priority
END as `priority`
FROM $wpdb->posts
LEFT JOIN $wpdb->users ON $wpdb->users.ID = $wpdb->posts.post_author
LEFT JOIN $pt ON ($pt.post_id = $wpdb->posts.ID AND $pt.blog_id = " . get_current_blog_id() . ")
WHERE
$wpdb->posts.ID>0 AND
$post_status AND
$wpdb->posts.post_type NOT IN ('revision')
$w_post_type
$w_filter
GROUP BY
$wpdb->posts.ID
ORDER BY " . $o['p_asp_ordering'] . "
LIMIT $w_limit";
echo "!!PASPSTART!!" . json_encode($wpdb->get_results($querystr, OBJECT)) . '!!PASPEND!!';
if (is_multisite())
restore_current_blog();
die();
}
/**
*
*/
static function ajax_set_priorities() {
global $wpdb;
$i = 0;
parse_str($_POST['options'], $o);
if ($o['p_blogid'] == 0)
$o['p_blogid'] = get_current_blog_id();
foreach ($o['priority'] as $k => $v) {
// See if the value changed, count them
if ($v != $o['old_priority'][$k]) {
$i++;
$query = "INSERT INTO ".wd_asp()->db->table("priorities")."
(post_id, blog_id, priority)
VALUES($k, " . $o['p_blogid'] . ", $v)
ON DUPLICATE KEY UPDATE priority=" . $v;
$wpdb->query($query);
}
}
echo "!!PSASPSTART!!" . $i . "!!PSASPEND!!";
if (is_multisite())
restore_current_blog();
// Cleanup
$wpdb->query("DELETE FROM " . wd_asp()->db->table("priorities") . " WHERE priority=100");
$wpdb->get_var( "SELECT 1 FROM ".wd_asp()->db->table("priorities")." LIMIT 1" );
$count = $wpdb->num_rows;
update_site_option('_asp_priority_count', $count);
die();
}
}