PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.0.4
GiveWP – Donation Plugin and Fundraising Platform v3.0.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 3 years ago DonationHistoryTab 4 years ago EditProfileTab 3 years ago TabsRegister.php 4 years ago
TabsRegister.php
130 lines
1 <?php
2
3 namespace Give\DonorDashboards\Tabs;
4
5 use Give\DonorDashboards\Exceptions\DuplicateTabException;
6 use Give\DonorDashboards\Exceptions\MissingTabException;
7 use Give\DonorDashboards\Tabs\Contracts\Tab;
8
9 /**
10 * @since 2.10.0
11 */
12 class TabsRegister
13 {
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 {
32 return $this->tabs;
33 }
34
35 /**
36 * Checks to see if a tab is registered with the given ID
37 *
38 * @since 2.10.0
39 *
40 * @param string $id
41 *
42 * @return bool
43 */
44 public function hasTab($id)
45 {
46 return isset($this->tabs[$id]);
47 }
48
49 /**
50 * Returns a tab with the given ID
51 *
52 * @since 2.10.0
53 *
54 * @param string $id
55 *
56 * @return string
57 */
58 public function getTab($id)
59 {
60 if ( ! $this->hasTab($id)) {
61 throw new MissingTabException($id);
62 }
63
64 return $this->tabs[$id];
65 }
66
67 /**
68 * Returns all of the registered tab ids
69 *
70 * @since 2.10.0
71 *
72 * @return string[]
73 */
74 public function getRegisteredIds()
75 {
76 return array_keys($this->tabs);
77 }
78
79 /**
80 * Add a tab to the list of tabs
81 *
82 * @since 2.10.0
83 *
84 * @param string $tabClass FQCN of the Tab Class
85 */
86 public function addTab($tabClass)
87 {
88 if ( ! is_subclass_of($tabClass, Tab::class)) {
89 throw new \InvalidArgumentException('Class must extend the ' . Tab::class . ' class');
90 }
91
92 $tabId = $tabClass::id();
93
94 if ($this->hasTab($tabId)) {
95 throw new DuplicateTabException();
96 }
97
98 $this->tabs[$tabId] = $tabClass;
99 }
100
101 /**
102 * Helper for adding a bunch of tabs at once
103 *
104 * @since 2.10.0
105 *
106 * @param string[] $tabClasses
107 */
108 public function addTabs(array $tabClasses)
109 {
110 foreach ($tabClasses as $tabClass) {
111 $this->addTab($tabClass);
112 }
113 }
114
115 public function registerTabRoutes()
116 {
117 foreach (give()->donorDashboardTabs->tabs as $tabClass) {
118 $tab = new $tabClass;
119 $tab->registerRoutes();
120 }
121 }
122
123 public function enqueueTabAssets()
124 {
125 foreach (give()->donorDashboardTabs->tabs as $tabClass) {
126 (new $tabClass)->enqueueAssets();
127 }
128 }
129 }
130