name = 'ecomzone'; $this->tab = 'market_place'; $this->version = '1.0.0'; $this->author = 'Your Name'; $this->need_instance = 0; $this->bootstrap = true; $this->ps_versions_compliancy = [ 'min' => '1.7.0.0', 'max' => _PS_VERSION_ ]; parent::__construct(); $this->displayName = $this->l('EcomZone Integration'); $this->description = $this->l('Integrates PrestaShop with EcomZone Dropshipping API'); // Initialize API require_once(dirname(__FILE__) . '/classes/EcomZoneAPI.php'); $this->api = new EcomZoneAPI(); } public function install() { if (!parent::install()) { $this->errors[] = $this->l('Could not install the module'); return false; } if (!$this->registerHook('actionProductUpdate')) { $this->errors[] = $this->l('Could not register hooks'); return false; } // Set default API key from your working configuration if (!Configuration::updateValue('ECOMZONE_API_KEY', 'klRyAdrXaxL0s6PEUp7LDlH6T8aPSCtBY8NiEHsHiWpc6646K2TZPi5KMxUg') || !Configuration::updateValue('ECOMZONE_API_URL', 'https://dropship.ecomzone.eu/api')) { $this->errors[] = $this->l('Could not set default configuration'); return false; } return true; } public function getContent() { $output = ''; $debugOutput = ''; if (Tools::isSubmit('submitEcomZone')) { $apiKey = trim(Tools::getValue('ECOMZONE_API_KEY')); if (!$apiKey) { $output .= $this->displayError($this->l('API Key is required')); } else { Configuration::updateValue('ECOMZONE_API_KEY', $apiKey); $debugOutput .= "API Key saved: " . substr($apiKey, 0, 10) . "...\n"; $output .= $this->displayConfirmation($this->l('Settings updated')); } } // Handle manual fetch if (Tools::isSubmit('fetchProducts')) { try { $debugOutput .= "Starting product fetch...\n"; // Get all products $catalog = $this->api->getCatalog(1000); if (isset($catalog['data']) && is_array($catalog['data'])) { $debugOutput .= sprintf("Fetching all products...\n"); $totalProducts = count($catalog['data']); // Show first 5 products as preview for ($i = 0; $i < min(5, $totalProducts); $i++) { $product = $catalog['data'][$i]; $debugOutput .= sprintf( "Product %d/%d: %s - %s (Price: %s EUR, Stock: %s)\n", $i + 1, $totalProducts, $product['sku'], $product['product_name'], $product['product_price'], $product['stock'] ); } if ($totalProducts > 5) { $debugOutput .= "...\n"; // Indicate there are more products } $debugOutput .= sprintf("\nTotal products fetched: %d\n", $totalProducts); } else { $debugOutput .= "No products found or invalid response format\n"; } $output .= $this->displayConfirmation($this->l('Products fetched successfully')); } catch (Exception $e) { $debugOutput .= "Error: " . $e->getMessage() . "\n"; $output .= $this->displayError($this->l('Error fetching products')); } } // Store debug output in smarty variable $this->context->smarty->assign('debug_output', $debugOutput); return $output . $this->displayForm(); } public function displayForm() { $fields_form[0]['form'] = [ 'legend' => [ 'title' => $this->l('Settings'), ], 'input' => [ [ 'type' => 'text', 'label' => $this->l('API Key'), 'name' => 'ECOMZONE_API_KEY', 'required' => true, 'size' => 50 ], ], 'buttons' => [ [ 'type' => 'submit', 'title' => $this->l('Fetch Products'), 'icon' => 'process-icon-download', 'name' => 'fetchProducts', 'class' => 'btn btn-primary pull-left' ] ], 'submit' => [ 'title' => $this->l('Save'), 'class' => 'btn btn-default pull-right' ] ]; $helper = new HelperForm(); $helper->module = $this; $helper->name_controller = $this->name; $helper->token = Tools::getAdminTokenLite('AdminModules'); $helper->currentIndex = AdminController::$currentIndex . '&configure=' . $this->name; $helper->default_form_language = Configuration::get('PS_LANG_DEFAULT'); $helper->fields_value['ECOMZONE_API_KEY'] = Configuration::get('ECOMZONE_API_KEY'); // Add debug console after form $form = $helper->generateForm($fields_form); $debug_console = '
' . $this->context->smarty->getTemplateVars('debug_output') . '