1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
<?php
namespace WPGraphQL\Type\EditLock;
use GraphQL\Type\Definition\ResolveInfo;
use WPGraphQL\AppContext;
use WPGraphQL\Data\DataSource;
use WPGraphQL\Type\WPObjectType;
use WPGraphQL\Types;
class EditLockType extends WPObjectType {
private static $type_name;
private static $fields;
public function __construct() {
self::$type_name = 'EditLock';
$config = [
'name' => self::$type_name,
'description' => __( 'Info on whether the object is locked by another user editing it', 'wp-graphql' ),
'fields' => function() {
return self::fields();
},
];
parent::__construct( $config );
}
protected static function fields() {
if ( null === self::$fields ) {
$fields = [
'editTime' => [
'type' => Types::string(),
'description' => __( 'The time when the object was last edited', 'wp-graphql' ),
'resolve' => function( $edit_lock, array $args, AppContext $context, ResolveInfo $info ) {
$time = ( is_array( $edit_lock ) && ! empty( $edit_lock[0] ) ) ? $edit_lock[0] : null;
return ! empty( $time ) ? date( 'Y-m-d H:i:s', $time ) : null;
},
],
'user' => [
'type' => Types::user(),
'description' => __( 'The user that most recently edited the object', 'wp-graphql' ),
'resolve' => function( $edit_lock, array $args, AppContext $context, ResolveInfo $info ) {
$user_id = ( is_array( $edit_lock ) && ! empty( $edit_lock[1] ) ) ? $edit_lock[1] : null;
return ! empty( $user_id ) ? DataSource::resolve_user( $user_id ) : null;
},
],
];
self::$fields = self::prepare_fields( $fields, self::$type_name );
}
return ! empty( self::$fields ) ? self::$fields : null;
}
}