// ImageType is now applied to a them

git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@11700 b9a71923-0436-4b27-9f14-aed3839534dd
This commit is contained in:
rGaillard
2011-12-22 21:48:40 +00:00
parent 5768a6c688
commit e8a3c10175
19 changed files with 1714 additions and 1717 deletions
+4 -1
View File
@@ -154,8 +154,11 @@ class qqUploadedFileXhr
{ {
$imagesTypes = ImageType::getImagesTypes('products'); $imagesTypes = ImageType::getImagesTypes('products');
foreach ($imagesTypes AS $k => $imageType) foreach ($imagesTypes AS $k => $imageType)
if (!imageResize($tmpName, $new_path.'-'.stripslashes($imageType['name']).'.'.$image->image_format, $imageType['width'], $imageType['height'], $image->image_format)) {
$theme = (Shop::isFeatureActive() ? '-'.$imageType['id_theme'] : '');
if (!imageResize($tmpName, $new_path.'-'.stripslashes($imageType['name']).$theme.'.'.$image->image_format, $imageType['width'], $imageType['height'], $image->image_format))
return array('error' => Tools::displayError('An error occurred while copying image:').' '.stripslashes($imageType['name'])); return array('error' => Tools::displayError('An error occurred while copying image:').' '.stripslashes($imageType['name']));
}
} }
unlink($tmpName); unlink($tmpName);
Hook::exec('watermark', array('id_image' => $id_image, 'id_product' => $id_product)); Hook::exec('watermark', array('id_image' => $id_image, 'id_product' => $id_product));
+8 -5
View File
@@ -238,12 +238,13 @@ class ImageCore extends ObjectModel
$new_path = $image_new->getPathForCreation(); $new_path = $image_new->getPathForCreation();
foreach ($images_types as $image_type) foreach ($images_types as $image_type)
{ {
if (file_exists(_PS_PROD_IMG_DIR_.$image_old->getExistingImgPath().'-'.$image_type['name'].'.jpg')) $theme = (Shop::isFeatureActive() ? '-'.$image_type['id_theme'] : '');
if (file_exists(_PS_PROD_IMG_DIR_.$image_old->getExistingImgPath().'-'.$image_type['name'].$theme.'.jpg'))
{ {
if (!Configuration::get('PS_LEGACY_IMAGES')) if (!Configuration::get('PS_LEGACY_IMAGES'))
$image_new->createImgFolder(); $image_new->createImgFolder();
copy(_PS_PROD_IMG_DIR_.$image_old->getExistingImgPath().'-'.$image_type['name'].'.jpg', copy(_PS_PROD_IMG_DIR_.$image_old->getExistingImgPath().'-'.$image_type['name'].$theme.'.jpg',
$new_path.'-'.$image_type['name'].'.jpg'); $new_path.'-'.$image_type['name'].$theme.'.jpg');
} }
} }
if (file_exists(_PS_PROD_IMG_DIR_.$image_old->getExistingImgPath().'.jpg')) if (file_exists(_PS_PROD_IMG_DIR_.$image_old->getExistingImgPath().'.jpg'))
@@ -401,8 +402,10 @@ class ImageCore extends ObjectModel
// Delete auto-generated images // Delete auto-generated images
$image_types = ImageType::getImagesTypes(); $image_types = ImageType::getImagesTypes();
foreach ($image_types as $image_type) foreach ($image_types as $image_type)
$files_to_delete[] = $this->image_dir.$this->getExistingImgPath().'-'.$image_type['name'].'.'.$this->image_format; {
$theme = (Shop::isFeatureActive() ? '-'.$image_type['id_theme'] : '');
$files_to_delete[] = $this->image_dir.$this->getExistingImgPath().'-'.$image_type['name'].$theme.'.'.$this->image_format;
}
// Delete watermark image // Delete watermark image
$files_to_delete[] = $this->image_dir.$this->getExistingImgPath().'-watermark.'.$this->image_format; $files_to_delete[] = $this->image_dir.$this->getExistingImgPath().'-watermark.'.$this->image_format;
// delete index.php // delete index.php
+12 -7
View File
@@ -29,6 +29,9 @@ class ImageTypeCore extends ObjectModel
{ {
public $id; public $id;
/** @var string id_theme */
public $id_theme;
/** @var string Name */ /** @var string Name */
public $name; public $name;
@@ -63,6 +66,7 @@ class ImageTypeCore extends ObjectModel
'table' => 'image_type', 'table' => 'image_type',
'primary' => 'id_image_type', 'primary' => 'id_image_type',
'fields' => array( 'fields' => array(
'id_theme' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true),
'name' => array('type' => self::TYPE_STRING, 'validate' => 'isImageTypeName', 'required' => true, 'size' => 16), 'name' => array('type' => self::TYPE_STRING, 'validate' => 'isImageTypeName', 'required' => true, 'size' => 16),
'width' => array('type' => self::TYPE_INT, 'validate' => 'isImageSize', 'required' => true), 'width' => array('type' => self::TYPE_INT, 'validate' => 'isImageSize', 'required' => true),
'height' => array('type' => self::TYPE_INT, 'validate' => 'isImageSize', 'required' => true), 'height' => array('type' => self::TYPE_INT, 'validate' => 'isImageSize', 'required' => true),
@@ -88,16 +92,17 @@ class ImageTypeCore extends ObjectModel
* @param string|null Image type * @param string|null Image type
* @return array Image type definitions * @return array Image type definitions
*/ */
public static function getImagesTypes($type = NULL) public static function getImagesTypes($type = NULL, $id_theme = false)
{ {
if (!isset(self::$images_types_cache[$type])) if (!isset(self::$images_types_cache[$type.($id_theme ? '-'.$id_theme : '')]))
{ {
$where = 'WHERE 1';
if ($id_theme)
$where .= ' AND id_theme='.(int)$id_theme;
if (!empty($type)) if (!empty($type))
$where = 'WHERE ' . pSQL($type) . ' = 1 '; $where .= ' AND ' . pSQL($type) . ' = 1 ';
else
$where = '';
$query = 'SELECT * FROM `'._DB_PREFIX_.'image_type`'.$where.'ORDER BY `name` ASC'; $query = 'SELECT * FROM `'._DB_PREFIX_.'image_type`'.$where.' ORDER BY `name` ASC';
self::$images_types_cache[$type] = Db::getInstance()->executeS($query); self::$images_types_cache[$type] = Db::getInstance()->executeS($query);
} }
@@ -114,7 +119,7 @@ class ImageTypeCore extends ObjectModel
{ {
if (!Validate::isImageTypeName($typeName)) if (!Validate::isImageTypeName($typeName))
die(Tools::displayError()); die(Tools::displayError());
Db::getInstance()->executeS(' Db::getInstance()->executeS('
SELECT `id_image_type` SELECT `id_image_type`
FROM `'._DB_PREFIX_.'image_type` FROM `'._DB_PREFIX_.'image_type`
+10 -8
View File
@@ -306,24 +306,26 @@ class LinkCore
public function getImageLink($name, $ids, $type = null) public function getImageLink($name, $ids, $type = null)
{ {
// legacy mode or default image // legacy mode or default image
$theme = ((Shop::isFeatureActive() && file_exists(_PS_PROD_IMG_DIR_.$ids.($type ? '-'.$type : '').'-'.(int)Context::getContext()->shop->id_theme.'.jpg')) ? '-'.Context::getContext()->shop->id_theme : '');
if ((Configuration::get('PS_LEGACY_IMAGES') if ((Configuration::get('PS_LEGACY_IMAGES')
&& (file_exists(_PS_PROD_IMG_DIR_.$ids.($type ? '-'.$type : '').'.jpg'))) && (file_exists(_PS_PROD_IMG_DIR_.$ids.($type ? '-'.$type : '').$theme.'.jpg')))
|| strpos($ids, 'default') !== false) || strpos($ids, 'default') !== false)
{ {
if ($this->allow == 1) if ($this->allow == 1)
$uri_path = __PS_BASE_URI__.$ids.($type ? '-'.$type : '').'/'.$name.'.jpg'; $uri_path = __PS_BASE_URI__.$ids.($type ? '-'.$type : '').$theme.'/'.$name.'.jpg';
else
$uri_path = _THEME_PROD_DIR_.$ids.($type ? '-'.$type : '').$theme.'.jpg';
}
else else
$uri_path = _THEME_PROD_DIR_.$ids.($type ? '-'.$type : '').'.jpg';
}else
{ {
// if ids if of the form id_product-id_image, we want to extract the id_image part // if ids if of the form id_product-id_image, we want to extract the id_image part
$split_ids = explode('-', $ids); $split_ids = explode('-', $ids);
$id_image = (isset($split_ids[1]) ? $split_ids[1] : $split_ids[0]); $id_image = (isset($split_ids[1]) ? $split_ids[1] : $split_ids[0]);
$theme = ((Shop::isFeatureActive() && file_exists(_PS_PROD_IMG_DIR_.Image::getImgFolderStatic($id_image).$id_image.($type ? '-'.$type : '').'-'.(int)Context::getContext()->shop->id_theme.'.jpg')) ? '-'.Context::getContext()->shop->id_theme : '');
if ($this->allow == 1) if ($this->allow == 1)
$uri_path = __PS_BASE_URI__.$id_image.($type ? '-'.$type : '').'/'.$name.'.jpg'; $uri_path = __PS_BASE_URI__.$id_image.($type ? '-'.$type : '').$theme.'/'.$name.'.jpg';
else else
$uri_path = _THEME_PROD_DIR_.Image::getImgFolderStatic($id_image).$id_image.($type ? '-'.$type : '').'.jpg'; $uri_path = _THEME_PROD_DIR_.Image::getImgFolderStatic($id_image).$id_image.($type ? '-'.$type : '').$theme.'.jpg';
} }
return $this->protocol_content.Tools::getMediaServer($uri_path).$uri_path; return $this->protocol_content.Tools::getMediaServer($uri_path).$uri_path;
+5 -5
View File
@@ -1566,8 +1566,8 @@ class ToolsCore
fwrite($write_fd, "# Images\n"); fwrite($write_fd, "# Images\n");
if (Configuration::get('PS_LEGACY_IMAGES')) if (Configuration::get('PS_LEGACY_IMAGES'))
{ {
fwrite($write_fd, 'RewriteRule ^([a-z0-9]+)\-([a-z0-9]+)(\-[_a-zA-Z0-9-]*)/[_a-zA-Z0-9-\pL]*\.jpg$ '._PS_PROD_IMG_.'$1-$2$3.jpg [L]'."\n"); fwrite($write_fd, 'RewriteRule (*UTF8)^([a-z0-9]+)\-([a-z0-9]+)(\-[_a-zA-Z0-9-]*)(-[0-9]+)?/[_a-zA-Z0-9-\pL]*\.jpg$ '._PS_PROD_IMG_.'$1-$2$3$4.jpg [L]'."\n");
fwrite($write_fd, 'RewriteRule ^([0-9]+)\-([0-9]+)/[_a-zA-Z0-9-\pL]*\.jpg$ '._PS_PROD_IMG_.'$1-$2.jpg [L]'."\n"); fwrite($write_fd, 'RewriteRule (*UTF8)^([0-9]+)\-([0-9]+)(-[0-9]+)?/[_a-zA-Z0-9-\pL]*\.jpg$ '._PS_PROD_IMG_.'$1-$2$3.jpg [L]'."\n");
} }
// Rewrite product images < 100 millions // Rewrite product images < 100 millions
@@ -1580,10 +1580,10 @@ class ToolsCore
$img_name .= '$'.$j; $img_name .= '$'.$j;
} }
$img_name .= '$'.$j; $img_name .= '$'.$j;
fwrite($write_fd, 'RewriteRule ^'.str_repeat('([0-9])', $i).'(\-[_a-zA-Z0-9-]*)?/[_a-zA-Z0-9-\pL]*\.jpg$ '._PS_PROD_IMG_.$img_path.$img_name.".jpg [L]\n"); fwrite($write_fd, 'RewriteRule (*UTF8)^'.str_repeat('([0-9])', $i).'(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/[_a-zA-Z0-9-\pL]*\.jpg$ '._PS_PROD_IMG_.$img_path.$img_name.'$'.($j+1).".jpg [L]\n");
} }
fwrite($write_fd, 'RewriteRule ^c/([0-9]+)(\-[_a-zA-Z0-9-\pL]*)/[_a-zA-Z0-9-]*\.jpg$ img/c/$1$2.jpg [L]'."\n"); fwrite($write_fd, 'RewriteRule (*UTF8)^c/([0-9]+)(\-[_a-zA-Z0-9-\pL]*)(-[0-9]+)?/[_a-zA-Z0-9-]*\.jpg$ img/c/$1$2$3.jpg [L]'."\n");
fwrite($write_fd, 'RewriteRule ^c/([a-zA-Z-]+)/[a-zA-Z0-9-\pL]+\.jpg$ img/c/$1.jpg [L]'."\n"); fwrite($write_fd, 'RewriteRule (*UTF8)^c/([a-zA-Z-]+)(-[0-9]+)?/[a-zA-Z0-9-\pL]+\.jpg$ img/c/$1$2.jpg [L]'."\n");
} }
// Redirections to dispatcher // Redirections to dispatcher
@@ -982,8 +982,11 @@ class WebserviceSpecificManagementImagesCore implements WebserviceSpecificManage
{ {
$imagesTypes = ImageType::getImagesTypes('products'); $imagesTypes = ImageType::getImagesTypes('products');
foreach ($imagesTypes AS $imageType) foreach ($imagesTypes AS $imageType)
if (!imageResize($tmpName, _PS_PROD_IMG_DIR_.$image->getExistingImgPath().'-'.stripslashes($imageType['name']).'.'.$image->image_format, $imageType['width'], $imageType['height'], $image->image_format)) {
$theme = (Shop::isFeatureActive() ? '-'.$image_type['id_theme'] : '');
if (!imageResize($tmpName, _PS_PROD_IMG_DIR_.$image->getExistingImgPath().'-'.stripslashes($imageType['name']).$theme.'.'.$image->image_format, $imageType['width'], $imageType['height'], $image->image_format))
$this->_errors[] = Tools::displayError('An error occurred while copying image:').' '.stripslashes($imageType['name']); $this->_errors[] = Tools::displayError('An error occurred while copying image:').' '.stripslashes($imageType['name']);
}
} }
@unlink($tmpName); @unlink($tmpName);
$this->imgToDisplay = _PS_PROD_IMG_DIR_.$image->getExistingImgPath().'.'.$image->image_format; $this->imgToDisplay = _PS_PROD_IMG_DIR_.$image->getExistingImgPath().'.'.$image->image_format;
@@ -1004,4 +1007,4 @@ class WebserviceSpecificManagementImagesCore implements WebserviceSpecificManage
else else
throw new WebserviceException('Method '.$this->wsObject->method.' is not allowed for an image resource', array(77, 405)); throw new WebserviceException('Method '.$this->wsObject->method.' is not allowed for an image resource', array(77, 405));
} }
} }
@@ -425,11 +425,14 @@ class AdminCategoriesControllerCore extends AdminController
{ {
$images_types = ImageType::getImagesTypes('categories'); $images_types = ImageType::getImagesTypes('categories');
foreach ($images_types as $k => $image_type) foreach ($images_types as $k => $image_type)
{
$theme = (Shop::isFeatureActive() ? '-'.$image_type['id_theme'] : '');
imageResize( imageResize(
_PS_CAT_IMG_DIR_.$id_category.'.jpg', _PS_CAT_IMG_DIR_.$id_category.'.jpg',
_PS_CAT_IMG_DIR_.$id_category.'-'.stripslashes($image_type['name']).'.jpg', _PS_CAT_IMG_DIR_.$id_category.'-'.stripslashes($image_type['name']).$theme.'.jpg',
(int)$image_type['width'], (int)$image_type['height'] (int)$image_type['width'], (int)$image_type['height']
); );
}
} }
return $ret; return $ret;
} }
+18 -4
View File
@@ -69,6 +69,13 @@ class AdminImagesControllerCore extends AdminController
'title' => $this->l('Images'), 'title' => $this->l('Images'),
'image' => '../img/admin/picture.gif' 'image' => '../img/admin/picture.gif'
), ),
'input' => array(
array(
'type' => 'text',
'label' => $this->l('Theme:'),
'name' => 'theme',
),
'input' => array( 'input' => array(
array( array(
'type' => 'text', 'type' => 'text',
@@ -363,6 +370,8 @@ class AdminImagesControllerCore extends AdminController
if (preg_match('/^[0-9]*\.jpg$/', $image)) if (preg_match('/^[0-9]*\.jpg$/', $image))
foreach ($type AS $k => $imageType) foreach ($type AS $k => $imageType)
{ {
$theme = (Shop::isFeatureActive() ? '-'.$imageType['id_theme'] : '');
// Customizable writing dir // Customizable writing dir
$newDir = $dir; $newDir = $dir;
if ($imageType['name'] == 'thumb_scene') if ($imageType['name'] == 'thumb_scene')
@@ -370,7 +379,7 @@ class AdminImagesControllerCore extends AdminController
if (!file_exists($newDir)) if (!file_exists($newDir))
continue; continue;
if (!file_exists($newDir.substr($image, 0, -4).'-'.stripslashes($imageType['name']).'.jpg')) if (!file_exists($newDir.substr($image, 0, -4).'-'.stripslashes($imageType['name']).'.jpg'))
if (!imageResize($dir.$image, $newDir.substr($image, 0, -4).'-'.stripslashes($imageType['name']).'.jpg', (int)($imageType['width']), (int)($imageType['height']))) if (!imageResize($dir.$image, $newDir.substr($image, 0, -4).'-'.stripslashes($imageType['name']).$theme.'.jpg', (int)($imageType['width']), (int)($imageType['height'])))
$errors = true; $errors = true;
if (time() - $this->start_time > $this->max_execution_time - 4) // stop 4 seconds before the tiemout, just enough time to process the end of the page on a slow server if (time() - $this->start_time > $this->max_execution_time - 4) // stop 4 seconds before the tiemout, just enough time to process the end of the page on a slow server
return 'timeout'; return 'timeout';
@@ -385,14 +394,16 @@ class AdminImagesControllerCore extends AdminController
if (file_exists($dir.$imageObj->getExistingImgPath().'.jpg')) if (file_exists($dir.$imageObj->getExistingImgPath().'.jpg'))
foreach ($type AS $k => $imageType) foreach ($type AS $k => $imageType)
{ {
$theme = (Shop::isFeatureActive() ? '-'.$imageType['id_theme'] : '');
if (!file_exists($dir.$imageObj->getExistingImgPath().'-'.stripslashes($imageType['name']).'.jpg')) if (!file_exists($dir.$imageObj->getExistingImgPath().'-'.stripslashes($imageType['name']).'.jpg'))
if (!imageResize($dir.$imageObj->getExistingImgPath().'.jpg', $dir.$imageObj->getExistingImgPath().'-'.stripslashes($imageType['name']).'.jpg', (int)($imageType['width']), (int)($imageType['height']))) if (!imageResize($dir.$imageObj->getExistingImgPath().'.jpg', $dir.$imageObj->getExistingImgPath().'-'.stripslashes($imageType['name']).$theme.'.jpg', (int)($imageType['width']), (int)($imageType['height'])))
$errors = true; $errors = true;
if (time() - $this->start_time > $this->max_execution_time - 4) // stop 4 seconds before the tiemout, just enough time to process the end of the page on a slow server if (time() - $this->start_time > $this->max_execution_time - 4) // stop 4 seconds before the tiemout, just enough time to process the end of the page on a slow server
return 'timeout'; return 'timeout';
} }
}
} }
}
return $errors; return $errors;
} }
@@ -401,15 +412,18 @@ class AdminImagesControllerCore extends AdminController
{ {
$errors = false; $errors = false;
foreach ($type AS $k => $imageType) foreach ($type AS $k => $imageType)
{
$theme = (Shop::isFeatureActive() ? '-'.$imageType['id_theme'] : '');
foreach ($languages AS $language) foreach ($languages AS $language)
{ {
$file = $dir.$language['iso_code'].'.jpg'; $file = $dir.$language['iso_code'].'.jpg';
if (!file_exists($file)) if (!file_exists($file))
$file = _PS_PROD_IMG_DIR_.Language::getIsoById((int)(Configuration::get('PS_LANG_DEFAULT'))).'.jpg'; $file = _PS_PROD_IMG_DIR_.Language::getIsoById((int)(Configuration::get('PS_LANG_DEFAULT'))).'.jpg';
if (!file_exists($dir.$language['iso_code'].'-default-'.stripslashes($imageType['name']).'.jpg')) if (!file_exists($dir.$language['iso_code'].'-default-'.stripslashes($imageType['name']).'.jpg'))
if (!imageResize($file, $dir.$language['iso_code'].'-default-'.stripslashes($imageType['name']).'.jpg', (int)($imageType['width']), (int)($imageType['height']))) if (!imageResize($file, $dir.$language['iso_code'].'-default-'.stripslashes($imageType['name']).$theme.'.jpg', (int)($imageType['width']), (int)($imageType['height'])))
$errors = true; $errors = true;
} }
}
return $errors; return $errors;
} }
+4 -1
View File
@@ -700,7 +700,10 @@ class AdminImportControllerCore extends AdminController
imageResize($tmpfile, $path.'.jpg'); imageResize($tmpfile, $path.'.jpg');
$images_types = ImageType::getImagesTypes($entity); $images_types = ImageType::getImagesTypes($entity);
foreach ($images_types as $k => $image_type) foreach ($images_types as $k => $image_type)
imageResize($tmpfile, $path.'-'.stripslashes($image_type['name']).'.jpg', $image_type['width'], $image_type['height']); {
$theme = (Shop::isFeatureActive() ? '-'.$image_type['id_theme'] : '');
imageResize($tmpfile, $path.'-'.stripslashes($image_type['name']).$theme.'.jpg', $image_type['width'], $image_type['height']);
}
if (in_array($image_type['id_image_type'], $watermark_types)) if (in_array($image_type['id_image_type'], $watermark_types))
Hook::exec('watermark', array('id_image' => $id_image, 'id_product' => $id_entity)); Hook::exec('watermark', array('id_image' => $id_image, 'id_product' => $id_entity));
} }
@@ -433,11 +433,12 @@ class AdminLanguagesControllerCore extends AdminController
$images_types = ImageType::getImagesTypes('products'); $images_types = ImageType::getImagesTypes('products');
foreach ($images_types as $k => $image_type) foreach ($images_types as $k => $image_type)
{ {
if (!imageResize($tmp_name, _PS_IMG_DIR_.'p/'.$language.'-default-'.stripslashes($image_type['name']).'.jpg', $image_type['width'], $image_type['height'])) $theme = (Shop::isFeatureActive() ? '-'.$image_type['id_theme'] : '');
if (!imageResize($tmp_name, _PS_IMG_DIR_.'p/'.$language.'-default-'.stripslashes($image_type['name']).$theme.'.jpg', $image_type['width'], $image_type['height']))
$this->_errors[] = Tools::displayError('An error occurred while resizing no-picture image to your product directory.'); $this->_errors[] = Tools::displayError('An error occurred while resizing no-picture image to your product directory.');
if (!imageResize($tmp_name, _PS_IMG_DIR_.'c/'.$language.'-default-'.stripslashes($image_type['name']).'.jpg', $image_type['width'], $image_type['height'])) if (!imageResize($tmp_name, _PS_IMG_DIR_.'c/'.$language.'-default-'.stripslashes($image_type['name']).$theme.'.jpg', $image_type['width'], $image_type['height']))
$this->_errors[] = Tools::displayError('An error occurred while resizing no-picture image to your category directory.'); $this->_errors[] = Tools::displayError('An error occurred while resizing no-picture image to your category directory.');
if (!imageResize($tmp_name, _PS_IMG_DIR_.'m/'.$language.'-default-'.stripslashes($image_type['name']).'.jpg', $image_type['width'], $image_type['height'])) if (!imageResize($tmp_name, _PS_IMG_DIR_.'m/'.$language.'-default-'.stripslashes($image_type['name']).$theme.'.jpg', $image_type['width'], $image_type['height']))
$this->_errors[] = Tools::displayError('An error occurred while resizing no-picture image to your manufacturer directory.'); $this->_errors[] = Tools::displayError('An error occurred while resizing no-picture image to your manufacturer directory.');
} }
} }
@@ -683,12 +683,15 @@ class AdminManufacturersControllerCore extends AdminController
{ {
$images_types = ImageType::getImagesTypes('manufacturers'); $images_types = ImageType::getImagesTypes('manufacturers');
foreach ($images_types as $k => $image_type) foreach ($images_types as $k => $image_type)
{
$theme = (Shop::isFeatureActive() ? '-'.$image_type['id_theme'] : '');
imageResize( imageResize(
_PS_MANU_IMG_DIR_.$id_manufacturer.'.jpg', _PS_MANU_IMG_DIR_.$id_manufacturer.'.jpg',
_PS_MANU_IMG_DIR_.$id_manufacturer.'-'.stripslashes($image_type['name']).'.jpg', _PS_MANU_IMG_DIR_.$id_manufacturer.'-'.stripslashes($image_type['name']).$theme.'.jpg',
(int)$image_type['width'], (int)$image_type['width'],
(int)$image_type['height'] (int)$image_type['height']
); );
}
} }
} }
} }
@@ -1370,8 +1370,11 @@ class AdminProductsControllerCore extends AdminController
{ {
$imagesTypes = ImageType::getImagesTypes('products'); $imagesTypes = ImageType::getImagesTypes('products');
foreach ($imagesTypes as $k => $image_type) foreach ($imagesTypes as $k => $image_type)
if (!imageResize($tmpName, $new_path.'-'.stripslashes($image_type['name']).'.'.$image->image_format, $image_type['width'], $image_type['height'], $image->image_format)) {
$theme = (Shop::isFeatureActive() ? '-'.$image_type['id_theme'] : '');
if (!imageResize($tmpName, $new_path.'-'.stripslashes($image_type['name']).$theme.'.'.$image->image_format, $image_type['width'], $image_type['height'], $image->image_format))
$this->_errors[] = Tools::displayError('An error occurred while copying image:').' '.stripslashes($image_type['name']); $this->_errors[] = Tools::displayError('An error occurred while copying image:').' '.stripslashes($image_type['name']);
}
} }
@unlink($tmpName); @unlink($tmpName);
+3 -2
View File
@@ -74,10 +74,11 @@ class AdminScenesControllerCore extends AdminController
$images_types = ImageType::getImagesTypes('scenes'); $images_types = ImageType::getImagesTypes('scenes');
foreach ($images_types as $k => $image_type) foreach ($images_types as $k => $image_type)
{ {
$theme = (Shop::isFeatureActive() ? '-'.$image_type['id_theme'] : '');
if ($image_type['name'] == 'large_scene' && isset($_FILES['image'])) if ($image_type['name'] == 'large_scene' && isset($_FILES['image']))
imageResize( imageResize(
$_FILES['image']['tmp_name'], $_FILES['image']['tmp_name'],
_PS_SCENE_IMG_DIR_.$obj->id.'-'.stripslashes($image_type['name']).'.jpg', _PS_SCENE_IMG_DIR_.$obj->id.'-'.stripslashes($image_type['name']).$theme.'.jpg',
(int)$image_type['width'], (int)$image_type['width'],
(int)$image_type['height'] (int)$image_type['height']
); );
@@ -89,7 +90,7 @@ class AdminScenesControllerCore extends AdminController
$tmp_name = $_FILES['image']['tmp_name']; $tmp_name = $_FILES['image']['tmp_name'];
imageResize( imageResize(
$tmp_name, $tmp_name,
_PS_SCENE_THUMB_IMG_DIR_.$obj->id.'-'.stripslashes($image_type['name']).'.jpg', _PS_SCENE_THUMB_IMG_DIR_.$obj->id.'-'.stripslashes($image_type['name']).$theme.'.jpg',
(int)$image_type['width'], (int)$image_type['width'],
(int)$image_type['height'] (int)$image_type['height']
); );
+4 -1
View File
@@ -373,10 +373,13 @@ class AdminStoresControllerCore extends AdminController
{ {
$images_types = ImageType::getImagesTypes('stores'); $images_types = ImageType::getImagesTypes('stores');
foreach ($images_types as $k => $image_type) foreach ($images_types as $k => $image_type)
{
$theme = (Shop::isFeatureActive() ? '-'.$image_type['id_theme'] : '');
imageResize(_PS_STORE_IMG_DIR_.$id_store.'.jpg', imageResize(_PS_STORE_IMG_DIR_.$id_store.'.jpg',
_PS_STORE_IMG_DIR_.$id_store.'-'.stripslashes($image_type['name']).'.jpg', _PS_STORE_IMG_DIR_.$id_store.'-'.stripslashes($image_type['name']).$theme.'.jpg',
(int)$image_type['width'], (int)$image_type['height'] (int)$image_type['width'], (int)$image_type['height']
); );
}
} }
return $ret; return $ret;
} }
@@ -306,7 +306,8 @@ class AdminSuppliersControllerCore extends AdminController
foreach ($images_types as $k => $image_type) foreach ($images_types as $k => $image_type)
{ {
$file = _PS_SUPP_IMG_DIR_.$id_supplier.'.jpg'; $file = _PS_SUPP_IMG_DIR_.$id_supplier.'.jpg';
imageResize($file, _PS_SUPP_IMG_DIR_.$id_supplier.'-'.stripslashes($image_type['name']).'.jpg', (int)$image_type['width'], (int)$image_type['height']); $theme = (Shop::isFeatureActive() ? '-'.$image_type['id_theme'] : '');
imageResize($file, _PS_SUPP_IMG_DIR_.$id_supplier.'-'.stripslashes($image_type['name']).$theme.'.jpg', (int)$image_type['width'], (int)$image_type['height']);
} }
} }
} }
+2 -1
View File
@@ -867,6 +867,7 @@ CREATE TABLE `PREFIX_image_lang` (
CREATE TABLE `PREFIX_image_type` ( CREATE TABLE `PREFIX_image_type` (
`id_image_type` int(10) unsigned NOT NULL auto_increment, `id_image_type` int(10) unsigned NOT NULL auto_increment,
`id_theme` INT(11) unsigned NOT NULL,
`name` varchar(16) NOT NULL, `name` varchar(16) NOT NULL,
`width` int(10) unsigned NOT NULL, `width` int(10) unsigned NOT NULL,
`height` int(10) unsigned NOT NULL, `height` int(10) unsigned NOT NULL,
@@ -877,7 +878,7 @@ CREATE TABLE `PREFIX_image_type` (
`scenes` tinyint(1) NOT NULL default '1', `scenes` tinyint(1) NOT NULL default '1',
`stores` tinyint(1) NOT NULL default '1', `stores` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`id_image_type`), PRIMARY KEY (`id_image_type`),
KEY `image_type_name` (`name`) UNIQUE KEY `image_type_name` (`id_theme`, `name`)
) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; ) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8;
CREATE TABLE `PREFIX_lang` ( CREATE TABLE `PREFIX_lang` (
File diff suppressed because it is too large Load Diff
+4
View File
@@ -420,6 +420,10 @@ WHERE `class_name` = 'AdminAccounting';
ALTER TABLE `PREFIX_order_slip_detail` CHANGE `amount` `amount_tax_excl` DECIMAL( 10, 2 ) default NULL; ALTER TABLE `PREFIX_order_slip_detail` CHANGE `amount` `amount_tax_excl` DECIMAL( 10, 2 ) default NULL;
ALTER TABLE `PREFIX_order_slip_detail` ADD COLUMN `amount_tax_incl` DECIMAL(10,2) default NULL AFTER `amount_tax_excl`; ALTER TABLE `PREFIX_order_slip_detail` ADD COLUMN `amount_tax_incl` DECIMAL(10,2) default NULL AFTER `amount_tax_excl`;
ALTER TABLE `PREFIX_image_type` DROP INDEX `name`;
ALTER TABLE `PREFIX_image_type` ADD `id_theme` INT(11) NOT NULL AFTER `id_image_type`;
ALTER TABLE `PREFIX_image_type` ADD UNIQUE (`id_theme` ,`name`);
UPDATE `PREFIX_image_type` SET `id_theme`=1;
CREATE TABLE `PREFIX_webservice_account_shop` ( CREATE TABLE `PREFIX_webservice_account_shop` (
`id_webservice_account` INT( 11 ) UNSIGNED NOT NULL, `id_webservice_account` INT( 11 ) UNSIGNED NOT NULL,
+9 -24
View File
@@ -392,30 +392,14 @@ class ThemeInstallator extends Module
} }
} }
private function updateImages() private function updateImages($id_theme)
{ {
foreach ($this->xml->images->image as $row) foreach ($this->xml->images->image as $row)
{ {
$foo = Db::getInstance()->getRow('
SELECT name FROM `'._DB_PREFIX_.'image_type` i Db::getInstance()->execute('
WHERE i.name LIKE \''.pSQL($row['name']).'\''); INSERT INTO `'._DB_PREFIX_.'image_type` (`id_theme`, `name`, `width`, `height`, `products`, `categories`, `manufacturers`, `suppliers`, `scenes`)
if ((int)(Tools::getValue('imagesConfig')) == 1 AND $foo) VALUES ('.(int)$id_theme.',
continue ;
if ($foo)
Db::getInstance()->execute('
UPDATE `'._DB_PREFIX_.'image_type` i
SET `width` = '.(int)($row['width']).',
`height` = '.(int)($row['height']).',
`products` = '.($row['products'] == 'true' ? 1 : 0).',
`categories` = '.($row['categories'] == 'true' ? 1 : 0).',
`manufacturers` = '.($row['manufacturers'] == 'true' ? 1 : 0).',
`suppliers` = '.($row['suppliers'] == 'true' ? 1 : 0).',
`scenes` = '.($row['scenes'] == 'true' ? 1 : 0).'
WHERE i.name LIKE \''.pSQL($row['name']).'\'');
else
Db::getInstance()->execute('
INSERT INTO `'._DB_PREFIX_.'image_type` (`name`, `width`, `height`, `products`, `categories`, `manufacturers`, `suppliers`, `scenes`)
VALUES (
\''.pSQL($row['name']).'\', \''.pSQL($row['name']).'\',
'.(int)($row['width']).', '.(int)($row['width']).',
'.(int)($row['height']).', '.(int)($row['height']).',
@@ -540,12 +524,13 @@ class ThemeInstallator extends Module
} }
} }
} }
if ((int)(Tools::getValue('imagesConfig')) != 3 AND self::updateImages())
$msg .= '<br /><b>'.$this->l('Images have been correctly updated in database').'</b><br />';
$theme = new Theme(); $theme = new Theme();
$theme->name = (string)$this->xml['name']; $theme->name = (string)$this->xml['name'];
$theme->add(); $theme->add();
if ((int)(Tools::getValue('imagesConfig')) != 3 AND self::updateImages((int)$theme->id))
$msg .= '<br /><b>'.$this->l('Images have been correctly updated in database').'</b><br />';
$this->_msg .= parent::displayConfirmation($msg); $this->_msg .= parent::displayConfirmation($msg);
$this->_html .= ' $this->_html .= '
<input type="submit" class="button" name="submitThemes" value="'.$this->l('Previous').'" /> <input type="submit" class="button" name="submitThemes" value="'.$this->l('Previous').'" />