protected function _deleteOldLabels() { $max = array(Product::CUSTOMIZE_FILE => (int) Tools::getValue('uploadable_files'), Product::CUSTOMIZE_TEXTFIELD => (int) Tools::getValue('text_fields')); /* Get customization field ids */ if (($result = Db::getInstance()->executeS('SELECT `id_customization_field`, `type` FROM `' . _DB_PREFIX_ . 'customization_field` WHERE `id_product` = ' . (int) $this->id . ' ORDER BY `id_customization_field`')) === false) { return false; } if (empty($result)) { return true; } $customization_fields = array(Product::CUSTOMIZE_FILE => array(), Product::CUSTOMIZE_TEXTFIELD => array()); foreach ($result as $row) { $customization_fields[(int) $row['type']][] = (int) $row['id_customization_field']; } $extra_file = count($customization_fields[Product::CUSTOMIZE_FILE]) - $max[Product::CUSTOMIZE_FILE]; $extra_text = count($customization_fields[Product::CUSTOMIZE_TEXTFIELD]) - $max[Product::CUSTOMIZE_TEXTFIELD]; /* If too much inside the database, deletion */ if ($extra_file > 0 && count($customization_fields[Product::CUSTOMIZE_FILE]) - $extra_file >= 0 && (!Db::getInstance()->execute('DELETE FROM `' . _DB_PREFIX_ . 'customization_field` WHERE `id_product` = ' . (int) $this->id . ' AND `type` = ' . Product::CUSTOMIZE_FILE . ' AND `id_customization_field` >= ' . (int) $customization_fields[Product::CUSTOMIZE_FILE][count($customization_fields[Product::CUSTOMIZE_FILE]) - $extra_file]) || !Db::getInstance()->execute('DELETE FROM `' . _DB_PREFIX_ . 'customization_field_lang` WHERE `id_customization_field` NOT IN ( SELECT `id_customization_field` FROM `' . _DB_PREFIX_ . 'customization_field` )'))) { return false; } if ($extra_text > 0 && count($customization_fields[Product::CUSTOMIZE_TEXTFIELD]) - $extra_text >= 0 && (!Db::getInstance()->execute('DELETE FROM `' . _DB_PREFIX_ . 'customization_field` WHERE `id_product` = ' . (int) $this->id . ' AND `type` = ' . Product::CUSTOMIZE_TEXTFIELD . ' AND `id_customization_field` >= ' . (int) $customization_fields[Product::CUSTOMIZE_TEXTFIELD][count($customization_fields[Product::CUSTOMIZE_TEXTFIELD]) - $extra_text]) || !Db::getInstance()->execute('DELETE FROM `' . _DB_PREFIX_ . 'customization_field_lang` WHERE `id_customization_field` NOT IN ( SELECT `id_customization_field` FROM `' . _DB_PREFIX_ . 'customization_field` )'))) { return false; } // Refresh cache of feature detachable Configuration::updateGlobalValue('PS_CUSTOMIZATION_FEATURE_ACTIVE', Customization::isCurrentlyUsed()); return true; }