Files
Miravia Connector Bot 552bce9f84 Fix image upload structure for Miravia API compliance
🔧 Bug Fixes:
- Fixed product image structure to match Miravia API requirements
- Updated MiraviaProduct.php getData() method to wrap images in {"Image": [...]} format
- Updated MiraviaCombination.php getData() method to wrap SKU images properly
- Resolved error "[4224] The Main image of the product is required"

📋 Changes:
- Modified getData() methods to transform flat image arrays to nested structure
- Product images: images[] → Images: {"Image": [...]}
- SKU images: images[] → Images: {"Image": [...]}
- Maintains backward compatibility for empty image arrays

🎯 Impact:
- Product uploads will now pass Miravia's image validation
- Both product-level and SKU-level images properly formatted
- Complies with official Miravia API documentation structure

🤖 Generated with Claude Code (https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-21 13:57:16 +02:00

98 lines
4.4 KiB
PHP

<?php
if ( ! defined( 'ABSPATH' ) ) { exit; }
class MIRAVIADB {
static function install() {
global $wpdb;
$installed_ver = get_option( "miravia_db_version", 0 );
if ($installed_ver != MIRAVIA_DB_VERSION) {
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE {$wpdb->prefix}miravia_accounts (
id mediumint(9) NOT NULL AUTO_INCREMENT,
created datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
updated datetime DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP,
name tinytext NOT NULL,
token varchar(200) NOT NULL,
userid varchar(30) DEFAULT '' NOT NULL,
config TEXT,
lang varchar(10) NOT NULL,
email varchar(100) NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
$sql .= "CREATE TABLE {$wpdb->prefix}miravia_profiles (
id mediumint(9) NOT NULL AUTO_INCREMENT,
created datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
updated datetime DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP,
name tinytext NOT NULL,
accounts_id varchar(200) NOT NULL,
categories varchar(250) DEFAULT '' NOT NULL,
miravia_category bigint NOT NULL DEFAULT 0,
config TEXT,
PRIMARY KEY (id)
) $charset_collate;";
$sql .= "CREATE TABLE {$wpdb->prefix}miravia_products (
id mediumint(9) NOT NULL AUTO_INCREMENT,
created datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
updated datetime DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP,
last_updated datetime DEFAULT '0000-00-00 00:00:00',
id_woocommerce BIGINT NOT NULL,
sku varchar(100) NOT NULL,
id_miravia BIGINT NOT NULL,
job_id VARCHAR(100) NOT NULL DEFAULT '0',
stock INT NOT NULL DEFAULT 0,
price FLOAT(50,2) NULL DEFAULT NULL,
sale_price FLOAT(50,2) NULL DEFAULT NULL,
profile_id INT DEFAULT 0 NOT NULL,
lastError varchar(255) DEFAULT '',
status_text varchar(100) DEFAULT '',
PRIMARY KEY (id)
) $charset_collate;";
$sql .= "CREATE TABLE {$wpdb->prefix}miravia_rules (
id mediumint(9) NOT NULL AUTO_INCREMENT,
created datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
updated datetime DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP,
name_rule VARCHAR(100) NOT NULL,
accounts INT NOT NULL DEFAULT 0,
profile_id INT NOT NULL DEFAULT 0,
rules_json TEXT,
action_json TEXT,
action_type VARCHAR(100) NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
// Feed Jobs table for managing Feed API submissions
$sql .= "CREATE TABLE {$wpdb->prefix}miravia_feed_jobs (
id mediumint(9) NOT NULL AUTO_INCREMENT,
feed_id VARCHAR(100) DEFAULT NULL,
feed_document_id VARCHAR(255) DEFAULT NULL,
feed_type VARCHAR(50) DEFAULT 'PRODUCT_LISTING',
status VARCHAR(50) DEFAULT 'PENDING',
product_count INT DEFAULT 0,
product_ids TEXT DEFAULT NULL,
processing_start_time datetime DEFAULT NULL,
processing_end_time datetime DEFAULT NULL,
created datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
updated datetime DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP,
error_message TEXT DEFAULT NULL,
result_data LONGTEXT DEFAULT NULL,
PRIMARY KEY (id),
KEY feed_id (feed_id),
KEY status (status),
KEY created (created)
) $charset_collate;";
//Run SQL
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
dbDelta( $sql );
//Update bd version plugin
update_option( 'miravia_db_version', MIRAVIA_DB_VERSION );
LOG::add("La base de datos ha sido actualizada a la versión " . MIRAVIA_DB_VERSION);
}
}
}