setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $prefix = $p['database_prefix']; $id = 20792; echo "
\n";
// Product rows
$cnt = $pdo->query("SELECT COUNT(*) FROM {$prefix}omnibus_eu_free WHERE id_product = $id")->fetchColumn();
echo "=== Produkt $id: $cnt wierszy ===\n";
// Table structure
echo "\n=== Kolumny tabeli ===\n";
$stmt = $pdo->query("DESCRIBE {$prefix}omnibus_eu_free");
foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
echo "{$row['Field']} ({$row['Type']})\n";
}
// Combinations
$combCount = $pdo->query("SELECT COUNT(*) FROM {$prefix}product_attribute WHERE id_product = $id")->fetchColumn();
echo "\n=== Kombinacje: $combCount ===\n";
// SELECT speed
$start = microtime(true);
$pdo->query("SELECT * FROM {$prefix}omnibus_eu_free WHERE id_product = $id AND is_last = 1")->fetchAll();
echo "SELECT is_last=1: " . round((microtime(true) - $start) * 1000, 1) . " ms\n";
// All action hooks with modules
echo "\n=== actionProductAttributeUpdate ===\n";
$stmt = $pdo->query("
SELECT m.name, hm.position
FROM {$prefix}hook h
JOIN {$prefix}hook_module hm ON h.id_hook = hm.id_hook
JOIN {$prefix}module m ON hm.id_module = m.id_module AND m.active = 1
WHERE h.name = 'actionProductAttributeUpdate'
ORDER BY hm.position
");
foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
echo " {$row['name']} (pos {$row['position']})\n";
}
echo "\n=== actionProductUpdate ===\n";
$stmt = $pdo->query("
SELECT m.name, hm.position
FROM {$prefix}hook h
JOIN {$prefix}hook_module hm ON h.id_hook = hm.id_hook
JOIN {$prefix}module m ON hm.id_module = m.id_module AND m.active = 1
WHERE h.name = 'actionProductUpdate'
ORDER BY hm.position
");
foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
echo " {$row['name']} (pos {$row['position']})\n";
}
echo "\n=== actionProductSave ===\n";
$stmt = $pdo->query("
SELECT m.name, hm.position
FROM {$prefix}hook h
JOIN {$prefix}hook_module hm ON h.id_hook = hm.id_hook
JOIN {$prefix}module m ON hm.id_module = m.id_module AND m.active = 1
WHERE h.name = 'actionProductSave'
ORDER BY hm.position
");
foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
echo " {$row['name']} (pos {$row['position']})\n";
}
echo "\n=== actionObjectProductUpdateAfter ===\n";
$stmt = $pdo->query("
SELECT m.name, hm.position
FROM {$prefix}hook h
JOIN {$prefix}hook_module hm ON h.id_hook = hm.id_hook
JOIN {$prefix}module m ON hm.id_module = m.id_module AND m.active = 1
WHERE h.name = 'actionObjectProductUpdateAfter'
ORDER BY hm.position
");
foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
echo " {$row['name']} (pos {$row['position']})\n";
}
// How many times does actionProductAttributeUpdate fire?
echo "\n=== Ile razy odpala sie actionProductAttributeUpdate ===\n";
echo "Raz na kazda kombinacje = $combCount razy!\n";
echo "Kazdy modul na tym hooku odpala sie $combCount razy.\n";
// Check gm_omniprice module
echo "\n=== gm_omniprice hooki ===\n";
$stmt = $pdo->query("
SELECT h.name, hm.position
FROM {$prefix}hook h
JOIN {$prefix}hook_module hm ON h.id_hook = hm.id_hook
JOIN {$prefix}module m ON hm.id_module = m.id_module
WHERE m.name = 'gm_omniprice'
ORDER BY h.name
");
foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
echo " {$row['name']} (pos {$row['position']})\n";
}
// Check creativeelements module hooks
echo "\n=== creativeelements hooki actionProduct* ===\n";
$stmt = $pdo->query("
SELECT h.name, hm.position
FROM {$prefix}hook h
JOIN {$prefix}hook_module hm ON h.id_hook = hm.id_hook
JOIN {$prefix}module m ON hm.id_module = m.id_module
WHERE m.name = 'creativeelements' AND h.name LIKE 'action%'
ORDER BY h.name
");
foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
echo " {$row['name']} (pos {$row['position']})\n";
}
echo "\n";