$settings ) { $checker_property = $settings['type'] === 'bool' || $item === 'api' ? 'small_property' : ''; $inner_fields_header .= '
' . $settings['nice_name'] . '
'; } foreach ( $entitis_list as $entiti => $title ) { $properties = Settings::get_entities_settings( $entiti ); $entities_html .= '
'; $get_fields_function = 'get_' . $entiti . '_fields'; $section_fields = Settings::$get_fields_function(); if ( ! empty( $section_fields ) ) { $collapsed = $collapsed ? ' ' : ' active'; $collapsed_text = $collapsed_text ? 'expand' : 'collapse'; $entities_html .= '
'; $entities_html .= '
' . $title . '
' . $inner_fields_header . '' . $collapsed_text . '
'; foreach ( $section_fields as $field_slug => $field_content ) { $first_active = $first_active ? ' ' : ' active'; $field_name = empty( $field_content["nice_name"] ) ? $field_slug : $field_content["nice_name"]; $entiti_saved_settings = array_merge( $field_content, self::get_saved_entity_settings_from_db( ' WHERE entiti="' . $entiti . '" AND setting_name="' . $field_slug . '"' ) ); if ( ! empty( $field_content["children"] ) ) { $data_fields = 'data-seting_name="' . esc_html( $field_slug ) . '" data-entiti="' . esc_html( $entiti ) . '"'; foreach ( $properties as $name => $prop_val ) { $prop_val_out = $name === 'id' ? $field_slug : self::get_property( $name, $prop_val, $entiti_saved_settings ); $data_fields .= 'data-' . $name . '="' . esc_html( $prop_val_out ) . '" '; } $entities_html .= '
' . $field_name . '
' . self::generate_inner_fields( $properties, $entiti_saved_settings, $field_slug ) . '
'; foreach ( $field_content["children"] as $inner_field_slug => $inner_field_content ) { $field_name = empty( $inner_field_content["description"] ) ? $inner_field_slug : $inner_field_content["discription"]; $field_slug_inner = $field_slug . '_' . $inner_field_slug; $entiti_saved_settings = array_merge( $field_content, self::get_saved_entity_settings_from_db( ' WHERE entiti="' . $entiti . '" AND setting_name="' . $field_slug_inner . '"' ) ); $data_fields = 'data-seting_name="' . esc_html( $field_slug ) . '" data-entiti="' . esc_html( $entiti ) . '"'; foreach ( $properties as $name => $prop_val ) { $prop_val_out = $name === 'id' ? $field_slug_inner : self::get_property( $name, $prop_val, $entiti_saved_settings ); $data_fields .= 'data-' . $name . '="' . esc_html( $prop_val_out ) . '" '; } $entities_html .= '
' . $field_name . '
' . self::generate_inner_fields( $properties, $entiti_saved_settings, $field_slug ) . '
'; } } else { $data_fields = 'data-seting_name="' . esc_html( $field_slug ) . '" data-entiti="' . esc_html( $entiti ) . '"'; foreach ( $properties as $name => $prop_val ) { $prop_val_out = self::get_property( $name, $prop_val, $entiti_saved_settings ); $data_fields .= 'data-' . $name . '="' . esc_html( $prop_val_out ) . '" '; } $entities_html .= '
' . $field_name . '
' . self::generate_inner_fields( $properties, $entiti_saved_settings, $field_slug ) . '
'; } } /// close //// div class="entiti_data" $entities_html .= '
'; } /// close //// div class="entities_block" $entities_html .= '
'; } return '
' . $entities_html . '
'; } /** * Get property from array. * * @return string */ static function get_property( $name, $prop_val, $entiti_saved_settings ) { if ( is_array( $prop_val['default'] ) ) { return isset( $entiti_saved_settings[ strtolower( $name ) ] ) ? $entiti_saved_settings[ strtolower( $name ) ] : array_search( '1', $prop_val['default'] ); } return isset( $entiti_saved_settings[ strtolower( $name ) ] ) ? $entiti_saved_settings[ strtolower( $name ) ] : $prop_val['default']; } /** * Generate properties for entity field. * * @return string */ static function generate_inner_fields( $properties, $entiti_saved_settings, $field_slug ) { $inner_fields = ''; if ( empty( $properties ) ) { return ''; } foreach ( $properties as $item => $settings ) { $checker_property = $settings['type'] === 'bool' || $item === 'api' ? 'small_property' : ''; $inner_fields .= '
'; $field_value = $item === 'id' ? $field_slug : self::get_property( $item, $settings, $entiti_saved_settings ); switch ( $settings['type'] ) { case 'constant': $field_value = $field_value ? $field_value : '' . __( 'empty', AINSYS_CONNECTOR_TEXTDOMAIN ) . ''; $inner_fields .= $item === 'api' ? '
' : '
' . $field_value . '
'; break; case 'bool': $checked = (int) $field_value ? 'checked="" value="1"' : ' value="0"'; $checked_text = (int) $field_value ? __( 'On', AINSYS_CONNECTOR_TEXTDOMAIN ) : __( 'Off', AINSYS_CONNECTOR_TEXTDOMAIN ); $inner_fields .= ' '; $inner_fields .= '
' . $checked_text . '
'; break; case 'int': $inner_fields .= ' '; $field_value = $field_value ? $field_value : '' . __( 'empty', AINSYS_CONNECTOR_TEXTDOMAIN ) . ''; $inner_fields .= '
' . $field_value . '
'; break; case 'select': $inner_fields .= ''; $inner_fields .= '
' . $field_value . '
'; break; default: $field_length = $item === 'description' ? 20 : 8; $inner_fields .= ''; $field_value = $field_value ? $field_value : '' . __( 'empty', AINSYS_CONNECTOR_TEXTDOMAIN ) . ''; $inner_fields .= '
' . $field_value . '
'; } /// close //// div class="properties_field" $inner_fields .= '
'; } return $inner_fields; } /** * Get entiti field settings from DB. * * @param string $where * @param bool $single * * @return array */ static function get_saved_entity_settings_from_db( $where = '', $single = true ) { global $wpdb; $query = "SELECT * FROM " . $wpdb->prefix . Settings::$ainsys_entities_settings . $where; $resoult = $wpdb->get_results( $query, ARRAY_A ); if ( isset( $resoult[0]["value"] ) && $single ) { $keys = array_column( $resoult, 'setting_key' ); if ( count( $resoult ) > 1 && isset( array_flip( $keys )['saved_field'] ) ) { $saved_settins_id = array_flip( $keys )['saved_field']; $data = maybe_unserialize( $resoult[ $saved_settins_id ]["value"] ); $data['id'] = $resoult[ $saved_settins_id ]["id"] ?? 0; } else { $data = maybe_unserialize( $resoult[0]["value"] ); $data['id'] = $resoult[0]["id"] ?? 0; } } else { $data = $resoult; } return $data ?? array(); } /** * Generate server data transactions HTML. * * @return string */ static function generate_log_html( $where = '' ) { global $wpdb; $log_html = '
'; $log_html_body = ''; $log_html_header = ''; $query = "SELECT * FROM " . $wpdb->prefix . Settings::$ainsys_log_table . $where; $output = $wpdb->get_results( $query, ARRAY_A ); if ( empty( $output ) ) { return '

' . __( 'No transactions to display', AINSYS_CONNECTOR_TEXTDOMAIN ) . '

'; } foreach ( $output as $item ) { $log_html_body .= ''; $header_full = empty( $log_html_header ) ? true : false; foreach ( $item as $name => $value ) { $log_html_header .= $header_full ? '' : ''; $log_html_body .= ''; } $log_html_body .= ''; } $log_html .= '' . $log_html_header . '' . $log_html_body . '
' . strtoupper( str_replace( '_', ' ', $name ) ) . ''; if ( $name === 'incoming_call' ) { $value = (int) $value === 0 ? 'No' : 'Yes'; } if ( $name === 'request_data' ) { $value = maybe_unserialize( $value ); if ( empty( $value["request_data"] ) ) { $log_html_body .= $value ? '
' . __( 'empty', AINSYS_CONNECTOR_TEXTDOMAIN ) . '
' : $value; continue; } if ( is_array( $value ) ) { if ( count( $value["request_data"] ) > 2 ) { $log_html_body .= '
more'; } foreach ( $value["request_data"] as $title => $param ) { if ( $title === "products" && ! empty( $param ) ) { foreach ( $param as $prod_id => $product ) { $log_html_body .= '
Prod# ' . $prod_id . ''; foreach ( $product as $param_title => $poduct_param ) { if ( is_array( $poduct_param ) ) { continue; } $log_html_body .= '
' . $param_title . ' : ' . maybe_serialize( $poduct_param ) . '
'; } } } else { $log_html_body .= '
' . $title . ' : ' . maybe_serialize( $param ) . '
'; } } $log_html_body .= '
'; } } else { $log_html_body .= $value; } $log_html_body .= '
'; return $log_html; } /** * Generate debug log HTML. * * @return string */ static function generate_debug_log() { if ( ! (int) Settings::get_option( 'display_debug' ) ) { return; } $html = '
!!Debug info!!
'; return $html; } }