// Fixed bug #PSTEST-136, Attachement works correctly after any changements

This commit is contained in:
vSchoener
2011-12-22 18:24:38 +00:00
parent ed368bf2f0
commit ba4c954ab8
2 changed files with 27 additions and 7 deletions
+23 -3
View File
@@ -87,21 +87,41 @@ class AttachmentCore extends ObjectModel
);
}
/**
* @static
* @param $id_product
* @return bool
*/
public static function deleteProductAttachments($id_product)
{
return Db::getInstance()->execute('
DELETE FROM '._DB_PREFIX_.'product_attachment
WHERE id_product = '.(int)$id_product);
}
/**
* @static
* @param $id_product
* @param $array
* @return bool
*/
public static function attachToProduct($id_product, $array)
{
$result1 = Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'product_attachment WHERE id_product = '.(int)$id_product);
$result1 = Attachment::deleteProductAttachments($id_product);
if (is_array($array))
{
$ids = array();
foreach ($array as $id_attachment)
$ids[] = '('.(int)$id_product.','.(int)$id_attachment.')';
if ((int)$id_attachment > 0)
$ids[] = '('.(int)$id_product.','.(int)$id_attachment.')';
Db::getInstance()->execute('
UPDATE '._DB_PREFIX_.'product
SET cache_has_attachments = '.(count($ids) ? '1' : '0').'
WHERE id_product = '.(int)$id_product.'
LIMIT 1
');
return ($result1 && Db::getInstance()->execute('
return ($result1 && count($ids) && Db::getInstance()->execute('
INSERT INTO '._DB_PREFIX_.'product_attachment (id_product, id_attachment)
VALUES '.implode(',', $ids))
);
+4 -4
View File
@@ -105,7 +105,7 @@ class ProductControllerCore extends FrontController
{
if (!$this->errors)
{
// Assign to the tempate the id of the virtuale product. "0" if the product is not downloadable.
// Assign to the template the id of the virtual product. "0" if the product is not downloadable.
$this->context->smarty->assign('virtual', ProductDownload::getIdFromIdProduct((int)$this->product->id));
// If the product is not active, it's the admin preview mode
@@ -129,7 +129,7 @@ class ProductControllerCore extends FrontController
$this->textRecord($this->product, $this->context->cart);
$this->formTargetFormat();
}
else if (Tools::getIsset('deletePicture') && !$this->context->cart->deleteCustomizationToProduct((int)$this->product->id, (int)Tools::getValue('deletePicture')))
else if (Tools::getIsset('deletePicture') && !$this->context->cart->deletePictureToProduct($this->product->id, Tools::getValue('deletePicture')))
$this->errors[] = Tools::displayError('An error occurred while deleting the selected picture');
$files = $this->context->cart->getProductCustomization($this->product->id, Product::CUSTOMIZE_FILE, true);
@@ -470,7 +470,7 @@ class ProductControllerCore extends FrontController
$product_picture_width = (int)Configuration::get('PS_PRODUCT_PICTURE_WIDTH');
$product_picture_height = (int)Configuration::get('PS_PRODUCT_PICTURE_HEIGHT');
if ($error || (!$tmp_name = tempnam(_PS_TMP_IMG_DIR_, 'PS') OR !move_uploaded_file($file['tmp_name'], $tmp_name)))
if ($error || (!$tmp_name = tempnam(_PS_TMP_IMG_DIR_, 'PS') || !move_uploaded_file($file['tmp_name'], $tmp_name)))
return false;
/* Original file */
else if (!imageResize($tmp_name, _PS_UPLOAD_DIR_.$file_name))
@@ -485,7 +485,7 @@ class ProductControllerCore extends FrontController
// Store customization in database
$cart->addPictureToProduct($this->product->id, $indexes[$field_name], Product::CUSTOMIZE_FILE, $file_name);
}
@unlink($tmp_name);
unlink($tmp_name);
}
return true;
}