Skip to:
Content

BuddyPress.org

Ticket #4187: 4187.diff

File 4187.diff, 6.4 KB (added by lakrisgubben, 9 years ago)
Line 
1Index: src/bp-members/bp-members-screens.php
2===================================================================
3--- src/bp-members/bp-members-screens.php       (revision 11231)
4+++ src/bp-members/bp-members-screens.php       (working copy)
5@@ -149,10 +149,7 @@
6
7                                // Loop through the posted fields formatting any datebox values then validate the field.
8                                foreach ( (array) $profile_field_ids as $field_id ) {
9-                                       if ( !isset( $_POST['field_' . $field_id] ) ) {
10-                                               if ( !empty( $_POST['field_' . $field_id . '_day'] ) && !empty( $_POST['field_' . $field_id . '_month'] ) && !empty( $_POST['field_' . $field_id . '_year'] ) )
11-                                                       $_POST['field_' . $field_id] = date( 'Y-m-d H:i:s', strtotime( $_POST['field_' . $field_id . '_day'] . $_POST['field_' . $field_id . '_month'] . $_POST['field_' . $field_id . '_year'] ) );
12-                                       }
13+                                       bp_xprofile_maybe_format_datebox_post_data( $field_id );
14
15                                        // Create errors for required fields without values.
16                                        if ( xprofile_check_is_required_field( $field_id ) && empty( $_POST[ 'field_' . $field_id ] ) && ! bp_current_user_can( 'bp_moderate' ) )
17@@ -218,19 +215,10 @@
18                                        // Let's compact any profile field info into usermeta.
19                                        $profile_field_ids = explode( ',', $_POST['signup_profile_field_ids'] );
20
21-                                       // Loop through the posted fields formatting any datebox values then add to usermeta - @todo This logic should be shared with the same in xprofile_screen_edit_profile().
22+                                       // Loop through the posted fields formatting any datebox values then add to usermeta
23                                        foreach ( (array) $profile_field_ids as $field_id ) {
24-                                               if ( ! isset( $_POST['field_' . $field_id] ) ) {
25+                                               bp_xprofile_maybe_format_datebox_post_data( $field_id );
26
27-                                                       if ( ! empty( $_POST['field_' . $field_id . '_day'] ) && ! empty( $_POST['field_' . $field_id . '_month'] ) && ! empty( $_POST['field_' . $field_id . '_year'] ) ) {
28-                                                               // Concatenate the values.
29-                                                               $date_value = $_POST['field_' . $field_id . '_day'] . ' ' . $_POST['field_' . $field_id . '_month'] . ' ' . $_POST['field_' . $field_id . '_year'];
30-
31-                                                               // Turn the concatenated value into a timestamp.
32-                                                               $_POST['field_' . $field_id] = date( 'Y-m-d H:i:s', strtotime( $date_value ) );
33-                                                       }
34-                                               }
35-
36                                                if ( !empty( $_POST['field_' . $field_id] ) )
37                                                        $usermeta['field_' . $field_id] = $_POST['field_' . $field_id];
38Index: src/bp-xprofile/bp-xprofile-functions.php
39===================================================================
40--- src/bp-xprofile/bp-xprofile-functions.php   (revision 11231)
41+++ src/bp-xprofile/bp-xprofile-functions.php   (working copy)
42@@ -1287,3 +1287,26 @@
43
44        return $field_ids;
45 }
46+
47+/**
48+ * Formats any datebox values passed through a POST request
49+ *
50+ * @since 2.8.0
51+ *
52+ * @param int $field_id The id of the current field being looped through.
53+ * @return void This function only changes the global $_POST that should contain the datebox data.
54+ */
55+function bp_xprofile_maybe_format_datebox_post_data( $field_id ) {
56+       if ( ! isset( $_POST['field_' . $field_id ] ) ) {
57+               if ( ! empty( $_POST['field_' . $field_id . '_day'] ) && ! empty( $_POST['field_' . $field_id . '_month'] ) && ! empty( $_POST['field_' . $field_id . '_year'] ) ) {
58+                       // Concatenate the values.
59+                       $date_value = $_POST['field_' . $field_id . '_day'] . ' ' . $_POST['field_' . $field_id . '_month'] . ' ' . $_POST['field_' . $field_id . '_year'];
60+
61+                       // Check that the concatenated value can be turned into a timestamp.
62+                       if ( $timestamp = strtotime( $date_value ) ) {
63+                               // Add the timestamp to the global $_POST that should contain the datebox data.
64+                               $_POST['field_' . $field_id] = date( 'Y-m-d H:i:s', $timestamp );
65+                       }
66+               }
67+       }
68+}
69Index: src/bp-xprofile/bp-xprofile-screens.php
70===================================================================
71--- src/bp-xprofile/bp-xprofile-screens.php     (revision 11231)
72+++ src/bp-xprofile/bp-xprofile-screens.php     (working copy)
73@@ -85,21 +85,10 @@
74                $posted_field_ids = wp_parse_id_list( $_POST['field_ids'] );
75                $is_required      = array();
76
77-               // Loop through the posted fields formatting any datebox values
78-               // then validate the field.
79+               // Loop through the posted fields formatting any datebox values then validate the field.
80                foreach ( (array) $posted_field_ids as $field_id ) {
81-                       if ( !isset( $_POST['field_' . $field_id] ) ) {
82+                       bp_xprofile_maybe_format_datebox_post_data( $field_id );
83
84-                               if ( !empty( $_POST['field_' . $field_id . '_day'] ) && !empty( $_POST['field_' . $field_id . '_month'] ) && !empty( $_POST['field_' . $field_id . '_year'] ) ) {
85-                                       // Concatenate the values.
86-                                       $date_value =   $_POST['field_' . $field_id . '_day'] . ' ' . $_POST['field_' . $field_id . '_month'] . ' ' . $_POST['field_' . $field_id . '_year'];
87-
88-                                       // Turn the concatenated value into a timestamp.
89-                                       $_POST['field_' . $field_id] = date( 'Y-m-d H:i:s', strtotime( $date_value ) );
90-                               }
91-
92-                       }
93-
94                        $is_required[ $field_id ] = xprofile_check_is_required_field( $field_id ) && ! bp_current_user_can( 'bp_moderate' );
95                        if ( $is_required[$field_id] && empty( $_POST['field_' . $field_id] ) ) {
96                                $errors = true;
97Index: src/bp-xprofile/classes/class-bp-xprofile-user-admin.php
98===================================================================
99--- src/bp-xprofile/classes/class-bp-xprofile-user-admin.php    (revision 11231)
100+++ src/bp-xprofile/classes/class-bp-xprofile-user-admin.php    (working copy)
101@@ -227,17 +227,8 @@
102
103                        // Loop through the posted fields formatting any datebox values then validate the field.
104                        foreach ( (array) $posted_field_ids as $field_id ) {
105-                               if ( ! isset( $_POST['field_' . $field_id ] ) ) {
106-                                       if ( ! empty( $_POST['field_' . $field_id . '_day'] ) && ! empty( $_POST['field_' . $field_id . '_month'] ) && ! empty( $_POST['field_' . $field_id . '_year'] ) ) {
107+                               bp_xprofile_maybe_format_datebox_post_data( $field_id );
108
109-                                               // Concatenate the values.
110-                                               $date_value =   $_POST['field_' . $field_id . '_day'] . ' ' . $_POST['field_' . $field_id . '_month'] . ' ' . $_POST['field_' . $field_id . '_year'];
111-
112-                                               // Turn the concatenated value into a timestamp.
113-                                               $_POST['field_' . $field_id] = date( 'Y-m-d H:i:s', strtotime( $date_value ) );
114-                                       }
115-                               }
116-
117                                $is_required[ $field_id ] = xprofile_check_is_required_field( $field_id ) && ! bp_current_user_can( 'bp_moderate' );
118                                if ( $is_required[ $field_id ] && empty( $_POST['field_' . $field_id ] ) ) {
119                                        $redirect_to = add_query_arg( 'error', '2', $redirect_to );