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 / Themes / DragDrop / MemberDirectoryListing.php
wp-user-avatar / src / Themes / DragDrop Last commit date
EditProfile 5 years ago Login 3 years ago MemberDirectory 7 months ago PasswordReset 5 years ago Registration 3 years ago UserProfile 1 year ago AbstractBuildScratch.php 7 months ago AbstractMemberDirectoryTheme.php 4 months ago AbstractTheme.php 11 months ago FieldListing.php 7 months ago MemberDirectoryListing.php 2 months ago MemberDirectoryTrait.php 1 year ago ProfileFieldListing.php 2 months ago ThemeInterface.php 5 years ago ThemesRepository.php 1 year ago index.php 5 years ago
MemberDirectoryListing.php
161 lines
1 <?php
2
3 namespace ProfilePress\Core\Themes\DragDrop;
4
5 use ProfilePress\Core\Classes\FormRepository as FR;
6 use ProfilePress\Core\Classes\PROFILEPRESS_sql;
7 use ProfilePress\Core\Membership\CheckoutFields;
8
9 class MemberDirectoryListing
10 {
11 private int $user_id;
12
13 private array $field_settings;
14
15 private string $output = '';
16
17 private array $defaults;
18
19 public function __construct($directory_id, $user_id = false)
20 {
21 $this->user_id = absint($user_id);
22
23 $this->field_settings = FR::form_builder_fields_settings($directory_id, FR::MEMBERS_DIRECTORY_TYPE);
24 }
25
26 public function defaults($defaults): MemberDirectoryListing
27 {
28 $this->defaults = $defaults;
29
30 return $this;
31 }
32
33 public function forge(): MemberDirectoryListing
34 {
35 $output = '';
36
37 foreach ($this->field_settings as $field_setting) {
38
39 $field_type = $raw_field_type = $field_setting['fieldType'];
40
41 if (isset($this->defaults, $this->defaults[$field_type])) {
42 $field_setting = wp_parse_args($field_setting, $this->defaults[$field_type]);
43 }
44
45 $field_title = $field_setting['label'] ?? '';
46
47 if ($field_type == 'profile-cpf') {
48
49 $field_key = '';
50
51 if ( ! empty($field_setting['field_key']) && ! empty($field_setting['label'])) {
52
53 $field_key = $field_setting['field_key'];
54
55 } elseif ( ! empty($field_setting['custom_field'])) {
56
57 $field_key = $field_setting['custom_field'];
58
59 $custom_field_title = PROFILEPRESS_sql::get_field_label($field_key);
60
61 if ( ! $custom_field_title) {
62 $custom_field_title = PROFILEPRESS_sql::get_contact_info_field_label($field_key);
63 }
64
65 if ( ! empty($custom_field_title)) $field_title = $custom_field_title;
66 }
67
68 $field_type = $field_type . ' key="' . $field_key . '"';
69 }
70
71 if ($field_type == 'profile-display-name') {
72
73 if ( ! empty($field_setting['format'])) {
74
75 $format = $field_setting['format'];
76
77 $field_type = $field_type . ' format="' . $format . '"';
78 }
79 }
80
81 if ($field_type == 'pp-custom-html') {
82
83 if ( ! empty($field_setting['custom_html'])) {
84
85 $field_type = $field_type . ' custom_html="' . base64_encode($field_setting['custom_html']) . '"';
86 }
87 }
88
89 // it's important the shortcode is parsed because FrontendProfileBuilder class is instantiated for each user iteration
90 $parsed_shortcode = do_shortcode('[' . $field_type . ']', true);
91
92 if ( ! empty($parsed_shortcode)) {
93
94 if ( ! empty($field_key) && $raw_field_type == 'profile-cpf') {
95 if (in_array($field_key, array_keys(ppress_social_network_fields()))) {
96 $parsed_shortcode = sprintf('<a href="%s">%s</a>', esc_url($parsed_shortcode), ppress_var(ppress_social_network_fields(), $field_key));
97 }
98
99 $custom_field_type = PROFILEPRESS_sql::get_field_type($field_key);
100
101 if ($field_key == CheckoutFields::BILLING_COUNTRY || $custom_field_type == 'country') {
102 $parsed_shortcode = ppress_get_country_title($parsed_shortcode);
103 }
104
105 if ($field_key == CheckoutFields::BILLING_STATE) {
106 $db_country = get_user_meta($this->user_id, CheckoutFields::BILLING_COUNTRY, true);
107 $parsed_shortcode = ppress_get_country_state_title($parsed_shortcode, $db_country);
108 }
109
110 $parsed_shortcode = apply_filters(' ppress_md_profile_cpf', $parsed_shortcode, $field_key, $custom_field_type, $this->user_id);
111 }
112
113 if ($raw_field_type == 'profile-display-name') {
114
115 $parsed_shortcode = sprintf(
116 '<a href="%s">%s</a>',
117 ppress_get_frontend_profile_url($this->user_id),
118 $parsed_shortcode
119 );
120 }
121
122 if ($raw_field_type == 'profile-bio') {
123 $bio = get_user_meta($this->user_id, 'description', true);
124
125 $parsed_shortcode = apply_filters('ppress_md_profile_bio', $bio, $this->user_id);
126 }
127
128 if ($raw_field_type == 'profile-website') {
129
130 $parsed_shortcode = sprintf(
131 '<a href="%s">%s</a>',
132 esc_url($parsed_shortcode),
133 ! empty($field_title) ? wp_kses_post($field_title) : esc_html__('Website', 'wp-user-avatar')
134 );
135 $parsed_shortcode = make_clickable($parsed_shortcode);
136 $parsed_shortcode = apply_filters('ppress_md_profile_website', $parsed_shortcode, $this->user_id);
137 }
138
139 $output .= sprintf('<div class="ppress-md-profile-item-wrap %s">', $raw_field_type);
140
141 if ( ! empty($field_title) && ! empty($parsed_shortcode) && $raw_field_type != 'profile-website') {
142 $output .= sprintf('<span class="ppress-md-profile-item-title">%s:</span> ', wp_kses_post($field_title));
143 }
144
145 $output .= sprintf('%s', wp_kses_post($parsed_shortcode));
146
147 $output .= '</div>';
148 }
149 }
150
151 $this->output = $output;
152
153 return $this;
154 }
155
156 public function output(): string
157 {
158 return $this->output;
159 }
160 }
161