admin()->check_ajax_nonce(); if ( ! is_user_logged_in() || ! current_user_can( 'manage_options' ) ) { wp_send_json_error( __( 'Please login as administrator', 'ultimate-member' ) ); } /** * @var $form_id */ extract( $_POST ); $fields = UM()->query()->get_attr( 'custom_fields', $form_id ); $this->row_data = get_option( 'um_form_rowdata_' . $form_id, array() ); $this->exist_rows = array(); if ( ! empty( $fields ) ) { foreach ( $fields as $key => $array ) { if ( $array['type'] == 'row' ) { $this->row_data[ $key ] = $array; unset( $fields[ $key ] ); } } } else { $fields = array(); } foreach ( $_POST as $key => $value ) { // adding rows if ( 0 === strpos( $key, '_um_row_' ) ) { $update_args = null; $row_id = str_replace( '_um_row_', '', $key ); $row_array = array( 'type' => 'row', 'id' => $value, 'sub_rows' => $_POST[ '_um_rowsub_'.$row_id .'_rows' ], 'cols' => $_POST[ '_um_rowcols_'.$row_id .'_cols' ], 'origin' => $_POST[ '_um_roworigin_'.$row_id . '_val' ], ); $row_args = $row_array; if ( isset( $this->row_data[ $row_array['origin'] ] ) ) { foreach( $this->row_data[ $row_array['origin'] ] as $k => $v ){ if ( $k != 'position' && $k != 'metakey' ) { $update_args[$k] = $v; } } if ( isset( $update_args ) ) { $row_args = array_merge( $update_args, $row_array ); } $this->exist_rows[] = $key; } $fields[$key] = $row_args; } // change field position if ( 0 === strpos( $key, 'um_position_' ) ) { $field_key = str_replace('um_position_','',$key); if ( isset( $fields[$field_key] ) ) { $fields[$field_key]['position'] = $value; } } // change field master row if ( 0 === strpos( $key, 'um_row_' ) ) { $field_key = str_replace('um_row_','',$key); if ( isset( $fields[$field_key] ) ) { $fields[$field_key]['in_row'] = $value; } } // change field sub row if ( 0 === strpos( $key, 'um_subrow_' ) ) { $field_key = str_replace('um_subrow_','',$key); if ( isset( $fields[$field_key] ) ) { $fields[$field_key]['in_sub_row'] = $value; } } // change field column if ( 0 === strpos( $key, 'um_col_' ) ) { $field_key = str_replace('um_col_','',$key); if ( isset( $fields[$field_key] ) ) { $fields[$field_key]['in_column'] = $value; } } // add field to group if ( 0 === strpos( $key, 'um_group_' ) ) { $field_key = str_replace('um_group_','',$key); if ( isset( $fields[$field_key] ) ) { $fields[$field_key]['in_group'] = $value; } } } foreach ( $this->row_data as $k => $v ) { if ( ! in_array( $k, $this->exist_rows ) ) unset( $this->row_data[$k] ); } update_option( 'um_existing_rows_' . $form_id, $this->exist_rows ); update_option( 'um_form_rowdata_' . $form_id , $this->row_data ); UM()->query()->update_attr( 'custom_fields', $form_id, $fields ); } /** * Load form to maintain form order */ function load_field_order() { $screen = get_current_screen(); if ( ! isset( $screen->id ) || $screen->id != 'um_form' ) return; ?>