PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.16.3
GiveWP – Donation Plugin and Fundraising Platform v3.16.3
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 / App.php
give / src / DonorDashboards Last commit date
Admin 4 years ago Exceptions 4 years ago Factories 4 years ago Helpers 4 years ago Pipeline 1 year ago Repositories 3 years ago Routes 2 years ago Tabs 1 year ago resources 1 year ago App.php 2 years ago Block.php 2 years ago Helpers.php 1 year ago Profile.php 1 year ago RequestHandler.php 4 years ago ServiceProvider.php 2 years ago Shortcode.php 2 years ago
App.php
213 lines
1 <?php
2
3 namespace Give\DonorDashboards;
4
5 use Give\DonorDashboards\Helpers\LocationList;
6 use Give\Helpers\EnqueueScript;
7
8 /**
9 * Class App
10 * @package Give\DonorDashboards
11 *
12 * @since 2.10.2
13 */
14 class App
15 {
16 /**
17 * @var Profile
18 */
19 protected $profile;
20
21 /**
22 * App constructor.
23 */
24 public function __construct()
25 {
26 $this->profile = new Profile();
27 }
28
29 /**
30 * @since 3.6.0 Escape attributes
31 *
32 * @param array $attributes
33 *
34 * @return string
35 */
36 public function getOutput($attributes)
37 {
38 $url = get_site_url() . '/?give-embed=donor-dashboard';
39
40 $queryArgs = [];
41
42 if (isset($attributes['accent_color'])) {
43 $queryArgs['accent-color'] = urlencode(esc_attr($attributes['accent_color']));
44 }
45
46 if (isset($_GET['give_nl'])) {
47 $queryArgs['give_nl'] = urlencode(give_clean($_GET['give_nl']));
48 }
49
50 if (isset($_GET['_give_hash'])) {
51 $queryArgs['_give_hash'] = urlencode(give_clean($_GET['_give_hash']));
52 }
53
54 if (isset($_GET['action'])) {
55 $queryArgs['action'] = urlencode(give_clean($_GET['action']));
56 }
57
58 $url = esc_url(add_query_arg($queryArgs, $url));
59
60 $loader = $this->getIframeLoader(esc_attr($attributes['accent_color']));
61
62 return sprintf(
63 '<div style="position: relative; max-width: 100%%;"><iframe
64 name="give-embed-donor-profile"
65 %1$s
66 %4$s
67 data-autoScroll="%2$s"
68 onload="if( \'undefined\' !== typeof Give ) { Give.initializeIframeResize(this) }"
69 style="border: 0;visibility: hidden;%3$s"></iframe>%5$s</div>',
70 "src=\"{$url}#/dashboard\"",
71 true,
72 'min-height: 776px; width: 100%; max-width: 100% !important;',
73 '',
74 $loader
75 );
76 }
77
78 /**
79 * Get output markup for Donor Dashboard app
80 *
81 * @since 2.10.0
82 *
83 * @param string $accentColor
84 *
85 * @return string
86 */
87 public function getIframeLoader($accentColor)
88 {
89 ob_start();
90
91 require $this->getLoaderTemplatePath();
92
93 return ob_get_clean();
94 }
95
96 /**
97 * Get output markup for Donor Dashboard app
98 *
99 * @since 2.10.0
100 * @return string
101 */
102 public function getIframeContent()
103 {
104 ob_start();
105
106 require $this->getTemplatePath();
107
108 return ob_get_clean();
109 }
110
111 /**
112 * Get template path for Donor Dashboard component template
113 * @since 2.10.0
114 **/
115 public function getTemplatePath()
116 {
117 return GIVE_PLUGIN_DIR . '/src/DonorDashboards/resources/views/donordashboard.php';
118 }
119
120 /**
121 * Get template path for Donor Dashboard component template
122 * @since 2.10.0
123 **/
124 public function getLoaderTemplatePath()
125 {
126 return GIVE_PLUGIN_DIR . '/src/DonorDashboards/resources/views/donordashboardloader.php';
127 }
128
129 /**
130 * Enqueue assets for front-end donor dashboards
131 *
132 * @since 2.10.0
133 * @since 2.11.0 Set script translations.
134 *
135 * @return void
136 */
137 public function loadAssets()
138 {
139 // Load assets only if rendering donor dashboard.
140 if (!isset($_GET['give-embed']) || 'donor-dashboard' !== $_GET['give-embed']) {
141 return;
142 }
143
144 $recaptcha_key = give_get_option('recaptcha_key');
145 $recaptcha_secret = give_get_option('recaptcha_secret');
146 $recaptcha_enabled = (give_is_setting_enabled(give_get_option('enable_recaptcha'))) &&
147 !empty($recaptcha_key) && !empty($recaptcha_secret);
148
149 $data = [
150 'apiRoot' => esc_url_raw(rest_url()),
151 'apiNonce' => wp_create_nonce('wp_rest'),
152 'profile' => give()->donorDashboard->getProfileData(),
153 'countries' => LocationList::getCountries(),
154 'states' => LocationList::getStates(give()->donorDashboard->getCountry()),
155 'id' => give()->donorDashboard->getId(),
156 'emailAccessEnabled' => give_is_setting_enabled(give_get_option('email_access')),
157 'loginEnabled' => $this->loginEnabled(),
158 'registeredTabs' => give()->donorDashboardTabs->getRegisteredIds(),
159 'loggedInWithoutDonor' => get_current_user_id() !== 0 && give()->donorDashboard->getId() === null,
160 'recaptchaKey' => $recaptcha_enabled ? $recaptcha_key : '',
161 ];
162
163 EnqueueScript::make(
164 'give-donor-dashboards-app',
165 'assets/dist/js/donor-dashboards-app.js'
166 )
167 ->loadInFooter()
168 ->registerTranslations()
169 ->registerLocalizeData('giveDonorDashboardData', $data)
170 ->enqueue();
171
172 wp_enqueue_style(
173 'give-google-font-montserrat',
174 'https://fonts.googleapis.com/css?family=Montserrat:500,500i,600,600i,700,700i&display=swap',
175 [],
176 null
177 );
178 }
179
180 /**
181 * Determine if the login should be enabled.
182 *
183 * @since 2.15.0
184 *
185 * @return bool
186 */
187 protected function loginEnabled()
188 {
189 // We need to get all the form IDs.
190 $formIds = get_posts(
191 [
192 'fields' => 'ids',
193 'numberposts' => -1,
194 'post_status' => 'publish',
195 'post_type' => 'give_forms',
196 ]
197 );
198
199 // By default, the login is disabled.
200 $loginEnabled = false;
201 foreach ($formIds as $formId) {
202 if (give_show_login_register_option($formId) !== 'none') {
203 // Once there is a single form that it is enabled, we can bail out
204 // early since the login needs to be enabled.
205 $loginEnabled = true;
206 break;
207 }
208 }
209
210 return $loginEnabled;
211 }
212 }
213