IntegrationRepository.php
1.46 KB
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
<?php
namespace AC;
class IntegrationRepository {
const ARG_FILTER = 'filter';
/**
* @return Integrations
*/
private function all() {
return new Integrations( [
new Integration\ACF(),
new Integration\BuddyPress(),
new Integration\EventsCalendar(),
new Integration\GravityForms(),
new Integration\JetEngine(),
new Integration\Pods(),
new Integration\Types(),
new Integration\MetaBox(),
new Integration\MediaLibraryAssistant(),
new Integration\WooCommerce(),
new Integration\YoastSeo(),
] );
}
/**
* @param string $basename
*
* @return Integration|null
*/
public function find_by_basename( $basename ) {
foreach ( $this->find_all()->all() as $integration ) {
if ( $integration->get_basename() === $basename ) {
return $integration;
}
}
return null;
}
/**
* @param string $slug
*
* @return Integration|null
*/
public function find_by_slug( $slug ) {
foreach ( $this->find_all()->all() as $integration ) {
if ( $integration->get_slug() === $slug ) {
return $integration;
}
}
return null;
}
/**
* @param array $args
*
* @return Integrations
*/
public function find_all( array $args = [] ) {
$integrations = $this->all();
$args = array_merge( [
self::ARG_FILTER => [],
], $args );
foreach ( $args[ self::ARG_FILTER ] as $filter ) {
if ( $filter instanceof Integration\Filter ) {
$integrations = $filter->filter( $integrations );
}
}
return $integrations;
}
}