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