1
+ <?php
2
+
3
+ namespace DuncanMcClean \SimpleCommerce \Fieldtypes ;
4
+
5
+ use DuncanMcClean \SimpleCommerce \Customers \GuestCustomer ;
6
+ use Statamic \Facades \Blueprint ;
7
+ use Statamic \Facades \User ;
8
+ use Statamic \Fields \Field ;
9
+ use Statamic \Fields \Fieldtype ;
10
+
11
+ class CustomerFieldtype extends Fieldtype
12
+ {
13
+ public function preload ()
14
+ {
15
+ $ userField = new Field ('user ' , [
16
+ 'type ' => 'users ' ,
17
+ 'max_items ' => 1 ,
18
+ ]);
19
+
20
+ $ guestBlueprint = Blueprint::makeFromFields ([
21
+ 'name ' => ['type ' => 'text ' ],
22
+ 'email ' => ['type ' => 'text ' ],
23
+ ]);
24
+
25
+ return [
26
+ 'user ' => $ userField ->meta (),
27
+ 'guest ' => $ guestBlueprint ->fields ()->meta (),
28
+ ];
29
+ }
30
+
31
+ public function preProcess ($ data )
32
+ {
33
+ if (! is_object ($ data )) {
34
+ return [
35
+ 'id ' => $ data ,
36
+ 'invalid ' => true ,
37
+ ];
38
+ }
39
+
40
+ if ($ data instanceof GuestCustomer) {
41
+ return [
42
+ 'type ' => 'guest ' ,
43
+ 'id ' => $ data ->id (),
44
+ 'reference ' => $ data ->id (),
45
+ 'name ' => $ data ->name (),
46
+ 'email ' => $ data ->email (),
47
+ 'viewable ' => true ,
48
+ 'editable ' => false ,
49
+ ];
50
+ }
51
+
52
+ return [
53
+ 'type ' => 'user ' ,
54
+ 'id ' => $ data ->id (),
55
+ 'reference ' => $ data ->reference (),
56
+ 'name ' => $ data ->name (),
57
+ 'email ' => $ data ->email (),
58
+ 'viewable ' => User::current ()->can ('view ' , $ data ),
59
+ 'editable ' => User::current ()->can ('view ' , $ data ),
60
+ 'edit_url ' => $ data ->editUrl (),
61
+ ];
62
+ }
63
+ }
0 commit comments