85 lines
2.4 KiB
PHP
85 lines
2.4 KiB
PHP
<?php
|
|
namespace AIOSEO\BrokenLinkChecker\Api;
|
|
|
|
// Exit if accessed directly.
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit;
|
|
}
|
|
|
|
use AIOSEO\BrokenLinkChecker\Models;
|
|
|
|
/**
|
|
* Handles link status/link row edit updates.
|
|
*
|
|
* @since 1.1.0
|
|
*/
|
|
class EditRow extends CommonTableActions {
|
|
/**
|
|
* Edits the given link status/link row.
|
|
*
|
|
* @since 1.1.0
|
|
*
|
|
* @param \WP_REST_Request $request The request
|
|
* @return \WP_REST_Response The response.
|
|
*/
|
|
public static function update( $request ) {
|
|
$body = $request->get_json_params();
|
|
$linkStatusId = ! empty( $body['linkStatusId'] ) ? intval( $body['linkStatusId'] ) : null;
|
|
$linkId = ! empty( $body['linkId'] ) ? intval( $body['linkId'] ) : null;
|
|
if ( empty( $linkStatusId ) && empty( $linkId ) ) {
|
|
return new \WP_REST_Response( [
|
|
'success' => false,
|
|
'message' => 'No link status or link ID ID was provided.'
|
|
], 400 );
|
|
}
|
|
|
|
$newUrl = ! empty( $body['url'] ) ? sanitize_text_field( $body['url'] ) : '';
|
|
$newAnchor = ! empty( $body['anchor'] ) ? sanitize_text_field( $body['anchor'] ) : '';
|
|
if ( empty( $newUrl ) && empty( $newAnchor ) ) {
|
|
return new \WP_REST_Response( [
|
|
'success' => false,
|
|
'message' => 'No new URL or anchor was provided.'
|
|
], 400 );
|
|
}
|
|
|
|
// If a link status ID was provided, then we need to update the URL for each link related to this link status.
|
|
if ( $linkStatusId ) {
|
|
$links = Models\Link::getByLinkStatusId( $linkStatusId );
|
|
foreach ( $links as $link ) {
|
|
// Confirm user has permission to edit the post.
|
|
if ( ! current_user_can( 'edit_post', $link->post_id ) ) {
|
|
return new \WP_REST_Response( [
|
|
'success' => false,
|
|
'message' => 'User does not have permission to edit this post.'
|
|
], 403 );
|
|
}
|
|
|
|
self::updateLink( $link->id, '', $newUrl );
|
|
}
|
|
}
|
|
|
|
if ( $linkId ) {
|
|
$link = Models\Link::getById( $linkId );
|
|
if ( ! $link->exists() ) {
|
|
return new \WP_REST_Response( [
|
|
'success' => false,
|
|
'message' => 'Link not found.'
|
|
], 404 );
|
|
}
|
|
|
|
// Confirm user has permission to edit the post.
|
|
if ( ! current_user_can( 'edit_post', $link->post_id ) ) {
|
|
return new \WP_REST_Response( [
|
|
'success' => false,
|
|
'message' => 'User does not have permission to edit this post.'
|
|
], 403 );
|
|
}
|
|
|
|
self::updateLink( $linkId, $newAnchor, $newUrl );
|
|
}
|
|
|
|
return new \WP_REST_Response( [
|
|
'success' => true
|
|
], 200 );
|
|
}
|
|
} |