PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.10.0
GiveWP – Donation Plugin and Fundraising Platform v2.10.0
4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / DonorDashboards / Tabs / TabsRegister.php
give / src / DonorDashboards / Tabs Last commit date
Contracts 5 years ago DonationHistoryTab 5 years ago EditProfileTab 5 years ago TabsRegister.php 5 years ago
TabsRegister.php
123 lines
1 <?php
2
3 namespace Give\DonorDashboards\Tabs;
4
5 use Give\DonorDashboards\Tabs\Contracts\Tab;
6 use Give\DonorDashboards\Exceptions\MissingTabException;
7 use Give\DonorDashboards\Exceptions\DuplicateTabException;
8 use http\Exception\InvalidArgumentException;
9
10 /**
11 * @since 2.10.0
12 */
13 class TabsRegister {
14 /**
15 * FQCN of Tab classes
16 *
17 * @since 2.10.0
18 *
19 * @var string[]
20 */
21 private $tabs = [];
22
23 /**
24 * Returns all of the registered tabs
25 *
26 * @since 2.10.0
27 *
28 * @return string[]
29 */
30 public function getTabs() {
31 return $this->tabs;
32 }
33
34 /**
35 * Checks to see if a tab is registered with the given ID
36 *
37 * @since 2.10.0
38 *
39 * @param string $id
40 *
41 * @return bool
42 */
43 public function hasTab( $id ) {
44 return isset( $this->tabs[ $id ] );
45 }
46
47 /**
48 * Returns a tab with the given ID
49 *
50 * @since 2.10.0
51 *
52 * @param string $id
53 *
54 * @return string
55 */
56 public function getTab( $id ) {
57 if ( ! $this->hasTab( $id ) ) {
58 throw new MissingTabException( $id );
59 }
60
61 return $this->tabs[ $id ];
62 }
63
64 /**
65 * Returns all of the registered tab ids
66 *
67 * @since 2.10.0
68 *
69 * @return string[]
70 */
71 public function getRegisteredIds() {
72 return array_keys( $this->tabs );
73 }
74
75 /**
76 * Add a tab to the list of tabs
77 *
78 * @since 2.10.0
79 *
80 * @param string $tabClass FQCN of the Tab Class
81 */
82 public function addTab( $tabClass ) {
83 if ( ! is_subclass_of( $tabClass, Tab::class ) ) {
84 throw new \InvalidArgumentException( 'Class must extend the ' . Tab::class . ' class' );
85 }
86
87 $tabId = $tabClass::id();
88
89 if ( $this->hasTab( $tabId ) ) {
90 throw new DuplicateTabException();
91 }
92
93 $this->tabs[ $tabId ] = $tabClass;
94
95 }
96
97 /**
98 * Helper for adding a bunch of tabs at once
99 *
100 * @since 2.10.0
101 *
102 * @param string[] $tabClasses
103 */
104 public function addTabs( array $tabClasses ) {
105 foreach ( $tabClasses as $tabClass ) {
106 $this->addTab( $tabClass );
107 }
108 }
109
110 public function registerTabRoutes() {
111 foreach ( give()->donorDashboardTabs->tabs as $tabClass ) {
112 $tab = new $tabClass;
113 $tab->registerRoutes();
114 }
115 }
116
117 public function enqueueTabAssets() {
118 foreach ( give()->donorDashboardTabs->tabs as $tabClass ) {
119 ( new $tabClass )->enqueueAssets();
120 }
121 }
122 }
123