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