Ejemplo n.º 1
0
    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;
    }