PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / trunk
GiveWP – Donation Plugin and Fundraising Platform vtrunk
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 / RequestHandler.php
give / src / DonorDashboards Last commit date
Admin 4 years ago Exceptions 4 years ago Factories 4 years ago Helpers 4 months ago Pipeline 1 year ago Repositories 3 years ago Routes 2 weeks ago Tabs 9 months ago resources 4 months ago App.php 1 year ago Block.php 1 year ago Helpers.php 1 year ago Profile.php 1 year ago RequestHandler.php 5 months ago ServiceProvider.php 2 years ago Shortcode.php 2 years ago
RequestHandler.php
148 lines
1 <?php
2
3 namespace Give\DonorDashboards;
4
5 use _WP_Dependency;
6 use Give\DonorDashboards\Admin\Settings;
7 use Give\Framework\Permissions\Facades\UserPermissions;
8 use WP_Query;
9
10 /**
11 * @since 2.10.0
12 */
13 class RequestHandler
14 {
15
16 /**
17 * Register 'give-embed' query var
18 *
19 * @param array $vars
20 *
21 * @return array
22 */
23 public function filterQueryVars($vars)
24 {
25 $vars[] = 'give-embed';
26 $vars[] = 'give-generate-donor-dashboard-page';
27 $vars[] = 'give-generated-donor-dashboard-page';
28
29 return $vars;
30 }
31
32 /**
33 * Load donor dashboard markup, if donor dashboard exists in query vars
34 *
35 * @param WP_Query $query
36 *
37 * @return void
38 */
39 public function parseRequest($query)
40 {
41 if (is_admin() && UserPermissions::settings()->canManage() && ! wp_doing_ajax() && array_key_exists(
42 'give-generate-donor-dashboard-page',
43 $query->query_vars
44 )) {
45 (new Settings())->generateDonorDashboardPage();
46 wp_safe_redirect(
47 admin_url('edit.php?post_type=give_forms&page=give-settings&give-generated-donor-dashboard-page=1')
48 );
49 exit;
50 }
51
52 if (array_key_exists(
53 'give-embed',
54 $query->query_vars
55 ) && $query->query_vars['give-embed'] === 'donor-dashboard') {
56 $this->setUpFrontendHooks();
57
58 $app = new App();
59 echo $app->getIframeContent();
60 exit; // and exit
61 }
62 }
63
64 /**
65 * Setup frontend hooks
66 *
67 * @since 2.10.0
68 */
69 public function setUpFrontendHooks()
70 {
71 add_action('give_embed_head', [$this, 'noRobots']);
72 add_action('give_embed_head', 'wp_enqueue_scripts', 1);
73 add_action('give_embed_head', [$this, 'handleEnqueueScripts'], 2);
74 add_action('give_embed_head', 'wp_print_styles', 8);
75 add_action('give_embed_head', 'wp_print_head_scripts', 9);
76 add_action('give_embed_footer', 'wp_print_footer_scripts', 20);
77 }
78
79 /**
80 * Display a noindex meta tag.
81 *
82 * Outputs a noindex meta tag that tells web robots not to index and follow content.
83 *
84 * @since 2.10.0
85 */
86 public function noRobots()
87 {
88 echo "<meta name='robots' content='noindex,nofollow'/>\n";
89 }
90
91 /**
92 * Handle enqueue script
93 *
94 * @since 2.10.0
95 */
96 public function handleEnqueueScripts()
97 {
98 global $wp_scripts, $wp_styles;
99 wp_enqueue_scripts();
100
101 $wp_styles->dequeue($this->getListOfScriptsToDequeue($wp_styles->registered));
102 $wp_scripts->dequeue($this->getListOfScriptsToDequeue($wp_scripts->registered));
103 }
104
105 /**
106 * Get filter list to dequeue scripts and style
107 *
108 * @since 2.10.0
109 *
110 * @param array $scripts
111 *
112 * @return array
113 */
114 private function getListOfScriptsToDequeue($scripts)
115 {
116 $list = [];
117 $skip = [];
118 $themeDir = get_template_directory_uri();
119
120 /* @var _WP_Dependency $data */
121 foreach ($scripts as $handle => $data) {
122 // Do not unset dependency.
123 if (in_array($handle, $skip, true)) {
124 continue;
125 }
126
127 // Do not allow styles and scripts from theme.
128 if (false !== strpos((string)$data->src, $themeDir)) {
129 $list[] = $handle;
130 continue;
131 }
132
133 if (
134 0 === strpos($handle, 'give') ||
135 false !== strpos($data->src, '\give')
136 ) {
137 // Store dependencies to skip.
138 $skip = array_merge($skip, $data->deps);
139 continue;
140 }
141
142 $list[] = $handle;
143 }
144
145 return $list;
146 }
147 }
148