Kontakty
Tento postup popisuje, jak se podařilo „spárovat“ Multishipping v modulu extension/enhancement/ea_ocmod_manager a jak to udělat obecně pro libovolnou modifikaci/modul.
oc_extension_install.filename
oc_extension_path
extension_install_id
oc_modification.extension_install_id
oc_extension_install.extension_install_id
filename
oc_extension_path.extension_install_id
path_cnt
mod_cnt
Hledej podle názvu (name) nebo kódu (code):
name
code
SELECT modification_id, name, code, extension_install_id, status FROM oc_modification WHERE name LIKE '%NAZEV%' OR code LIKE '%KOD%' ORDER BY modification_id DESC;
oc_extension_install
Pokud má modifikace extension_install_id > 0, ověř, zda existuje odpovídající řádek:
SELECT extension_install_id, filename, extension_download_id, date_added FROM oc_extension_install WHERE extension_install_id = <EXT_ID>;
Interpretace výsledku:
-NA-.xml
-NA-.xml_
EXT_ID
SELECT COUNT(*) AS files_cnt FROM oc_extension_path WHERE extension_install_id = <EXT_ID>;
Pozn.: Některé modifikace mohou mít 0 souborů (čistě OCMOD), jiné mají desítky/stovky (souborová instalace).
Tohle je přesně krok, který „spravil“ Multishipping v edit obrazovce EA OCMOD Manageru (zmizelo „Installed with: -NA…“).
Pokud balíček byl .ocmod.zip, nastav takový název (nebo neutrální, ale pravdivý):
UPDATE oc_extension_install SET filename = 'psoit-multishippingv3.3.ocmod.zip' WHERE extension_install_id = <EXT_ID>;
Kontrola přes JOIN (EA používá tento princip):
SELECT m.modification_id, m.name, m.code, m.extension_install_id, i.filename FROM oc_modification m LEFT JOIN oc_extension_install i ON i.extension_install_id = m.extension_install_id WHERE m.modification_id = <MOD_ID>;
5.1) Vlož nový řádek do oc_extension_install
INSERT INTO oc_extension_install (extension_download_id, filename, date_added) VALUES (0, 'multishipping.ocmod.zip', NOW());
5.2) Získej nové ID
SELECT LAST_INSERT_ID() AS new_install_id;
5.3) Přepoj modifikaci na nové install ID
UPDATE oc_modification SET extension_install_id = <new_install_id> WHERE modification_id = <MOD_ID>;
5.4) Kontrola
Pokud máš více řádků v oc_extension_install s filename -NA-.xml (nebo -NA-.xml_) a k nim existují modifikace s vyplněným code, můžeš normalizovat názvy podle code.
SELECT m.modification_id, m.name, m.code, m.extension_install_id, i.filename FROM oc_modification m JOIN oc_extension_install i ON i.extension_install_id = m.extension_install_id WHERE i.filename IN ('-NA-.xml', '-NA-.xml_') ORDER BY m.modification_id;
UPDATE oc_extension_install i JOIN oc_modification m ON m.extension_install_id = i.extension_install_id SET i.filename = CONCAT(m.code, '.ocmod.zip') WHERE i.filename IN ('-NA-.xml', '-NA-.xml_') AND m.code IS NOT NULL AND m.code <> '' AND m.code <> '-NA-.xml';
SELECT i.extension_install_id, i.filename, i.date_added FROM oc_extension_install i LEFT JOIN oc_extension_path p ON p.extension_install_id = i.extension_install_id LEFT JOIN oc_modification m ON m.extension_install_id = i.extension_install_id WHERE p.extension_install_id IS NULL AND m.extension_install_id IS NULL ORDER BY i.extension_install_id DESC;
SELECT i.extension_install_id, i.filename, (SELECT COUNT(*) FROM oc_extension_path p WHERE p.extension_install_id = i.extension_install_id) AS path_cnt, (SELECT COUNT(*) FROM oc_modification m WHERE m.extension_install_id = i.extension_install_id) AS mod_cnt FROM oc_extension_install i WHERE i.extension_install_id = <EXT_ID>;
Poznámka: Pokud používáš jiný prefix tabulek než oc_, nahraď jej. Pokud pracuješ v jiné databázi, uprav název schématu.
oc_