1: <?php
2:
3: 4: 5: 6:
7: class Papi_Property_User extends Papi_Property_Dropdown {
8:
9: 10: 11: 12: 13:
14: public $convert_type = 'int';
15:
16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
26: public function format_value( $value, $slug, $post_id ) {
27: if ( is_object( $value ) && isset( $value->ID ) ) {
28: $value = $value->ID;
29: }
30:
31: if ( is_numeric( $value ) ) {
32: return new WP_User( $value );
33: }
34:
35: return $value;
36: }
37:
38: 39: 40: 41: 42:
43: public function get_default_settings() {
44: return [
45: 'capabilities' => [],
46: 'placeholder' => '',
47: 'select2' => true
48: ];
49: }
50:
51: 52: 53: 54: 55:
56: public function get_value() {
57: $user = parent::get_value();
58:
59: if ( is_object( $user ) && isset( $user->ID ) ) {
60: return $user->ID;
61: }
62:
63: return 0;
64: }
65:
66: 67: 68: 69: 70:
71: public function get_items() {
72: $capabilities = papi_to_array( $this->get_setting( 'capabilities' ) );
73: $users = get_users();
74: $items = [];
75:
76: foreach ( $users as $user ) {
77: $allcaps = $user->allcaps;
78:
79: if ( count( array_diff( $capabilities, array_keys( $allcaps ) ) ) === 0 ) {
80: $items[$user->display_name] = $user->ID;
81: }
82: }
83:
84: return $items;
85: }
86:
87: 88: 89: 90: 91: 92: 93: 94: 95:
96: public function import_value( $value, $slug, $post_id ) {
97: if ( $value instanceof WP_User ) {
98: $value = $value->ID;
99: }
100:
101: if ( is_numeric( $value ) ) {
102: return (int) $value;
103: }
104:
105: return $this->default_value;
106: }
107:
108: 109: 110: 111: 112: 113: 114: 115: 116:
117: public function load_value( $value, $slug, $post_id ) {
118: return (int) $value;
119: }
120:
121: 122: 123: 124: 125: 126: 127: 128: 129:
130: public function update_value( $value, $slug, $post_id ) {
131: if ( $value instanceof WP_User ) {
132: $value = $value->ID;
133: }
134:
135: return (int) $value;
136: }
137: }
138: