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