PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.19.4
GiveWP – Donation Plugin and Fundraising Platform v3.19.4
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 1 year 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
216 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 3.19.0 Add action to allow enqueueing additional assets.
133 * @since 2.11.0 Set script translations.
134 * @since 2.10.0
135 *
136 * @return void
137 */
138 public function loadAssets()
139 {
140 // Load assets only if rendering donor dashboard.
141 if (!isset($_GET['give-embed']) || 'donor-dashboard' !== $_GET['give-embed']) {
142 return;
143 }
144
145 $recaptcha_key = give_get_option('recaptcha_key');
146 $recaptcha_secret = give_get_option('recaptcha_secret');
147 $recaptcha_enabled = (give_is_setting_enabled(give_get_option('enable_recaptcha'))) &&
148 !empty($recaptcha_key) && !empty($recaptcha_secret);
149
150 $data = [
151 'apiRoot' => esc_url_raw(rest_url()),
152 'apiNonce' => wp_create_nonce('wp_rest'),
153 'profile' => give()->donorDashboard->getProfileData(),
154 'countries' => LocationList::getCountries(),
155 'states' => LocationList::getStates(give()->donorDashboard->getCountry()),
156 'id' => give()->donorDashboard->getId(),
157 'emailAccessEnabled' => give_is_setting_enabled(give_get_option('email_access')),
158 'loginEnabled' => $this->loginEnabled(),
159 'registeredTabs' => give()->donorDashboardTabs->getRegisteredIds(),
160 'loggedInWithoutDonor' => get_current_user_id() !== 0 && give()->donorDashboard->getId() === null,
161 'recaptchaKey' => $recaptcha_enabled ? $recaptcha_key : '',
162 ];
163
164 EnqueueScript::make(
165 'give-donor-dashboards-app',
166 'assets/dist/js/donor-dashboards-app.js'
167 )
168 ->loadInFooter()
169 ->registerTranslations()
170 ->registerLocalizeData('giveDonorDashboardData', $data)
171 ->enqueue();
172
173 wp_enqueue_style(
174 'give-google-font-montserrat',
175 'https://fonts.googleapis.com/css?family=Montserrat:500,500i,600,600i,700,700i&display=swap',
176 [],
177 null
178 );
179
180 do_action('give_donor_dashboard_enqueue_assets');
181 }
182
183 /**
184 * Determine if the login should be enabled.
185 *
186 * @since 2.15.0
187 *
188 * @return bool
189 */
190 protected function loginEnabled()
191 {
192 // We need to get all the form IDs.
193 $formIds = get_posts(
194 [
195 'fields' => 'ids',
196 'numberposts' => -1,
197 'post_status' => 'publish',
198 'post_type' => 'give_forms',
199 ]
200 );
201
202 // By default, the login is disabled.
203 $loginEnabled = false;
204 foreach ($formIds as $formId) {
205 if (give_show_login_register_option($formId) !== 'none') {
206 // Once there is a single form that it is enabled, we can bail out
207 // early since the login needs to be enabled.
208 $loginEnabled = true;
209 break;
210 }
211 }
212
213 return $loginEnabled;
214 }
215 }
216