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