first commit
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
namespace ElementorPro\Modules\Notes\Database\Transformers;
|
||||
|
||||
use ElementorPro\Modules\Notes\Database\Models\User;
|
||||
use ElementorPro\Modules\Notes\User\Capabilities;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly
|
||||
}
|
||||
|
||||
class User_Transformer {
|
||||
|
||||
/**
|
||||
* Apply transformations to the $user received.
|
||||
*
|
||||
* @param User $user
|
||||
* @param array $dependencies{post_id: int}
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function transform( User $user, $dependencies = [] ) {
|
||||
return $this->add_capabilities( $this->map_properties( $user ), $dependencies );
|
||||
}
|
||||
|
||||
/**
|
||||
* Maps the user properties to new keys.
|
||||
*
|
||||
* @param User $user
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function map_properties( User $user ) {
|
||||
// TODO: This response might be visible to unauthorized users.
|
||||
// DON'T INCLUDE ANY SENSITIVE DATA.
|
||||
return [
|
||||
'id' => $user->ID,
|
||||
'name' => $user->display_name,
|
||||
'url' => $user->user_url,
|
||||
'slug' => $user->user_nicename,
|
||||
'avatar_urls' => $user->get_avatars()->all(),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Add user capabilities to the user object.
|
||||
*
|
||||
* @param array $user
|
||||
* @param array $dependencies
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function add_capabilities( array $user, $dependencies ) {
|
||||
$user['capabilities']['notes']['can_read'] = Capabilities::can_read_notes( $user['id'] );
|
||||
|
||||
if ( ! empty( $dependencies['post_id'] ) ) {
|
||||
$user['capabilities']['post']['can_edit'] = Capabilities::can_edit_post( $user['id'], $dependencies['post_id'] );
|
||||
}
|
||||
|
||||
return $user;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user