* @copyright 2007-2015 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ class ImageTypeCore extends ObjectModel { public $id; /** @var string Name */ public $name; /** @var int Width */ public $width; /** @var int Height */ public $height; /** @var bool Apply to products */ public $products; /** @var int Apply to categories */ public $categories; /** @var int Apply to manufacturers */ public $manufacturers; /** @var int Apply to suppliers */ public $suppliers; /** @var int Apply to scenes */ public $scenes; /** @var int Apply to store */ public $stores; /** * @see ObjectModel::$definition */ public static $definition = array( 'table' => 'image_type', 'primary' => 'id_image_type', 'fields' => array( 'name' => array('type' => self::TYPE_STRING, 'validate' => 'isImageTypeName', 'required' => true, 'size' => 64), 'width' => array('type' => self::TYPE_INT, 'validate' => 'isImageSize', 'required' => true), 'height' => array('type' => self::TYPE_INT, 'validate' => 'isImageSize', 'required' => true), 'categories' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), 'products' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), 'manufacturers' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), 'suppliers' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), 'scenes' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), 'stores' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), ), ); /** * @var array Image types cache */ protected static $images_types_cache = array(); protected static $images_types_name_cache = array(); protected $webserviceParameters = array(); /** * Returns image type definitions * * @param string|null Image type * @param bool $order_by_size * @return array Image type definitions * @throws PrestaShopDatabaseException */ public static function getImagesTypes($type = null, $order_by_size = false) { if (!isset(self::$images_types_cache[$type])) { $where = 'WHERE 1'; if (!empty($type)) { $where .= ' AND `'.bqSQL($type).'` = 1 '; } if ($order_by_size) { $query = 'SELECT * FROM `'._DB_PREFIX_.'image_type` '.$where.' ORDER BY `width` DESC, `height` DESC, `name`ASC'; } else { $query = 'SELECT * FROM `'._DB_PREFIX_.'image_type` '.$where.' ORDER BY `name` ASC'; } self::$images_types_cache[$type] = Db::getInstance()->executeS($query); } return self::$images_types_cache[$type]; } /** * Check if type already is already registered in database * * @param string $typeName Name * @return int Number of results found */ public static function typeAlreadyExists($type_name) { if (!Validate::isImageTypeName($type_name)) { die(Tools::displayError()); } Db::getInstance()->executeS(' SELECT `id_image_type` FROM `'._DB_PREFIX_.'image_type` WHERE `name` = \''.pSQL($type_name).'\''); return Db::getInstance()->NumRows(); } /** * Finds image type definition by name and type * @param string $name * @param string $type */ public static function getByNameNType($name, $type = null, $order = 0) { static $is_passed = false; if (!isset(self::$images_types_name_cache[$name.'_'.$type.'_'.$order]) && !$is_passed) { $results = Db::getInstance()->ExecuteS('SELECT * FROM `'._DB_PREFIX_.'image_type`'); $types = array('products', 'categories', 'manufacturers', 'suppliers', 'scenes', 'stores'); $total = count($types); foreach ($results as $result) { foreach ($result as $value) { for ($i = 0; $i < $total; ++$i) { self::$images_types_name_cache[$result['name'].'_'.$types[$i].'_'.$value] = $result; } } } $is_passed = true; } $return = false; if (isset(self::$images_types_name_cache[$name.'_'.$type.'_'.$order])) { $return = self::$images_types_name_cache[$name.'_'.$type.'_'.$order]; } return $return; } public static function getFormatedName($name) { $theme_name = Context::getContext()->shop->theme_name; $name_without_theme_name = str_replace(array('_'.$theme_name, $theme_name.'_'), '', $name); //check if the theme name is already in $name if yes only return $name if (strstr($name, $theme_name) && self::getByNameNType($name)) { return $name; } elseif (self::getByNameNType($name_without_theme_name.'_'.$theme_name)) { return $name_without_theme_name.'_'.$theme_name; } elseif (self::getByNameNType($theme_name.'_'.$name_without_theme_name)) { return $theme_name.'_'.$name_without_theme_name; } else { return $name_without_theme_name.'_default'; } } }