wp_refresh_post_lock

The timeline below displays how wordpress function wp_refresh_post_lock has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.1

/**
 * Checks lock status on the New/Edit Post screen and refresh the lock.
 *
 * @since 3.6.0
 *
 * @param array  $response  The Heartbeat response.
 * @param array  $data      The $_POST data sent.
 * @param string $screen_id The screen ID.
 * @return array The Heartbeat response.
 */
function wp_refresh_post_lock($response, $data, $screen_id)
{
    if (array_key_exists('wp-refresh-post-lock', $data)) {
        $received = $data['wp-refresh-post-lock'];
        $send = array();
        $post_id = absint($received['post_id']);
        if (!$post_id) {
            return $response;
        }
        if (!current_user_can('edit_post', $post_id)) {
            return $response;
        }
        $user_id = wp_check_post_lock($post_id);
        $user = get_userdata($user_id);
        if ($user) {
            $error = array(
                'name' => $user->display_name,
                /* translators: %s: User's display name. */
                'text' => sprintf(__('%s has taken over and is currently editing.'), $user->display_name),
            );
            if (get_option('show_avatars')) {
                $error['avatar_src'] = get_avatar_url($user->ID, array('size' => 64));
                $error['avatar_src_2x'] = get_avatar_url($user->ID, array('size' => 128));
            }
            $send['lock_error'] = $error;
        } else {
            $new_lock = wp_set_post_lock($post_id);
            if ($new_lock) {
                $send['new_lock'] = implode(':', $new_lock);
            }
        }
        $response['wp-refresh-post-lock'] = $send;
    }
    return $response;
}

WordPress Version: 5.5

/**
 * Check lock status on the New/Edit Post screen and refresh the lock
 *
 * @since 3.6.0
 *
 * @param array  $response  The Heartbeat response.
 * @param array  $data      The $_POST data sent.
 * @param string $screen_id The screen ID.
 * @return array The Heartbeat response.
 */
function wp_refresh_post_lock($response, $data, $screen_id)
{
    if (array_key_exists('wp-refresh-post-lock', $data)) {
        $received = $data['wp-refresh-post-lock'];
        $send = array();
        $post_id = absint($received['post_id']);
        if (!$post_id) {
            return $response;
        }
        if (!current_user_can('edit_post', $post_id)) {
            return $response;
        }
        $user_id = wp_check_post_lock($post_id);
        $user = get_userdata($user_id);
        if ($user) {
            $error = array(
                /* translators: %s: User's display name. */
                'text' => sprintf(__('%s has taken over and is currently editing.'), $user->display_name),
            );
            if (get_option('show_avatars')) {
                $error['avatar_src'] = get_avatar_url($user->ID, array('size' => 64));
                $error['avatar_src_2x'] = get_avatar_url($user->ID, array('size' => 128));
            }
            $send['lock_error'] = $error;
        } else {
            $new_lock = wp_set_post_lock($post_id);
            if ($new_lock) {
                $send['new_lock'] = implode(':', $new_lock);
            }
        }
        $response['wp-refresh-post-lock'] = $send;
    }
    return $response;
}

WordPress Version: 5.3

/**
 * Check lock status on the New/Edit Post screen and refresh the lock
 *
 * @since 3.6.0
 *
 * @param array  $response  The Heartbeat response.
 * @param array  $data      The $_POST data sent.
 * @param string $screen_id The screen id.
 * @return array The Heartbeat response.
 */
function wp_refresh_post_lock($response, $data, $screen_id)
{
    if (array_key_exists('wp-refresh-post-lock', $data)) {
        $received = $data['wp-refresh-post-lock'];
        $send = array();
        $post_id = absint($received['post_id']);
        if (!$post_id) {
            return $response;
        }
        if (!current_user_can('edit_post', $post_id)) {
            return $response;
        }
        $user_id = wp_check_post_lock($post_id);
        $user = get_userdata($user_id);
        if ($user) {
            $error = array(
                /* translators: %s: User's display name. */
                'text' => sprintf(__('%s has taken over and is currently editing.'), $user->display_name),
            );
            $avatar = get_avatar($user->ID, 64);
            if ($avatar) {
                if (preg_match("|src='([^']+)'|", $avatar, $matches)) {
                    $error['avatar_src'] = $matches[1];
                }
            }
            $send['lock_error'] = $error;
        } else {
            $new_lock = wp_set_post_lock($post_id);
            if ($new_lock) {
                $send['new_lock'] = implode(':', $new_lock);
            }
        }
        $response['wp-refresh-post-lock'] = $send;
    }
    return $response;
}

WordPress Version: 4.5

/**
 * Check lock status on the New/Edit Post screen and refresh the lock
 *
 * @since 3.6.0
 *
 * @param array  $response  The Heartbeat response.
 * @param array  $data      The $_POST data sent.
 * @param string $screen_id The screen id.
 * @return array The Heartbeat response.
 */
function wp_refresh_post_lock($response, $data, $screen_id)
{
    if (array_key_exists('wp-refresh-post-lock', $data)) {
        $received = $data['wp-refresh-post-lock'];
        $send = array();
        if (!$post_id = absint($received['post_id'])) {
            return $response;
        }
        if (!current_user_can('edit_post', $post_id)) {
            return $response;
        }
        if (($user_id = wp_check_post_lock($post_id)) && $user = get_userdata($user_id)) {
            $error = array('text' => sprintf(__('%s has taken over and is currently editing.'), $user->display_name));
            if ($avatar = get_avatar($user->ID, 64)) {
                if (preg_match("|src='([^']+)'|", $avatar, $matches)) {
                    $error['avatar_src'] = $matches[1];
                }
            }
            $send['lock_error'] = $error;
        } else if ($new_lock = wp_set_post_lock($post_id)) {
            $send['new_lock'] = implode(':', $new_lock);
        }
        $response['wp-refresh-post-lock'] = $send;
    }
    return $response;
}

WordPress Version: 3.9

/**
 * Check lock status on the New/Edit Post screen and refresh the lock
 *
 * @since 3.6.0
 */
function wp_refresh_post_lock($response, $data, $screen_id)
{
    if (array_key_exists('wp-refresh-post-lock', $data)) {
        $received = $data['wp-refresh-post-lock'];
        $send = array();
        if (!$post_id = absint($received['post_id'])) {
            return $response;
        }
        if (!current_user_can('edit_post', $post_id)) {
            return $response;
        }
        if (($user_id = wp_check_post_lock($post_id)) && $user = get_userdata($user_id)) {
            $error = array('text' => sprintf(__('%s has taken over and is currently editing.'), $user->display_name));
            if ($avatar = get_avatar($user->ID, 64)) {
                if (preg_match("|src='([^']+)'|", $avatar, $matches)) {
                    $error['avatar_src'] = $matches[1];
                }
            }
            $send['lock_error'] = $error;
        } else if ($new_lock = wp_set_post_lock($post_id)) {
            $send['new_lock'] = implode(':', $new_lock);
        }
        $response['wp-refresh-post-lock'] = $send;
    }
    return $response;
}

WordPress Version: 3.7

/**
 * Check lock status on the New/Edit Post screen and refresh the lock
 *
 * @since 3.6
 */
function wp_refresh_post_lock($response, $data, $screen_id)
{
    if (array_key_exists('wp-refresh-post-lock', $data)) {
        $received = $data['wp-refresh-post-lock'];
        $send = array();
        if (!$post_id = absint($received['post_id'])) {
            return $response;
        }
        if (!current_user_can('edit_post', $post_id)) {
            return $response;
        }
        if (($user_id = wp_check_post_lock($post_id)) && $user = get_userdata($user_id)) {
            $error = array('text' => sprintf(__('%s has taken over and is currently editing.'), $user->display_name));
            if ($avatar = get_avatar($user->ID, 64)) {
                if (preg_match("|src='([^']+)'|", $avatar, $matches)) {
                    $error['avatar_src'] = $matches[1];
                }
            }
            $send['lock_error'] = $error;
        } else if ($new_lock = wp_set_post_lock($post_id)) {
            $send['new_lock'] = implode(':', $new_lock);
        }
        $response['wp-refresh-post-lock'] = $send;
    }
    return $response;
}