diff --git a/includes/core/class-fields.php b/includes/core/class-fields.php
index e79a724c..ba3780bb 100644
--- a/includes/core/class-fields.php
+++ b/includes/core/class-fields.php
@@ -1,1531 +1,1352 @@
editing = false;
- $this->viewing = false;
- $this->timestamp = current_time( 'timestamp' );
+ $this->editing = false;
+ $this->viewing = false;
+ $this->timestamp = current_time( 'timestamp' );
- }
+ }
- /**
- * Standard checkbox field
- *
- * @param integer $id
- * @param string $title
- */
- function checkbox( $id, $title ) {
- ?>
+ /**
+ * Standard checkbox field
+ *
+ * @param integer $id
+ * @param string $title
+ */
+ function checkbox( $id, $title ) {
+ ?>
-
-
-
-
+
- builtin()->all_user_fields;
+ foreach ($fields as $field => $args) {
+ if (isset( $args['advanced'] ) && $args['advanced'] == 'social') {
+ $social[$field] = $args;
+ }
+ }
+ foreach ($social as $k => $arr) {
+ if (um_profile( $k )) { ?>
+
+
+
+ ';
+
+ $fields = UM()->builtin()->get_specific_fields( $field );
+
+ $output = null;
+
+ foreach ($fields as $key => $data) {
+ $output .= UM()->fields()->edit_field( $key, $data );
}
+ echo $output;
- /**
- * Shows social links
- */
- function show_social_urls() {
- $fields = UM()->builtin()->all_user_fields;
- foreach ($fields as $field => $args) {
- if (isset( $args['advanced'] ) && $args['advanced'] == 'social') {
- $social[$field] = $args;
- }
- }
- foreach ($social as $k => $arr) {
- if (um_profile( $k )) { ?>
-
-
-
- ';
+ }
+
+ /**
+ * Get hidden field
+ *
+ * @param string $key
+ * @param string $value
+ *
+ * @return string
+ */
+ function disabled_hidden_field( $key, $value ) {
+
+ return '
';
+ }
+
+
+ /**
+ * Updates a field globally
+ *
+ * @param integer $id
+ * @param array $args
+ */
+ function globally_update_field( $id, $args ) {
+ $fields = UM()->builtin()->saved_fields;
+
+ $fields[$id] = $args;
+
+ unset( $fields[$id]['in_row'] );
+ unset( $fields[$id]['in_sub_row'] );
+ unset( $fields[$id]['in_column'] );
+ unset( $fields[$id]['in_group'] );
+ unset( $fields[$id]['position'] );
+
+ update_option( 'um_fields', $fields );
+ }
+
+
+ /**
+ * Updates a field in form only
+ *
+ * @param integer $id
+ * @param array $args
+ * @param integer $form_id
+ */
+ function update_field( $id, $args, $form_id ) {
+ $fields = UM()->query()->get_attr( 'custom_fields', $form_id );
+
+ if ($args['type'] == 'row') {
+ if (isset( $fields[$id] )) {
+ $old_args = $fields[$id];
+ foreach ($old_args as $k => $v) {
+ if (!in_array( $k, array( 'sub_rows', 'cols' ) )) {
+ unset( $old_args[$k] );
+ }
}
+ $args = array_merge( $old_args, $args );
}
}
-
- /**
- * Hidden field inside a shortcode
- *
- * @param string $field
- */
- function add_hidden_field( $field ) {
- echo '
';
-
- $fields = UM()->builtin()->get_specific_fields( $field );
-
- $output = null;
-
- foreach ($fields as $key => $data) {
- $output .= UM()->fields()->edit_field( $key, $data );
- }
-
- echo $output;
-
- echo '
';
+ // custom fields support
+ if (isset( UM()->builtin()->predefined_fields[$id] ) && isset( UM()->builtin()->predefined_fields[$id]['custom'] )) {
+ $args = array_merge( UM()->builtin()->predefined_fields[$id], $args );
}
- /**
- * Get hidden field
- *
- * @param string $key
- * @param string $value
- *
- * @return string
- */
- function disabled_hidden_field( $key, $value ) {
+ $fields[$id] = $args;
- return '
';
+ // for group field only
+ if ($args['type'] == 'group') {
+ $fields[$id]['in_group'] = '';
}
+ UM()->query()->update_attr( 'custom_fields', $form_id, $fields );
+ }
- /**
- * Updates a field globally
- *
- * @param integer $id
- * @param array $args
- */
- function globally_update_field( $id, $args ) {
- $fields = UM()->builtin()->saved_fields;
- $fields[$id] = $args;
+ /**
+ * Deletes a field in form only
+ *
+ * @param integer $id
+ * @param integer $form_id
+ */
+ function delete_field_from_form( $id, $form_id ) {
+ $fields = UM()->query()->get_attr( 'custom_fields', $form_id );
+ if (isset( $fields[$id] )) {
+ unset( $fields[$id] );
+ UM()->query()->update_attr( 'custom_fields', $form_id, $fields );
+ }
+ }
- unset( $fields[$id]['in_row'] );
- unset( $fields[$id]['in_sub_row'] );
- unset( $fields[$id]['in_column'] );
- unset( $fields[$id]['in_group'] );
- unset( $fields[$id]['position'] );
+ /**
+ * Deletes a field from custom fields
+ *
+ * @param integer $id
+ */
+ function delete_field_from_db( $id ) {
+ $fields = UM()->builtin()->saved_fields;
+ if (isset( $fields[$id] )) {
+ unset( $fields[$id] );
update_option( 'um_fields', $fields );
}
+ }
+ /**
+ * Quickly adds a field from custom fields
+ *
+ * @param integer $global_id
+ * @param integer $form_id
+ * @param array $position
+ */
+ function add_field_from_list( $global_id, $form_id, $position = array() ) {
+ $fields = UM()->query()->get_attr( 'custom_fields', $form_id );
+ $field_scope = UM()->builtin()->saved_fields;
- /**
- * Updates a field in form only
- *
- * @param integer $id
- * @param array $args
- * @param integer $form_id
- */
- function update_field( $id, $args, $form_id ) {
- $fields = UM()->query()->get_attr( 'custom_fields', $form_id );
+ if (!isset( $fields[$global_id] )) {
- if ($args['type'] == 'row') {
- if (isset( $fields[$id] )) {
- $old_args = $fields[$id];
- foreach ($old_args as $k => $v) {
- if (!in_array( $k, array( 'sub_rows', 'cols' ) )) {
- unset( $old_args[$k] );
- }
- }
- $args = array_merge( $old_args, $args );
+ $count = 1;
+ if (isset( $fields ) && !empty( $fields )) $count = count( $fields ) + 1;
+
+ $fields[$global_id] = $field_scope[$global_id];
+ $fields[$global_id]['position'] = $count;
+
+ // set position
+ if ($position) {
+ foreach ($position as $key => $val) {
+ $fields[$global_id][$key] = $val;
}
}
- // custom fields support
- if (isset( UM()->builtin()->predefined_fields[$id] ) && isset( UM()->builtin()->predefined_fields[$id]['custom'] )) {
- $args = array_merge( UM()->builtin()->predefined_fields[$id], $args );
- }
-
- $fields[$id] = $args;
-
- // for group field only
- if ($args['type'] == 'group') {
- $fields[$id]['in_group'] = '';
- }
-
+ // add field to form
UM()->query()->update_attr( 'custom_fields', $form_id, $fields );
+
}
+ }
+ /**
+ * Quickly adds a field from pre-defined fields
+ *
+ * @param integer $global_id
+ * @param integer $form_id
+ * @param array $position
+ */
+ function add_field_from_predefined( $global_id, $form_id, $position = array() ) {
+ $fields = UM()->query()->get_attr( 'custom_fields', $form_id );
+ $field_scope = UM()->builtin()->predefined_fields;
- /**
- * Deletes a field in form only
- *
- * @param integer $id
- * @param integer $form_id
- */
- function delete_field_from_form( $id, $form_id ) {
- $fields = UM()->query()->get_attr( 'custom_fields', $form_id );
- if (isset( $fields[$id] )) {
- unset( $fields[$id] );
- UM()->query()->update_attr( 'custom_fields', $form_id, $fields );
- }
- }
+ if (!isset( $fields[$global_id] )) {
+ $count = 1;
+ if (isset( $fields ) && !empty( $fields )) $count = count( $fields ) + 1;
- /**
- * Deletes a field from custom fields
- *
- * @param integer $id
- */
- function delete_field_from_db( $id ) {
- $fields = UM()->builtin()->saved_fields;
- if (isset( $fields[$id] )) {
- unset( $fields[$id] );
- update_option( 'um_fields', $fields );
- }
- }
+ $fields[$global_id] = $field_scope[$global_id];
+ $fields[$global_id]['position'] = $count;
- /**
- * Quickly adds a field from custom fields
- *
- * @param integer $global_id
- * @param integer $form_id
- * @param array $position
- */
- function add_field_from_list( $global_id, $form_id, $position = array() ) {
- $fields = UM()->query()->get_attr( 'custom_fields', $form_id );
- $field_scope = UM()->builtin()->saved_fields;
-
- if (!isset( $fields[$global_id] )) {
-
- $count = 1;
- if (isset( $fields ) && !empty( $fields )) $count = count( $fields ) + 1;
-
- $fields[$global_id] = $field_scope[$global_id];
- $fields[$global_id]['position'] = $count;
-
- // set position
- if ($position) {
- foreach ($position as $key => $val) {
- $fields[$global_id][$key] = $val;
- }
+ // set position
+ if ($position) {
+ foreach ($position as $key => $val) {
+ $fields[$global_id][$key] = $val;
}
-
- // add field to form
- UM()->query()->update_attr( 'custom_fields', $form_id, $fields );
-
}
- }
-
- /**
- * Quickly adds a field from pre-defined fields
- *
- * @param integer $global_id
- * @param integer $form_id
- * @param array $position
- */
- function add_field_from_predefined( $global_id, $form_id, $position = array() ) {
- $fields = UM()->query()->get_attr( 'custom_fields', $form_id );
- $field_scope = UM()->builtin()->predefined_fields;
-
- if (!isset( $fields[$global_id] )) {
-
- $count = 1;
- if (isset( $fields ) && !empty( $fields )) $count = count( $fields ) + 1;
-
- $fields[$global_id] = $field_scope[$global_id];
- $fields[$global_id]['position'] = $count;
-
- // set position
- if ($position) {
- foreach ($position as $key => $val) {
- $fields[$global_id][$key] = $val;
- }
- }
-
- // add field to form
- UM()->query()->update_attr( 'custom_fields', $form_id, $fields );
-
- // add field to db
- //$this->globally_update_field( $global_id, $fields[$global_id] );
-
- }
- }
-
- /**
- * Duplicates a frield by meta key
- *
- * @param integer $id
- * @param integer $form_id
- */
- function duplicate_field( $id, $form_id ) {
- $fields = UM()->query()->get_attr( 'custom_fields', $form_id );
- $all_fields = UM()->builtin()->saved_fields;
-
- $inc = count( $fields ) + 1;
-
- $duplicate = $fields[$id];
-
- $new_metakey = $id . "_" . $inc;
- $new_title = $fields[$id]['title'] . " #" . $inc;
- $new_position = $inc;
-
- $duplicate['title'] = $new_title;
- $duplicate['metakey'] = $new_metakey;
- $duplicate['position'] = $new_position;
-
- $fields[$new_metakey] = $duplicate;
- $all_fields[$new_metakey] = $duplicate;
-
- // not global attributes
- unset( $all_fields[$new_metakey]['in_row'] );
- unset( $all_fields[$new_metakey]['in_sub_row'] );
- unset( $all_fields[$new_metakey]['in_column'] );
- unset( $all_fields[$new_metakey]['in_group'] );
- unset( $all_fields[$new_metakey]['position'] );
+ // add field to form
UM()->query()->update_attr( 'custom_fields', $form_id, $fields );
- update_option( 'um_fields', $all_fields );
+
+ // add field to db
+ //$this->globally_update_field( $global_id, $fields[$global_id] );
}
+ }
- /**
- * Print field error
- *
- * @param string $text
- * @param bool $force_show
- *
- * @return string
- */
- function field_error( $text, $force_show = false ) {
- if ($force_show) {
- $output = '
' . $text . '
';
+ /**
+ * Duplicates a frield by meta key
+ *
+ * @param integer $id
+ * @param integer $form_id
+ */
+ function duplicate_field( $id, $form_id ) {
+ $fields = UM()->query()->get_attr( 'custom_fields', $form_id );
+ $all_fields = UM()->builtin()->saved_fields;
- return $output;
- }
- if (isset( $this->set_id ) && UM()->form()->processing == $this->set_id) {
- $output = '
' . $text . '
';
- } else {
- $output = '';
- }
+ $inc = count( $fields ) + 1;
- if (!UM()->form()->processing) {
- $output = '
' . $text . '
';
- }
+ $duplicate = $fields[$id];
+
+ $new_metakey = $id . "_" . $inc;
+ $new_title = $fields[$id]['title'] . " #" . $inc;
+ $new_position = $inc;
+
+ $duplicate['title'] = $new_title;
+ $duplicate['metakey'] = $new_metakey;
+ $duplicate['position'] = $new_position;
+
+ $fields[$new_metakey] = $duplicate;
+ $all_fields[$new_metakey] = $duplicate;
+
+ // not global attributes
+ unset( $all_fields[$new_metakey]['in_row'] );
+ unset( $all_fields[$new_metakey]['in_sub_row'] );
+ unset( $all_fields[$new_metakey]['in_column'] );
+ unset( $all_fields[$new_metakey]['in_group'] );
+ unset( $all_fields[$new_metakey]['position'] );
+
+ UM()->query()->update_attr( 'custom_fields', $form_id, $fields );
+ update_option( 'um_fields', $all_fields );
+
+ }
+
+ /**
+ * Print field error
+ *
+ * @param string $text
+ * @param bool $force_show
+ *
+ * @return string
+ */
+ function field_error( $text, $force_show = false ) {
+ if ($force_show) {
+ $output = '
' . $text . '
';
return $output;
}
-
- /**
- * Checks if field has a server-side error
- *
- * @param string $key
- *
- * @return boolean
- */
- function is_error( $key ) {
- return UM()->form()->has_error( $key );
+ if (isset( $this->set_id ) && UM()->form()->processing == $this->set_id) {
+ $output = '
' . $text . '
';
+ } else {
+ $output = '';
}
- /**
- * Returns field error
- *
- * @param string $key
- *
- * @return string
- */
- function show_error( $key ) {
- return UM()->form()->errors[$key];
+ if (!UM()->form()->processing) {
+ $output = '
' . $text . '
';
}
- /**
- * Display field label
- *
- * @param string $label
- * @param string $key
- * @param data $data
- *
- * @return string
- */
- function field_label( $label, $key, $data ) {
- $output = null;
- $output .= '
';
+ return $output;
+ }
- if (isset( $data['icon'] ) && $data['icon'] != '' && isset( $this->field_icons ) && $this->field_icons != 'off' && ( $this->field_icons == 'label' || $this->viewing == true )) {
- $output .= '
';
+ /**
+ * Checks if field has a server-side error
+ *
+ * @param string $key
+ *
+ * @return boolean
+ */
+ function is_error( $key ) {
+ return UM()->form()->has_error( $key );
+ }
+
+ /**
+ * Returns field error
+ *
+ * @param string $key
+ *
+ * @return string
+ */
+ function show_error( $key ) {
+ return UM()->form()->errors[$key];
+ }
+
+ /**
+ * Display field label
+ *
+ * @param string $label
+ * @param string $key
+ * @param data $data
+ *
+ * @return string
+ */
+ function field_label( $label, $key, $data ) {
+ $output = null;
+ $output .= '
';
+
+ if (isset( $data['icon'] ) && $data['icon'] != '' && isset( $this->field_icons ) && $this->field_icons != 'off' && ( $this->field_icons == 'label' || $this->viewing == true )) {
+ $output .= '
';
+ }
+
+ if ($this->viewing == true) {
+ $label = apply_filters( "um_view_label_{$key}", $label );
+ } else {
+ $label = apply_filters( "um_edit_label_{$key}", $label );
+ $label = apply_filters( "um_edit_label_all_fields", $label, $data );
+ }
+
+ $output .= '
';
+
+ if (isset( $data['help'] ) && !empty( $data['help'] ) && $this->viewing == false && !strstr( $key, 'confirm_user_pass' )) {
+
+ if (!UM()->mobile()->isMobile()) {
+ if (!isset( $this->disable_tooltips )) {
+ $output .= '
';
+ }
}
- if ($this->viewing == true) {
- $label = apply_filters( "um_view_label_{$key}", $label );
+ if (UM()->mobile()->isMobile() || isset( $this->disable_tooltips )) {
+ $output .= '
' . __( $data['help'], UM_TEXTDOMAIN ) . '';
+ }
+
+ }
+
+ $output .= '
';
+
+ return $output;
+ }
+
+
+ /**
+ * Output field classes
+ *
+ * @param string $key
+ * @param array $data
+ * @param string $add
+ *
+ * @return string
+ */
+ function get_class( $key, $data, $add = null ) {
+ $classes = null;
+
+ $classes .= 'um-form-field ';
+
+ if ($this->is_error( $key )) {
+ $classes .= 'um-error ';
+ } else {
+ $classes .= 'valid ';
+ }
+
+ if (!isset( $data['required'] )) {
+ $classes .= 'not-required ';
+ }
+
+ if ($data['type'] == 'date') {
+ $classes .= 'um-datepicker ';
+ }
+
+ if ($data['type'] == 'time') {
+ $classes .= 'um-timepicker ';
+ }
+
+ if (isset( $data['icon'] ) && $data['icon'] && isset( $this->field_icons ) && $this->field_icons == 'field') {
+ $classes .= 'um-iconed ';
+ }
+
+ if ($add) {
+ $classes .= $add . ' ';
+ }
+
+ return $classes;
+ }
+
+
+ /**
+ * Gets field value
+ *
+ * @param string $key
+ * @param boolean $default
+ * @param array $data
+ *
+ * @return mixed
+ */
+ function field_value( $key, $default = false, $data = null ) {
+ if (isset( $_SESSION ) && isset( $_SESSION['um_social_profile'][$key] ) && isset( $this->set_mode ) && $this->set_mode == 'register')
+ return $_SESSION['um_social_profile'][$key];
+
+ $type = ( isset( $data['type'] ) ) ? $data['type'] : '';
+
+ // preview in backend
+ if (isset( UM()->user()->preview ) && UM()->user()->preview) {
+ $submitted = um_user( 'submitted' );
+ if (isset( $submitted[$key] ) && !empty( $submitted[$key] )) {
+ return $submitted[$key];
} else {
- $label = apply_filters( "um_edit_label_{$key}", $label );
- $label = apply_filters( "um_edit_label_all_fields", $label, $data );
+ return 'Undefined';
}
-
- $output .= '
';
-
- if (isset( $data['help'] ) && !empty( $data['help'] ) && $this->viewing == false && !strstr( $key, 'confirm_user_pass' )) {
-
- if (!UM()->mobile()->isMobile()) {
- if (!isset( $this->disable_tooltips )) {
- $output .= '
';
- }
- }
-
- if (UM()->mobile()->isMobile() || isset( $this->disable_tooltips )) {
- $output .= '
' . __( $data['help'], UM_TEXTDOMAIN ) . '';
- }
-
- }
-
- $output .= '
';
-
- return $output;
}
+ // normal state
+ if (isset( UM()->form()->post_form[$key] )) {
- /**
- * Output field classes
- *
- * @param string $key
- * @param array $data
- * @param string $add
- *
- * @return string
- */
- function get_class( $key, $data, $add = null ) {
- $classes = null;
+ if (strstr( $key, 'user_pass' ) && $this->set_mode != 'password') return '';
- $classes .= 'um-form-field ';
+ return stripslashes_deep( UM()->form()->post_form[$key] );
- if ($this->is_error( $key )) {
- $classes .= 'um-error ';
- } else {
- $classes .= 'valid ';
- }
+ } else if (um_user( $key ) && $this->editing == true) {
- if (!isset( $data['required'] )) {
- $classes .= 'not-required ';
- }
+ if (strstr( $key, 'user_pass' )) return '';
- if ($data['type'] == 'date') {
- $classes .= 'um-datepicker ';
- }
-
- if ($data['type'] == 'time') {
- $classes .= 'um-timepicker ';
- }
-
- if (isset( $data['icon'] ) && $data['icon'] && isset( $this->field_icons ) && $this->field_icons == 'field') {
- $classes .= 'um-iconed ';
- }
-
- if ($add) {
- $classes .= $add . ' ';
- }
-
- return $classes;
- }
-
-
- /**
- * Gets field value
- *
- * @param string $key
- * @param boolean $default
- * @param array $data
- *
- * @return mixed
- */
- function field_value( $key, $default = false, $data = null ) {
- if (isset( $_SESSION ) && isset( $_SESSION['um_social_profile'][$key] ) && isset( $this->set_mode ) && $this->set_mode == 'register')
- return $_SESSION['um_social_profile'][$key];
-
- $type = ( isset( $data['type'] ) ) ? $data['type'] : '';
-
- // preview in backend
- if (isset( UM()->user()->preview ) && UM()->user()->preview) {
- $submitted = um_user( 'submitted' );
- if (isset( $submitted[$key] ) && !empty( $submitted[$key] )) {
- return $submitted[$key];
- } else {
- return 'Undefined';
- }
- }
-
- // normal state
- if (isset( UM()->form()->post_form[$key] )) {
-
- if (strstr( $key, 'user_pass' ) && $this->set_mode != 'password') return '';
-
- return stripslashes_deep( UM()->form()->post_form[$key] );
-
- } else if (um_user( $key ) && $this->editing == true) {
-
- if (strstr( $key, 'user_pass' )) return '';
-
- $value = um_user( $key );
- $value = apply_filters( "um_edit_{$key}_field_value", $value, $key );
- $value = apply_filters( "um_edit_{$type}_field_value", $value, $key );
-
- return $value;
-
- } else if (( um_user( $key ) || isset( $data['show_anyway'] ) ) && $this->viewing == true) {
-
- $value = um_filtered_value( $key, $data );
-
- return $value;
-
- } else if( isset( UM()->user()->profile[$key] ) ){
-
- $value = UM()->user()->profile[$key];
- $value = apply_filters( "um_edit_{$key}_field_value", $value, $key );
- return $value;
-
- } else if ($default) {
-
- $default = apply_filters( "um_field_default_value", $default, $data, $type );
- $default = apply_filters( "um_field_{$key}_default_value", $default, $data );
- $default = apply_filters( "um_field_{$type}_default_value", $default, $data );
-
- return $default;
-
- } else if ($this->editing == true) {
-
- return apply_filters( "um_edit_{$key}_field_value", '', $key );
-
- }
-
- return '';
- }
-
-
- /**
- * Checks if an option is selected
- *
- * @param string $key
- * @param string $value
- * @param array $data
- *
- * @return boolean
- */
- function is_selected( $key, $value, $data ) {
- $key = apply_filters( 'um_is_selected_filter_key', $key );
-
- if (isset( UM()->form()->post_form[$key] ) && is_array( UM()->form()->post_form[$key] )) {
-
- if (in_array( $value, UM()->form()->post_form[$key] )) {
- return true;
- }
-
- if (in_array( html_entity_decode( $value ), UM()->form()->post_form[$key] )) {
- return true;
- }
-
- } else {
-
- if (!isset( UM()->form()->post_form[$key] )) {
-
- $field_value = um_user( $key );
-
- if ($key == 'role') {
-
- $role_keys = get_option( 'um_roles' );
-
- if (!empty( $role_keys )) {
- if (in_array( $field_value, $role_keys )) {
- $field_value = 'um_' . $field_value;
- }
- }
-
- }
-
- $field_value = apply_filters( 'um_is_selected_filter_value', $field_value, $key );
- $data = apply_filters( 'um_is_selected_filter_data', $data, $key, $field_value );
-
- if ($field_value && $this->editing == true && is_array( $field_value ) && ( in_array( $value, $field_value ) || in_array( html_entity_decode( $value ), $field_value ) )) {
- return true;
- }
-
- if ($field_value && $this->editing == true && !is_array( $field_value ) && $field_value == $value) {
- return true;
- }
-
- if ($field_value && $this->editing == true && !is_array( $field_value ) && html_entity_decode( $field_value ) == html_entity_decode( $value )) {
- return true;
- }
-
- if (strstr( $data['default'], ', ' )) {
- $data['default'] = explode( ', ', $data['default'] );
- }
-
- if (isset( $data['default'] ) && !is_array( $data['default'] ) && $data['default'] == $value) {
- return true;
- }
-
- if (isset( $data['default'] ) && is_array( $data['default'] ) && in_array( $value, $data['default'] )) {
- return true;
- }
-
- } else {
-
- if ($value == UM()->form()->post_form[$key]) {
- return true;
- }
-
-
- }
-
- }
-
- return false;
- }
-
-
- /**
- * Checks if a radio button is selected
- *
- * @param string $key
- * @param string $value
- * @param array $data
- *
- * @return boolean
- */
- function is_radio_checked( $key, $value, $data ) {
- if (isset( UM()->form()->post_form[$key] )) {
- if (is_array( UM()->form()->post_form[$key] ) && in_array( $value, UM()->form()->post_form[$key] )) {
- return true;
- } else if ($value == UM()->form()->post_form[$key]) {
- return true;
- }
- } else {
- if (um_user( $key ) && $this->editing == true) {
-
- if (strstr( $key, 'role_' )) {
- $key = 'role';
- }
-
- $um_user_value = um_user( $key );
-
- if ($key == 'role') {
- $um_user_value = strtolower( $um_user_value );
-
- $role_keys = get_option( 'um_roles' );
-
- if (!empty( $role_keys )) {
- if (in_array( $um_user_value, $role_keys )) {
- $um_user_value = 'um_' . $um_user_value;
- }
- }
- }
-
- if ($um_user_value == $value) {
- return true;
- }
-
- if (is_array( $um_user_value ) && in_array( $value, $um_user_value )) {
- return true;
- }
-
- if (is_array( $um_user_value )) {
- foreach ($um_user_value as $u) {
- if ($u == html_entity_decode( $value )) {
- return true;
- }
- }
- }
-
-
- } else if (isset( $data['default'] ) && $data['default'] == $value) {
- return true;
- }
- }
-
- return false;
- }
-
-
- /**
- * Get field icon
- *
- * @param string $key
- *
- * @return string
- */
- function get_field_icon( $key ) {
- $fields = UM()->builtin()->all_user_fields;
- if (isset( $fields[$key]['icon'] ))
- return $fields[$key]['icon'];
-
- return '';
- }
-
-
- /**
- * Gets selected option value from a callback function
- *
- * @param string $value
- * @param array $data
- * @param string $type
- *
- * @return json
- */
- function get_option_value_from_callback( $value, $data, $type ) {
-
- if (in_array( $type, array( 'select', 'multiselect' ) ) && isset( $data['custom_dropdown_options_source'] ) && !empty( $data['custom_dropdown_options_source'] )) {
-
- if ( function_exists( $data['custom_dropdown_options_source'] ) ) {
-
- $arr_options = call_user_func( $data['custom_dropdown_options_source'], $data['parent_dropdown_relationship'] );
-
-
- if ($type == 'select') {
- if (isset( $arr_options[$value] ) && !empty( $arr_options[$value] )) {
- return $arr_options[$value];
- } else if (isset( $data['default'] ) && !empty( $data['default'] ) && empty( $arr_options[$value] )) {
- return $arr_options[$data['default']];
- } else {
- return '';
- }
- }
-
- if ($type == 'multiselect') {
-
- if (is_array( $value )) {
- $values = $value;
- } else {
- $values = explode( ', ', $value );
- }
-
- $arr_paired_options = array();
-
- foreach ($values as $option) {
- if (isset( $arr_options[$option] )) {
- $arr_paired_options[] = $arr_options[$option];
- }
- }
-
- return implode( ', ', $arr_paired_options );
- }
-
- }
-
-
- }
+ $value = um_user( $key );
+ $value = apply_filters( "um_edit_{$key}_field_value", $value, $key );
+ $value = apply_filters( "um_edit_{$type}_field_value", $value, $key );
return $value;
+
+ } else if (( um_user( $key ) || isset( $data['show_anyway'] ) ) && $this->viewing == true) {
+
+ $value = um_filtered_value( $key, $data );
+
+ return $value;
+
+ } else if( isset( UM()->user()->profile[$key] ) ){
+
+ $value = UM()->user()->profile[$key];
+ $value = apply_filters( "um_edit_{$key}_field_value", $value, $key );
+ return $value;
+
+ } else if ($default) {
+
+ $default = apply_filters( "um_field_default_value", $default, $data, $type );
+ $default = apply_filters( "um_field_{$key}_default_value", $default, $data );
+ $default = apply_filters( "um_field_{$type}_default_value", $default, $data );
+
+ return $default;
+
+ } else if ($this->editing == true) {
+
+ return apply_filters( "um_edit_{$key}_field_value", '', $key );
+
}
- /**
- * Get select options from a callback function
- *
- * @param array $data
- * @param string $type
- *
- * @return array $arr_options
- */
- function get_options_from_callback( $data, $type ) {
+ return '';
+ }
- if ( in_array( $type, array( 'select', 'multiselect' ) ) && isset( $data['custom_dropdown_options_source'] ) && ! empty( $data['custom_dropdown_options_source'] ) ) {
- $arr_options = call_user_func( $data['custom_dropdown_options_source'], $data['parent_dropdown_relationship'] );
-
+ /**
+ * Checks if an option is selected
+ *
+ * @param string $key
+ * @param string $value
+ * @param array $data
+ *
+ * @return boolean
+ */
+ function is_selected( $key, $value, $data ) {
+ $key = apply_filters( 'um_is_selected_filter_key', $key );
+ if (isset( UM()->form()->post_form[$key] ) && is_array( UM()->form()->post_form[$key] )) {
+
+ if (in_array( $value, UM()->form()->post_form[$key] )) {
+ return true;
}
- return $arr_options;
- }
-
- /**
- * Get field type
- *
- * @param string $key
- *
- * @return string
- */
- function get_field_type( $key ) {
- $fields = UM()->builtin()->all_user_fields;
- if (isset( $fields[$key]['type'] ))
- return $fields[$key]['type'];
-
- return '';
- }
-
- /**
- * Get field label
- *
- * @param string $key
- *
- * @return string
- */
- function get_label( $key ) {
- $fields = UM()->builtin()->all_user_fields;
- if (isset( $fields[$key]['label'] ))
- return $fields[$key]['label'];
- if (isset( $fields[$key]['title'] ))
- return $fields[$key]['title'];
-
- return '';
- }
-
-
- /**
- * Get field title
- *
- * @param string $key
- *
- * @return string
- */
- function get_field_title( $key ) {
- $fields = UM()->builtin()->all_user_fields;
- if (isset( $fields[$key]['title'] ))
- return $fields[$key]['title'];
- if (isset( $fields[$key]['label'] ))
- return $fields[$key]['label'];
-
- return __( 'Custom Field', 'ultimate-member' );
- }
-
- /**
- * Get form fields
- *
- * @return array
- */
- function get_fields() {
- $this->fields = array();
- $this->fields = apply_filters( "um_get_form_fields", $this->fields );
-
- return $this->fields;
- }
-
-
- /**
- * Get specific field
- *
- * @param string $key
- *
- * @return array
- */
- function get_field( $key ) {
- $fields = $this->get_fields();
-
- if (isset( $fields ) && is_array( $fields ) && isset( $fields[$key] )) {
- $array = $fields[$key];
- } else {
- if (!isset( UM()->builtin()->predefined_fields[$key] ) && !isset( UM()->builtin()->all_user_fields[$key] )) {
- return '';
- }
- $array = ( isset( UM()->builtin()->predefined_fields[$key] ) ) ? UM()->builtin()->predefined_fields[$key] : UM()->builtin()->all_user_fields[$key];
+ if (in_array( html_entity_decode( $value ), UM()->form()->post_form[$key] )) {
+ return true;
}
- $array['classes'] = null;
+ } else {
- if (!isset( $array['placeholder'] )) $array['placeholder'] = null;
- if (!isset( $array['required'] )) $array['required'] = null;
- if (!isset( $array['validate'] )) $array['validate'] = null;
- if (!isset( $array['default'] )) $array['default'] = null;
+ if (!isset( UM()->form()->post_form[$key] )) {
- if (isset( $array['conditions'] ) && is_array( $array['conditions'] ) && !$this->viewing) {
- $array['conditional'] = '';
+ $field_value = um_user( $key );
- foreach ($array['conditions'] as $cond_id => $cond) {
- $array['conditional'] .= ' data-cond-' . $cond_id . '-action="' . $cond[0] . '" data-cond-' . $cond_id . '-field="' . $cond[1] . '" data-cond-' . $cond_id . '-operator="' . $cond[2] . '" data-cond-' . $cond_id . '-value="' . $cond[3] . '"';
- }
+ if ($key == 'role') {
- $array['classes'] .= ' um-is-conditional';
-
- } else {
- $array['conditional'] = null;
- }
-
- $array['classes'] .= ' um-field-' . $key;
- $array['classes'] .= ' um-field-' . $array['type'];
- $array['classes'] .= ' um-field-type_' . $array['type'];
-
- switch ($array['type']) {
-
- case 'googlemap':
- case 'youtube_video':
- case 'vimeo_video':
- case 'soundcloud_track':
- $array['disabled'] = '';
- $array['input'] = 'text';
- break;
-
- case 'text':
-
- $array['disabled'] = '';
-
- if ($key == 'user_login' && isset( $this->set_mode ) && $this->set_mode == 'account') {
- $array['disabled'] = 'disabled="disabled"';
- }
-
- $array['input'] = 'text';
-
- break;
-
- case 'password':
-
- $array['input'] = 'password';
-
- break;
-
- case 'number':
-
- $array['disabled'] = '';
-
- break;
-
- case 'url':
-
- $array['input'] = 'text';
-
- break;
-
- case 'date':
-
- $array['input'] = 'text';
-
- if (!isset( $array['format'] )) $array['format'] = 'j M Y';
-
- switch ($array['format']) {
- case 'j M Y':
- $js_format = 'd mmm yyyy';
- break;
- case 'j F Y':
- $js_format = 'd mmmm yyyy';
- break;
- case 'M j Y':
- $js_format = 'mmm d yyyy';
- break;
- case 'F j Y':
- $js_format = 'mmmm d yyyy';
- break;
- }
-
- $array['js_format'] = $js_format;
-
- if (!isset( $array['range'] )) $array['range'] = 'years';
- if (!isset( $array['years'] )) $array['years'] = 100;
- if (!isset( $array['years_x'] )) $array['years_x'] = 'past';
- if (!isset( $array['disabled_weekdays'] )) $array['disabled_weekdays'] = '';
-
- if (!empty( $array['disabled_weekdays'] )) {
- $array['disabled_weekdays'] = '[' . implode( ',', $array['disabled_weekdays'] ) . ']';
- }
-
- // When date range is strictly defined
- if ($array['range'] == 'date_range') {
-
- $array['date_min'] = str_replace( '/', ',', $array['range_start'] );
- $array['date_max'] = str_replace( '/', ',', $array['range_end'] );
-
- } else {
-
- if ($array['years_x'] == 'past') {
-
- $date = new \DateTime( date( 'Y-n-d' ) );
- $past = $date->modify( '-' . $array['years'] . ' years' );
- $past = $date->format( 'Y,n,d' );
-
- $array['date_min'] = $past;
- $array['date_max'] = date( 'Y,n,d' );
-
- } else if ($array['years_x'] == 'future') {
-
- $date = new \DateTime( date( 'Y-n-d' ) );
- $future = $date->modify( '+' . $array['years'] . ' years' );
- $future = $date->format( 'Y,n,d' );
-
- $array['date_min'] = date( 'Y,n,d' );
- $array['date_max'] = $future;
-
- } else {
-
- $date = new \DateTime( date( 'Y-n-d' ) );
- $date_f = new \DateTime( date( 'Y-n-d' ) );
- $past = $date->modify( '-' . ( $array['years'] / 2 ) . ' years' );
- $past = $date->format( 'Y,n,d' );
- $future = $date_f->modify( '+' . ( $array['years'] / 2 ) . ' years' );
- $future = $date_f->format( 'Y,n,d' );
-
- $array['date_min'] = $past;
- $array['date_max'] = $future;
+ $role_keys = get_option( 'um_roles' );
+ if (!empty( $role_keys )) {
+ if (in_array( $field_value, $role_keys )) {
+ $field_value = 'um_' . $field_value;
}
-
}
- break;
+ }
- case 'time':
+ $field_value = apply_filters( 'um_is_selected_filter_value', $field_value, $key );
+ $data = apply_filters( 'um_is_selected_filter_data', $data, $key, $field_value );
- $array['input'] = 'text';
+ if ($field_value && $this->editing == true && is_array( $field_value ) && ( in_array( $value, $field_value ) || in_array( html_entity_decode( $value ), $field_value ) )) {
+ return true;
+ }
- if (!isset( $array['format'] )) $array['format'] = 'g:i a';
+ if ($field_value && $this->editing == true && !is_array( $field_value ) && $field_value == $value) {
+ return true;
+ }
- switch ($array['format']) {
- case 'g:i a':
- $js_format = 'h:i a';
- break;
- case 'g:i A':
- $js_format = 'h:i A';
- break;
- case 'H:i':
- $js_format = 'HH:i';
- break;
- }
+ if ($field_value && $this->editing == true && !is_array( $field_value ) && html_entity_decode( $field_value ) == html_entity_decode( $value )) {
+ return true;
+ }
- $array['js_format'] = $js_format;
+ if (strstr( $data['default'], ', ' )) {
+ $data['default'] = explode( ', ', $data['default'] );
+ }
- if (!isset( $array['intervals'] )) $array['intervals'] = 60;
+ if (isset( $data['default'] ) && !is_array( $data['default'] ) && $data['default'] == $value) {
+ return true;
+ }
- break;
+ if (isset( $data['default'] ) && is_array( $data['default'] ) && in_array( $value, $data['default'] )) {
+ return true;
+ }
- case 'textarea':
+ } else {
- if (!isset( $array['height'] )) $array['height'] = '100px';
+ if ($value == UM()->form()->post_form[$key]) {
+ return true;
+ }
- break;
-
- case 'rating':
-
- if (!isset( $array['number'] )) $array['number'] = 5;
-
- break;
-
- case 'spacing':
-
- if (!isset( $array['spacing'] )) {
- $array['spacing'] = '20px';
- }
-
- break;
-
- case 'divider':
-
- if (isset( $array['width'] )) {
- $array['borderwidth'] = $array['width'];
- } else {
- $array['borderwidth'] = 4;
- }
-
- if (isset( $array['color'] )) {
- $array['bordercolor'] = $array['color'];
- } else {
- $array['bordercolor'] = '#eee';
- }
-
- if (isset( $array['style'] )) {
- $array['borderstyle'] = $array['style'];
- } else {
- $array['borderstyle'] = 'solid';
- }
-
- if (!isset( $array['divider_text'] )) {
- $array['divider_text'] = '';
- }
-
- break;
-
- case 'image':
-
- if (!isset( $array['crop'] )) $array['crop'] = 0;
-
- if ($array['crop'] == 0) {
- $array['crop_data'] = 0;
- } else if ($array['crop'] == 1) {
- $array['crop_data'] = 'square';
- } else if ($array['crop'] == 2) {
- $array['crop_data'] = 'cover';
- } else {
- $array['crop_data'] = 'user';
- }
-
- if (!isset( $array['modal_size'] )) $array['modal_size'] = 'normal';
-
- if ($array['crop'] > 0) {
- $array['crop_class'] = 'crop';
- } else {
- $array['crop_class'] = '';
- }
-
- if (!isset( $array['ratio'] )) $array['ratio'] = 1.0;
-
- if (!isset( $array['min_width'] )) $array['min_width'] = '';
- if (!isset( $array['min_height'] )) $array['min_height'] = '';
-
- if ($array['min_width'] == '' && $array['crop'] == 1) $array['min_width'] = 600;
- if ($array['min_height'] == '' && $array['crop'] == 1) $array['min_height'] = 600;
-
- if ($array['min_width'] == '' && $array['crop'] == 3) $array['min_width'] = 600;
- if ($array['min_height'] == '' && $array['crop'] == 3) $array['min_height'] = 600;
-
- if (!isset( $array['invalid_image'] )) $array['invalid_image'] = __( "Please upload a valid image!", 'ultimate-member' );
- if (!isset( $array['allowed_types'] )) {
- $array['allowed_types'] = "gif,jpg,jpeg,png";
- } else {
- $array['allowed_types'] = implode( ',', $array['allowed_types'] );
- }
- if (!isset( $array['upload_text'] )) $array['upload_text'] = '';
- if (!isset( $array['button_text'] )) $array['button_text'] = __( 'Upload', 'ultimate-member' );
- if (!isset( $array['extension_error'] )) $array['extension_error'] = __( "Sorry this is not a valid image.", 'ultimate-member' );
- if (!isset( $array['max_size_error'] )) $array['max_size_error'] = __( "This image is too large!", 'ultimate-member' );
- if (!isset( $array['min_size_error'] )) $array['min_size_error'] = __( "This image is too small!", 'ultimate-member' );
- if (!isset( $array['max_files_error'] )) $array['max_files_error'] = __( "You can only upload one image", 'ultimate-member' );
- if (!isset( $array['max_size'] )) $array['max_size'] = 999999999;
- if (!isset( $array['upload_help_text'] )) $array['upload_help_text'] = '';
- if (!isset( $array['icon'] )) $array['icon'] = '';
-
- break;
-
- case 'file':
-
- if (!isset( $array['modal_size'] )) $array['modal_size'] = 'normal';
-
- if (!isset( $array['allowed_types'] )) {
- $array['allowed_types'] = "pdf,txt";
- } else {
- $array['allowed_types'] = implode( ',', $array['allowed_types'] );
- }
- if (!isset( $array['upload_text'] )) $array['upload_text'] = '';
- if (!isset( $array['button_text'] )) $array['button_text'] = __( 'Upload', 'ultimate-member' );
- if (!isset( $array['extension_error'] )) $array['extension_error'] = "Sorry this is not a valid file.";
- if (!isset( $array['max_size_error'] )) $array['max_size_error'] = "This file is too large!";
- if (!isset( $array['min_size_error'] )) $array['min_size_error'] = "This file is too small!";
- if (!isset( $array['max_files_error'] )) $array['max_files_error'] = "You can only upload one file";
- if (!isset( $array['max_size'] )) $array['max_size'] = 999999999;
- if (!isset( $array['upload_help_text'] )) $array['upload_help_text'] = '';
- if (!isset( $array['icon'] )) $array['icon'] = '';
-
- break;
-
- case 'select':
-
- break;
-
- case 'multiselect':
-
- break;
-
- case 'group':
-
- if (!isset( $array['max_entries'] )) $array['max_entries'] = 0;
-
- break;
}
- if (!isset( $array['visibility'] )) $array['visibility'] = 'all';
-
- $array = apply_filters( "um_get_field__{$key}", $array );
-
-
- return $array;
}
- /**
- * Gets a field in 'input mode'
- *
- * @param string $key
- * @param array $data
- * @param boolean $rule
- *
- * @return string
- */
- function edit_field( $key, $data, $rule = false ) {
- global $_um_profile_id;
- $output = null;
- $disabled = '';
- if (empty( $_um_profile_id )) {
- $_um_profile_id = um_user( 'ID' );
+ return false;
+ }
+
+
+ /**
+ * Checks if a radio button is selected
+ *
+ * @param string $key
+ * @param string $value
+ * @param array $data
+ *
+ * @return boolean
+ */
+ function is_radio_checked( $key, $value, $data ) {
+ if (isset( UM()->form()->post_form[$key] )) {
+ if (is_array( UM()->form()->post_form[$key] ) && in_array( $value, UM()->form()->post_form[$key] )) {
+ return true;
+ } else if ($value == UM()->form()->post_form[$key]) {
+ return true;
}
+ } else {
+ if (um_user( $key ) && $this->editing == true) {
-
- // get whole field data
- if (isset( $data ) && is_array( $data )) {
- $data = $this->get_field( $key );
- if (is_array( $data )) {
- extract( $data );
+ if (strstr( $key, 'role_' )) {
+ $key = 'role';
}
- }
- if (!isset( $data['type'] )) return;
+ $um_user_value = um_user( $key );
- if (isset( $data['in_group'] ) && $data['in_group'] != '' && $rule != 'group') return;
+ if ($key == 'role') {
+ $um_user_value = strtolower( $um_user_value );
- if ($visibility == 'view' && $this->set_mode != 'register') return;
+ $role_keys = get_option( 'um_roles' );
- if (( $visibility == 'view' && $this->set_mode == 'register' ) ||
- ( isset( $data['editable'] ) && $data['editable'] == 0 && $this->set_mode == 'profile' )
- ) {
-
- um_fetch_user( get_current_user_id() );
- if (!um_user( 'can_edit_everyone' ))
- $disabled = ' disabled="disabled" ';
- um_fetch_user( $_um_profile_id );
- if (isset( $data['public'] ) && $data['public'] == '-2' && $data['roles']) {
- if (in_array( UM()->roles()->um_get_user_role( get_current_user_id() ), $data['roles'] )) {
- $disabled = '';
+ if (!empty( $role_keys )) {
+ if (in_array( $um_user_value, $role_keys )) {
+ $um_user_value = 'um_' . $um_user_value;
+ }
}
}
+ if ($um_user_value == $value) {
+ return true;
+ }
+
+ if (is_array( $um_user_value ) && in_array( $value, $um_user_value )) {
+ return true;
+ }
+
+ if (is_array( $um_user_value )) {
+ foreach ($um_user_value as $u) {
+ if ($u == html_entity_decode( $value )) {
+ return true;
+ }
+ }
+ }
+
+
+ } else if (isset( $data['default'] ) && $data['default'] == $value) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+
+ /**
+ * Get field icon
+ *
+ * @param string $key
+ *
+ * @return string
+ */
+ function get_field_icon( $key ) {
+ $fields = UM()->builtin()->all_user_fields;
+ if (isset( $fields[$key]['icon'] ))
+ return $fields[$key]['icon'];
+
+ return '';
+ }
+
+
+ /**
+ * Gets selected option value from a callback function
+ *
+ * @param string $value
+ * @param array $data
+ * @param string $type
+ *
+ * @return json
+ */
+ function get_option_value_from_callback( $value, $data, $type ) {
+
+ if (in_array( $type, array( 'select', 'multiselect' ) ) && isset( $data['custom_dropdown_options_source'] ) && !empty( $data['custom_dropdown_options_source'] )) {
+
+ if ( function_exists( $data['custom_dropdown_options_source'] ) ) {
+
+ $arr_options = call_user_func( $data['custom_dropdown_options_source'], $data['parent_dropdown_relationship'] );
+
+
+ if ($type == 'select') {
+ if (isset( $arr_options[$value] ) && !empty( $arr_options[$value] )) {
+ return $arr_options[$value];
+ } else if (isset( $data['default'] ) && !empty( $data['default'] ) && empty( $arr_options[$value] )) {
+ return $arr_options[$data['default']];
+ } else {
+ return '';
+ }
+ }
+
+ if ($type == 'multiselect') {
+
+ if (is_array( $value )) {
+ $values = $value;
+ } else {
+ $values = explode( ', ', $value );
+ }
+
+ $arr_paired_options = array();
+
+ foreach ($values as $option) {
+ if (isset( $arr_options[$option] )) {
+ $arr_paired_options[] = $arr_options[$option];
+ }
+ }
+
+ return implode( ', ', $arr_paired_options );
+ }
+
}
- if (!isset( $data['autocomplete'] )) {
- $autocomplete = 'off';
+
+ }
+
+ return $value;
+ }
+
+ /**
+ * Get select options from a callback function
+ *
+ * @param array $data
+ * @param string $type
+ *
+ * @return array $arr_options
+ */
+ function get_options_from_callback( $data, $type ) {
+
+ if ( in_array( $type, array( 'select', 'multiselect' ) ) && isset( $data['custom_dropdown_options_source'] ) && ! empty( $data['custom_dropdown_options_source'] ) ) {
+
+ $arr_options = call_user_func( $data['custom_dropdown_options_source'], $data['parent_dropdown_relationship'] );
+
+
+ }
+
+ return $arr_options;
+ }
+
+ /**
+ * Get field type
+ *
+ * @param string $key
+ *
+ * @return string
+ */
+ function get_field_type( $key ) {
+ $fields = UM()->builtin()->all_user_fields;
+ if (isset( $fields[$key]['type'] ))
+ return $fields[$key]['type'];
+
+ return '';
+ }
+
+ /**
+ * Get field label
+ *
+ * @param string $key
+ *
+ * @return string
+ */
+ function get_label( $key ) {
+ $fields = UM()->builtin()->all_user_fields;
+ if (isset( $fields[$key]['label'] ))
+ return $fields[$key]['label'];
+ if (isset( $fields[$key]['title'] ))
+ return $fields[$key]['title'];
+
+ return '';
+ }
+
+
+ /**
+ * Get field title
+ *
+ * @param string $key
+ *
+ * @return string
+ */
+ function get_field_title( $key ) {
+ $fields = UM()->builtin()->all_user_fields;
+ if (isset( $fields[$key]['title'] ))
+ return $fields[$key]['title'];
+ if (isset( $fields[$key]['label'] ))
+ return $fields[$key]['label'];
+
+ return __( 'Custom Field', 'ultimate-member' );
+ }
+
+ /**
+ * Get form fields
+ *
+ * @return array
+ */
+ function get_fields() {
+ $this->fields = array();
+ $this->fields = apply_filters( "um_get_form_fields", $this->fields );
+
+ return $this->fields;
+ }
+
+
+ /**
+ * Get specific field
+ *
+ * @param string $key
+ *
+ * @return array
+ */
+ function get_field( $key ) {
+ $fields = $this->get_fields();
+
+ if (isset( $fields ) && is_array( $fields ) && isset( $fields[$key] )) {
+ $array = $fields[$key];
+ } else {
+ if (!isset( UM()->builtin()->predefined_fields[$key] ) && !isset( UM()->builtin()->all_user_fields[$key] )) {
+ return '';
}
+ $array = ( isset( UM()->builtin()->predefined_fields[$key] ) ) ? UM()->builtin()->predefined_fields[$key] : UM()->builtin()->all_user_fields[$key];
+ }
+
+ $array['classes'] = null;
+
+ if (!isset( $array['placeholder'] )) $array['placeholder'] = null;
+ if (!isset( $array['required'] )) $array['required'] = null;
+ if (!isset( $array['validate'] )) $array['validate'] = null;
+ if (!isset( $array['default'] )) $array['default'] = null;
+
+ if (isset( $array['conditions'] ) && is_array( $array['conditions'] ) && !$this->viewing) {
+ $array['conditional'] = '';
+
+ foreach ($array['conditions'] as $cond_id => $cond) {
+ $array['conditional'] .= ' data-cond-' . $cond_id . '-action="' . $cond[0] . '" data-cond-' . $cond_id . '-field="' . $cond[1] . '" data-cond-' . $cond_id . '-operator="' . $cond[2] . '" data-cond-' . $cond_id . '-value="' . $cond[3] . '"';
+ }
+
+ $array['classes'] .= ' um-is-conditional';
+
+ } else {
+ $array['conditional'] = null;
+ }
+
+ $array['classes'] .= ' um-field-' . $key;
+ $array['classes'] .= ' um-field-' . $array['type'];
+ $array['classes'] .= ' um-field-type_' . $array['type'];
+
+ switch ($array['type']) {
+
+ case 'googlemap':
+ case 'youtube_video':
+ case 'vimeo_video':
+ case 'soundcloud_track':
+ $array['disabled'] = '';
+ $array['input'] = 'text';
+ break;
+
+ case 'text':
+
+ $array['disabled'] = '';
+
+ if ($key == 'user_login' && isset( $this->set_mode ) && $this->set_mode == 'account') {
+ $array['disabled'] = 'disabled="disabled"';
+ }
+
+ $array['input'] = 'text';
+
+ break;
+
+ case 'password':
+
+ $array['input'] = 'password';
+
+ break;
+
+ case 'number':
+
+ $array['disabled'] = '';
+
+ break;
+
+ case 'url':
+
+ $array['input'] = 'text';
+
+ break;
+
+ case 'date':
+
+ $array['input'] = 'text';
+
+ if (!isset( $array['format'] )) $array['format'] = 'j M Y';
+
+ switch ($array['format']) {
+ case 'j M Y':
+ $js_format = 'd mmm yyyy';
+ break;
+ case 'j F Y':
+ $js_format = 'd mmmm yyyy';
+ break;
+ case 'M j Y':
+ $js_format = 'mmm d yyyy';
+ break;
+ case 'F j Y':
+ $js_format = 'mmmm d yyyy';
+ break;
+ }
+
+ $array['js_format'] = $js_format;
+
+ if (!isset( $array['range'] )) $array['range'] = 'years';
+ if (!isset( $array['years'] )) $array['years'] = 100;
+ if (!isset( $array['years_x'] )) $array['years_x'] = 'past';
+ if (!isset( $array['disabled_weekdays'] )) $array['disabled_weekdays'] = '';
+
+ if (!empty( $array['disabled_weekdays'] )) {
+ $array['disabled_weekdays'] = '[' . implode( ',', $array['disabled_weekdays'] ) . ']';
+ }
+
+ // When date range is strictly defined
+ if ($array['range'] == 'date_range') {
+
+ $array['date_min'] = str_replace( '/', ',', $array['range_start'] );
+ $array['date_max'] = str_replace( '/', ',', $array['range_end'] );
+
+ } else {
+
+ if ($array['years_x'] == 'past') {
+
+ $date = new \DateTime( date( 'Y-n-d' ) );
+ $past = $date->modify( '-' . $array['years'] . ' years' );
+ $past = $date->format( 'Y,n,d' );
+
+ $array['date_min'] = $past;
+ $array['date_max'] = date( 'Y,n,d' );
+
+ } else if ($array['years_x'] == 'future') {
+
+ $date = new \DateTime( date( 'Y-n-d' ) );
+ $future = $date->modify( '+' . $array['years'] . ' years' );
+ $future = $date->format( 'Y,n,d' );
+
+ $array['date_min'] = date( 'Y,n,d' );
+ $array['date_max'] = $future;
+
+ } else {
+
+ $date = new \DateTime( date( 'Y-n-d' ) );
+ $date_f = new \DateTime( date( 'Y-n-d' ) );
+ $past = $date->modify( '-' . ( $array['years'] / 2 ) . ' years' );
+ $past = $date->format( 'Y,n,d' );
+ $future = $date_f->modify( '+' . ( $array['years'] / 2 ) . ' years' );
+ $future = $date_f->format( 'Y,n,d' );
+
+ $array['date_min'] = $past;
+ $array['date_max'] = $future;
+
+ }
+
+ }
+
+ break;
+
+ case 'time':
+
+ $array['input'] = 'text';
+
+ if (!isset( $array['format'] )) $array['format'] = 'g:i a';
+
+ switch ($array['format']) {
+ case 'g:i a':
+ $js_format = 'h:i a';
+ break;
+ case 'g:i A':
+ $js_format = 'h:i A';
+ break;
+ case 'H:i':
+ $js_format = 'HH:i';
+ break;
+ }
+
+ $array['js_format'] = $js_format;
+
+ if (!isset( $array['intervals'] )) $array['intervals'] = 60;
+
+ break;
+
+ case 'textarea':
+
+ if (!isset( $array['height'] )) $array['height'] = '100px';
+
+ break;
+
+ case 'rating':
+
+ if (!isset( $array['number'] )) $array['number'] = 5;
+
+ break;
+
+ case 'spacing':
+
+ if (!isset( $array['spacing'] )) {
+ $array['spacing'] = '20px';
+ }
+
+ break;
+
+ case 'divider':
+
+ if (isset( $array['width'] )) {
+ $array['borderwidth'] = $array['width'];
+ } else {
+ $array['borderwidth'] = 4;
+ }
+
+ if (isset( $array['color'] )) {
+ $array['bordercolor'] = $array['color'];
+ } else {
+ $array['bordercolor'] = '#eee';
+ }
+
+ if (isset( $array['style'] )) {
+ $array['borderstyle'] = $array['style'];
+ } else {
+ $array['borderstyle'] = 'solid';
+ }
+
+ if (!isset( $array['divider_text'] )) {
+ $array['divider_text'] = '';
+ }
+
+ break;
+
+ case 'image':
+
+ if (!isset( $array['crop'] )) $array['crop'] = 0;
+
+ if ($array['crop'] == 0) {
+ $array['crop_data'] = 0;
+ } else if ($array['crop'] == 1) {
+ $array['crop_data'] = 'square';
+ } else if ($array['crop'] == 2) {
+ $array['crop_data'] = 'cover';
+ } else {
+ $array['crop_data'] = 'user';
+ }
+
+ if (!isset( $array['modal_size'] )) $array['modal_size'] = 'normal';
+
+ if ($array['crop'] > 0) {
+ $array['crop_class'] = 'crop';
+ } else {
+ $array['crop_class'] = '';
+ }
+
+ if (!isset( $array['ratio'] )) $array['ratio'] = 1.0;
+
+ if (!isset( $array['min_width'] )) $array['min_width'] = '';
+ if (!isset( $array['min_height'] )) $array['min_height'] = '';
+
+ if ($array['min_width'] == '' && $array['crop'] == 1) $array['min_width'] = 600;
+ if ($array['min_height'] == '' && $array['crop'] == 1) $array['min_height'] = 600;
+
+ if ($array['min_width'] == '' && $array['crop'] == 3) $array['min_width'] = 600;
+ if ($array['min_height'] == '' && $array['crop'] == 3) $array['min_height'] = 600;
+
+ if (!isset( $array['invalid_image'] )) $array['invalid_image'] = __( "Please upload a valid image!", 'ultimate-member' );
+ if (!isset( $array['allowed_types'] )) {
+ $array['allowed_types'] = "gif,jpg,jpeg,png";
+ } else {
+ $array['allowed_types'] = implode( ',', $array['allowed_types'] );
+ }
+ if (!isset( $array['upload_text'] )) $array['upload_text'] = '';
+ if (!isset( $array['button_text'] )) $array['button_text'] = __( 'Upload', 'ultimate-member' );
+ if (!isset( $array['extension_error'] )) $array['extension_error'] = __( "Sorry this is not a valid image.", 'ultimate-member' );
+ if (!isset( $array['max_size_error'] )) $array['max_size_error'] = __( "This image is too large!", 'ultimate-member' );
+ if (!isset( $array['min_size_error'] )) $array['min_size_error'] = __( "This image is too small!", 'ultimate-member' );
+ if (!isset( $array['max_files_error'] )) $array['max_files_error'] = __( "You can only upload one image", 'ultimate-member' );
+ if (!isset( $array['max_size'] )) $array['max_size'] = 999999999;
+ if (!isset( $array['upload_help_text'] )) $array['upload_help_text'] = '';
+ if (!isset( $array['icon'] )) $array['icon'] = '';
+
+ break;
+
+ case 'file':
+
+ if (!isset( $array['modal_size'] )) $array['modal_size'] = 'normal';
+
+ if (!isset( $array['allowed_types'] )) {
+ $array['allowed_types'] = "pdf,txt";
+ } else {
+ $array['allowed_types'] = implode( ',', $array['allowed_types'] );
+ }
+ if (!isset( $array['upload_text'] )) $array['upload_text'] = '';
+ if (!isset( $array['button_text'] )) $array['button_text'] = __( 'Upload', 'ultimate-member' );
+ if (!isset( $array['extension_error'] )) $array['extension_error'] = "Sorry this is not a valid file.";
+ if (!isset( $array['max_size_error'] )) $array['max_size_error'] = "This file is too large!";
+ if (!isset( $array['min_size_error'] )) $array['min_size_error'] = "This file is too small!";
+ if (!isset( $array['max_files_error'] )) $array['max_files_error'] = "You can only upload one file";
+ if (!isset( $array['max_size'] )) $array['max_size'] = 999999999;
+ if (!isset( $array['upload_help_text'] )) $array['upload_help_text'] = '';
+ if (!isset( $array['icon'] )) $array['icon'] = '';
+
+ break;
+
+ case 'select':
+
+ break;
+
+ case 'multiselect':
+
+ break;
+
+ case 'group':
+
+ if (!isset( $array['max_entries'] )) $array['max_entries'] = 0;
+
+ break;
+
+ }
+
+ if (!isset( $array['visibility'] )) $array['visibility'] = 'all';
+
+ $array = apply_filters( "um_get_field__{$key}", $array );
+
+
+ return $array;
+ }
+
+ /**
+ * Gets a field in 'input mode'
+ *
+ * @param string $key
+ * @param array $data
+ * @param boolean $rule
+ *
+ * @return string
+ */
+ function edit_field( $key, $data, $rule = false ) {
+ global $_um_profile_id;
+ $output = null;
+ $disabled = '';
+ if (empty( $_um_profile_id )) {
+ $_um_profile_id = um_user( 'ID' );
+ }
+
+
+ // get whole field data
+ if (isset( $data ) && is_array( $data )) {
+ $data = $this->get_field( $key );
+ if (is_array( $data )) {
+ extract( $data );
+ }
+ }
+
+ if (!isset( $data['type'] )) return;
+
+ if (isset( $data['in_group'] ) && $data['in_group'] != '' && $rule != 'group') return;
+
+ if ($visibility == 'view' && $this->set_mode != 'register') return;
+
+ if (( $visibility == 'view' && $this->set_mode == 'register' ) ||
+ ( isset( $data['editable'] ) && $data['editable'] == 0 && $this->set_mode == 'profile' )
+ ) {
+
um_fetch_user( get_current_user_id() );
- if (!um_can_view_field( $data )) return;
- if (!um_can_edit_field( $data )) return;
+ if (!um_user( 'can_edit_everyone' ))
+ $disabled = ' disabled="disabled" ';
um_fetch_user( $_um_profile_id );
-
- // fields that need to be disabled in edit mode (profile)
- $arr_restricted_fields = array( 'user_email', 'username', 'user_login', 'user_password' );
-
- if ( UM()->options()->get( 'editable_primary_email_in_profile' ) == 1 ) {
- unset( $arr_restricted_fields[0] ); // remove user_email
+ if (isset( $data['public'] ) && $data['public'] == '-2' && $data['roles']) {
+ if (in_array( UM()->roles()->um_get_user_role( get_current_user_id() ), $data['roles'] )) {
+ $disabled = '';
+ }
}
- if (in_array( $key, $arr_restricted_fields ) && $this->editing == true && $this->set_mode == 'profile') {
+ }
+
+ if (!isset( $data['autocomplete'] )) {
+ $autocomplete = 'off';
+ }
+ um_fetch_user( get_current_user_id() );
+ if (!um_can_view_field( $data )) return;
+ if (!um_can_edit_field( $data )) return;
+ um_fetch_user( $_um_profile_id );
+
+ // fields that need to be disabled in edit mode (profile)
+ $arr_restricted_fields = array( 'user_email', 'username', 'user_login', 'user_password' );
+
+ if ( UM()->options()->get( 'editable_primary_email_in_profile' ) == 1 ) {
+ unset( $arr_restricted_fields[0] ); // remove user_email
+ }
+
+ if (in_array( $key, $arr_restricted_fields ) && $this->editing == true && $this->set_mode == 'profile') {
+ return;
+ }
+
+ // forbidden in edit mode?
+ if (isset( $data['edit_forbidden'] )) return;
+
+ // required option
+ if (isset( $data['required_opt'] )) {
+ $opt = $data['required_opt'];
+ if ( UM()->options()->get( $opt[0] ) != $opt[1]) {
return;
}
+ }
- // forbidden in edit mode?
- if (isset( $data['edit_forbidden'] )) return;
-
- // required option
- if (isset( $data['required_opt'] )) {
- $opt = $data['required_opt'];
- if ( UM()->options()->get( $opt[0] ) != $opt[1]) {
- return;
- }
+ // required user permission
+ if (isset( $data['required_perm'] )) {
+ if (!um_user( $data['required_perm'] )) {
+ return;
}
+ }
- // required user permission
- if (isset( $data['required_perm'] )) {
- if (!um_user( $data['required_perm'] )) {
- return;
- }
+ // do not show passwords
+ if (isset( UM()->user()->preview ) && UM()->user()->preview) {
+ if ($data['type'] == 'password') {
+ return;
}
+ }
- // do not show passwords
- if (isset( UM()->user()->preview ) && UM()->user()->preview) {
- if ($data['type'] == 'password') {
- return;
+ $type = apply_filters( "um_hook_for_field_{$type}", $type );
+
+ /* Begin by field type */
+ switch ($type) {
+
+ /* Default: Integration */
+ default:
+ $mode = ( isset( $this->set_mode ) ) ? $this->set_mode : 'no_mode';
+ $output .= apply_filters( "um_edit_field_{$mode}_{$type}", $output, $data );
+ break;
+
+ /* Other fields */
+ case 'googlemap':
+ case 'youtube_video':
+ case 'vimeo_video':
+ case 'soundcloud_track':
+
+ $output .= '
';
+
+ if (isset( $data['label'] )) {
+ $output .= $this->field_label( $label, $key, $data );
}
- }
- $type = apply_filters( "um_hook_for_field_{$type}", $type );
+ $output .= '
';
- /* Begin by field type */
- switch ($type) {
+ if (isset( $icon ) && $icon && isset( $this->field_icons ) && $this->field_icons == 'field') {
- /* Default: Integration */
- default:
- $mode = ( isset( $this->set_mode ) ) ? $this->set_mode : 'no_mode';
- $output .= apply_filters( "um_edit_field_{$mode}_{$type}", $output, $data );
- break;
+ $output .= '
';
- /* Other fields */
- case 'googlemap':
- case 'youtube_video':
- case 'vimeo_video':
- case 'soundcloud_track':
+ }
- $output .= '
';
+ $field_name = $key . UM()->form()->form_suffix;
+ $field_value = htmlspecialchars( $this->field_value( $key, $default, $data ) );
- if (isset( $data['label'] )) {
- $output .= $this->field_label( $label, $key, $data );
- }
+ $output .= '
- $output .= '
';
+
';
- if (isset( $icon ) && $icon && isset( $this->field_icons ) && $this->field_icons == 'field') {
+ if (!empty( $disabled )) {
+ $output .= $this->disabled_hidden_field( $field_name, $field_value );
+ }
- $output .= '
';
+ if ($this->is_error( $key )) {
+ $output .= $this->field_error( $this->show_error( $key ) );
+ }
- }
+ $output .= '
';
+ break;
- $field_name = $key . UM()->form()->form_suffix;
- $field_value = htmlspecialchars( $this->field_value( $key, $default, $data ) );
+ /* Text */
+ case 'text':
- $output .= '
-
-
';
+ $output .= '
';
- if (!empty( $disabled )) {
- $output .= $this->disabled_hidden_field( $field_name, $field_value );
- }
+ if (isset( $data['label'] )) {
+ $output .= $this->field_label( $label, $key, $data );
+ }
- if ($this->is_error( $key )) {
- $output .= $this->field_error( $this->show_error( $key ) );
- }
+ $output .= '
';
- $output .= '
';
- break;
+ if (isset( $icon ) && $icon && isset( $this->field_icons ) && $this->field_icons == 'field') {
- /* Text */
- case 'text':
+ $output .= '
';
- $output .= '
';
+ }
- if (isset( $data['label'] )) {
- $output .= $this->field_label( $label, $key, $data );
- }
+ $field_name = $key . UM()->form()->form_suffix;
+ $field_value = htmlspecialchars( $this->field_value( $key, $default, $data ) );
- $output .= '
';
+ $output .= '
- if (isset( $icon ) && $icon && isset( $this->field_icons ) && $this->field_icons == 'field') {
+
';
- $output .= '
';
+ if (!empty( $disabled )) {
+ $output .= $this->disabled_hidden_field( $field_name, $field_value );
+ }
- }
+ if ($this->is_error( $key )) {
+ $output .= $this->field_error( $this->show_error( $key ) );
+ }
- $field_name = $key . UM()->form()->form_suffix;
- $field_value = htmlspecialchars( $this->field_value( $key, $default, $data ) );
+ $output .= '
';
+ break;
- $output .= '
-
-
';
+ /* Number */
+ case 'number':
- if (!empty( $disabled )) {
- $output .= $this->disabled_hidden_field( $field_name, $field_value );
- }
+ $output .= '
';
- if ($this->is_error( $key )) {
- $output .= $this->field_error( $this->show_error( $key ) );
- }
+ if (isset( $data['label'] )) {
+ $output .= $this->field_label( $label, $key, $data );
+ }
- $output .= '
';
- break;
+ $output .= '
';
- /* Number */
- case 'number':
+ if (isset( $icon ) && $icon && isset( $this->field_icons ) && $this->field_icons == 'field') {
- $output .= '
';
+ $output .= '
';
- if (isset( $data['label'] )) {
- $output .= $this->field_label( $label, $key, $data );
- }
+ }
- $output .= '
';
+ $number_limit = '';
- if (isset( $icon ) && $icon && isset( $this->field_icons ) && $this->field_icons == 'field') {
+ if (isset( $min )) {
+ $number_limit .= " min=\"{$min}\" ";
+ }
- $output .= '
';
+ if (isset( $max )) {
+ $number_limit .= " max=\"{$max}\" ";
+ }
- }
+ $output .= '
- $number_limit = '';
+
';
- if (isset( $min )) {
- $number_limit .= " min=\"{$min}\" ";
- }
+ if ($this->is_error( $key )) {
+ $output .= $this->field_error( $this->show_error( $key ) );
+ }
- if (isset( $max )) {
- $number_limit .= " max=\"{$max}\" ";
- }
+ $output .= '
';
+ break;
- $output .= '
-
-
';
+ /* Password */
+ case 'password':
- if ($this->is_error( $key )) {
- $output .= $this->field_error( $this->show_error( $key ) );
- }
+ $original_key = $key;
- $output .= '
';
- break;
+ if ($key == 'single_user_password') {
- /* Password */
- case 'password':
-
- $original_key = $key;
-
- if ($key == 'single_user_password') {
-
- $key = $original_key;
-
- $output .= '
';
-
- if (isset( $data['label'] )) {
- $output .= $this->field_label( $label, $key, $data );
- }
-
- $output .= '
';
-
- if (isset( $icon ) && $icon && $this->field_icons == 'field') {
-
- $output .= '
';
-
- }
-
- $output .= '
-
-
';
-
- if ($this->is_error( $key )) {
- $output .= $this->field_error( $this->show_error( $key ) );
- }
-
- $output .= '
';
-
- } else {
-
- if ($this->set_mode == 'account' || um_is_core_page( 'account' )) {
-
- $key = 'current_' . $original_key;
- $output .= '
';
-
- if (isset( $data['label'] )) {
- $output .= $this->field_label( __( 'Current Password', 'ultimate-member' ), $key, $data );
- }
-
- $output .= '
';
-
- if (isset( $icon ) && $icon && $this->field_icons == 'field') {
-
- $output .= '
';
-
- }
-
- $output .= '
-
-
';
-
- if ($this->is_error( $key )) {
- $output .= $this->field_error( $this->show_error( $key ) );
- }
-
- $output .= '
';
-
- }
-
- $key = $original_key;
-
- $output .= '
';
-
- if ($this->set_mode == 'account' && um_is_core_page( 'account' ) || $this->set_mode == 'password' && um_is_core_page( 'password-reset' )) {
-
- $output .= $this->field_label( __( 'New Password', 'ultimate-member' ), $key, $data );
-
- } else if (isset( $data['label'] )) {
-
- $output .= $this->field_label( $label, $key, $data );
-
- }
-
- $output .= '
';
-
- if (isset( $icon ) && $icon && $this->field_icons == 'field') {
-
- $output .= '
';
-
- }
-
- $output .= '
-
-
';
-
- if ($this->is_error( $key )) {
- $output .= $this->field_error( $this->show_error( $key ) );
- }
-
- $output .= '
';
-
- if ($this->set_mode != 'login' && isset( $data['force_confirm_pass'] ) && $data['force_confirm_pass'] == 1) {
-
- $key = 'confirm_' . $original_key;
- $output .= '
';
-
- if (isset( $data['label'] )) {
- $output .= $this->field_label( sprintf( __( 'Confirm %s', 'ultimate-member' ), $data['label'] ), $key, $data );
- }
-
- $output .= '
';
-
- if (isset( $icon ) && $icon && $this->field_icons == 'field') {
-
- $output .= '
';
-
- }
-
- $output .= '
-
-
';
-
- if ($this->is_error( $key )) {
- $output .= $this->field_error( $this->show_error( $key ) );
- }
-
- $output .= '
';
-
- }
-
- }
-
- break;
-
- /* URL */
- case 'url':
-
- $output .= '
';
-
- if (isset( $data['label'] )) {
- $output .= $this->field_label( $label, $key, $data );
- }
-
- $output .= '
';
-
- if (isset( $icon ) && $icon && isset( $this->field_icons ) && $this->field_icons == 'field') {
-
- $output .= '
';
-
- }
-
- $output .= '
-
-
';
-
- if ($this->is_error( $key )) {
- $output .= $this->field_error( $this->show_error( $key ) );
- }
-
- $output .= '
';
- break;
-
- /* Date */
- case 'date':
-
- $output .= '
';
-
- if (isset( $data['label'] )) {
- $output .= $this->field_label( $label, $key, $data );
- }
-
- $output .= '
';
-
- if (isset( $icon ) && $icon && isset( $this->field_icons ) && $this->field_icons == 'field') {
-
- $output .= '
';
-
- }
-
- $output .= '
-
-
';
-
- if ($this->is_error( $key )) {
- $output .= $this->field_error( $this->show_error( $key ) );
- }
-
- $output .= '
';
- break;
-
- /* Time */
- case 'time':
+ $key = $original_key;
$output .= '
';
@@ -1541,8 +1362,8 @@
}
- $output .= '
-
+ $output .= '
+
';
if ($this->is_error( $key )) {
@@ -1550,645 +1371,741 @@
}
$output .= '
';
- break;
- /* Row */
- case 'row':
- $output .= '';
- break;
+ } else {
+
+ if ($this->set_mode == 'account' || um_is_core_page( 'account' )) {
+
+ $key = 'current_' . $original_key;
+ $output .= '';
+
+ if (isset( $data['label'] )) {
+ $output .= $this->field_label( __( 'Current Password', 'ultimate-member' ), $key, $data );
+ }
+
+ $output .= '
';
+
+ if (isset( $icon ) && $icon && $this->field_icons == 'field') {
+
+ $output .= '
';
+
+ }
+
+ $output .= '
+
+
';
+
+ if ($this->is_error( $key )) {
+ $output .= $this->field_error( $this->show_error( $key ) );
+ }
+
+ $output .= '
';
+
+ }
+
+ $key = $original_key;
- /* Textarea */
- case 'textarea':
$output .= '';
- if (isset( $data['label'] )) {
+ if ($this->set_mode == 'account' && um_is_core_page( 'account' ) || $this->set_mode == 'password' && um_is_core_page( 'password-reset' )) {
+
+ $output .= $this->field_label( __( 'New Password', 'ultimate-member' ), $key, $data );
+
+ } else if (isset( $data['label'] )) {
+
$output .= $this->field_label( $label, $key, $data );
+
}
$output .= '
';
- $field_name = $key;
- $field_value = $this->field_value( $key, $default, $data );
- if (isset( $data['html'] ) && $data['html'] != 0 && $key != "description") {
+ if (isset( $icon ) && $icon && $this->field_icons == 'field') {
+ $output .= '
';
- $textarea_settings = array(
- 'media_buttons' => false,
- 'wpautop' => false,
- 'editor_class' => $this->get_class( $key, $data ),
- 'editor_height' => $height,
- 'tinymce' => array(
- 'toolbar1' => 'formatselect,bullist,numlist,bold,italic,underline,forecolor,blockquote,hr,removeformat,link,unlink,undo,redo',
- 'toolbar2' => '',
- )
- );
+ }
- if (!empty( $disabled )) {
- $textarea_settings['tinymce']['readonly'] = true;
+ $output .= '
+
+
';
+
+ if ($this->is_error( $key )) {
+ $output .= $this->field_error( $this->show_error( $key ) );
+ }
+
+ $output .= '
';
+
+ if ($this->set_mode != 'login' && isset( $data['force_confirm_pass'] ) && $data['force_confirm_pass'] == 1) {
+
+ $key = 'confirm_' . $original_key;
+ $output .= '';
+
+ if (isset( $data['label'] )) {
+ $output .= $this->field_label( sprintf( __( 'Confirm %s', 'ultimate-member' ), $data['label'] ), $key, $data );
}
- $textarea_settings = apply_filters( 'um_form_fields_textarea_settings', $textarea_settings );
+ $output .= '
';
- // turn on the output buffer
- ob_start();
+ if (isset( $icon ) && $icon && $this->field_icons == 'field') {
- // echo the editor to the buffer
- wp_editor( $field_value, $key, $textarea_settings );
+ $output .= '
';
- // add the contents of the buffer to the output variable
- $output .= ob_get_clean();
+ }
- } else $output .= '
';
+ $output .= '
- $output .= '
-
';
+
';
+
+ if ($this->is_error( $key )) {
+ $output .= $this->field_error( $this->show_error( $key ) );
+ }
+
+ $output .= '';
+
+ }
+
+ }
+
+ break;
+
+ /* URL */
+ case 'url':
+
+ $output .= '';
+
+ if (isset( $data['label'] )) {
+ $output .= $this->field_label( $label, $key, $data );
+ }
+
+ $output .= '
';
+
+ if (isset( $icon ) && $icon && isset( $this->field_icons ) && $this->field_icons == 'field') {
+
+ $output .= '
';
+
+ }
+
+ $output .= '
+
+
';
+
+ if ($this->is_error( $key )) {
+ $output .= $this->field_error( $this->show_error( $key ) );
+ }
+
+ $output .= '
';
+ break;
+
+ /* Date */
+ case 'date':
+
+ $output .= '';
+
+ if (isset( $data['label'] )) {
+ $output .= $this->field_label( $label, $key, $data );
+ }
+
+ $output .= '
';
+
+ if (isset( $icon ) && $icon && isset( $this->field_icons ) && $this->field_icons == 'field') {
+
+ $output .= '
';
+
+ }
+
+ $output .= '
+
+
';
+
+ if ($this->is_error( $key )) {
+ $output .= $this->field_error( $this->show_error( $key ) );
+ }
+
+ $output .= '
';
+ break;
+
+ /* Time */
+ case 'time':
+
+ $output .= '';
+
+ if (isset( $data['label'] )) {
+ $output .= $this->field_label( $label, $key, $data );
+ }
+
+ $output .= '
';
+
+ if (isset( $icon ) && $icon && $this->field_icons == 'field') {
+
+ $output .= '
';
+
+ }
+
+ $output .= '
+
+
';
+
+ if ($this->is_error( $key )) {
+ $output .= $this->field_error( $this->show_error( $key ) );
+ }
+
+ $output .= '
';
+ break;
+
+ /* Row */
+ case 'row':
+ $output .= '';
+ break;
+
+ /* Textarea */
+ case 'textarea':
+ $output .= '';
+
+ if (isset( $data['label'] )) {
+ $output .= $this->field_label( $label, $key, $data );
+ }
+
+ $output .= '
';
+ $field_name = $key;
+ $field_value = $this->field_value( $key, $default, $data );
+
+ if (isset( $data['html'] ) && $data['html'] != 0 && $key != "description") {
+
+
+ $textarea_settings = array(
+ 'media_buttons' => false,
+ 'wpautop' => false,
+ 'editor_class' => $this->get_class( $key, $data ),
+ 'editor_height' => $height,
+ 'tinymce' => array(
+ 'toolbar1' => 'formatselect,bullist,numlist,bold,italic,underline,forecolor,blockquote,hr,removeformat,link,unlink,undo,redo',
+ 'toolbar2' => '',
+ )
+ );
if (!empty( $disabled )) {
- $output .= $this->disabled_hidden_field( $field_name, $field_value );
+ $textarea_settings['tinymce']['readonly'] = true;
}
- if ($this->is_error( $key )) {
- $output .= $this->field_error( $this->show_error( $key ) );
- }
+ $textarea_settings = apply_filters( 'um_form_fields_textarea_settings', $textarea_settings );
- $output .= '
';
- break;
+ // turn on the output buffer
+ ob_start();
- /* Rating */
- case 'rating':
- $output .= '
';
+ // echo the editor to the buffer
+ wp_editor( $field_value, $key, $textarea_settings );
- if (isset( $data['label'] )) {
- $output .= $this->field_label( $label, $key, $data );
- }
+ // add the contents of the buffer to the output variable
+ $output .= ob_get_clean();
- $output .= '
';
+ } else $output .= '
';
- $output .= '
';
+ $output .= '
+
';
- $output .= '
';
+ if (!empty( $disabled )) {
+ $output .= $this->disabled_hidden_field( $field_name, $field_value );
+ }
- $output .= '
';
+ if ($this->is_error( $key )) {
+ $output .= $this->field_error( $this->show_error( $key ) );
+ }
- break;
+ $output .= '';
+ break;
- /* Gap/Space */
- case 'spacing':
- $output .= '';
- break;
+ /* Rating */
+ case 'rating':
+ $output .= '';
- /* A line divider */
- case 'divider':
- $output .= '
';
- if ($divider_text) {
- $output .= '
' . $divider_text . '
';
- }
- $output .= '
';
- break;
+ if (isset( $data['label'] )) {
+ $output .= $this->field_label( $label, $key, $data );
+ }
- /* Single Image Upload */
- case 'image':
- $output .= '
';
+ $output .= '
';
- if (in_array( $key, array( 'profile_photo', 'cover_photo' ) )) {
- $field_value = '';
- } else {
- $field_value = $this->field_value( $key, $default, $data );
- }
+ $output .= '
';
- $output .= '
';
+ $output .= '
';
- if (isset( $data['label'] )) {
- $output .= $this->field_label( $label, $key, $data );
- }
+ $output .= '
';
- $modal_label = ( isset( $data['label'] ) ) ? $data['label'] : __( 'Upload Photo', 'ultimate-member' );
+ break;
- $output .= '
';
+ /* Gap/Space */
+ case 'spacing':
+ $output .= '
';
+ break;
- if ($this->field_value( $key, $default, $data )) {
+ /* A line divider */
+ case 'divider':
+ $output .= '
';
+ if ($divider_text) {
+ $output .= '
' . $divider_text . '
';
+ }
+ $output .= '
';
+ break;
- if (!in_array( $key, array( 'profile_photo', 'cover_photo' ) )) {
- if (isset( $this->set_mode ) && $this->set_mode == 'register') {
- $imgValue = $this->field_value( $key, $default, $data );
- } else {
- $imgValue = um_user_uploads_uri() . $this->field_value( $key, $default, $data );
- }
- $img = '

';
- } else {
- $img = '';
- }
-
- $output .= '
' . __( 'Change photo', 'ultimate-member' ) . '';
-
- } else {
-
- $output .= '
-
-
![]()
-
' . $button_text . '';
-
- }
-
- $output .= '
';
-
- /* modal hidden */
- $output .= '
';
-
- $output .= '';
-
- $output .= '
';
-
- if (isset( $this->set_id )) {
- $set_id = $this->set_id;
- $set_mode = $this->set_mode;
- } else {
- $set_id = 0;
- $set_mode = '';
- }
-
- $nonce = wp_create_nonce( 'um_upload_nonce-' . $this->timestamp );
-
- $output .= '
';
- $output .= '
' . $button_text . '
';
-
- $output .= '';
-
- $output .= '
';
-
- $output .= '
';
-
- /* end */
-
- if ($this->is_error( $key )) {
- $output .= $this->field_error( $this->show_error( $key ) );
- }
-
- $output .= '
';
-
- break;
-
- /* Single File Upload */
- case 'file':
- $output .= '';
-
- $output .= '
';
-
- if (isset( $data['label'] )) {
- $output .= $this->field_label( $label, $key, $data );
- }
-
- $modal_label = ( isset( $data['label'] ) ) ? $data['label'] : __( 'Upload Photo', 'ultimate-member' );
-
- $output .= '
';
-
- /* modal hidden */
- $output .= '
';
-
- $output .= '';
-
- $output .= '
';
-
- if (isset( $this->set_id )) {
- $set_id = $this->set_id;
- $set_mode = $this->set_mode;
- } else {
- $set_id = 0;
- $set_mode = '';
- }
-
- $output .= '
';
-
- $nonce = wp_create_nonce( 'um_upload_nonce-' . $this->timestamp );
-
- $output .= '
' . $button_text . '
';
-
- $output .= '';
-
- $output .= '
';
-
- $output .= '
';
-
- /* end */
-
- if ($this->is_error( $key )) {
- $output .= $this->field_error( $this->show_error( $key ) );
- }
-
- $output .= '
';
-
- break;
-
- /* Select dropdown */
- case 'select':
-
- $form_key = str_replace( 'role_select', 'role', $key );
-
- $output .= '';
-
-
- if (isset( $data['allowclear'] ) && $data['allowclear'] == 0) {
- $class = 'um-s2';
- } else {
- $class = 'um-s1';
- }
-
- if (isset( $data['label'] )) {
- $output .= $this->field_label( $label, $key, $data );
- }
-
- $output .= '
';
- if (isset( $icon ) && $icon && isset( $this->field_icons ) && $this->field_icons == 'field') {
- $output .= '
';
- }
-
- $has_parent_option = false;
- $disabled_by_parent_option = '';
- $atts_ajax = '';
- $select_original_option_value = '';
-
- if (isset( $data['parent_dropdown_relationship'] ) && !empty( $data['parent_dropdown_relationship'] ) && !UM()->user()->preview) {
-
- $disabled_by_parent_option = 'disabled = disabled';
-
- $has_parent_option = true;
-
- $parent_dropdown_relationship = apply_filters( "um_custom_dropdown_options_parent__{$form_key}", $data['parent_dropdown_relationship'], $data );
- $atts_ajax .= " data-um-parent='{$parent_dropdown_relationship}' ";
-
- if (isset( $data['custom_dropdown_options_source'] ) && !empty( $data['custom_dropdown_options_source'] ) &&
- $has_parent_option && function_exists( $data['custom_dropdown_options_source'] ) &&
- um_user( $data['parent_dropdown_relationship'] )
- ) {
- $options = call_user_func( $data['custom_dropdown_options_source'], $data['parent_dropdown_relationship'] );
- $disabled_by_parent_option = '';
- if (um_user( $form_key )) {
- $select_original_option_value = " data-um-original-value='" . um_user( $form_key ) . "' ";
- }
- }
-
- }
-
- if (!empty( $data['custom_dropdown_options_source'] )) {
-
- $ajax_source = apply_filters( "um_custom_dropdown_options_source__{$form_key}", $data['custom_dropdown_options_source'], $data );
- $atts_ajax .= " data-um-ajax-source='{$ajax_source}' ";
-
- $ajax_source_url = apply_filters( "um_custom_dropdown_options_source_url__{$form_key}", admin_url( 'admin-ajax.php' ), $data );
- $atts_ajax .= " data-um-ajax-url='{$ajax_source_url}' ";
-
-
- }
-
- $output .= '
';
- break;
- /* Checkbox */
- case 'checkbox':
+ if ($this->is_error( $form_key )) {
+ $output .= $this->field_error( $this->show_error( $form_key ) );
+ }
- if (isset( $options )) {
- $options = apply_filters( 'um_checkbox_field_options', $options, $data );
- $options = apply_filters( "um_checkbox_field_options_{$key}", $options );
- }
+ $output .= '
';
+ break;
- $output .= '';
+ /* Multi-Select dropdown */
+ case 'multiselect':
- if (isset( $data['label'] )) {
- $output .= $this->field_label( $label, $key, $data );
- }
+ $max_selections = ( isset( $max_selections ) ) ? absint( $max_selections ) : 0;
- $output .= '
';
+ $output .= '
';
- // add options
- $i = 0;
+ if (isset( $data['allowclear'] ) && $data['allowclear'] == 0) {
+ $class = 'um-s2';
+ } else {
+ $class = 'um-s1';
+ }
+ if (isset( $data['label'] )) {
+ $output .= $this->field_label( $label, $key, $data );
+ }
+
+ $field_icon = false;
+ $field_icon_output = '';
+
+ $use_keyword = apply_filters( 'um_multiselect_option_value', 0, $data['type'] );
+
+ $output .= '
';
+ if (isset( $icon ) && $icon && isset( $this->field_icons ) && $this->field_icons == 'field') {
+ $output .= '
';
+ }
+
+ $output .= '
';
+
+
+ if (isset( $options ) && $options == 'builtin') {
+ $options = UM()->builtin()->get( $filter );
+ }
+
+ if (!isset( $options )) {
+ $options = UM()->builtin()->get( 'countries' );
+ }
+
+ if (isset( $options )) {
+ $options = apply_filters( 'um_multiselect_options', $options, $data );
+ $options = apply_filters( "um_multiselect_options_{$key}", $options );
+ $options = apply_filters( "um_multiselect_options_{$data['type']}", $options, $data );
+ }
+
+ // switch options pair for custom options from a callback function
+ if (isset( $data['custom_dropdown_options_source'] ) && !empty( $data['custom_dropdown_options_source'] )) {
+ $use_keyword = true;
+ }
+
+ // add an empty option!
+ $output .= '';
+
+ $arr_selected = array();
+ // add options
+ if (!empty( $options ) && is_array( $options )) {
foreach ($options as $k => $v) {
$v = rtrim( $v );
+ $um_field_checkbox_item_title = $v;
+ $opt_value = $v;
+
+ if ($use_keyword) {
+ $um_field_checkbox_item_title = $v;
+ $opt_value = $k;
+ }
+
+ $opt_value = apply_filters( 'um_field_non_utf8_value', $opt_value );
+
+ $output .= '';
+
+ }
+ }
+
+ $output .= '';
+
+ if (!empty( $disabled ) && !empty( $arr_selected )) {
+ foreach ($arr_selected as $item) {
+ $output .= $this->disabled_hidden_field( $key . '[]', $item );
+ }
+ }
+
+ $output .= '
';
+
+
+ if ($this->is_error( $key )) {
+ $output .= $this->field_error( $this->show_error( $key ) );
+ }
+
+ $output .= '
';
+ break;
+
+ /* Radio */
+ case 'radio':
+
+ $form_key = str_replace( 'role_radio', 'role', $key );
+
+ if (isset( $options )) {
+ $options = apply_filters( 'um_radio_field_options', $options, $data );
+ $options = apply_filters( "um_radio_field_options_{$key}", $options );
+ }
+
+ $output .= '
';
+
+ if (isset( $data['label'] )) {
+ $output .= $this->field_label( $label, $key, $data );
+ }
+
+ $output .= '
';
+
+ $options = $this->get_available_roles( $form_key, $options );
+
+ // add options
+ $i = 0;
+ $field_value = array();
+
+ if ( ! empty( $options ) ) {
+ foreach ( $options as $k => $v ) {
+
+ $v = rtrim( $v );
+
+ $um_field_checkbox_item_title = $v;
+ $option_value = $v;
+
+ if (!is_numeric( $k ) && in_array( $form_key, array( 'role' ) )) {
+ $um_field_checkbox_item_title = $v;
+ $option_value = $k;
+ }
+
$i++;
if ($i % 2 == 0) {
$col_class = 'right';
@@ -2196,40 +2113,33 @@
$col_class = '';
}
- if ($this->is_selected( $key, $v, $data )) {
+ if ($this->is_radio_checked( $key, $option_value, $data )) {
$active = 'active';
- $class = "um-icon-android-checkbox-outline";
+ $class = "um-icon-android-radio-button-on";
} else {
$active = '';
- $class = "um-icon-android-checkbox-outline-blank";
+ $class = "um-icon-android-radio-button-off";
}
if (isset( $data['editable'] ) && $data['editable'] == 0) {
$col_class .= " um-field-radio-state-disabled";
}
- $output .= '
';
-
-
- if ($this->is_error( $key )) {
- $output .= $this->field_error( $this->show_error( $key ) );
- }
-
- $output .= '
';
- break;
-
- /* HTML */
- case 'block':
- $output .= '
';
- break;
-
- /* Shortcode */
- case 'shortcode':
-
- $content = str_replace( '{profile_id}', um_profile_id(), $content );
-
- $output .= '
-
' . do_shortcode( $content ) . '
-
';
- break;
-
- /* Unlimited Group */
- case 'group':
-
- $fields = $this->get_fields_in_group( $key );
- if (!empty( $fields )) {
-
- $output .= '
-
' . __( $label, UM_TEXTDOMAIN ) . '
';
- $output .= '
';
-
- foreach ($fields as $subkey => $subdata) {
- $output .= $this->edit_field( $subkey, $subdata, 'group' );
- }
-
- $output .= '
';
- $output .= '
';
-
- }
-
- break;
-
- }
-
- // Custom filter for field output
- if (isset( $this->set_mode )) {
- $output = apply_filters( "um_{$key}_form_edit_field", $output, $this->set_mode );
- }
-
- return $output;
- }
-
-
- /**
- * Filter for user roles
- *
- * @param $form_key
- * @param array $options
- * @return array
- */
- function get_available_roles( $form_key, $options = array() ) {
- if ( $form_key != 'role' ) {
- return $options;
- }
-
- // role field
- global $wp_roles;
- $role_keys = array_map( function( $item ) {
- return 'um_' . $item;
- }, get_option( 'um_roles' ) );
- $exclude_roles = array_diff( array_keys( $wp_roles->roles ), array_merge( $role_keys, array( 'subscriber' ) ) );
-
- $roles = UM()->roles()->get_roles( false, $exclude_roles );
-
- if ( ! empty( $options ) ) {
- //fix when customers change options for role (radio/dropdown) fields
- foreach ( $roles as $role_key => $role_title ) {
- if ( false !== $search_key = array_search( $role_title, $options ) ) {
- if ( $role_key !== $search_key ) {
- $options[ $role_key ] = $role_title;
- unset( $options[ $search_key ] );
- }
+ if (!empty( $disabled )) {
+ foreach ($field_value as $item) {
+ $output .= $this->disabled_hidden_field( $form_key, $item );
}
}
- $options = array_intersect( $options, $roles );
- } else {
- $options = $roles;
- }
+ $output .= '
';
+
+ $output .= '
';
+
+ if ($this->is_error( $form_key )) {
+ $output .= $this->field_error( $this->show_error( $form_key ) );
+ }
+
+ $output .= '
';
+ break;
+
+ /* Checkbox */
+ case 'checkbox':
+
+ if (isset( $options )) {
+ $options = apply_filters( 'um_checkbox_field_options', $options, $data );
+ $options = apply_filters( "um_checkbox_field_options_{$key}", $options );
+ }
+
+ $output .= '';
+
+ if (isset( $data['label'] )) {
+ $output .= $this->field_label( $label, $key, $data );
+ }
+
+ $output .= '
';
+
+ // add options
+ $i = 0;
+
+ foreach ($options as $k => $v) {
+
+ $v = rtrim( $v );
+
+ $i++;
+ if ($i % 2 == 0) {
+ $col_class = 'right';
+ } else {
+ $col_class = '';
+ }
+
+ if ($this->is_selected( $key, $v, $data )) {
+ $active = 'active';
+ $class = "um-icon-android-checkbox-outline";
+ } else {
+ $active = '';
+ $class = "um-icon-android-checkbox-outline-blank";
+ }
+
+ if (isset( $data['editable'] ) && $data['editable'] == 0) {
+ $col_class .= " um-field-radio-state-disabled";
+ }
+
+ $output .= '
';
+
+ $um_field_checkbox_item_title = $v;
+
+ $v = apply_filters( 'um_field_non_utf8_value', $v );
+
+ $output .= 'is_selected( $key, $v, $data )) {
+ $output .= 'checked';
+ }
+
+ $output .= ' />';
+
+ if (!empty( $disabled ) && $this->is_selected( $key, $v, $data )) {
+ $output .= $this->disabled_hidden_field( $key . '[]', strip_tags( $v ) );
+ }
+
+
+ $output .= '';
+ $um_field_checkbox_item_title = apply_filters( "um_field_checkbox_item_title", $um_field_checkbox_item_title, $key, $v, $data );
+ $output .= '' . __( $um_field_checkbox_item_title, UM_TEXTDOMAIN ) . '';
+ $output .= '';
+
+ if ($i % 2 == 0) {
+ $output .= '
';
+ }
+
+ }
+
+ $output .= '
';
+
+ $output .= '
';
+
+
+ if ($this->is_error( $key )) {
+ $output .= $this->field_error( $this->show_error( $key ) );
+ }
+
+ $output .= '
';
+ break;
+
+ /* HTML */
+ case 'block':
+ $output .= '';
+ break;
+
+ /* Shortcode */
+ case 'shortcode':
+
+ $content = str_replace( '{profile_id}', um_profile_id(), $content );
+
+ $output .= '
+
' . do_shortcode( $content ) . '
+
';
+ break;
+
+ /* Unlimited Group */
+ case 'group':
+
+ $fields = $this->get_fields_in_group( $key );
+ if (!empty( $fields )) {
+
+ $output .= '
+
' . __( $label, UM_TEXTDOMAIN ) . '
';
+ $output .= '
';
+
+ foreach ($fields as $subkey => $subdata) {
+ $output .= $this->edit_field( $subkey, $subdata, 'group' );
+ }
+
+ $output .= '
';
+ $output .= '
';
+
+ }
+
+ break;
+
+ }
+
+ // Custom filter for field output
+ if (isset( $this->set_mode )) {
+ $output = apply_filters( "um_{$key}_form_edit_field", $output, $this->set_mode );
+ }
+
+ return $output;
+ }
+
+
+ /**
+ * Filter for user roles
+ *
+ * @param $form_key
+ * @param array $options
+ * @return array
+ */
+ function get_available_roles( $form_key, $options = array() ) {
+ if ( $form_key != 'role' ) {
return $options;
}
-
- /**
- * Sorts columns array
- *
- * @param array $arr
- * @param string $col
- * @param string $dir
- *
- * @return array $arr
- */
- function array_sort_by_column( $arr, $col, $dir = SORT_ASC ) {
- $sort_col = array();
- foreach ($arr as $key => $row) {
- if (isset( $row[$col] )) {
- $sort_col[$key] = $row[$col];
- }
- }
-
- array_multisort( $sort_col, $dir, $arr );
-
- return $arr;
- }
-
-
- /**
- * Get fields in row
- *
- * @param integer $row_id
- *
- * @return string
- */
- function get_fields_by_row( $row_id ) {
- foreach ($this->get_fields as $key => $array) {
- if (!isset( $array['in_row'] ) || ( isset( $array['in_row'] ) && $array['in_row'] == $row_id )) {
- $results[$key] = $array;
- }
- }
-
- return ( isset ( $results ) ) ? $results : '';
- }
-
-
- /**
- * Get fields by sub row
- *
- * @param string $row_fields
- * @param integer $subrow_id
- *
- * @return mixed
- */
- function get_fields_in_subrow( $row_fields, $subrow_id ) {
- if (!is_array( $row_fields )) return '';
- foreach ($row_fields as $key => $array) {
- if (!isset( $array['in_sub_row'] ) || ( isset( $array['in_sub_row'] ) && $array['in_sub_row'] == $subrow_id )) {
- $results[$key] = $array;
- }
- }
-
- return ( isset ( $results ) ) ? $results : '';
- }
-
- /**
- * Get fields in group
- *
- * @param integer $group_id
- *
- * @return mixed
- */
- function get_fields_in_group( $group_id ) {
- foreach ($this->get_fields as $key => $array) {
- if (isset( $array['in_group'] ) && $array['in_group'] == $group_id) {
- $results[$key] = $array;
- }
- }
-
- return ( isset ( $results ) ) ? $results : '';
- }
-
-
- /**
- * Get fields in column
- *
- * @param array $fields
- * @param integer $col_number
- *
- * @return mixed
- */
- function get_fields_in_column( $fields, $col_number ) {
- foreach ($fields as $key => $array) {
- if (isset( $array['in_column'] ) && $array['in_column'] == $col_number) {
- $results[$key] = $array;
- }
- }
-
- return ( isset ( $results ) ) ? $results : '';
- }
-
-
- /**
- * Display fields
- *
- * @param string $mode
- * @param array $args
- *
- * @return string
- */
- function display( $mode, $args ) {
- $output = null;
-
- $this->global_args = $args;
-
- UM()->form()->form_suffix = '-' . $this->global_args['form_id'];
-
- $this->set_mode = $mode;
- $this->set_id = $this->global_args['form_id'];
-
- $this->field_icons = ( isset( $this->global_args['icons'] ) ) ? $this->global_args['icons'] : 'label';
-
- // start output here
- $this->get_fields = $this->get_fields();
-
- if (!empty( $this->get_fields )) {
-
- // find rows
- foreach ($this->get_fields as $key => $array) {
- if ($array['type'] == 'row') {
- $this->rows[$key] = $array;
- unset( $this->get_fields[$key] ); // not needed anymore
- }
- }
-
- // rows fallback
- if (!isset( $this->rows )) {
- $this->rows = array( '_um_row_1' => array(
- 'type' => 'row',
- 'id' => '_um_row_1',
- 'sub_rows' => 1,
- 'cols' => 1
- )
- );
- }
-
- // master rows
- foreach ($this->rows as $row_id => $row_array) {
-
- $row_fields = $this->get_fields_by_row( $row_id );
- if ($row_fields) {
-
- $output .= $this->new_row_output( $row_id, $row_array );
-
- $sub_rows = ( isset( $row_array['sub_rows'] ) ) ? $row_array['sub_rows'] : 1;
- for ($c = 0; $c < $sub_rows; $c++) {
-
- // cols
- $cols = ( isset( $row_array['cols'] ) ) ? $row_array['cols'] : 1;
- if (strstr( $cols, ':' )) {
- $col_split = explode( ':', $cols );
- } else {
- $col_split = array( $cols );
- }
- $cols_num = $col_split[$c];
-
- // sub row fields
- $subrow_fields = null;
- $subrow_fields = $this->get_fields_in_subrow( $row_fields, $c );
-
- if (is_array( $subrow_fields )) {
-
- $subrow_fields = $this->array_sort_by_column( $subrow_fields, 'position' );
-
- if ($cols_num == 1) {
-
- $output .= '';
- $col1_fields = $this->get_fields_in_column( $subrow_fields, 1 );
- if ($col1_fields) {
- foreach ($col1_fields as $key => $data) {
- $output .= $this->edit_field( $key, $data );
- }
- }
- $output .= '
';
-
- } else if ($cols_num == 2) {
-
- $output .= '';
- $col1_fields = $this->get_fields_in_column( $subrow_fields, 1 );
- if ($col1_fields) {
- foreach ($col1_fields as $key => $data) {
- $output .= $this->edit_field( $key, $data );
- }
- }
- $output .= '
';
-
- $output .= '';
- $col2_fields = $this->get_fields_in_column( $subrow_fields, 2 );
- if ($col2_fields) {
- foreach ($col2_fields as $key => $data) {
- $output .= $this->edit_field( $key, $data );
- }
- }
- $output .= '
';
-
- } else {
-
- $output .= '';
- $col1_fields = $this->get_fields_in_column( $subrow_fields, 1 );
- if ($col1_fields) {
- foreach ($col1_fields as $key => $data) {
- $output .= $this->edit_field( $key, $data );
- }
- }
- $output .= '
';
-
- $output .= '';
- $col2_fields = $this->get_fields_in_column( $subrow_fields, 2 );
- if ($col2_fields) {
- foreach ($col2_fields as $key => $data) {
- $output .= $this->edit_field( $key, $data );
- }
- }
- $output .= '
';
-
- $output .= '';
- $col3_fields = $this->get_fields_in_column( $subrow_fields, 3 );
- if ($col3_fields) {
- foreach ($col3_fields as $key => $data) {
- $output .= $this->edit_field( $key, $data );
- }
- }
- $output .= '
';
-
- }
-
- }
-
- }
-
- $output .= '';
-
- }
-
- }
-
- }
-
- return $output;
- }
-
- /**
- * Gets a field in `view mode`
- *
- * @param string $key
- * @param array $data
- * @param boolean $rule
- *
- * @return string
- */
- function view_field( $key, $data, $rule = false ) {
- $output = null;
-
- // get whole field data
- if (is_array( $data )) {
- $data = $this->get_field( $key );
- extract( $data );
- }
-
- if (!isset( $data['type'] )) return;
-
- if (isset( $data['in_group'] ) && $data['in_group'] != '' && $rule != 'group') return;
-
- if ($visibility == 'edit') return;
-
- if (in_array( $type, array( 'block', 'shortcode', 'spacing', 'divider', 'group' ) )) {
-
- } else {
-
- $_field_value = $this->field_value( $key, $default, $data );
-
- if ( ! isset($_field_value) || $_field_value == '') return;
- }
-
- if (!um_can_view_field( $data )) return;
-
- // disable these fields in profile view only
- if (in_array( $key, array( 'user_password' ) ) && $this->set_mode == 'profile') {
- return;
- }
-
- if (!um_field_conditions_are_met( $data )) return;
-
- switch ($type) {
-
- /* Default */
- default:
-
- $output .= '';
-
- if (isset( $data['label'] ) || isset( $data['icon'] ) && !empty( $data['icon'] )) {
-
- if (!isset( $data['label'] )) $data['label'] = '';
-
- $output .= $this->field_label( $data['label'], $key, $data );
- }
-
- $res = $this->field_value( $key, $default, $data );
-
- if (!empty( $res )) {
- $res = stripslashes( $res );
- }
-
- $data['is_view_field'] = true;
- $res = apply_filters( "um_view_field", $res, $data, $type );
- $res = apply_filters( "um_view_field_value_{$type}", $res, $data );
-
- $output .= '
';
- $output .= '
' . $res . '
';
- $output .= '
';
-
- $output .= '
';
-
- break;
-
- /* HTML */
- case 'block':
- $output .= '';
- break;
-
- /* Shortcode */
- case 'shortcode':
-
- $content = str_replace( '{profile_id}', um_profile_id(), $content );
-
- $output .= '
-
' . do_shortcode( $content ) . '
-
';
- break;
-
- /* Gap/Space */
- case 'spacing':
- $output .= '';
- break;
-
- /* A line divider */
- case 'divider':
- $output .= '';
- if ($divider_text) {
- $output .= '
' . $divider_text . '
';
- }
- $output .= '
';
- break;
-
- /* Rating */
- case 'rating':
-
- $output .= '';
-
- if (isset( $data['label'] ) || isset( $data['icon'] ) && !empty( $data['icon'] )) {
- $output .= $this->field_label( $label, $key, $data );
- }
-
- $output .= '
';
- $output .= '
';
- $output .= '
';
-
- $output .= '
';
-
- break;
-
- }
-
- // Custom filter for field output
- if (isset( $this->set_mode )) {
- $output = apply_filters( "um_{$key}_form_show_field", $output, $this->set_mode );
- $output = apply_filters( "um_{$type}_form_show_field", $output, $this->set_mode );
-
- }
-
- return $output;
- }
-
- /**
- * Display fields ( view mode )
- *
- * @param string $mode
- * @param array $args
- *
- * @return string
- */
- function display_view( $mode, $args ) {
- $output = null;
-
- $this->global_args = $args;
-
- UM()->form()->form_suffix = '-' . $this->global_args['form_id'];
-
- $this->set_mode = $mode;
- $this->set_id = $this->global_args['form_id'];
-
- $this->field_icons = ( isset( $this->global_args['icons'] ) ) ? $this->global_args['icons'] : 'label';
-
- // start output here
- $this->get_fields = $this->get_fields();
-
- if ( UM()->options()->get( 'profile_empty_text' ) ) {
-
- $emo = UM()->options()->get( 'profile_empty_text_emo' );
- if ($emo) {
- $emo = '';
+ // role field
+ global $wp_roles;
+ $role_keys = array_map( function( $item ) {
+ return 'um_' . $item;
+ }, get_option( 'um_roles' ) );
+ $exclude_roles = array_diff( array_keys( $wp_roles->roles ), array_merge( $role_keys, array( 'subscriber' ) ) );
+
+ $roles = UM()->roles()->get_roles( false, $exclude_roles );
+
+ if ( ! empty( $options ) ) {
+ //fix when customers change options for role (radio/dropdown) fields
+ $intersected_options = array();
+ foreach ( $options as $option ) {
+ if ( false !== $search_key = array_search( $option, $roles ) ) {
+ $intersected_options[ $search_key ] = $option;
} else {
- $emo = false;
- }
-
- if (um_is_myprofile()) {
- $output .= '' . $emo . '' . sprintf( __( 'Your profile is looking a little empty. Why not add some information!', 'ultimate-member' ), um_edit_profile_url() ) . '
';
- } else {
- $output .= '' . $emo . '' . __( 'This user has not added any information to their profile yet.', 'ultimate-member' ) . '
';
+ $intersected_options[] = $option;
}
}
- if (!empty( $this->get_fields )) {
-
- // find rows
- foreach ($this->get_fields as $key => $array) {
- if ($array['type'] == 'row') {
- $this->rows[$key] = $array;
- unset( $this->get_fields[$key] ); // not needed anymore
- }
- }
-
- // rows fallback
- if (!isset( $this->rows )) {
- $this->rows = array( '_um_row_1' => array(
- 'type' => 'row',
- 'id' => '_um_row_1',
- 'sub_rows' => 1,
- 'cols' => 1
- )
- );
- }
-
- // master rows
- foreach ($this->rows as $row_id => $row_array) {
-
- $row_fields = $this->get_fields_by_row( $row_id );
-
- if ($row_fields) {
-
- $output .= $this->new_row_output( $row_id, $row_array );
-
- $sub_rows = ( isset( $row_array['sub_rows'] ) ) ? $row_array['sub_rows'] : 1;
- for ($c = 0; $c < $sub_rows; $c++) {
-
- // cols
- $cols = ( isset( $row_array['cols'] ) ) ? $row_array['cols'] : 1;
- if (strstr( $cols, ':' )) {
- $col_split = explode( ':', $cols );
- } else {
- $col_split = array( $cols );
- }
- $cols_num = $col_split[$c];
-
- // sub row fields
- $subrow_fields = null;
- $subrow_fields = $this->get_fields_in_subrow( $row_fields, $c );
-
- if (is_array( $subrow_fields )) {
-
- $subrow_fields = $this->array_sort_by_column( $subrow_fields, 'position' );
-
- if ($cols_num == 1) {
-
- $output .= '';
- $col1_fields = $this->get_fields_in_column( $subrow_fields, 1 );
- if ($col1_fields) {
- foreach ($col1_fields as $key => $data) {
-
- $data = apply_filters( "um_view_field_output_" . $data['type'], $data );
-
- $output .= $this->view_field( $key, $data );
-
-
- }
- }
- $output .= '
';
-
- } else if ($cols_num == 2) {
-
- $output .= '';
- $col1_fields = $this->get_fields_in_column( $subrow_fields, 1 );
- if ($col1_fields) {
- foreach ($col1_fields as $key => $data) {
-
- $data = apply_filters( "um_view_field_output_" . $data['type'], $data );
-
- $output .= $this->view_field( $key, $data );
-
- }
- }
- $output .= '
';
-
- $output .= '';
- $col2_fields = $this->get_fields_in_column( $subrow_fields, 2 );
- if ($col2_fields) {
- foreach ($col2_fields as $key => $data) {
-
- $data = apply_filters( "um_view_field_output_" . $data['type'], $data );
-
- $output .= $this->view_field( $key, $data );
-
- }
- }
- $output .= '
';
-
- } else {
-
- $output .= '';
- $col1_fields = $this->get_fields_in_column( $subrow_fields, 1 );
- if ($col1_fields) {
- foreach ($col1_fields as $key => $data) {
-
- $data = apply_filters( "um_view_field_output_" . $data['type'], $data );
-
- $output .= $this->view_field( $key, $data );
-
- }
- }
- $output .= '
';
-
- $output .= '';
- $col2_fields = $this->get_fields_in_column( $subrow_fields, 2 );
- if ($col2_fields) {
- foreach ($col2_fields as $key => $data) {
-
- $data = apply_filters( "um_view_field_output_" . $data['type'], $data );
-
- $output .= $this->view_field( $key, $data );
-
- }
- }
- $output .= '
';
-
- $output .= '';
- $col3_fields = $this->get_fields_in_column( $subrow_fields, 3 );
- if ($col3_fields) {
- foreach ($col3_fields as $key => $data) {
-
- $data = apply_filters( "um_view_field_output_" . $data['type'], $data );
-
- $output .= $this->view_field( $key, $data );
-
- }
- }
- $output .= '
';
-
- }
-
- }
-
- }
-
- $output .= '';
-
- }
-
- }
-
- }
-
- return $output;
+ $options = $intersected_options;
+ } else {
+ $options = $roles;
}
- /**
- * Get new row in form
- *
- * @param string $row_id
- * @param array $row_array
- *
- * @return array
- */
- function new_row_output( $row_id, $row_array ) {
- $output = null;
- extract( $row_array );
-
- $padding = ( isset( $padding ) ) ? $padding : '';
- $margin = ( isset( $margin ) ) ? $margin : '';
- $background = ( isset( $background ) ) ? $background : '';
- $text_color = ( isset( $text_color ) ) ? $text_color : '';
- $borderradius = ( isset( $borderradius ) ) ? $borderradius : '';
- $border = ( isset( $border ) ) ? $border : '';
- $bordercolor = ( isset( $bordercolor ) ) ? $bordercolor : '';
- $borderstyle = ( isset( $borderstyle ) ) ? $borderstyle : '';
- $heading = ( isset( $heading ) ) ? $heading : '';
- $css_class = ( isset( $css_class ) ) ? $css_class : '';
-
- $css_padding = '';
- $css_margin = '';
- $css_background = '';
- $css_borderradius = '';
- $css_border = '';
- $css_bordercolor = '';
- $css_borderstyle = '';
- $css_heading_background_color = '';
- $css_heading_padding = '';
- $css_heading_text_color = '';
- $css_heading_borderradius = '';
- $css_text_color = '';
-
- // row css rules
- if ($padding) $css_padding = 'padding: ' . $padding . ';';
- if ($margin) {
- $css_margin = 'margin: ' . $margin . ';';
- } else {
- $css_margin = 'margin: 0 0 30px 0;';
- }
-
- if ($background) $css_background = 'background-color: ' . $background . ';';
- if ($borderradius) $css_borderradius = 'border-radius: 0px 0px ' . $borderradius . ' ' . $borderradius . ';';
- if ($border) $css_border = 'border-width: ' . $border . ';';
- if ($bordercolor) $css_bordercolor = 'border-color: ' . $bordercolor . ';';
- if ($borderstyle) $css_borderstyle = 'border-style: ' . $borderstyle . ';';
- if ($text_color) $css_text_color = 'color: ' . $text_color . ' !important;';
-
- // show the heading
- if ($heading) {
-
- $heading_background_color = ( isset( $heading_background_color ) ) ? $heading_background_color : '';
- $heading_text_color = ( isset( $heading_text_color ) ) ? $heading_text_color : '';
-
- if ($heading_background_color) {
- $css_heading_background_color = 'background-color: ' . $heading_background_color . ';';
- $css_heading_padding = 'padding: 10px 15px;';
- }
-
- if ($heading_text_color) $css_heading_text_color = 'color: ' . $heading_text_color . ';';
- if ($borderradius) $css_heading_borderradius = 'border-radius: ' . $borderradius . ' ' . $borderradius . ' 0px 0px;';
-
- $output .= '';
-
- if (isset( $icon )) {
- $output .= '';
- }
-
- $output .= ( !empty( $heading_text ) ? $heading_text : '' ) . '
';
-
- } else {
-
- // no heading
- if ($borderradius) $css_borderradius = 'border-radius: ' . $borderradius . ';';
-
- }
-
- $output .= '';
-
- return $output;
- }
-
-
- function do_ajax_action() {
- if (!is_user_logged_in() || !current_user_can( 'manage_options' )) die( __( 'Please login as administrator', 'ultimate-member' ) );
-
- extract( $_POST );
-
- $output = null;
-
- $position = array();
- if (!empty( $in_column )) {
- $position['in_row'] = '_um_row_' . ( (int)$in_row + 1 );
- $position['in_sub_row'] = $in_sub_row;
- $position['in_column'] = $in_column;
- $position['in_group'] = $in_group;
- }
-
- switch ($act_id) {
-
- case 'um_admin_duplicate_field':
- UM()->fields()->duplicate_field( $arg1, $arg2 );
- break;
-
- case 'um_admin_remove_field_global':
- UM()->fields()->delete_field_from_db( $arg1 );
- break;
-
- case 'um_admin_remove_field':
- UM()->fields()->delete_field_from_form( $arg1, $arg2 );
- break;
-
- case 'um_admin_add_field_from_predefined':
- UM()->fields()->add_field_from_predefined( $arg1, $arg2, $position );
- break;
-
- case 'um_admin_add_field_from_list':
- UM()->fields()->add_field_from_list( $arg1, $arg2, $position );
- break;
-
- }
-
- if (is_array( $output )) {
- print_r( $output );
- } else {
- echo $output;
- }
- die;
-
- }
+ return $options;
}
- }
\ No newline at end of file
+
+
+ /**
+ * Sorts columns array
+ *
+ * @param array $arr
+ * @param string $col
+ * @param string $dir
+ *
+ * @return array $arr
+ */
+ function array_sort_by_column( $arr, $col, $dir = SORT_ASC ) {
+ $sort_col = array();
+ foreach ($arr as $key => $row) {
+ if (isset( $row[$col] )) {
+ $sort_col[$key] = $row[$col];
+ }
+ }
+
+ array_multisort( $sort_col, $dir, $arr );
+
+ return $arr;
+ }
+
+
+ /**
+ * Get fields in row
+ *
+ * @param integer $row_id
+ *
+ * @return string
+ */
+ function get_fields_by_row( $row_id ) {
+ foreach ($this->get_fields as $key => $array) {
+ if (!isset( $array['in_row'] ) || ( isset( $array['in_row'] ) && $array['in_row'] == $row_id )) {
+ $results[$key] = $array;
+ }
+ }
+
+ return ( isset ( $results ) ) ? $results : '';
+ }
+
+
+ /**
+ * Get fields by sub row
+ *
+ * @param string $row_fields
+ * @param integer $subrow_id
+ *
+ * @return mixed
+ */
+ function get_fields_in_subrow( $row_fields, $subrow_id ) {
+ if (!is_array( $row_fields )) return '';
+ foreach ($row_fields as $key => $array) {
+ if (!isset( $array['in_sub_row'] ) || ( isset( $array['in_sub_row'] ) && $array['in_sub_row'] == $subrow_id )) {
+ $results[$key] = $array;
+ }
+ }
+
+ return ( isset ( $results ) ) ? $results : '';
+ }
+
+ /**
+ * Get fields in group
+ *
+ * @param integer $group_id
+ *
+ * @return mixed
+ */
+ function get_fields_in_group( $group_id ) {
+ foreach ($this->get_fields as $key => $array) {
+ if (isset( $array['in_group'] ) && $array['in_group'] == $group_id) {
+ $results[$key] = $array;
+ }
+ }
+
+ return ( isset ( $results ) ) ? $results : '';
+ }
+
+
+ /**
+ * Get fields in column
+ *
+ * @param array $fields
+ * @param integer $col_number
+ *
+ * @return mixed
+ */
+ function get_fields_in_column( $fields, $col_number ) {
+ foreach ($fields as $key => $array) {
+ if (isset( $array['in_column'] ) && $array['in_column'] == $col_number) {
+ $results[$key] = $array;
+ }
+ }
+
+ return ( isset ( $results ) ) ? $results : '';
+ }
+
+
+ /**
+ * Display fields
+ *
+ * @param string $mode
+ * @param array $args
+ *
+ * @return string
+ */
+ function display( $mode, $args ) {
+ $output = null;
+
+ $this->global_args = $args;
+
+ UM()->form()->form_suffix = '-' . $this->global_args['form_id'];
+
+ $this->set_mode = $mode;
+ $this->set_id = $this->global_args['form_id'];
+
+ $this->field_icons = ( isset( $this->global_args['icons'] ) ) ? $this->global_args['icons'] : 'label';
+
+ // start output here
+ $this->get_fields = $this->get_fields();
+
+ if (!empty( $this->get_fields )) {
+
+ // find rows
+ foreach ($this->get_fields as $key => $array) {
+ if ($array['type'] == 'row') {
+ $this->rows[$key] = $array;
+ unset( $this->get_fields[$key] ); // not needed anymore
+ }
+ }
+
+ // rows fallback
+ if (!isset( $this->rows )) {
+ $this->rows = array( '_um_row_1' => array(
+ 'type' => 'row',
+ 'id' => '_um_row_1',
+ 'sub_rows' => 1,
+ 'cols' => 1
+ )
+ );
+ }
+
+ // master rows
+ foreach ($this->rows as $row_id => $row_array) {
+
+ $row_fields = $this->get_fields_by_row( $row_id );
+ if ($row_fields) {
+
+ $output .= $this->new_row_output( $row_id, $row_array );
+
+ $sub_rows = ( isset( $row_array['sub_rows'] ) ) ? $row_array['sub_rows'] : 1;
+ for ($c = 0; $c < $sub_rows; $c++) {
+
+ // cols
+ $cols = ( isset( $row_array['cols'] ) ) ? $row_array['cols'] : 1;
+ if (strstr( $cols, ':' )) {
+ $col_split = explode( ':', $cols );
+ } else {
+ $col_split = array( $cols );
+ }
+ $cols_num = $col_split[$c];
+
+ // sub row fields
+ $subrow_fields = null;
+ $subrow_fields = $this->get_fields_in_subrow( $row_fields, $c );
+
+ if (is_array( $subrow_fields )) {
+
+ $subrow_fields = $this->array_sort_by_column( $subrow_fields, 'position' );
+
+ if ($cols_num == 1) {
+
+ $output .= '
';
+ $col1_fields = $this->get_fields_in_column( $subrow_fields, 1 );
+ if ($col1_fields) {
+ foreach ($col1_fields as $key => $data) {
+ $output .= $this->edit_field( $key, $data );
+ }
+ }
+ $output .= '
';
+
+ } else if ($cols_num == 2) {
+
+ $output .= '
';
+ $col1_fields = $this->get_fields_in_column( $subrow_fields, 1 );
+ if ($col1_fields) {
+ foreach ($col1_fields as $key => $data) {
+ $output .= $this->edit_field( $key, $data );
+ }
+ }
+ $output .= '
';
+
+ $output .= '
';
+ $col2_fields = $this->get_fields_in_column( $subrow_fields, 2 );
+ if ($col2_fields) {
+ foreach ($col2_fields as $key => $data) {
+ $output .= $this->edit_field( $key, $data );
+ }
+ }
+ $output .= '
';
+
+ } else {
+
+ $output .= '
';
+ $col1_fields = $this->get_fields_in_column( $subrow_fields, 1 );
+ if ($col1_fields) {
+ foreach ($col1_fields as $key => $data) {
+ $output .= $this->edit_field( $key, $data );
+ }
+ }
+ $output .= '
';
+
+ $output .= '
';
+ $col2_fields = $this->get_fields_in_column( $subrow_fields, 2 );
+ if ($col2_fields) {
+ foreach ($col2_fields as $key => $data) {
+ $output .= $this->edit_field( $key, $data );
+ }
+ }
+ $output .= '
';
+
+ $output .= '
';
+ $col3_fields = $this->get_fields_in_column( $subrow_fields, 3 );
+ if ($col3_fields) {
+ foreach ($col3_fields as $key => $data) {
+ $output .= $this->edit_field( $key, $data );
+ }
+ }
+ $output .= '
';
+
+ }
+
+ }
+
+ }
+
+ $output .= '
';
+
+ }
+
+ }
+
+ }
+
+ return $output;
+ }
+
+ /**
+ * Gets a field in `view mode`
+ *
+ * @param string $key
+ * @param array $data
+ * @param boolean $rule
+ *
+ * @return string
+ */
+ function view_field( $key, $data, $rule = false ) {
+ $output = null;
+
+ // get whole field data
+ if (is_array( $data )) {
+ $data = $this->get_field( $key );
+ extract( $data );
+ }
+
+ if (!isset( $data['type'] )) return;
+
+ if (isset( $data['in_group'] ) && $data['in_group'] != '' && $rule != 'group') return;
+
+ if ($visibility == 'edit') return;
+
+ if (in_array( $type, array( 'block', 'shortcode', 'spacing', 'divider', 'group' ) )) {
+
+ } else {
+
+ $_field_value = $this->field_value( $key, $default, $data );
+
+ if ( ! isset($_field_value) || $_field_value == '') return;
+ }
+
+ if (!um_can_view_field( $data )) return;
+
+ // disable these fields in profile view only
+ if (in_array( $key, array( 'user_password' ) ) && $this->set_mode == 'profile') {
+ return;
+ }
+
+ if (!um_field_conditions_are_met( $data )) return;
+
+ switch ($type) {
+
+ /* Default */
+ default:
+
+ $output .= '';
+
+ if (isset( $data['label'] ) || isset( $data['icon'] ) && !empty( $data['icon'] )) {
+
+ if (!isset( $data['label'] )) $data['label'] = '';
+
+ $output .= $this->field_label( $data['label'], $key, $data );
+ }
+
+ $res = $this->field_value( $key, $default, $data );
+
+ if (!empty( $res )) {
+ $res = stripslashes( $res );
+ }
+
+ $data['is_view_field'] = true;
+ $res = apply_filters( "um_view_field", $res, $data, $type );
+ $res = apply_filters( "um_view_field_value_{$type}", $res, $data );
+
+ $output .= '
';
+ $output .= '
' . $res . '
';
+ $output .= '
';
+
+ $output .= '
';
+
+ break;
+
+ /* HTML */
+ case 'block':
+ $output .= '';
+ break;
+
+ /* Shortcode */
+ case 'shortcode':
+
+ $content = str_replace( '{profile_id}', um_profile_id(), $content );
+
+ $output .= '
+
' . do_shortcode( $content ) . '
+
';
+ break;
+
+ /* Gap/Space */
+ case 'spacing':
+ $output .= '';
+ break;
+
+ /* A line divider */
+ case 'divider':
+ $output .= '';
+ if ($divider_text) {
+ $output .= '
' . $divider_text . '
';
+ }
+ $output .= '
';
+ break;
+
+ /* Rating */
+ case 'rating':
+
+ $output .= '';
+
+ if (isset( $data['label'] ) || isset( $data['icon'] ) && !empty( $data['icon'] )) {
+ $output .= $this->field_label( $label, $key, $data );
+ }
+
+ $output .= '
';
+ $output .= '
';
+ $output .= '
';
+
+ $output .= '
';
+
+ break;
+
+ }
+
+ // Custom filter for field output
+ if (isset( $this->set_mode )) {
+ $output = apply_filters( "um_{$key}_form_show_field", $output, $this->set_mode );
+ $output = apply_filters( "um_{$type}_form_show_field", $output, $this->set_mode );
+
+ }
+
+ return $output;
+ }
+
+ /**
+ * Display fields ( view mode )
+ *
+ * @param string $mode
+ * @param array $args
+ *
+ * @return string
+ */
+ function display_view( $mode, $args ) {
+ $output = null;
+
+ $this->global_args = $args;
+
+ UM()->form()->form_suffix = '-' . $this->global_args['form_id'];
+
+ $this->set_mode = $mode;
+ $this->set_id = $this->global_args['form_id'];
+
+ $this->field_icons = ( isset( $this->global_args['icons'] ) ) ? $this->global_args['icons'] : 'label';
+
+ // start output here
+ $this->get_fields = $this->get_fields();
+
+ if ( UM()->options()->get( 'profile_empty_text' ) ) {
+
+ $emo = UM()->options()->get( 'profile_empty_text_emo' );
+ if ($emo) {
+ $emo = '';
+ } else {
+ $emo = false;
+ }
+
+ if (um_is_myprofile()) {
+ $output .= '' . $emo . '' . sprintf( __( 'Your profile is looking a little empty. Why not add some information!', 'ultimate-member' ), um_edit_profile_url() ) . '
';
+ } else {
+ $output .= '' . $emo . '' . __( 'This user has not added any information to their profile yet.', 'ultimate-member' ) . '
';
+ }
+ }
+
+ if (!empty( $this->get_fields )) {
+
+ // find rows
+ foreach ($this->get_fields as $key => $array) {
+ if ($array['type'] == 'row') {
+ $this->rows[$key] = $array;
+ unset( $this->get_fields[$key] ); // not needed anymore
+ }
+ }
+
+ // rows fallback
+ if (!isset( $this->rows )) {
+ $this->rows = array( '_um_row_1' => array(
+ 'type' => 'row',
+ 'id' => '_um_row_1',
+ 'sub_rows' => 1,
+ 'cols' => 1
+ )
+ );
+ }
+
+ // master rows
+ foreach ($this->rows as $row_id => $row_array) {
+
+ $row_fields = $this->get_fields_by_row( $row_id );
+
+ if ($row_fields) {
+
+ $output .= $this->new_row_output( $row_id, $row_array );
+
+ $sub_rows = ( isset( $row_array['sub_rows'] ) ) ? $row_array['sub_rows'] : 1;
+ for ($c = 0; $c < $sub_rows; $c++) {
+
+ // cols
+ $cols = ( isset( $row_array['cols'] ) ) ? $row_array['cols'] : 1;
+ if (strstr( $cols, ':' )) {
+ $col_split = explode( ':', $cols );
+ } else {
+ $col_split = array( $cols );
+ }
+ $cols_num = $col_split[$c];
+
+ // sub row fields
+ $subrow_fields = null;
+ $subrow_fields = $this->get_fields_in_subrow( $row_fields, $c );
+
+ if (is_array( $subrow_fields )) {
+
+ $subrow_fields = $this->array_sort_by_column( $subrow_fields, 'position' );
+
+ if ($cols_num == 1) {
+
+ $output .= '';
+ $col1_fields = $this->get_fields_in_column( $subrow_fields, 1 );
+ if ($col1_fields) {
+ foreach ($col1_fields as $key => $data) {
+
+ $data = apply_filters( "um_view_field_output_" . $data['type'], $data );
+
+ $output .= $this->view_field( $key, $data );
+
+
+ }
+ }
+ $output .= '
';
+
+ } else if ($cols_num == 2) {
+
+ $output .= '';
+ $col1_fields = $this->get_fields_in_column( $subrow_fields, 1 );
+ if ($col1_fields) {
+ foreach ($col1_fields as $key => $data) {
+
+ $data = apply_filters( "um_view_field_output_" . $data['type'], $data );
+
+ $output .= $this->view_field( $key, $data );
+
+ }
+ }
+ $output .= '
';
+
+ $output .= '';
+ $col2_fields = $this->get_fields_in_column( $subrow_fields, 2 );
+ if ($col2_fields) {
+ foreach ($col2_fields as $key => $data) {
+
+ $data = apply_filters( "um_view_field_output_" . $data['type'], $data );
+
+ $output .= $this->view_field( $key, $data );
+
+ }
+ }
+ $output .= '
';
+
+ } else {
+
+ $output .= '';
+ $col1_fields = $this->get_fields_in_column( $subrow_fields, 1 );
+ if ($col1_fields) {
+ foreach ($col1_fields as $key => $data) {
+
+ $data = apply_filters( "um_view_field_output_" . $data['type'], $data );
+
+ $output .= $this->view_field( $key, $data );
+
+ }
+ }
+ $output .= '
';
+
+ $output .= '';
+ $col2_fields = $this->get_fields_in_column( $subrow_fields, 2 );
+ if ($col2_fields) {
+ foreach ($col2_fields as $key => $data) {
+
+ $data = apply_filters( "um_view_field_output_" . $data['type'], $data );
+
+ $output .= $this->view_field( $key, $data );
+
+ }
+ }
+ $output .= '
';
+
+ $output .= '';
+ $col3_fields = $this->get_fields_in_column( $subrow_fields, 3 );
+ if ($col3_fields) {
+ foreach ($col3_fields as $key => $data) {
+
+ $data = apply_filters( "um_view_field_output_" . $data['type'], $data );
+
+ $output .= $this->view_field( $key, $data );
+
+ }
+ }
+ $output .= '
';
+
+ }
+
+ }
+
+ }
+
+ $output .= '';
+
+ }
+
+ }
+
+ }
+
+ return $output;
+ }
+
+ /**
+ * Get new row in form
+ *
+ * @param string $row_id
+ * @param array $row_array
+ *
+ * @return array
+ */
+ function new_row_output( $row_id, $row_array ) {
+ $output = null;
+ extract( $row_array );
+
+ $padding = ( isset( $padding ) ) ? $padding : '';
+ $margin = ( isset( $margin ) ) ? $margin : '';
+ $background = ( isset( $background ) ) ? $background : '';
+ $text_color = ( isset( $text_color ) ) ? $text_color : '';
+ $borderradius = ( isset( $borderradius ) ) ? $borderradius : '';
+ $border = ( isset( $border ) ) ? $border : '';
+ $bordercolor = ( isset( $bordercolor ) ) ? $bordercolor : '';
+ $borderstyle = ( isset( $borderstyle ) ) ? $borderstyle : '';
+ $heading = ( isset( $heading ) ) ? $heading : '';
+ $css_class = ( isset( $css_class ) ) ? $css_class : '';
+
+ $css_padding = '';
+ $css_margin = '';
+ $css_background = '';
+ $css_borderradius = '';
+ $css_border = '';
+ $css_bordercolor = '';
+ $css_borderstyle = '';
+ $css_heading_background_color = '';
+ $css_heading_padding = '';
+ $css_heading_text_color = '';
+ $css_heading_borderradius = '';
+ $css_text_color = '';
+
+ // row css rules
+ if ($padding) $css_padding = 'padding: ' . $padding . ';';
+ if ($margin) {
+ $css_margin = 'margin: ' . $margin . ';';
+ } else {
+ $css_margin = 'margin: 0 0 30px 0;';
+ }
+
+ if ($background) $css_background = 'background-color: ' . $background . ';';
+ if ($borderradius) $css_borderradius = 'border-radius: 0px 0px ' . $borderradius . ' ' . $borderradius . ';';
+ if ($border) $css_border = 'border-width: ' . $border . ';';
+ if ($bordercolor) $css_bordercolor = 'border-color: ' . $bordercolor . ';';
+ if ($borderstyle) $css_borderstyle = 'border-style: ' . $borderstyle . ';';
+ if ($text_color) $css_text_color = 'color: ' . $text_color . ' !important;';
+
+ // show the heading
+ if ($heading) {
+
+ $heading_background_color = ( isset( $heading_background_color ) ) ? $heading_background_color : '';
+ $heading_text_color = ( isset( $heading_text_color ) ) ? $heading_text_color : '';
+
+ if ($heading_background_color) {
+ $css_heading_background_color = 'background-color: ' . $heading_background_color . ';';
+ $css_heading_padding = 'padding: 10px 15px;';
+ }
+
+ if ($heading_text_color) $css_heading_text_color = 'color: ' . $heading_text_color . ';';
+ if ($borderradius) $css_heading_borderradius = 'border-radius: ' . $borderradius . ' ' . $borderradius . ' 0px 0px;';
+
+ $output .= '';
+
+ if (isset( $icon )) {
+ $output .= '';
+ }
+
+ $output .= ( !empty( $heading_text ) ? $heading_text : '' ) . '
';
+
+ } else {
+
+ // no heading
+ if ($borderradius) $css_borderradius = 'border-radius: ' . $borderradius . ';';
+
+ }
+
+ $output .= '';
+
+ return $output;
+ }
+
+
+ function do_ajax_action() {
+ if (!is_user_logged_in() || !current_user_can( 'manage_options' )) die( __( 'Please login as administrator', 'ultimate-member' ) );
+
+ extract( $_POST );
+
+ $output = null;
+
+ $position = array();
+ if (!empty( $in_column )) {
+ $position['in_row'] = '_um_row_' . ( (int)$in_row + 1 );
+ $position['in_sub_row'] = $in_sub_row;
+ $position['in_column'] = $in_column;
+ $position['in_group'] = $in_group;
+ }
+
+ switch ($act_id) {
+
+ case 'um_admin_duplicate_field':
+ UM()->fields()->duplicate_field( $arg1, $arg2 );
+ break;
+
+ case 'um_admin_remove_field_global':
+ UM()->fields()->delete_field_from_db( $arg1 );
+ break;
+
+ case 'um_admin_remove_field':
+ UM()->fields()->delete_field_from_form( $arg1, $arg2 );
+ break;
+
+ case 'um_admin_add_field_from_predefined':
+ UM()->fields()->add_field_from_predefined( $arg1, $arg2, $position );
+ break;
+
+ case 'um_admin_add_field_from_list':
+ UM()->fields()->add_field_from_list( $arg1, $arg2, $position );
+ break;
+
+ }
+
+ if (is_array( $output )) {
+ print_r( $output );
+ } else {
+ echo $output;
+ }
+ die;
+
+ }
+ }
+}
\ No newline at end of file