diff --git a/classes/FileUploader.php b/classes/FileUploader.php index 0bc04c976..741d4d8e8 100755 --- a/classes/FileUploader.php +++ b/classes/FileUploader.php @@ -154,7 +154,9 @@ class qqUploadedFileXhr { $imagesTypes = ImageType::getImagesTypes('products'); 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'])); } unlink($tmpName); diff --git a/classes/Image.php b/classes/Image.php index 15dce1d27..fbc3ce99e 100644 --- a/classes/Image.php +++ b/classes/Image.php @@ -238,12 +238,13 @@ class ImageCore extends ObjectModel $new_path = $image_new->getPathForCreation(); 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')) $image_new->createImgFolder(); - copy(_PS_PROD_IMG_DIR_.$image_old->getExistingImgPath().'-'.$image_type['name'].'.jpg', - $new_path.'-'.$image_type['name'].'.jpg'); + copy(_PS_PROD_IMG_DIR_.$image_old->getExistingImgPath().'-'.$image_type['name'].$theme.'.jpg', + $new_path.'-'.$image_type['name'].$theme.'.jpg'); } } if (file_exists(_PS_PROD_IMG_DIR_.$image_old->getExistingImgPath().'.jpg')) @@ -401,8 +402,10 @@ class ImageCore extends ObjectModel // Delete auto-generated images $image_types = ImageType::getImagesTypes(); 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 $files_to_delete[] = $this->image_dir.$this->getExistingImgPath().'-watermark.'.$this->image_format; // delete index.php diff --git a/classes/ImageType.php b/classes/ImageType.php index 98c247fbf..10798c3f6 100644 --- a/classes/ImageType.php +++ b/classes/ImageType.php @@ -29,6 +29,9 @@ class ImageTypeCore extends ObjectModel { public $id; + /** @var string id_theme */ + public $id_theme; + /** @var string Name */ public $name; @@ -63,6 +66,7 @@ class ImageTypeCore extends ObjectModel 'table' => 'image_type', 'primary' => 'id_image_type', '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), 'width' => 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 * @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)) - $where = 'WHERE ' . pSQL($type) . ' = 1 '; - else - $where = ''; + $where .= ' AND ' . pSQL($type) . ' = 1 '; - $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); } diff --git a/classes/Link.php b/classes/Link.php index 10b65fee7..e17096c6d 100644 --- a/classes/Link.php +++ b/classes/Link.php @@ -306,12 +306,16 @@ class LinkCore public function getImageLink($name, $ids, $type = null) { // 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') - && (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) { - if ($this->allow == 1) - $uri_path = __PS_BASE_URI__.$ids.($type ? '-'.$type : '').'/'.$name.'.jpg'; + if ($this->allow == 1) + $uri_path = __PS_BASE_URI__.$ids.($type ? '-'.$type : '').$theme.'/'.$name.'.jpg'; + else + $uri_path = _THEME_PROD_DIR_.$ids.($type ? '-'.$type : '').$theme.'.jpg'; + } else $uri_path = _THEME_PROD_DIR_.$ids.($type ? '-'.$type : '').'.jpg'; }else @@ -319,11 +323,11 @@ class LinkCore // if ids if of the form id_product-id_image, we want to extract the id_image part $split_ids = explode('-', $ids); $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) - $uri_path = __PS_BASE_URI__.$id_image.($type ? '-'.$type : '').'/'.$name.'.jpg'; + $uri_path = __PS_BASE_URI__.$id_image.($type ? '-'.$type : '').$theme.'/'.$name.'.jpg'; 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; diff --git a/classes/Tools.php b/classes/Tools.php index a0718699a..9dd87dfa1 100644 --- a/classes/Tools.php +++ b/classes/Tools.php @@ -1566,8 +1566,8 @@ class ToolsCore fwrite($write_fd, "# Images\n"); 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 ^([0-9]+)\-([0-9]+)/[_a-zA-Z0-9-\pL]*\.jpg$ '._PS_PROD_IMG_.'$1-$2.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 (*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 @@ -1580,10 +1580,10 @@ class ToolsCore $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 ^c/([a-zA-Z-]+)/[a-zA-Z0-9-\pL]+\.jpg$ img/c/$1.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 (*UTF8)^c/([a-zA-Z-]+)(-[0-9]+)?/[a-zA-Z0-9-\pL]+\.jpg$ img/c/$1$2.jpg [L]'."\n"); } // Redirections to dispatcher diff --git a/controllers/admin/AdminCategoriesController.php b/controllers/admin/AdminCategoriesController.php index 94a8d2b11..d6d12f575 100644 --- a/controllers/admin/AdminCategoriesController.php +++ b/controllers/admin/AdminCategoriesController.php @@ -425,11 +425,14 @@ class AdminCategoriesControllerCore extends AdminController { $images_types = ImageType::getImagesTypes('categories'); foreach ($images_types as $k => $image_type) + { + $theme = (Shop::isFeatureActive() ? '-'.$image_type['id_theme'] : ''); imageResize( _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'] ); + } } return $ret; } diff --git a/controllers/admin/AdminImagesController.php b/controllers/admin/AdminImagesController.php index eccffb05d..25050285b 100644 --- a/controllers/admin/AdminImagesController.php +++ b/controllers/admin/AdminImagesController.php @@ -69,6 +69,13 @@ class AdminImagesControllerCore extends AdminController 'title' => $this->l('Images'), 'image' => '../img/admin/picture.gif' ), + 'input' => array( + array( + 'type' => 'text', + 'label' => $this->l('Theme:'), + 'name' => 'theme', + + ), 'input' => array( array( 'type' => 'text', @@ -363,6 +370,8 @@ class AdminImagesControllerCore extends AdminController if (preg_match('/^[0-9]*\.jpg$/', $image)) foreach ($type AS $k => $imageType) { + + $theme = (Shop::isFeatureActive() ? '-'.$imageType['id_theme'] : ''); // Customizable writing dir $newDir = $dir; if ($imageType['name'] == 'thumb_scene') @@ -370,7 +379,7 @@ class AdminImagesControllerCore extends AdminController if (!file_exists($newDir)) continue; 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; 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'; @@ -385,14 +394,16 @@ class AdminImagesControllerCore extends AdminController if (file_exists($dir.$imageObj->getExistingImgPath().'.jpg')) foreach ($type AS $k => $imageType) { + $theme = (Shop::isFeatureActive() ? '-'.$imageType['id_theme'] : ''); 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; 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 $errors; } @@ -401,15 +412,18 @@ class AdminImagesControllerCore extends AdminController { $errors = false; foreach ($type AS $k => $imageType) + { + $theme = (Shop::isFeatureActive() ? '-'.$imageType['id_theme'] : ''); foreach ($languages AS $language) { $file = $dir.$language['iso_code'].'.jpg'; if (!file_exists($file)) $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 (!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; } + } return $errors; } diff --git a/controllers/admin/AdminImportController.php b/controllers/admin/AdminImportController.php index 5824b1ec9..695210604 100644 --- a/controllers/admin/AdminImportController.php +++ b/controllers/admin/AdminImportController.php @@ -700,7 +700,10 @@ class AdminImportControllerCore extends AdminController imageResize($tmpfile, $path.'.jpg'); $images_types = ImageType::getImagesTypes($entity); 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)) Hook::exec('watermark', array('id_image' => $id_image, 'id_product' => $id_entity)); } diff --git a/controllers/admin/AdminLanguagesController.php b/controllers/admin/AdminLanguagesController.php index c7e9ed8eb..6b0cb8c41 100644 --- a/controllers/admin/AdminLanguagesController.php +++ b/controllers/admin/AdminLanguagesController.php @@ -433,11 +433,12 @@ class AdminLanguagesControllerCore extends AdminController $images_types = ImageType::getImagesTypes('products'); 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.'); - 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.'); - 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.'); } } diff --git a/controllers/admin/AdminManufacturersController.php b/controllers/admin/AdminManufacturersController.php index 591da4487..42c89e3b8 100644 --- a/controllers/admin/AdminManufacturersController.php +++ b/controllers/admin/AdminManufacturersController.php @@ -683,12 +683,15 @@ class AdminManufacturersControllerCore extends AdminController { $images_types = ImageType::getImagesTypes('manufacturers'); foreach ($images_types as $k => $image_type) + { + $theme = (Shop::isFeatureActive() ? '-'.$image_type['id_theme'] : ''); imageResize( _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['height'] ); + } } } } diff --git a/controllers/admin/AdminProductsController.php b/controllers/admin/AdminProductsController.php index e96ac616d..5dc9aaa66 100644 --- a/controllers/admin/AdminProductsController.php +++ b/controllers/admin/AdminProductsController.php @@ -1370,8 +1370,11 @@ class AdminProductsControllerCore extends AdminController { $imagesTypes = ImageType::getImagesTypes('products'); 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']); + } } @unlink($tmpName); diff --git a/controllers/admin/AdminScenesController.php b/controllers/admin/AdminScenesController.php index f66b18b2f..5572ed102 100644 --- a/controllers/admin/AdminScenesController.php +++ b/controllers/admin/AdminScenesController.php @@ -74,10 +74,11 @@ class AdminScenesControllerCore extends AdminController $images_types = ImageType::getImagesTypes('scenes'); foreach ($images_types as $k => $image_type) { + $theme = (Shop::isFeatureActive() ? '-'.$image_type['id_theme'] : ''); if ($image_type['name'] == 'large_scene' && isset($_FILES['image'])) imageResize( $_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['height'] ); @@ -89,7 +90,7 @@ class AdminScenesControllerCore extends AdminController $tmp_name = $_FILES['image']['tmp_name']; imageResize( $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['height'] ); @@ -189,7 +190,7 @@ class AdminScenesControllerCore extends AdminController .(Tools::getMaxUploadSize() / 1024).''.$this->l('KB max.').' ' .$this->l('If larger than the image size setting, the image will be reduced to ') .' '.$large_scene_image_type['width'].'x'.$large_scene_image_type['height'].'px ' - .$this->l('(width x height). If smaller than the image-size setting, a white background will be added in order to achieve the + .$this->l('(width x height). If smaller than the image-size setting, a white background will be added in order to achieve the correct image size.').'.
'. $this->l('Note: To change image dimensions, please change the \'large_scene\' image type settings to the desired size (in Back Office > Preferences > Images).'); if ($obj->id && file_exists(_PS_SCENE_IMG_DIR_.$obj->id.'-large_scene.jpg')) @@ -203,7 +204,7 @@ class AdminScenesControllerCore extends AdminController $image_to_map_desc .= ' diff --git a/controllers/admin/AdminStoresController.php b/controllers/admin/AdminStoresController.php index b4438adcc..2fcbc8c58 100644 --- a/controllers/admin/AdminStoresController.php +++ b/controllers/admin/AdminStoresController.php @@ -373,10 +373,13 @@ class AdminStoresControllerCore extends AdminController { $images_types = ImageType::getImagesTypes('stores'); foreach ($images_types as $k => $image_type) + { + $theme = (Shop::isFeatureActive() ? '-'.$image_type['id_theme'] : ''); 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'] ); + } } return $ret; } diff --git a/controllers/admin/AdminSuppliersController.php b/controllers/admin/AdminSuppliersController.php index 439e33686..fcec25ac0 100644 --- a/controllers/admin/AdminSuppliersController.php +++ b/controllers/admin/AdminSuppliersController.php @@ -306,7 +306,8 @@ class AdminSuppliersControllerCore extends AdminController foreach ($images_types as $k => $image_type) { $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']); } } } diff --git a/install-dev/sql/db.sql b/install-dev/sql/db.sql index f7f93f51e..e42394889 100644 --- a/install-dev/sql/db.sql +++ b/install-dev/sql/db.sql @@ -867,6 +867,7 @@ CREATE TABLE `PREFIX_image_lang` ( CREATE TABLE `PREFIX_image_type` ( `id_image_type` int(10) unsigned NOT NULL auto_increment, + `id_theme` INT(11) unsigned NOT NULL, `name` varchar(16) NOT NULL, `width` 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', `stores` tinyint(1) NOT NULL default '1', PRIMARY KEY (`id_image_type`), - KEY `image_type_name` (`name`) + UNIQUE KEY `image_type_name` (`id_theme`, `name`) ) ENGINE=ENGINE_TYPE DEFAULT CHARSET=utf8; CREATE TABLE `PREFIX_lang` ( diff --git a/install-dev/sql/db_settings_lite.sql b/install-dev/sql/db_settings_lite.sql index 5608765ce..530c0fee9 100644 --- a/install-dev/sql/db_settings_lite.sql +++ b/install-dev/sql/db_settings_lite.sql @@ -339,11 +339,7 @@ INSERT INTO `PREFIX_configuration` (`id_configuration`, `name`, `value`, `date_a (162, 'PS_UNIDENTIFIED_GROUP', '1', NOW(), NOW()), (163, 'PS_GUEST_GROUP', '2', NOW(), NOW()), (164, 'PS_CUSTOMER_GROUP', '3', NOW(), NOW()), -(165, 'PS_SMARTY_CONSOLE', 0, NOW(), NOW()), -(166, 'PS_B2B_ENABLE', '0', NOW(), NOW()), -(167, 'PS_INVOICE_MODEL', 'invoice', NOW(), NOW()), -(168, 'PS_LIMIT_UPLOAD_IMAGE_VALUE', '2', NOW(), NOW()), -(169, 'PS_LIMIT_UPLOAD_FILE_VALUE', '2', NOW(), NOW()); +(165, 'PS_SMARTY_CONSOLE', 0, NOW(), NOW()); INSERT INTO `PREFIX_configuration_lang` (`id_configuration`, `id_lang`, `value`, `date_upd`) VALUES (36, 1, 'IN', NOW()),(36, 2, 'FA', NOW()),(36, 3, 'CU', NOW()),(36, 4, 'FA', NOW()),(36, 5, 'FA', NOW()), @@ -908,15 +904,15 @@ INSERT INTO `PREFIX_currency` (`name`, `iso_code`, `iso_code_num`, `sign`, `blan ('Singapour Dollar', 'SGD', '702', '$', 1, 1.77, 2, 0, 0), ('Baht', 'THB', '764', '฿', 1, 40.96, 2, 0, 0), ('Rand', 'ZAR', '710', 'R', 1, 9.38, 2, 0, 0);*/ INSERT INTO `PREFIX_currency_shop` (`id_currency`, `id_shop`) VALUES (1,1), (2,1), (3,1); -INSERT INTO `PREFIX_image_type` (`id_image_type`, `name`, `width`, `height`, `products`, `categories`, `manufacturers`, `suppliers`, `scenes`, `stores`) VALUES -(1, 'small', 45, 45, 1, 1, 1, 1, 0, 0), -(2, 'medium', 58, 58, 1, 1, 1, 1, 0, 1), -(3, 'large', 264, 264, 1, 1, 1, 1, 0, 0), -(4, 'thickbox', 600, 600, 1, 0, 0, 0, 0, 0), -(5, 'category', 500, 150, 0, 1, 0, 0, 0, 0), -(6, 'home', 124, 124, 1, 0, 0, 0, 0, 0), -(7, 'large_scene', 556, 200, 0, 0, 0, 0, 1, 0), -(8, 'thumb_scene', 161, 58, 0, 0, 0, 0, 1, 0); +INSERT INTO `PREFIX_image_type` (`id_image_type`, `id_theme`, `name`, `width`, `height`, `products`, `categories`, `manufacturers`, `suppliers`, `scenes`, `stores`) VALUES +(1, 1, 'small', 45, 45, 1, 1, 1, 1, 0, 0), +(2, 1, 'medium', 58, 58, 1, 1, 1, 1, 0, 1), +(3, 1, 'large', 264, 264, 1, 1, 1, 1, 0, 0), +(4, 1, 'thickbox', 600, 600, 1, 0, 0, 0, 0, 0), +(5, 1, 'category', 500, 150, 0, 1, 0, 0, 0, 0), +(6, 1, 'home', 124, 124, 1, 0, 0, 0, 0, 0), +(7, 1, 'large_scene', 556, 200, 0, 0, 0, 0, 1, 0), +(8, 1, 'thumb_scene', 161, 58, 0, 0, 0, 0, 1, 0); INSERT INTO `PREFIX_contact_shop` (`id_contact`, `id_shop`) VALUES (1,1), (2,1); diff --git a/install-dev/sql/upgrade/1.5.0.2.sql b/install-dev/sql/upgrade/1.5.0.2.sql index abe97be80..b802e4fec 100644 --- a/install-dev/sql/upgrade/1.5.0.2.sql +++ b/install-dev/sql/upgrade/1.5.0.2.sql @@ -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` 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` ( `id_webservice_account` INT( 11 ) UNSIGNED NOT NULL, diff --git a/modules/themeinstallator/themeinstallator.php b/modules/themeinstallator/themeinstallator.php index 9a081802c..d5493fd38 100644 --- a/modules/themeinstallator/themeinstallator.php +++ b/modules/themeinstallator/themeinstallator.php @@ -392,30 +392,14 @@ class ThemeInstallator extends Module } } - private function updateImages() + private function updateImages($id_theme) { foreach ($this->xml->images->image as $row) { - $foo = Db::getInstance()->getRow(' - SELECT name FROM `'._DB_PREFIX_.'image_type` i - WHERE i.name LIKE \''.pSQL($row['name']).'\''); - if ((int)(Tools::getValue('imagesConfig')) == 1 AND $foo) - 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 ( + + Db::getInstance()->execute(' + INSERT INTO `'._DB_PREFIX_.'image_type` (`id_theme`, `name`, `width`, `height`, `products`, `categories`, `manufacturers`, `suppliers`, `scenes`) + VALUES ('.(int)$id_theme.', \''.pSQL($row['name']).'\', '.(int)($row['width']).', '.(int)($row['height']).', @@ -540,12 +524,13 @@ class ThemeInstallator extends Module } } } - if ((int)(Tools::getValue('imagesConfig')) != 3 AND self::updateImages()) - $msg .= '
'.$this->l('Images have been correctly updated in database').'
'; - $theme = new Theme(); $theme->name = (string)$this->xml['name']; $theme->add(); + + if ((int)(Tools::getValue('imagesConfig')) != 3 AND self::updateImages((int)$theme->id)) + $msg .= '
'.$this->l('Images have been correctly updated in database').'
'; + $this->_msg .= parent::displayConfirmation($msg); $this->_html .= '