PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 2.17.0
GiveWP – Donation Plugin and Fundraising Platform v2.17.0
4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 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 All 253 releases
give / src / DonorDashboards / RequestHandler.php
RequestHandler.php
131 lines 3.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Give\DonorDashboards;
4
5 use _WP_Dependency;
6 use Give\DonorDashboards\Admin\Settings;
7 use WP_Query;
8
9 /**
10 * @since 2.10.0
11 */
12 class RequestHandler {
13
14 /**
15 * Register 'give-embed' query var
16 *
17 * @param array $vars
18 * @return array
19 */
20 public function filterQueryVars( $vars ) {
21 $vars[] = 'give-embed';
22 $vars[] = 'give-generate-donor-dashboard-page';
23 $vars[] = 'give-generated-donor-dashboard-page';
24 return $vars;
25 }
26
27 /**
28 * Load donor dashboard markup, if donor dashboard exists in query vars
29 *
30 * @param WP_Query $query
31 * @return void
32 */
33 public function parseRequest( $query ) {
34
35 if ( is_admin() && current_user_can( 'manage_options' ) && ! wp_doing_ajax() && array_key_exists( 'give-generate-donor-dashboard-page', $query->query_vars ) ) {
36 ( new Settings() )->generateDonorDashboardPage();
37 wp_safe_redirect( admin_url( 'edit.php?post_type=give_forms&page=give-settings&give-generated-donor-dashboard-page=1' ) );
38 exit;
39 }
40
41 if ( array_key_exists( 'give-embed', $query->query_vars ) && $query->query_vars['give-embed'] === 'donor-dashboard' ) {
42
43 $this->setUpFrontendHooks();
44
45 $app = new App();
46 echo $app->getIframeContent();
47 exit; // and exit
48 }
49
50 }
51
52 /**
53 * Setup frontend hooks
54 *
55 * @since 2.10.0
56 */
57 public function setUpFrontendHooks() {
58 add_action( 'give_embed_head', [ $this, 'noRobots' ] );
59 add_action( 'give_embed_head', 'wp_enqueue_scripts', 1 );
60 add_action( 'give_embed_head', [ $this, 'handleEnqueueScripts' ], 2 );
61 add_action( 'give_embed_head', 'wp_print_styles', 8 );
62 add_action( 'give_embed_head', 'wp_print_head_scripts', 9 );
63 add_action( 'give_embed_footer', 'wp_print_footer_scripts', 20 );
64 }
65
66 /**
67 * Display a noindex meta tag.
68 *
69 * Outputs a noindex meta tag that tells web robots not to index and follow content.
70 *
71 * @since 2.10.0
72 */
73 public function noRobots() {
74 echo "<meta name='robots' content='noindex,nofollow'/>\n";
75 }
76
77 /**
78 * Handle enqueue script
79 *
80 * @since 2.10.0
81 */
82 public function handleEnqueueScripts() {
83 global $wp_scripts, $wp_styles;
84 wp_enqueue_scripts();
85
86 $wp_styles->dequeue( $this->getListOfScriptsToDequeue( $wp_styles->registered ) );
87 $wp_scripts->dequeue( $this->getListOfScriptsToDequeue( $wp_scripts->registered ) );
88 }
89
90 /**
91 * Get filter list to dequeue scripts and style
92 *
93 * @param array $scripts
94 *
95 * @return array
96 * @since 2.10.0
97 */
98 private function getListOfScriptsToDequeue( $scripts ) {
99 $list = [];
100 $skip = [ 'babel-polyfill' ];
101 $themeDir = get_template_directory_uri();
102
103 /* @var _WP_Dependency $data */
104 foreach ( $scripts as $handle => $data ) {
105 // Do not unset dependency.
106 if ( in_array( $handle, $skip, true ) ) {
107 continue;
108 }
109
110 // Do not allow styles and scripts from theme.
111 if ( false !== strpos( (string) $data->src, $themeDir ) ) {
112 $list[] = $handle;
113 continue;
114 }
115
116 if (
117 0 === strpos( $handle, 'give' ) ||
118 false !== strpos( $data->src, '\give' )
119 ) {
120 // Store dependencies to skip.
121 $skip = array_merge( $skip, $data->deps );
122 continue;
123 }
124
125 $list[] = $handle;
126 }
127
128 return $list;
129 }
130 }
131