first commit
This commit is contained in:
635
classes/Manufacturer.php
Normal file
635
classes/Manufacturer.php
Normal file
@@ -0,0 +1,635 @@
|
||||
<?php
|
||||
/**
|
||||
* Copyright since 2007 PrestaShop SA and Contributors
|
||||
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Open Software License (OSL 3.0)
|
||||
* that is bundled with this package in the file LICENSE.md.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* https://opensource.org/licenses/OSL-3.0
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to https://devdocs.prestashop.com/ for more information.
|
||||
*
|
||||
* @author PrestaShop SA and Contributors <contact@prestashop.com>
|
||||
* @copyright Since 2007 PrestaShop SA and Contributors
|
||||
* @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
|
||||
*/
|
||||
|
||||
/**
|
||||
* Class ManufacturerCore.
|
||||
*/
|
||||
class ManufacturerCore extends ObjectModel
|
||||
{
|
||||
public $id;
|
||||
|
||||
/** @var string Name */
|
||||
public $name;
|
||||
|
||||
/** @var array<string> Description */
|
||||
public $description;
|
||||
|
||||
/** @var array<string> Short description */
|
||||
public $short_description;
|
||||
|
||||
/** @var int Address */
|
||||
public $id_address;
|
||||
|
||||
/** @var string Object creation date */
|
||||
public $date_add;
|
||||
|
||||
/** @var string Object last modification date */
|
||||
public $date_upd;
|
||||
|
||||
/** @var string Friendly URL */
|
||||
public $link_rewrite;
|
||||
|
||||
/** @var array<string> Meta title */
|
||||
public $meta_title;
|
||||
|
||||
/** @var array<string> Meta keywords */
|
||||
public $meta_keywords;
|
||||
|
||||
/** @var array<string> Meta description */
|
||||
public $meta_description;
|
||||
|
||||
/** @var bool active */
|
||||
public $active;
|
||||
|
||||
/**
|
||||
* @see ObjectModel::$definition
|
||||
*/
|
||||
public static $definition = [
|
||||
'table' => 'manufacturer',
|
||||
'primary' => 'id_manufacturer',
|
||||
'multilang' => true,
|
||||
'fields' => [
|
||||
'name' => ['type' => self::TYPE_STRING, 'validate' => 'isCatalogName', 'required' => true, 'size' => 64],
|
||||
'active' => ['type' => self::TYPE_BOOL],
|
||||
'date_add' => ['type' => self::TYPE_DATE],
|
||||
'date_upd' => ['type' => self::TYPE_DATE],
|
||||
|
||||
/* Lang fields */
|
||||
'description' => ['type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml'],
|
||||
'short_description' => ['type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml'],
|
||||
'meta_title' => ['type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 255],
|
||||
'meta_description' => ['type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 512],
|
||||
'meta_keywords' => ['type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName'],
|
||||
],
|
||||
];
|
||||
|
||||
protected $webserviceParameters = [
|
||||
'fields' => [
|
||||
'active' => [],
|
||||
'link_rewrite' => ['getter' => 'getLink', 'setter' => false],
|
||||
],
|
||||
'associations' => [
|
||||
'addresses' => [
|
||||
'resource' => 'address',
|
||||
'setter' => false,
|
||||
'fields' => [
|
||||
'id' => ['xlink_resource' => 'addresses'],
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
* ManufacturerCore constructor.
|
||||
*
|
||||
* @param int|null $id
|
||||
* @param int|null $idLang
|
||||
*/
|
||||
public function __construct($id = null, $idLang = null)
|
||||
{
|
||||
parent::__construct($id, $idLang);
|
||||
|
||||
$this->link_rewrite = $this->getLink();
|
||||
$this->image_dir = _PS_MANU_IMG_DIR_;
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes current Manufacturer from the database.
|
||||
*
|
||||
* @return bool `true` if delete was successful
|
||||
*
|
||||
* @throws PrestaShopException
|
||||
*/
|
||||
public function delete()
|
||||
{
|
||||
$address = new Address($this->id_address);
|
||||
|
||||
if (Validate::isLoadedObject($address) && !$address->delete()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (parent::delete()) {
|
||||
CartRule::cleanProductRuleIntegrity('manufacturers', $this->id);
|
||||
|
||||
return $this->deleteImage();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete several objects from database.
|
||||
*
|
||||
* return boolean Deletion result
|
||||
*/
|
||||
public function deleteSelection($selection)
|
||||
{
|
||||
if (!is_array($selection)) {
|
||||
die(Tools::displayError());
|
||||
}
|
||||
|
||||
$result = true;
|
||||
foreach ($selection as $id) {
|
||||
$this->id = (int) $id;
|
||||
$this->id_address = Manufacturer::getManufacturerAddress();
|
||||
$result = $result && $this->delete();
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Manufacturer Address ID.
|
||||
*
|
||||
* @return bool|false|string|null
|
||||
*/
|
||||
protected function getManufacturerAddress()
|
||||
{
|
||||
if (!(int) $this->id) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT `id_address` FROM ' . _DB_PREFIX_ . 'address WHERE `id_manufacturer` = ' . (int) $this->id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return manufacturers.
|
||||
*
|
||||
* @param bool $getNbProducts [optional] return products numbers for each
|
||||
* @param int $idLang Language ID
|
||||
* @param bool $active
|
||||
* @param int $p
|
||||
* @param int $n
|
||||
* @param bool $allGroup
|
||||
*
|
||||
* @return array Manufacturers
|
||||
*/
|
||||
public static function getManufacturers($getNbProducts = false, $idLang = 0, $active = true, $p = false, $n = false, $allGroup = false, $group_by = false, $withProduct = false)
|
||||
{
|
||||
if (!$idLang) {
|
||||
$idLang = (int) Configuration::get('PS_LANG_DEFAULT');
|
||||
}
|
||||
if (!Group::isFeatureActive()) {
|
||||
$allGroup = true;
|
||||
}
|
||||
|
||||
$manufacturers = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
|
||||
SELECT m.*, ml.`description`, ml.`short_description`
|
||||
FROM `' . _DB_PREFIX_ . 'manufacturer` m'
|
||||
. Shop::addSqlAssociation('manufacturer', 'm') .
|
||||
'INNER JOIN `' . _DB_PREFIX_ . 'manufacturer_lang` ml ON (m.`id_manufacturer` = ml.`id_manufacturer` AND ml.`id_lang` = ' . (int) $idLang . ')' .
|
||||
'WHERE 1 ' .
|
||||
($active ? 'AND m.`active` = 1 ' : '') .
|
||||
($withProduct ? 'AND m.`id_manufacturer` IN (SELECT `id_manufacturer` FROM `' . _DB_PREFIX_ . 'product`) ' : '') .
|
||||
($group_by ? ' GROUP BY m.`id_manufacturer`' : '') .
|
||||
'ORDER BY m.`name` ASC
|
||||
' . ($p ? ' LIMIT ' . (((int) $p - 1) * (int) $n) . ',' . (int) $n : ''));
|
||||
if ($manufacturers === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($getNbProducts) {
|
||||
$sqlGroups = '';
|
||||
if (!$allGroup) {
|
||||
$groups = FrontController::getCurrentCustomerGroups();
|
||||
$sqlGroups = (count($groups) ? 'IN (' . implode(',', $groups) . ')' : '=' . (int) Group::getCurrent()->id);
|
||||
}
|
||||
|
||||
$results = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(
|
||||
'
|
||||
SELECT p.`id_manufacturer`, COUNT(DISTINCT p.`id_product`) as nb_products
|
||||
FROM `' . _DB_PREFIX_ . 'product` p USE INDEX (product_manufacturer)
|
||||
' . Shop::addSqlAssociation('product', 'p') . '
|
||||
LEFT JOIN `' . _DB_PREFIX_ . 'manufacturer` as m ON (m.`id_manufacturer`= p.`id_manufacturer`)
|
||||
WHERE p.`id_manufacturer` != 0 AND product_shop.`visibility` NOT IN ("none")
|
||||
' . ($active ? ' AND product_shop.`active` = 1 ' : '') . '
|
||||
' . (Group::isFeatureActive() && $allGroup ? '' : ' AND EXISTS (
|
||||
SELECT 1
|
||||
FROM `' . _DB_PREFIX_ . 'category_group` cg
|
||||
LEFT JOIN `' . _DB_PREFIX_ . 'category_product` cp ON (cp.`id_category` = cg.`id_category`)
|
||||
WHERE p.`id_product` = cp.`id_product` AND cg.`id_group` ' . $sqlGroups . '
|
||||
)') . '
|
||||
GROUP BY p.`id_manufacturer`'
|
||||
);
|
||||
|
||||
$counts = [];
|
||||
foreach ($results as $result) {
|
||||
$counts[(int) $result['id_manufacturer']] = (int) $result['nb_products'];
|
||||
}
|
||||
|
||||
foreach ($manufacturers as $key => $manufacturer) {
|
||||
if (array_key_exists((int) $manufacturer['id_manufacturer'], $counts)) {
|
||||
$manufacturers[$key]['nb_products'] = $counts[(int) $manufacturer['id_manufacturer']];
|
||||
} else {
|
||||
$manufacturers[$key]['nb_products'] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$totalManufacturers = count($manufacturers);
|
||||
$rewriteSettings = (int) Configuration::get('PS_REWRITING_SETTINGS');
|
||||
for ($i = 0; $i < $totalManufacturers; ++$i) {
|
||||
$manufacturers[$i]['link_rewrite'] = ($rewriteSettings ? Tools::link_rewrite($manufacturers[$i]['name']) : 0);
|
||||
}
|
||||
|
||||
return $manufacturers;
|
||||
}
|
||||
|
||||
/**
|
||||
* List of manufacturers.
|
||||
*
|
||||
* @param int $idLang Specify the id of the language used
|
||||
*
|
||||
* @return array Manufacturers lite tree
|
||||
*/
|
||||
public static function getLiteManufacturersList($idLang = null, $format = 'default')
|
||||
{
|
||||
$idLang = null === $idLang ? Context::getContext()->language->id : (int) $idLang;
|
||||
|
||||
$manufacturersList = [];
|
||||
$manufacturers = Manufacturer::getManufacturers(false, $idLang);
|
||||
if ($manufacturers && count($manufacturers)) {
|
||||
foreach ($manufacturers as $manufacturer) {
|
||||
if ($format === 'sitemap') {
|
||||
$manufacturersList[] = [
|
||||
'id' => 'manufacturer-page-' . (int) $manufacturer['id_manufacturer'],
|
||||
'label' => $manufacturer['name'],
|
||||
'url' => Context::getContext()->link->getManufacturerLink($manufacturer['id_manufacturer'], $manufacturer['link_rewrite']),
|
||||
'children' => [],
|
||||
];
|
||||
} else {
|
||||
$manufacturersList[] = [
|
||||
'id' => (int) $manufacturer['id_manufacturer'],
|
||||
'link' => Context::getContext()->link->getManufacturerLink($manufacturer['id_manufacturer'], $manufacturer['link_rewrite']),
|
||||
'name' => $manufacturer['name'],
|
||||
'desc' => $manufacturer['description'],
|
||||
'children' => [],
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $manufacturersList;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return name from id.
|
||||
*
|
||||
* @param int $id_manufacturer Manufacturer ID
|
||||
*
|
||||
* @return string name
|
||||
*/
|
||||
protected static $cacheName = [];
|
||||
|
||||
public static function getNameById($idManufacturer)
|
||||
{
|
||||
if (!isset(self::$cacheName[$idManufacturer])) {
|
||||
self::$cacheName[$idManufacturer] = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(
|
||||
'
|
||||
SELECT `name`
|
||||
FROM `' . _DB_PREFIX_ . 'manufacturer`
|
||||
WHERE `id_manufacturer` = ' . (int) $idManufacturer . '
|
||||
AND `active` = 1'
|
||||
);
|
||||
}
|
||||
|
||||
return self::$cacheName[$idManufacturer];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Manufacturer ID by name.
|
||||
*
|
||||
* @param string $name
|
||||
*
|
||||
* @return bool|int
|
||||
*/
|
||||
public static function getIdByName($name)
|
||||
{
|
||||
$result = Db::getInstance()->getRow(
|
||||
'
|
||||
SELECT `id_manufacturer`
|
||||
FROM `' . _DB_PREFIX_ . 'manufacturer`
|
||||
WHERE `name` = \'' . pSQL($name) . '\''
|
||||
);
|
||||
|
||||
if (isset($result['id_manufacturer'])) {
|
||||
return (int) $result['id_manufacturer'];
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get link to Manufacturer page.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getLink()
|
||||
{
|
||||
return Tools::link_rewrite($this->name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Products by Manufacturer ID.
|
||||
*
|
||||
* @param int $idManufacturer
|
||||
* @param int $idLang
|
||||
* @param int $p
|
||||
* @param int $n
|
||||
* @param null $orderBy
|
||||
* @param null $orderWay
|
||||
* @param bool $getTotal
|
||||
* @param bool $active
|
||||
* @param bool $activeCategory
|
||||
* @param Context|null $context
|
||||
*
|
||||
* @return array|bool
|
||||
*/
|
||||
public static function getProducts(
|
||||
$idManufacturer,
|
||||
$idLang,
|
||||
$p,
|
||||
$n,
|
||||
$orderBy = null,
|
||||
$orderWay = null,
|
||||
$getTotal = false,
|
||||
$active = true,
|
||||
$activeCategory = true,
|
||||
Context $context = null
|
||||
) {
|
||||
if (!$context) {
|
||||
$context = Context::getContext();
|
||||
}
|
||||
|
||||
$front = true;
|
||||
if (!in_array($context->controller->controller_type, ['front', 'modulefront'])) {
|
||||
$front = false;
|
||||
}
|
||||
|
||||
if ($p < 1) {
|
||||
$p = 1;
|
||||
}
|
||||
|
||||
if (empty($orderBy) || $orderBy == 'position') {
|
||||
$orderBy = 'name';
|
||||
}
|
||||
|
||||
if (empty($orderWay)) {
|
||||
$orderWay = 'ASC';
|
||||
}
|
||||
|
||||
if (!Validate::isOrderBy($orderBy) || !Validate::isOrderWay($orderWay)) {
|
||||
die(Tools::displayError());
|
||||
}
|
||||
|
||||
$groups = FrontController::getCurrentCustomerGroups();
|
||||
$sqlGroups = count($groups) ? 'IN (' . implode(',', $groups) . ')' : '=' . (int) Group::getCurrent()->id;
|
||||
|
||||
/* Return only the number of products */
|
||||
if ($getTotal) {
|
||||
$sql = '
|
||||
SELECT p.`id_product`
|
||||
FROM `' . _DB_PREFIX_ . 'product` p
|
||||
' . Shop::addSqlAssociation('product', 'p') . '
|
||||
WHERE p.id_manufacturer = ' . (int) $idManufacturer
|
||||
. ($active ? ' AND product_shop.`active` = 1' : '') . '
|
||||
' . ($front ? ' AND product_shop.`visibility` IN ("both", "catalog")' : '') . '
|
||||
AND EXISTS (
|
||||
SELECT 1
|
||||
FROM `' . _DB_PREFIX_ . 'category_group` cg
|
||||
LEFT JOIN `' . _DB_PREFIX_ . 'category_product` cp ON (cp.`id_category` = cg.`id_category`)' .
|
||||
($activeCategory ? ' INNER JOIN `' . _DB_PREFIX_ . 'category` ca ON cp.`id_category` = ca.`id_category` AND ca.`active` = 1' : '') . '
|
||||
WHERE p.`id_product` = cp.`id_product` AND cg.`id_group` ' . $sqlGroups . '
|
||||
)';
|
||||
|
||||
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql);
|
||||
|
||||
return (int) count($result);
|
||||
}
|
||||
if (strpos($orderBy, '.') > 0) {
|
||||
$orderBy = explode('.', $orderBy);
|
||||
$orderBy = pSQL($orderBy[0]) . '.`' . pSQL($orderBy[1]) . '`';
|
||||
}
|
||||
|
||||
if ($orderBy == 'price') {
|
||||
$alias = 'product_shop.';
|
||||
} elseif ($orderBy == 'name') {
|
||||
$alias = 'pl.';
|
||||
} elseif ($orderBy == 'manufacturer_name') {
|
||||
$orderBy = 'name';
|
||||
$alias = 'm.';
|
||||
} elseif ($orderBy == 'quantity') {
|
||||
$alias = 'stock.';
|
||||
} else {
|
||||
$alias = 'p.';
|
||||
}
|
||||
|
||||
$sql = 'SELECT p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity'
|
||||
. (Combination::isFeatureActive() ? ', product_attribute_shop.minimal_quantity AS product_attribute_minimal_quantity, IFNULL(product_attribute_shop.`id_product_attribute`,0) id_product_attribute' : '') . '
|
||||
, pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`,
|
||||
pl.`meta_title`, pl.`name`, pl.`available_now`, pl.`available_later`, image_shop.`id_image` id_image, il.`legend`, m.`name` AS manufacturer_name,
|
||||
DATEDIFF(
|
||||
product_shop.`date_add`,
|
||||
DATE_SUB(
|
||||
"' . date('Y-m-d') . ' 00:00:00",
|
||||
INTERVAL ' . (Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20) . ' DAY
|
||||
)
|
||||
) > 0 AS new'
|
||||
. ' FROM `' . _DB_PREFIX_ . 'product` p
|
||||
' . Shop::addSqlAssociation('product', 'p') .
|
||||
(Combination::isFeatureActive() ? 'LEFT JOIN `' . _DB_PREFIX_ . 'product_attribute_shop` product_attribute_shop
|
||||
ON (p.`id_product` = product_attribute_shop.`id_product` AND product_attribute_shop.`default_on` = 1 AND product_attribute_shop.id_shop=' . (int) $context->shop->id . ')' : '') . '
|
||||
LEFT JOIN `' . _DB_PREFIX_ . 'product_lang` pl
|
||||
ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = ' . (int) $idLang . Shop::addSqlRestrictionOnLang('pl') . ')
|
||||
LEFT JOIN `' . _DB_PREFIX_ . 'image_shop` image_shop
|
||||
ON (image_shop.`id_product` = p.`id_product` AND image_shop.cover=1 AND image_shop.id_shop=' . (int) $context->shop->id . ')
|
||||
LEFT JOIN `' . _DB_PREFIX_ . 'image_lang` il
|
||||
ON (image_shop.`id_image` = il.`id_image` AND il.`id_lang` = ' . (int) $idLang . ')
|
||||
LEFT JOIN `' . _DB_PREFIX_ . 'manufacturer` m
|
||||
ON (m.`id_manufacturer` = p.`id_manufacturer`)
|
||||
' . Product::sqlStock('p', 0);
|
||||
|
||||
if (Group::isFeatureActive() || $activeCategory) {
|
||||
$sql .= 'JOIN `' . _DB_PREFIX_ . 'category_product` cp ON (p.id_product = cp.id_product)';
|
||||
if (Group::isFeatureActive()) {
|
||||
$sql .= 'JOIN `' . _DB_PREFIX_ . 'category_group` cg ON (cp.`id_category` = cg.`id_category` AND cg.`id_group` ' . $sqlGroups . ')';
|
||||
}
|
||||
if ($activeCategory) {
|
||||
$sql .= 'JOIN `' . _DB_PREFIX_ . 'category` ca ON cp.`id_category` = ca.`id_category` AND ca.`active` = 1';
|
||||
}
|
||||
}
|
||||
|
||||
$sql .= '
|
||||
WHERE p.`id_manufacturer` = ' . (int) $idManufacturer . '
|
||||
' . ($active ? ' AND product_shop.`active` = 1' : '') . '
|
||||
' . ($front ? ' AND product_shop.`visibility` IN ("both", "catalog")' : '') . '
|
||||
GROUP BY p.id_product';
|
||||
|
||||
if ($orderBy !== 'price') {
|
||||
$sql .= '
|
||||
ORDER BY ' . $alias . '`' . bqSQL($orderBy) . '` ' . pSQL($orderWay) . '
|
||||
LIMIT ' . (((int) $p - 1) * (int) $n) . ',' . (int) $n;
|
||||
}
|
||||
|
||||
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql);
|
||||
|
||||
if (!$result) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($orderBy === 'price') {
|
||||
Tools::orderbyPrice($result, $orderWay);
|
||||
$result = array_slice($result, (int) (($p - 1) * $n), (int) $n);
|
||||
}
|
||||
|
||||
return Product::getProductsProperties($idLang, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Products by Manufacturer
|
||||
* (light edition).
|
||||
*
|
||||
* @param int $idLang
|
||||
*
|
||||
* @return array|false|mysqli_result|PDOStatement|resource|null
|
||||
*/
|
||||
public function getProductsLite($idLang)
|
||||
{
|
||||
$context = Context::getContext();
|
||||
$front = true;
|
||||
if (!in_array($context->controller->controller_type, ['front', 'modulefront'])) {
|
||||
$front = false;
|
||||
}
|
||||
|
||||
return Db::getInstance()->executeS('
|
||||
SELECT p.`id_product`, pl.`name`
|
||||
FROM `' . _DB_PREFIX_ . 'product` p
|
||||
' . Shop::addSqlAssociation('product', 'p') . '
|
||||
LEFT JOIN `' . _DB_PREFIX_ . 'product_lang` pl ON (
|
||||
p.`id_product` = pl.`id_product`
|
||||
AND pl.`id_lang` = ' . (int) $idLang . $context->shop->addSqlRestrictionOnLang('pl') . '
|
||||
)
|
||||
WHERE p.`id_manufacturer` = ' . (int) $this->id .
|
||||
($front ? ' AND product_shop.`visibility` IN ("both", "catalog")' : ''));
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify if a manufacturer already in base.
|
||||
*
|
||||
* @param int $idManufacturer Manufacturer id
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public static function manufacturerExists($idManufacturer)
|
||||
{
|
||||
$row = Db::getInstance()->getRow(
|
||||
'
|
||||
SELECT `id_manufacturer`
|
||||
FROM ' . _DB_PREFIX_ . 'manufacturer m
|
||||
WHERE m.`id_manufacturer` = ' . (int) $idManufacturer,
|
||||
false
|
||||
);
|
||||
|
||||
return isset($row['id_manufacturer']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Manufacturer Addresses.
|
||||
*
|
||||
* @param int $idLang
|
||||
*
|
||||
* @return array|false|mysqli_result|PDOStatement|resource|null
|
||||
*/
|
||||
public function getAddresses($idLang)
|
||||
{
|
||||
return Db::getInstance()->executeS(
|
||||
'
|
||||
SELECT a.*, cl.name AS `country`, s.name AS `state`
|
||||
FROM `' . _DB_PREFIX_ . 'address` AS a
|
||||
LEFT JOIN `' . _DB_PREFIX_ . 'country_lang` AS cl ON (
|
||||
cl.`id_country` = a.`id_country`
|
||||
AND cl.`id_lang` = ' . (int) $idLang . '
|
||||
)
|
||||
LEFT JOIN `' . _DB_PREFIX_ . 'state` AS s ON (s.`id_state` = a.`id_state`)
|
||||
WHERE `id_manufacturer` = ' . (int) $this->id . '
|
||||
AND a.`deleted` = 0'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Manufacturer Addresses
|
||||
* (for webservice).
|
||||
*
|
||||
* @return array|false|mysqli_result|PDOStatement|resource|null
|
||||
*/
|
||||
public function getWsAddresses()
|
||||
{
|
||||
return Db::getInstance()->executeS(
|
||||
'
|
||||
SELECT a.id_address as id
|
||||
FROM `' . _DB_PREFIX_ . 'address` AS a
|
||||
' . Shop::addSqlAssociation('manufacturer', 'a') . '
|
||||
WHERE a.`id_manufacturer` = ' . (int) $this->id . '
|
||||
AND a.`deleted` = 0'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Manufacturer Addresses
|
||||
* (for webservice).
|
||||
*
|
||||
* @param array $idAddresses
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function setWsAddresses($idAddresses)
|
||||
{
|
||||
$ids = [];
|
||||
|
||||
foreach ($idAddresses as $id) {
|
||||
$ids[] = (int) $id['id'];
|
||||
}
|
||||
|
||||
$result1 = (
|
||||
Db::getInstance()->execute('
|
||||
UPDATE `' . _DB_PREFIX_ . 'address`
|
||||
SET id_manufacturer = 0
|
||||
WHERE id_manufacturer = ' . (int) $this->id . '
|
||||
AND deleted = 0') !== false
|
||||
);
|
||||
|
||||
$result2 = true;
|
||||
if (count($ids)) {
|
||||
$result2 = (
|
||||
Db::getInstance()->execute('
|
||||
UPDATE `' . _DB_PREFIX_ . 'address`
|
||||
SET id_customer = 0, id_supplier = 0, id_manufacturer = ' . (int) $this->id . '
|
||||
WHERE id_address IN(' . implode(',', $ids) . ')
|
||||
AND deleted = 0') !== false
|
||||
);
|
||||
}
|
||||
|
||||
return $result1 && $result2;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user