PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.9.1
GiveWP – Donation Plugin and Fundraising Platform v2.9.1
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 / Onboarding / Wizard / Page.php
give / src / Onboarding / Wizard Last commit date
templates 5 years ago FormPreview.php 5 years ago Page.php 5 years ago
Page.php
213 lines
1 <?php
2
3 namespace Give\Onboarding\Wizard;
4
5 defined( 'ABSPATH' ) || exit;
6
7 use Give\Onboarding\Helpers\FormatList;
8 use Give\Onboarding\FormRepository;
9 use Give\Onboarding\SettingsRepositoryFactory;
10 use Give\Onboarding\LocaleCollection;
11 use Give\Onboarding\Helpers\LocationList;
12 use Give\Onboarding\Setup\Page as SetupPage;
13
14 /**
15 * Onboarding Wizard admin page class
16 *
17 * Responsible for setting up and rendering Onboarding Wizard page at
18 * wp-admin/?page=give-onboarding-wizard
19 *
20 * @since 2.8.0
21 */
22 class Page {
23
24 /** @var string $slug Page slug used for displaying onboarding wizard */
25 protected $slug = 'give-onboarding-wizard';
26
27 /** @var FormRepository */
28 protected $formRepository;
29
30 /** @var SettingsRepository */
31 protected $settingsRepository;
32
33 /** @var SettingsRepository */
34 protected $onboardingSettingsRepository;
35
36 /** @var LocaleCollection */
37 protected $localeCollection;
38
39 /**
40 * @param FormRepository $formRepository
41 * @param SettingsRepositoryFactory $settingsRepositoryFactory
42 */
43 public function __construct(
44 FormRepository $formRepository,
45 SettingsRepositoryFactory $settingsRepositoryFactory,
46 LocaleCollection $localeCollection
47 ) {
48 $this->formRepository = $formRepository;
49 $this->settingsRepository = $settingsRepositoryFactory->make( 'give_settings' );
50 $this->onboardingSettingsRepository = $settingsRepositoryFactory->make( 'give_onboarding' );
51 $this->localeCollection = $localeCollection;
52 }
53
54 /**
55 * Adds Onboarding Wizard as dashboard page
56 *
57 * Register Onboarding Wizard as an admin page route
58 *
59 * @since 2.8.0
60 **/
61 public function add_page() {
62 add_submenu_page( '', '', '', 'manage_options', $this->slug );
63 }
64
65 /**
66 * Conditionally renders Onboarding Wizard
67 *
68 * If the current page query matches the onboarding wizard's slug, method renders the onboarding wizard.
69 *
70 * @since 2.8.0
71 **/
72 public function setup_wizard() {
73 if ( empty( $_GET['page'] ) || $this->slug !== $_GET['page'] ) { // WPCS: CSRF ok, input var ok.
74 return;
75 } else {
76 $this->render_page();
77 }
78 }
79
80 /**
81 * Renders onboarding wizard markup
82 *
83 * Uses an object buffer to display the onboarding wizard template
84 *
85 * @since 2.8.0
86 **/
87 public function render_page() {
88
89 ob_start();
90 include_once plugin_dir_path( __FILE__ ) . 'templates/index.php';
91 exit;
92
93 }
94
95 /**
96 * Enqueues onboarding wizard scripts/styles
97 *
98 * Enqueues scripts/styles necessary for loading the Onboarding Wizard React app,
99 * and localizes some additional data for the app to access.
100 *
101 * @since 2.8.0
102 **/
103 public function enqueue_scripts() {
104
105 if ( empty( $_GET['page'] ) || $this->slug !== $_GET['page'] ) { // WPCS: CSRF ok, input var ok.
106 return;
107 }
108
109 wp_enqueue_style(
110 'give-google-font-montserrat',
111 'https://fonts.googleapis.com/css?family=Montserrat:100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i&display=swap',
112 [],
113 null
114 );
115
116 wp_enqueue_style(
117 'give-google-font-open-sans',
118 'https://fonts.googleapis.com/css2?family=Open+Sans:wght@600&display=swap',
119 [],
120 null
121 );
122
123 wp_enqueue_style(
124 'give-admin-onboarding-wizard',
125 GIVE_PLUGIN_URL . 'assets/dist/css/admin-onboarding-wizard.css',
126 [
127 'give-google-font-montserrat',
128 'give-google-font-open-sans',
129 ],
130 GIVE_VERSION
131 );
132
133 wp_enqueue_script(
134 'give-admin-onboarding-wizard-app',
135 GIVE_PLUGIN_URL . 'assets/dist/js/admin-onboarding-wizard.js',
136 [ 'wp-element', 'wp-api', 'wp-i18n' ],
137 GIVE_VERSION,
138 true
139 );
140
141 wp_set_script_translations( 'give-admin-onboarding-wizard-app', 'give' );
142
143 $formID = $this->formRepository->getDefaultFormID();
144 $featureGoal = get_post_meta( $formID, '_give_goal_option', true );
145 $featureComments = get_post_meta( $formID, '_give_donor_comment', true );
146 $featureTerms = get_post_meta( $formID, '_give_terms_option', true );
147 $offlineDonations = get_post_meta( $formID, '_give_customize_offline_donations', true );
148 $featureAnonymous = get_post_meta( $formID, '_give_anonymous_donation', true );
149 $featureCompany = get_post_meta( $formID, '_give_company_field', true );
150
151 $currency = $this->settingsRepository->get( 'currency' ) ?: 'USD';
152 $baseCountry = $this->settingsRepository->get( 'base_country' ) ?: 'US';
153 $baseState = $this->settingsRepository->get( 'base_state' ) ?: '';
154
155 wp_localize_script(
156 'give-admin-onboarding-wizard-app',
157 'giveOnboardingWizardData',
158 [
159 'apiRoot' => esc_url_raw( rest_url() ),
160 'apiNonce' => wp_create_nonce( 'wp_rest' ),
161 'setupUrl' => SetupPage::getSetupPageEnabledOrDisabled() === SetupPage::ENABLED ? admin_url( 'edit.php?post_type=give_forms&page=give-setup' ) : admin_url( 'edit.php?post_type=give_forms' ),
162 'formPreviewUrl' => admin_url( '?page=give-form-preview' ),
163 'localeCurrency' => $this->localeCollection->pluck( 'currency_code' ),
164 'currencies' => FormatList::fromKeyValue( give_get_currencies_list() ),
165 'currencySelected' => $currency,
166 'countries' => LocationList::getCountries(),
167 'countrySelected' => $baseCountry,
168 'states' => LocationList::getStates( $baseCountry ),
169 'stateSelected' => $baseState,
170 'features' => FormatList::fromValueKey(
171 [
172 'donation-goal' => ( 'enabled' == $featureGoal ),
173 'donation-comments' => ( 'enabled' == $featureComments ),
174 'terms-conditions' => ( 'enabled' == $featureTerms ),
175 'offline-donations' => ( 'enabled' == $offlineDonations ),
176 'anonymous-donations' => ( 'enabled' == $featureAnonymous ),
177 'company-donations' => in_array( $featureCompany, [ 'required', 'optional' ] ), // Note: The company field has two values for enabled, "required" and "optional".
178 ]
179 ),
180 'causeTypes' => FormatList::fromKeyValue( include GIVE_PLUGIN_DIR . 'src/Onboarding/Config/CauseTypes.php' ),
181 'addons' => $this->onboardingSettingsRepository->get( 'addons' ) ?: [],
182 ]
183 );
184
185 }
186
187 public function redirect() {
188
189 // Bail if no activation redirect
190 if ( ! \Give_Cache::get( '_give_activation_redirect', true ) || wp_doing_ajax() ) {
191 return;
192 }
193
194 // Delete the redirect transient
195 \Give_Cache::delete( \Give_Cache::get_key( '_give_activation_redirect' ) );
196
197 // Bail if activating from network, or bulk
198 if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) {
199 return;
200 }
201
202 $redirect = add_query_arg( 'page', 'give-onboarding-wizard', admin_url() );
203
204 $upgrade = get_option( 'give_version_upgraded_from' );
205
206 if ( ! $upgrade ) {
207 // First time install
208 wp_safe_redirect( $redirect );
209 exit;
210 }
211 }
212 }
213