@@ 21-106 (lines=86) @@ | ||
18 | * @author Brent Christensen |
|
19 | * @since $VID:$ |
|
20 | */ |
|
21 | class ConnectionCollection extends Collection |
|
22 | { |
|
23 | ||
24 | const COLLECTION_NAME = 'espresso_graphql_connections'; |
|
25 | ||
26 | /** |
|
27 | * @var CollectionLoader $loader |
|
28 | */ |
|
29 | protected $loader; |
|
30 | ||
31 | /** |
|
32 | * ConnectionCollection constructor |
|
33 | * |
|
34 | * @throws InvalidInterfaceException |
|
35 | */ |
|
36 | public function __construct() |
|
37 | { |
|
38 | parent::__construct( |
|
39 | 'EventEspresso\core\services\graphql\connections\ConnectionInterface', |
|
40 | ConnectionCollection::COLLECTION_NAME |
|
41 | ); |
|
42 | } |
|
43 | ||
44 | ||
45 | /** |
|
46 | * @throws CollectionDetailsException |
|
47 | * @throws CollectionLoaderException |
|
48 | * @since $VID:$ |
|
49 | */ |
|
50 | private function loadCollection() |
|
51 | { |
|
52 | if (! $this->loader instanceof CollectionLoader) { |
|
53 | $this->loader = new CollectionLoader( |
|
54 | new CollectionDetails( |
|
55 | // collection name |
|
56 | ConnectionCollection::COLLECTION_NAME, |
|
57 | // collection interface |
|
58 | 'EventEspresso\core\services\graphql\connections\ConnectionInterface', |
|
59 | // FQCNs for classes to add (all classes within each namespace will be loaded) |
|
60 | apply_filters( |
|
61 | 'FHEE__EventEspresso_core_services_graphql_ConnectionCollection__loadCollection__collection_FQCNs', |
|
62 | ['EventEspresso\core\domain\services\graphql\connections'] |
|
63 | ), |
|
64 | // filepaths to classes to add |
|
65 | array(), |
|
66 | // file mask to use if parsing folder for files to add |
|
67 | '', |
|
68 | // what to use as identifier for collection entities |
|
69 | // using CLASS NAME prevents duplicates (works like a singleton) |
|
70 | CollectionDetails::ID_CLASS_NAME |
|
71 | ), |
|
72 | $this |
|
73 | ); |
|
74 | } |
|
75 | } |
|
76 | ||
77 | ||
78 | /** |
|
79 | * @return CollectionInterface |
|
80 | * @throws CollectionDetailsException |
|
81 | * @throws CollectionLoaderException |
|
82 | * @since $VID:$ |
|
83 | */ |
|
84 | public function loadConnections() |
|
85 | { |
|
86 | $this->loadCollection(); |
|
87 | return $this->loader->getCollection(); |
|
88 | } |
|
89 | ||
90 | ||
91 | /** |
|
92 | * getIdentifier |
|
93 | * Overrides EventEspresso\core\services\collections\Collection::getIdentifier() |
|
94 | * If no $identifier is supplied, then the fully qualified class name is used |
|
95 | * |
|
96 | * @param $object |
|
97 | * @param mixed $identifier |
|
98 | * @return bool |
|
99 | */ |
|
100 | public function getIdentifier($object, $identifier = null) |
|
101 | { |
|
102 | return ! empty($identifier) |
|
103 | ? $identifier |
|
104 | : get_class($object); |
|
105 | } |
|
106 | } |
|
107 |
@@ 21-105 (lines=85) @@ | ||
18 | * @author Manzoor Wani |
|
19 | * @since $VID:$ |
|
20 | */ |
|
21 | class EnumCollection extends Collection |
|
22 | { |
|
23 | const COLLECTION_NAME = 'espresso_graphql_enums'; |
|
24 | ||
25 | /** |
|
26 | * @var CollectionLoader $loader |
|
27 | */ |
|
28 | protected $loader; |
|
29 | ||
30 | /** |
|
31 | * EnumCollection constructor |
|
32 | * |
|
33 | * @throws InvalidInterfaceException |
|
34 | */ |
|
35 | public function __construct() |
|
36 | { |
|
37 | parent::__construct( |
|
38 | 'EventEspresso\core\services\graphql\enums\EnumInterface', |
|
39 | EnumCollection::COLLECTION_NAME |
|
40 | ); |
|
41 | } |
|
42 | ||
43 | ||
44 | /** |
|
45 | * @throws CollectionDetailsException |
|
46 | * @throws CollectionLoaderException |
|
47 | * @since $VID:$ |
|
48 | */ |
|
49 | private function loadCollection() |
|
50 | { |
|
51 | if (! $this->loader instanceof CollectionLoader) { |
|
52 | $this->loader = new CollectionLoader( |
|
53 | new CollectionDetails( |
|
54 | // collection name |
|
55 | EnumCollection::COLLECTION_NAME, |
|
56 | // collection interface |
|
57 | 'EventEspresso\core\services\graphql\enums\EnumInterface', |
|
58 | // FQCNs for classes to add (all classes within each namespace will be loaded) |
|
59 | apply_filters( |
|
60 | 'FHEE__EventEspresso_core_services_graphql_EnumCollection__loadCollection__collection_FQCNs', |
|
61 | ['EventEspresso\core\domain\services\graphql\enums'] |
|
62 | ), |
|
63 | // filepaths to classes to add |
|
64 | array(), |
|
65 | // file mask to use if parsing folder for files to add |
|
66 | '', |
|
67 | // what to use as identifier for collection entities |
|
68 | // using CLASS NAME prevents duplicates (works like a singleton) |
|
69 | CollectionDetails::ID_CLASS_NAME |
|
70 | ), |
|
71 | $this |
|
72 | ); |
|
73 | } |
|
74 | } |
|
75 | ||
76 | ||
77 | /** |
|
78 | * @return CollectionInterface |
|
79 | * @throws CollectionDetailsException |
|
80 | * @throws CollectionLoaderException |
|
81 | * @since $VID:$ |
|
82 | */ |
|
83 | public function loadEnums() |
|
84 | { |
|
85 | $this->loadCollection(); |
|
86 | return $this->loader->getCollection(); |
|
87 | } |
|
88 | ||
89 | ||
90 | /** |
|
91 | * getIdentifier |
|
92 | * Overrides EventEspresso\core\services\collections\Collection::getIdentifier() |
|
93 | * If no $identifier is supplied, then the fully qualified class name is used |
|
94 | * |
|
95 | * @param $object |
|
96 | * @param mixed $identifier |
|
97 | * @return bool |
|
98 | */ |
|
99 | public function getIdentifier($object, $identifier = null) |
|
100 | { |
|
101 | return ! empty($identifier) |
|
102 | ? $identifier |
|
103 | : get_class($object); |
|
104 | } |
|
105 | } |
|
106 |
@@ 21-105 (lines=85) @@ | ||
18 | * @author Manzoor Wani |
|
19 | * @since $VID:$ |
|
20 | */ |
|
21 | class InputCollection extends Collection |
|
22 | { |
|
23 | const COLLECTION_NAME = 'espresso_graphql_inputs'; |
|
24 | ||
25 | /** |
|
26 | * @var CollectionLoader $loader |
|
27 | */ |
|
28 | protected $loader; |
|
29 | ||
30 | /** |
|
31 | * InputCollection constructor |
|
32 | * |
|
33 | * @throws InvalidInterfaceException |
|
34 | */ |
|
35 | public function __construct() |
|
36 | { |
|
37 | parent::__construct( |
|
38 | 'EventEspresso\core\services\graphql\inputs\InputInterface', |
|
39 | InputCollection::COLLECTION_NAME |
|
40 | ); |
|
41 | } |
|
42 | ||
43 | ||
44 | /** |
|
45 | * @throws CollectionDetailsException |
|
46 | * @throws CollectionLoaderException |
|
47 | * @since $VID:$ |
|
48 | */ |
|
49 | private function loadCollection() |
|
50 | { |
|
51 | if (! $this->loader instanceof CollectionLoader) { |
|
52 | $this->loader = new CollectionLoader( |
|
53 | new CollectionDetails( |
|
54 | // collection name |
|
55 | InputCollection::COLLECTION_NAME, |
|
56 | // collection interface |
|
57 | 'EventEspresso\core\services\graphql\inputs\InputInterface', |
|
58 | // FQCNs for classes to add (all classes within each namespace will be loaded) |
|
59 | apply_filters( |
|
60 | 'FHEE__EventEspresso_core_services_graphql_InputCollection__loadCollection__collection_FQCNs', |
|
61 | ['EventEspresso\core\domain\services\graphql\inputs'] |
|
62 | ), |
|
63 | // filepaths to classes to add |
|
64 | array(), |
|
65 | // file mask to use if parsing folder for files to add |
|
66 | '', |
|
67 | // what to use as identifier for collection entities |
|
68 | // using CLASS NAME prevents duplicates (works like a singleton) |
|
69 | CollectionDetails::ID_CLASS_NAME |
|
70 | ), |
|
71 | $this |
|
72 | ); |
|
73 | } |
|
74 | } |
|
75 | ||
76 | ||
77 | /** |
|
78 | * @return CollectionInterface |
|
79 | * @throws CollectionDetailsException |
|
80 | * @throws CollectionLoaderException |
|
81 | * @since $VID:$ |
|
82 | */ |
|
83 | public function loadInputs() |
|
84 | { |
|
85 | $this->loadCollection(); |
|
86 | return $this->loader->getCollection(); |
|
87 | } |
|
88 | ||
89 | ||
90 | /** |
|
91 | * getIdentifier |
|
92 | * Overrides EventEspresso\core\services\collections\Collection::getIdentifier() |
|
93 | * If no $identifier is supplied, then the fully qualified class name is used |
|
94 | * |
|
95 | * @param $object |
|
96 | * @param mixed $identifier |
|
97 | * @return bool |
|
98 | */ |
|
99 | public function getIdentifier($object, $identifier = null) |
|
100 | { |
|
101 | return ! empty($identifier) |
|
102 | ? $identifier |
|
103 | : get_class($object); |
|
104 | } |
|
105 | } |
|
106 |
@@ 21-106 (lines=86) @@ | ||
18 | * @author Brent Christensen |
|
19 | * @since $VID:$ |
|
20 | */ |
|
21 | class ResolverCollection extends Collection |
|
22 | { |
|
23 | ||
24 | const COLLECTION_NAME = 'espresso_graphql_resolvers'; |
|
25 | ||
26 | /** |
|
27 | * @var CollectionLoader $loader |
|
28 | */ |
|
29 | protected $loader; |
|
30 | ||
31 | /** |
|
32 | * ResolverCollection constructor |
|
33 | * |
|
34 | * @throws InvalidInterfaceException |
|
35 | */ |
|
36 | public function __construct() |
|
37 | { |
|
38 | parent::__construct( |
|
39 | 'EventEspresso\core\services\graphql\ResolverInterface', |
|
40 | ResolverCollection::COLLECTION_NAME |
|
41 | ); |
|
42 | } |
|
43 | ||
44 | ||
45 | /** |
|
46 | * @throws CollectionDetailsException |
|
47 | * @throws CollectionLoaderException |
|
48 | * @since $VID:$ |
|
49 | */ |
|
50 | private function loadCollection() |
|
51 | { |
|
52 | if (! $this->loader instanceof CollectionLoader) { |
|
53 | $this->loader = new CollectionLoader( |
|
54 | new CollectionDetails( |
|
55 | // collection name |
|
56 | ResolverCollection::COLLECTION_NAME, |
|
57 | // collection interface |
|
58 | 'EventEspresso\core\services\graphql\ResolverInterface', |
|
59 | // FQCNs for classes to add (all classes within each namespace will be loaded) |
|
60 | apply_filters( |
|
61 | 'FHEE__EventEspresso_core_services_graphql_ResolverCollection__loadCollection__collection_FQCNs', |
|
62 | ['EventEspresso\core\domain\services\graphql\resolvers'] |
|
63 | ), |
|
64 | // filepaths to classes to add |
|
65 | array(), |
|
66 | // file mask to use if parsing folder for files to add |
|
67 | '', |
|
68 | // what to use as identifier for collection entities |
|
69 | // using CLASS NAME prevents duplicates (works like a singleton) |
|
70 | CollectionDetails::ID_CLASS_NAME |
|
71 | ), |
|
72 | $this |
|
73 | ); |
|
74 | } |
|
75 | } |
|
76 | ||
77 | ||
78 | /** |
|
79 | * @return CollectionInterface |
|
80 | * @throws CollectionDetailsException |
|
81 | * @throws CollectionLoaderException |
|
82 | * @since $VID:$ |
|
83 | */ |
|
84 | public function loadResolvers() |
|
85 | { |
|
86 | $this->loadCollection(); |
|
87 | return $this->loader->getCollection(); |
|
88 | } |
|
89 | ||
90 | ||
91 | /** |
|
92 | * getIdentifier |
|
93 | * Overrides EventEspresso\core\services\collections\Collection::getIdentifier() |
|
94 | * If no $identifier is supplied, then the fully qualified class name is used |
|
95 | * |
|
96 | * @param $object |
|
97 | * @param mixed $identifier |
|
98 | * @return bool |
|
99 | */ |
|
100 | public function getIdentifier($object, $identifier = null) |
|
101 | { |
|
102 | return ! empty($identifier) |
|
103 | ? $identifier |
|
104 | : get_class($object); |
|
105 | } |
|
106 | } |
|
107 |
@@ 21-107 (lines=87) @@ | ||
18 | * @author Brent Christensen |
|
19 | * @since $VID:$ |
|
20 | */ |
|
21 | class TypeCollection extends Collection |
|
22 | { |
|
23 | ||
24 | const COLLECTION_NAME = 'espresso_graphql_types'; |
|
25 | ||
26 | /** |
|
27 | * @var CollectionLoader $loader |
|
28 | */ |
|
29 | protected $loader; |
|
30 | ||
31 | ||
32 | /** |
|
33 | * TypeCollection constructor |
|
34 | * |
|
35 | * @throws InvalidInterfaceException |
|
36 | */ |
|
37 | public function __construct() |
|
38 | { |
|
39 | parent::__construct( |
|
40 | 'EventEspresso\core\services\graphql\types\TypeInterface', |
|
41 | TypeCollection::COLLECTION_NAME |
|
42 | ); |
|
43 | } |
|
44 | ||
45 | ||
46 | /** |
|
47 | * @throws CollectionDetailsException |
|
48 | * @throws CollectionLoaderException |
|
49 | * @since $VID:$ |
|
50 | */ |
|
51 | private function loadCollection() |
|
52 | { |
|
53 | if (! $this->loader instanceof CollectionLoader) { |
|
54 | $this->loader = new CollectionLoader( |
|
55 | new CollectionDetails( |
|
56 | // collection name |
|
57 | TypeCollection::COLLECTION_NAME, |
|
58 | // collection interface |
|
59 | 'EventEspresso\core\services\graphql\types\TypeInterface', |
|
60 | // FQCNs for classes to add (all classes within each namespace will be loaded) |
|
61 | apply_filters( |
|
62 | 'FHEE__EventEspresso_core_services_graphql_TypeCollection__loadCollection__collection_FQCNs', |
|
63 | ['EventEspresso\core\domain\services\graphql\types'] |
|
64 | ), |
|
65 | // filepaths to classes to add |
|
66 | array(), |
|
67 | // file mask to use if parsing folder for files to add |
|
68 | '', |
|
69 | // what to use as identifier for collection entities |
|
70 | // using CLASS NAME prevents duplicates (works like a singleton) |
|
71 | CollectionDetails::ID_CLASS_NAME |
|
72 | ), |
|
73 | $this |
|
74 | ); |
|
75 | } |
|
76 | } |
|
77 | ||
78 | ||
79 | /** |
|
80 | * @return CollectionInterface |
|
81 | * @throws CollectionDetailsException |
|
82 | * @throws CollectionLoaderException |
|
83 | * @since $VID:$ |
|
84 | */ |
|
85 | public function loadTypes() |
|
86 | { |
|
87 | $this->loadCollection(); |
|
88 | return $this->loader->getCollection(); |
|
89 | } |
|
90 | ||
91 | ||
92 | /** |
|
93 | * getIdentifier |
|
94 | * Overrides EventEspresso\core\services\collections\Collection::getIdentifier() |
|
95 | * If no $identifier is supplied, then the fully qualified class name is used |
|
96 | * |
|
97 | * @param $object |
|
98 | * @param mixed $identifier |
|
99 | * @return bool |
|
100 | */ |
|
101 | public function getIdentifier($object, $identifier = null) |
|
102 | { |
|
103 | return ! empty($identifier) |
|
104 | ? $identifier |
|
105 | : get_class($object); |
|
106 | } |
|
107 | } |
|
108 |