first commit
This commit is contained in:
194
wp-content/plugins/wp-sweep/inc/class-wpsweep-api.php
Normal file
194
wp-content/plugins/wp-sweep/inc/class-wpsweep-api.php
Normal file
@@ -0,0 +1,194 @@
|
||||
<?php
|
||||
/**
|
||||
* WP-Sweep WP-API
|
||||
*
|
||||
* @package wp-sweep
|
||||
*/
|
||||
|
||||
/**
|
||||
* Class WPSweep_Api
|
||||
*/
|
||||
class WPSweep_Api {
|
||||
/**
|
||||
* WP-Sweep WP Rest API namespace
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $namespace = 'sweep/v1';
|
||||
|
||||
/**
|
||||
* List of sweeps
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private $sweeps = array(
|
||||
'revisions',
|
||||
'auto_drafts',
|
||||
'deleted_posts',
|
||||
'unapproved_comments',
|
||||
'spam_comments',
|
||||
'deleted_comments',
|
||||
'transient_options',
|
||||
'orphan_postmeta',
|
||||
'orphan_commentmeta',
|
||||
'orphan_usermeta',
|
||||
'orphan_termmeta',
|
||||
'orphan_term_relationships',
|
||||
'unused_terms',
|
||||
'duplicated_postmeta',
|
||||
'duplicated_commentmeta',
|
||||
'duplicated_usermeta',
|
||||
'duplicated_termmeta',
|
||||
'optimize_database',
|
||||
'oembed_postmeta',
|
||||
);
|
||||
|
||||
/**
|
||||
* Register WP-Sweep API Routes
|
||||
*
|
||||
* @since 1.1.0
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct() {
|
||||
add_action(
|
||||
'rest_api_init', function() {
|
||||
register_rest_route(
|
||||
$this->namespace, 'count/(?P<name>\w+)', array(
|
||||
'methods' => WP_REST_Server::READABLE,
|
||||
'callback' => array( $this, 'count' ),
|
||||
'permission_callback' => array( $this, 'permission_check' ),
|
||||
'args' => array(
|
||||
'name' => array(
|
||||
'required' => true,
|
||||
'validate_callback' => array( $this, 'is_sweep_name_valid' ),
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
register_rest_route(
|
||||
$this->namespace, 'details/(?P<name>\w+)', array(
|
||||
'methods' => WP_REST_Server::READABLE,
|
||||
'callback' => array( $this, 'details' ),
|
||||
'permission_callback' => array( $this, 'permission_check' ),
|
||||
'args' => array(
|
||||
'name' => array(
|
||||
'required' => true,
|
||||
'validate_callback' => array( $this, 'is_sweep_name_valid' ),
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
register_rest_route(
|
||||
$this->namespace, 'sweep/(?P<name>\w+)', array(
|
||||
'methods' => WP_REST_Server::DELETABLE,
|
||||
'callback' => array( $this, 'sweep' ),
|
||||
'permission_callback' => array( $this, 'permission_check' ),
|
||||
'args' => array(
|
||||
'name' => array(
|
||||
'required' => true,
|
||||
'validate_callback' => array( $this, 'is_sweep_name_valid' ),
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
/**
|
||||
* Sweep item count
|
||||
*
|
||||
* @since 1.1.0
|
||||
*
|
||||
* @access public
|
||||
* @param WP_REST_Request $request Request.
|
||||
* @return WP_REST_Response
|
||||
*/
|
||||
public function count( $request ) {
|
||||
$params = $request->get_params();
|
||||
|
||||
$sweep = new WPSweep();
|
||||
$count = (int) $sweep->count( $params['name'] );
|
||||
|
||||
return new WP_REST_Response(
|
||||
array(
|
||||
'name' => $params['name'],
|
||||
'count' => $count,
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sweep details
|
||||
*
|
||||
* @since 1.1.0
|
||||
*
|
||||
* @access public
|
||||
* @param WP_REST_Request $request Request.
|
||||
* @return WP_REST_Response
|
||||
*/
|
||||
public function details( $request ) {
|
||||
$params = $request->get_params();
|
||||
|
||||
$sweep = new WPSweep();
|
||||
$details = $sweep->details( $params['name'] );
|
||||
|
||||
return new WP_REST_Response(
|
||||
array(
|
||||
'name' => $params['name'],
|
||||
'count' => count( $details ),
|
||||
'data' => $details,
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Lets do the sweeping
|
||||
*
|
||||
* @since 1.1.0
|
||||
*
|
||||
* @access public
|
||||
* @param WP_REST_Request $request Request.
|
||||
* @return WP_REST_Response
|
||||
*/
|
||||
public function sweep( $request ) {
|
||||
$params = $request->get_params();
|
||||
|
||||
$sweep = new WPSweep();
|
||||
$results = $sweep->sweep( $params['name'] );
|
||||
|
||||
return new WP_REST_Response(
|
||||
array(
|
||||
'success' => ! empty( $results ),
|
||||
'name' => $params['name'],
|
||||
'message' => empty( $results ) ? __( 'No items left to sweep.', 'wp-sweep' ) : $results,
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether a sweep is valid
|
||||
*
|
||||
* @since 1.1.0
|
||||
*
|
||||
* @access public
|
||||
* @param string $name Sweep name.
|
||||
* @return bool Is the sweep name valid?
|
||||
*/
|
||||
public function is_sweep_name_valid( $name ) {
|
||||
return in_array( $name, $this->sweeps, true );
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether the function is allowed to be run. Must have either capabilities to enact action, or a valid nonce.
|
||||
*
|
||||
* @since 1.1.0
|
||||
*
|
||||
* @access public
|
||||
* @return bool Does the user has access to sweep?
|
||||
*/
|
||||
public function permission_check() {
|
||||
return current_user_can( 'activate_plugins' );
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user