) { $service = AAM_Framework_Manager::urls(array( 'subject' => $this->_determine_subject($request) )); try { $result = $service->delete_rule(intval($request->get_param('id'))); } catch (UnderflowException $e) { $result = $this->_prepare_error_response($e, 'rest_not_found', 404); } catch (Exception $e) { $result = $this->_prepare_error_response($e); } return rest_ensure_response($result); } /** * Reset all rules * * @param WP_REST_Request $request * * @return WP_REST_Response * * @access public * @version 6.9.9 */ public function reset_rules(WP_REST_Request $request) { $service = AAM_Framework_Manager::urls(array( 'subject' => $this->_determine_subject($request) )); try { $result = $service->reset_rules(); } catch (Exception $e) { $result = $this->_prepare_error_response($e); } return rest_ensure_response($result); } /** * Check if current user has access to the service * * @return bool * * @access public * @version 6.9.9 */ public function check_permissions() { return current_user_can('aam_manager') && (current_user_can('aam_manage_uri') || current_user_can('aam_manage_url_access')); } /** * Validate the 'url' param * * @param string $value * * @return boolean|WP_Error * * @access private * @version 6.9.9 */ private function _validate_url($value) { $response = true; $url = wp_validate_redirect($value); if (empty($url)) { $response = new WP_Error( 'rest_invalid_param', __('The url is not a valid URL', AAM_KEY), array('status' => 400) ); } return $response; } /** * Validate custom message * * @param string $value * @param WP_REST_Request $request * * @return boolean|WP_Error * * @access private * @version 6.9.9 */ private function _validate_message($value, $request) { $response = true; $rule_type = $request->get_param('type'); $message = esc_js(trim($value)); if ($rule_type === 'custom_message' && strlen($message) === 0) { $response = new WP_Error( 'rest_invalid_param', __('The custom_message cannot be empty or be unsafe', AAM_KEY), array('status' => 400) ); } return $response; } /** * Validate redirect page ID * * @param int $value * @param WP_REST_Request $request * * @return boolean|WP_Error * * @access private * @version 6.9.9 */ private function _validate_redirect_page_id($value, $request) { $response = true; $rule_type = $request->get_param('type'); $page_id = intval($value); if ($rule_type === 'page_redirect') { if ($page_id === 0 || get_post($page_id) === null) { $response = new WP_Error( 'rest_invalid_param', __('The redirect_page_id refers to non-existing page', AAM_KEY), array('status' => 400) ); } } return $response; } /** * Validate redirect URL * * @param string $value * @param WP_REST_Request $request * * @return boolean|WP_Error * * @access private * @version 6.9.9 */ private function _validate_redirect_url($value, $request) { $response = true; $rule_type = $request->get_param('type'); $url = wp_validate_redirect($value); if ($rule_type === 'url_redirect' && empty($url)) { $response = new WP_Error( 'rest_invalid_param', __('The redirect_url is not valid URL', AAM_KEY), array('status' => 400) ); } return $response; } /** * Validate the callback value * * @param string $value * @param WP_REST_Request $request * * @return boolean|WP_Error * * @access private * @version 6.9.9 */ private function _validate_callback($value, $request) { $response = true; $rule_type = $request->get_param('type'); if ($rule_type === 'trigger_callback' && is_callable($value, true) === false) { $response = new WP_Error( 'rest_invalid_param', __('The callback is not valid PHP callback', AAM_KEY), array('status' => 400) ); } return $response; } }