PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.12.3
GiveWP – Donation Plugin and Fundraising Platform v2.12.3
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
122 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
9 /**
10 * @since 2.10.0
11 */
12 class TabsRegister {
13 /**
14 * FQCN of Tab classes
15 *
16 * @since 2.10.0
17 *
18 * @var string[]
19 */
20 private $tabs = [];
21
22 /**
23 * Returns all of the registered tabs
24 *
25 * @since 2.10.0
26 *
27 * @return string[]
28 */
29 public function getTabs() {
30 return $this->tabs;
31 }
32
33 /**
34 * Checks to see if a tab is registered with the given ID
35 *
36 * @since 2.10.0
37 *
38 * @param string $id
39 *
40 * @return bool
41 */
42 public function hasTab( $id ) {
43 return isset( $this->tabs[ $id ] );
44 }
45
46 /**
47 * Returns a tab with the given ID
48 *
49 * @since 2.10.0
50 *
51 * @param string $id
52 *
53 * @return string
54 */
55 public function getTab( $id ) {
56 if ( ! $this->hasTab( $id ) ) {
57 throw new MissingTabException( $id );
58 }
59
60 return $this->tabs[ $id ];
61 }
62
63 /**
64 * Returns all of the registered tab ids
65 *
66 * @since 2.10.0
67 *
68 * @return string[]
69 */
70 public function getRegisteredIds() {
71 return array_keys( $this->tabs );
72 }
73
74 /**
75 * Add a tab to the list of tabs
76 *
77 * @since 2.10.0
78 *
79 * @param string $tabClass FQCN of the Tab Class
80 */
81 public function addTab( $tabClass ) {
82 if ( ! is_subclass_of( $tabClass, Tab::class ) ) {
83 throw new \InvalidArgumentException( 'Class must extend the ' . Tab::class . ' class' );
84 }
85
86 $tabId = $tabClass::id();
87
88 if ( $this->hasTab( $tabId ) ) {
89 throw new DuplicateTabException();
90 }
91
92 $this->tabs[ $tabId ] = $tabClass;
93
94 }
95
96 /**
97 * Helper for adding a bunch of tabs at once
98 *
99 * @since 2.10.0
100 *
101 * @param string[] $tabClasses
102 */
103 public function addTabs( array $tabClasses ) {
104 foreach ( $tabClasses as $tabClass ) {
105 $this->addTab( $tabClass );
106 }
107 }
108
109 public function registerTabRoutes() {
110 foreach ( give()->donorDashboardTabs->tabs as $tabClass ) {
111 $tab = new $tabClass;
112 $tab->registerRoutes();
113 }
114 }
115
116 public function enqueueTabAssets() {
117 foreach ( give()->donorDashboardTabs->tabs as $tabClass ) {
118 ( new $tabClass )->enqueueAssets();
119 }
120 }
121 }
122