PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / trunk
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress vtrunk
4.16.18 4.16.17 4.16.16 trunk 1.0 1.0.1 1.0.2 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5a 1.1.6 1.1.7 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.4 1.4.1 1.4.2 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.7 1.7.1 1.7.2 1.8 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.1.9 2.2.10 2.2.11 2.2.12 2.2.13 2.2.14 2.2.15 2.2.16 2.2.2 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 3.0 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.14 3.2.15 3.2.16 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.13.4 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.15.0 4.15.1 4.15.10 4.15.11 4.15.12 4.15.13 4.15.14 4.15.15 4.15.16 4.15.17 4.15.18 4.15.19 4.15.2 4.15.20 4.15.20.1 4.15.21 4.15.22 4.15.23 4.15.24 4.15.25 4.15.3 4.15.4 4.15.5 4.15.6 4.15.7 4.15.8 4.15.9 4.16.0 4.16.1 4.16.10 4.16.11 4.16.12 4.16.13 4.16.14 4.16.15 4.16.2 4.16.3 4.16.4 4.16.5 4.16.6 4.16.7 4.16.8 4.16.9 4.2.0 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.7.0 4.8.0 4.9.0
wp-user-avatar / src / ShortcodeParser / MelangeTag.php
wp-user-avatar / src / ShortcodeParser Last commit date
Builder 1 month ago MyAccount 1 month ago EditProfileTag.php 1 year ago FormProcessor.php 1 year ago FrontendProfileTag.php 1 year ago Init.php 3 years ago LoginFormTag.php 2 years ago MelangeTag.php 1 year ago MemberDirectoryTag.php 1 year ago MembershipShortcodes.php 1 year ago PasswordResetTag.php 1 month ago RegistrationFormTag.php 1 year ago index.php 5 years ago
MelangeTag.php
130 lines
1 <?php
2
3 namespace ProfilePress\Core\ShortcodeParser;
4
5 use ProfilePress\Core\Classes\EditUserProfile;
6 use ProfilePress\Core\Classes\FormRepository as FR;
7
8 class MelangeTag extends FormProcessor
9 {
10 public function __construct()
11 {
12 /**
13 * We're not including check_password_reset_key(), and process_password_reset_handler_form()
14 * cos it is already active and called by PasswordResetTag.
15 *
16 * Using priority 999999999 'cos we want it to run after that of their respective form types.
17 */
18 add_action('wp', [$this, 'process_password_reset_form'], 999999999);
19 add_action('wp', [$this, 'process_registration_form'], 999999999);
20 add_action('wp', [$this, 'process_login_form'], 999999999);
21 add_action('wp', [$this, 'process_edit_profile_form'], 999999999);
22
23 add_shortcode('profilepress-melange', [$this, 'parser']);
24 }
25
26 public function parser($atts)
27 {
28 $atts = shortcode_atts(['id' => '', 'redirect' => ''], $atts);
29
30 $id = absint($atts['id']);
31 $redirect = isset($atts['redirect']) ? esc_url_raw($atts['redirect']) : '';
32
33 if (is_string($this->password_reset_form_error) && ! empty($this->password_reset_form_error)) {
34 $response = apply_filters('ppress_password_reset_notice', $this->password_reset_form_error, $id);
35 }
36
37 if (is_array($this->password_reset_form_error) && isset($this->password_reset_form_error[$id])) {
38 $response = apply_filters('ppress_password_reset_notice', $this->password_reset_form_error[$id], $id);
39 }
40
41 if (is_string($this->login_form_error) && ! empty($this->login_form_error)) {
42 $response = apply_filters('ppress_login_error', $this->login_form_error, $id);
43 }
44
45 if (is_array($this->login_form_error) && isset($this->login_form_error[$id])) {
46 $response = apply_filters('ppress_login_error', $this->login_form_error[$id], $id);
47 }
48
49 if (isset($this->registration_form_error[$id])) {
50 $response = apply_filters('ppress_registration_status', $this->registration_form_error[$id], $id, $redirect);
51 }
52
53 if (isset($_GET['edit']) && ($_GET['edit'] == 'true')) {
54 $response = apply_filters('ppress_edit_profile_status', wp_kses_post(html_entity_decode(EditUserProfile::get_success_message($id, true))), $id);
55 }
56
57 if (isset($this->edit_profile_form_error[$id])) {
58 $response = apply_filters('ppress_edit_profile_status', $this->edit_profile_form_error[$id], $id);
59 }
60
61 // pp_login_error_output is used by modules eg email confirmation to output custom login notices.
62 if (empty($response)) $response = apply_filters('ppress_login_error_output', '');
63
64 $attribution_start = apply_filters('ppress_hide_attribution', '<!-- This (Melange) form was created and powered by ProfilePress WordPress plugin - https://profilepress.com -->' . "\r\n");
65 $attribution_end = apply_filters('ppress_hide_attribution', "\r\n" . '<!-- / ProfilePress WordPress plugin. -->' . "\r\n");
66
67 $css = self::get_melange_css($id);
68
69 $class = 'pp-melange-form-wrap';
70 if (isset($_GET['key'], $_GET['login'])) {
71 $class = 'pp-password-reset-handler-wrap';
72 }
73 $container_div_start = sprintf('<div id="pp-melange-form-%s-wrap" class="pp-form-container %s">', $id, $class);
74 $container_div_end = '</div>';
75
76 return $attribution_start . $css . $container_div_start . $response . $this->get_melange_structure($id, $redirect) . $container_div_end . $attribution_end;
77 }
78
79
80 /**
81 * Get the melange structure from the database
82 *
83 * @param int $id
84 * @param string $redirect
85 *
86 * @return string
87 */
88 public function get_melange_structure($id, $redirect)
89 {
90 if ('GET' == $_SERVER['REQUEST_METHOD'] && isset($_REQUEST['key'], $_REQUEST['login'])) {
91 $structure = '<form method="post">' . PasswordResetTag::get_password_reset_handler_structure() . '</form>';
92 } else {
93 $structure = FR::get_form_meta($id, FR::MELANGE_TYPE, FR::FORM_STRUCTURE);
94 }
95
96 $structure .= "<input type='hidden' name='melange_form_id' value='$id'>";
97
98 $GLOBALS['pp_melange_form_id'] = $id;
99 $GLOBALS['pp_melange_form_redirect'] = $redirect;
100
101 return do_shortcode($structure);
102 }
103
104
105 /**
106 * Get the CSS stylesheet for the ID melange
107 *
108 * @return string
109 */
110 public static function get_melange_css($melange_id)
111 {
112 // if no id is set return
113 if ( ! isset($melange_id)) return '';
114
115 $melange_css = FR::get_form_meta($melange_id, FR::MELANGE_TYPE, FR::FORM_CSS);
116
117 return "<style type=\"text/css\">\r\n $melange_css \r\n</style>";
118 }
119
120 public static function get_instance()
121 {
122 static $instance = false;
123
124 if ( ! $instance) {
125 $instance = new self;
126 }
127
128 return $instance;
129 }
130 }