Files
roi-theme/wp-content/plugins/thrive-ultimatum/thrive-dashboard/inc/smart-site/classes/endpoints/class-tvd-content-sets-controller.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

250 lines
6.4 KiB
PHP
Executable File

<?php
/**
* Thrive Themes - https://thrivethemes.com
*
* @package thrive-dashboard
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Silence is golden!
}
/**
* Class TVD_Content_Sets_Controller
*
* @project: thrive-dashboard
*/
class TVD_Content_Sets_Controller extends WP_REST_Controller {
/**
* @var string Base name
*/
public $rest_base = 'content-sets';
protected $version = 1;
protected $namespace = 'tss/v';
/**
* Register routes function
*/
public function register_routes() {
register_rest_route( $this->namespace . $this->version, $this->rest_base . '/normalize-rule', array(
array(
'methods' => WP_REST_Server::EDITABLE,
'callback' => array( $this, 'normalize_rule' ),
'permission_callback' => array( $this, 'permission_check' ),
'args' => array(
'content_type' => array(
'type' => 'string',
'required' => true,
'enum' => array(
'post',
'term',
'archive',
\TVD\Content_Sets\Rule::HIDDEN_POST_TYPE_SEARCH_RESULTS,
\TVD\Content_Sets\Rule::HIDDEN_POST_TYPE_BLOG,
),
),
'content' => array(
'type' => 'string',
'required' => true,
),
'field' => array(
'type' => 'string',
'required' => true,
),
'operator' => array(
'type' => 'string',
'required' => true,
),
'value' => array(
'type' => array( 'string', 'array' ),
'default' => '',
),
),
),
) );
register_rest_route( $this->namespace . $this->version, $this->rest_base, array(
array(
'methods' => WP_REST_Server::CREATABLE,
'callback' => array( $this, 'create_item' ),
'permission_callback' => array( $this, 'permission_check' ),
'args' => array(
'post_title' => array(
'type' => 'string',
'required' => true,
),
'post_content' => array(
'type' => 'array',
'required' => true,
),
),
),
array(
'methods' => WP_REST_Server::READABLE,
'callback' => array( $this, 'search_items' ),
'permission_callback' => array( $this, 'permission_check' ),
'args' => array(
'content_type' => array(
'type' => 'string',
'required' => true,
'enum' => array( 'post', 'term', 'archive' ),
),
'content' => array(
'type' => 'string',
'required' => true,
),
'field' => array(
'type' => 'string',
'required' => true,
),
'operator' => array(
'type' => 'string',
'required' => true,
),
'value' => array(
'type' => array( 'string', 'array' ),
'default' => '',
),
'query_string' => array(
'type' => 'string',
'required' => true,
),
),
),
) );
register_rest_route( $this->namespace . $this->version, $this->rest_base . '/(?P<ID>.+)', array(
array(
'methods' => WP_REST_Server::DELETABLE,
'callback' => array( $this, 'delete_item' ),
'permission_callback' => array( $this, 'permission_check' ),
'args' => array(
'ID' => array(
'type' => 'integer',
'required' => true,
),
),
),
array(
'methods' => WP_REST_Server::EDITABLE,
'callback' => array( $this, 'update_item' ),
'permission_callback' => array( $this, 'permission_check' ),
'args' => array(
'ID' => array(
'type' => 'integer',
'required' => true,
),
'post_title' => array(
'type' => 'string',
'required' => true,
),
'post_content' => array(
'type' => 'array',
'required' => true,
),
),
),
) );
}
/**
* rename this into search posts/ search items
*
* @param WP_REST_Request $request
*
* @return WP_REST_Response
*/
public function search_items( $request ) {
$rule = \TVD\Content_Sets\Rule::factory( $request->get_params() );
$paged = false;
if ( $request->get_param( 'page' ) ) {
$paged = (int) $request->get_param( 'page' );
$per_page = (int) $request->get_param( 'per_page' ) ?: 150;
}
return new WP_REST_Response( $rule->get_items( $request->get_param( 'query_string' ), $paged, $per_page ), 200 );
}
/**
* @param WP_REST_Request $request
*
* @return WP_Error|WP_REST_Response
*/
public function create_item( $request ) {
$set = new \TVD\Content_Sets\Set( $request->get_params() );
$new_set_id = $set->create();
$cache_plugin = tve_dash_detect_cache_plugin();
if ( $cache_plugin ) {
tve_dash_cache_plugin_clear( $cache_plugin );
}
if ( ! empty( $new_set_id ) ) {
return new WP_REST_Response( \TVD\Content_Sets\Set::get_items(), 200 );
}
return new WP_Error( 'cant-create', __( 'The request contains invalid rules', 'thrive-dash' ), array( 'status' => 422 ) );
}
/**
* @param WP_REST_Request $request
*
* @return WP_REST_Response
*/
public function delete_item( $request ) {
$set = new \TVD\Content_Sets\Set( $request->get_param( 'ID' ) );
$response = $set->delete();
return new WP_REST_Response( $response, 200 );
}
/**
* @param WP_REST_Request $request
*
* @return WP_Error|WP_REST_Response
*/
public function update_item( $request ) {
$set = new \TVD\Content_Sets\Set( $request->get_params() );
$set_id = $set->update();
$cache_plugin = tve_dash_detect_cache_plugin();
if ( $cache_plugin ) {
tve_dash_cache_plugin_clear( $cache_plugin );
}
if ( ! empty( $set_id ) ) {
return new WP_REST_Response( ! empty( $request->get_param( 'return_one' ) ) ? $set->jsonSerialize() : \TVD\Content_Sets\Set::get_items(), 200 );
}
return new WP_Error( 'cant-update', __( 'The request contains invalid rules', 'thrive-dash' ), array( 'status' => 422 ) );
}
/**
* Normalizing a rule so that the rule contains all information
*
* Mainly this is for content_label rule key.
*
* @param WP_REST_Request $request
*
* @return WP_REST_Response
*/
public function normalize_rule( $request ) {
$rule = \TVD\Content_Sets\Rule::factory( $request->get_params() );
return new WP_REST_Response( $rule, 200 );
}
/**
* If the user has access to the admin pages, then he is allowed to perform any operation on the scripts.
*
* @return bool
*/
public function permission_check() {
return current_user_can( TVE_DASH_CAPABILITY );
}
}