PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.13.2
GiveWP – Donation Plugin and Fundraising Platform v2.13.2
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 5 years ago Tabs 5 years ago resources 4 years ago App.php 5 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
184 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 'registeredTabs' => give()->donorDashboardTabs->getRegisteredIds(),
164 'loggedInWithoutDonor' => get_current_user_id() !== 0 && give()->donorDashboard->getId() === null ? true : false,
165 'recaptchaKey' => $recaptcha_enabled ? $recaptcha_key : '',
166 ]
167 );
168
169 wp_enqueue_style(
170 'give-google-font-montserrat',
171 'https://fonts.googleapis.com/css?family=Montserrat:500,500i,600,600i,700,700i&display=swap',
172 [],
173 null
174 );
175
176 wp_enqueue_style(
177 'give-donor-dashboards-app',
178 GIVE_PLUGIN_URL . 'assets/dist/css/donor-dashboards-app.css',
179 [ 'give-google-font-montserrat' ],
180 GIVE_VERSION
181 );
182 }
183 }
184