示例#1
0
function checkLink($v0390f4ac89dd)
{
    global $cookie;
    $v0d483f03670f = getActiveAttributes();
    $vfd3d2bf67b21 = Db::getInstance()->ExecuteS('SELECT attribute.id_product FROM ' . _DB_PREFIX_ . 'product_attribute_combination as combination LEFT JOIN ' . _DB_PREFIX_ . 'product_attribute as attribute ON combination.id_product_attribute = attribute.id_product_attribute LEFT JOIN ' . _DB_PREFIX_ . 'product_lang as lang ON lang.id_product = attribute.id_product LEFT JOIN ' . _DB_PREFIX_ . 'attribute as attribute_group ON attribute_group.id_attribute = combination.id_attribute LEFT JOIN ' . _DB_PREFIX_ . 'attribute_group_lang as group_lang ON ' . 'group_lang.id_attribute_group = attribute_group.id_attribute_group WHERE lang.id_lang = ' . (int) $cookie->id_lang . ' AND group_lang.id_lang = ' . (int) $cookie->id_lang . ' AND attribute.id_product = ' . $v0390f4ac89dd . ' AND attribute_group.id_attribute IN (SELECT attrib.id_attribute FROM ' . _DB_PREFIX_ . 'attribute as attrib WHERE attrib.id_attribute_group IN (' . implode(', ', $v0d483f03670f) . ')) GROUP BY attribute.id_product, group_lang.name');
    if (count($v0d483f03670f) == count($vfd3d2bf67b21)) {
        return true;
    } else {
        return false;
    }
}
 /**
  * \brief	Save a grid data
  * \param	integer Grid id
  * \param	string File to save
  * \retval 	boolean Result of the operation
  */
 private function _save_defaultDimension($product_id, $default_values)
 {
     global $cookie;
     //	Unset key = 0
     ksort($default_values);
     $default_values = array_slice($default_values, 1, 5, true);
     //	Test if combination exists, else create it
     $values = array();
     foreach ($default_values as $value) {
         $values[] = $value[0];
     }
     $combination_count = (int) Db::getInstance()->getValue('SELECT COUNT(*) AS count FROM ' . _DB_PREFIX_ . 'product_attribute_combination WHERE id_attribute IN (' . implode(',', $values) . ') HAVING count = ' . count($values));
     if (!$combination_count) {
         //	Get product combinations
         $combinations = Db::getInstance()->ExecuteS('SELECT * FROM ' . _DB_PREFIX_ . 'product_attribute WHERE id_product = ' . $product_id);
         //	Get product data
         $product_data = Db::getInstance()->getRow('SELECT price, wholesale_price, weight FROM ' . _DB_PREFIX_ . 'product WHERE id_product = ' . $product_id);
         foreach ($combinations as $combination) {
             //	Check if combination is the default one
             $default = 0;
             if ($combination['default_on'] == '1') {
                 $default = 1;
             }
             //	Set combination data
             $price = floatval($product_data['price']) + floatval($combination['price']);
             $weight = get_combinationWeight($product_id, (int) $combination['id_product_attribute']);
             $wholesale_price = floatval($product_data['wholesale_price']) + floatval($combination['wholesale_price']);
             //	Set available date for Prestashop 1.5 and above
             $add = '';
             $value_add = '';
             if ((double) substr(_PS_VERSION_, 0, 3) >= 1.5) {
                 $add = ', available_date';
                 $value_add = ', "0000-00-00"';
             }
             //	Create the new one
             if (Db::getInstance()->Execute('INSERT INTO ' . _DB_PREFIX_ . 'product_attribute (id_product, quantity, price, wholesale_price, aimd_value, weight, default_on' . $add . ') VALUES (' . $product_id . ', 1, ' . $price . ', ' . $wholesale_price . ', 1, ' . $weight . ', ' . $default . $value_add . ')')) {
                 $product_attribute_id = Db::getInstance()->Insert_ID();
                 //	Add quantity to product stock
                 Db::getInstance()->Execute('UPDATE ' . _DB_PREFIX_ . 'product SET quantity = quantity + 1 WHERE id_product = ' . $product_id);
                 //	Get active attributs
                 $attributes = getActiveAttributes();
                 //	Save combination elements
                 $elements = Db::getInstance()->ExecuteS('SELECT pac.id_attribute FROM ' . _DB_PREFIX_ . 'product_attribute_combination AS pac LEFT JOIN ' . _DB_PREFIX_ . 'attribute AS a ON ' . 'pac.id_attribute = a.id_attribute WHERE pac.id_product_attribute = ' . $combination['id_product_attribute'] . ' AND a.id_attribute_group NOT IN (' . implode(',', $attributes) . ')');
                 foreach ($elements as $element) {
                     Db::getInstance()->Execute('INSERT INTO ' . _DB_PREFIX_ . 'product_attribute_combination (id_attribute, id_product_attribute) VALUES (' . $element['id_attribute'] . ', ' . $product_attribute_id . ')');
                 }
                 //	Save combination default dimensions elements
                 $tmp_price = 1;
                 $tmp_weight = 1;
                 $tmp_wholesale_price = 1;
                 foreach ($default_values as $key => $value) {
                     Db::getInstance()->Execute('INSERT INTO ' . _DB_PREFIX_ . 'product_attribute_combination (id_attribute, id_product_attribute) VALUES (' . $value[0] . ', ' . $product_attribute_id . ')');
                     $default_dimension = (int) Db::getInstance()->getValue('SELECT al.name FROM ' . _DB_PREFIX_ . 'attribute_lang AS al LEFT JOIN ' . _DB_PREFIX_ . 'attribute AS a ON a.id_attribute = al.id_attribute ' . 'WHERE al.id_lang = ' . (int) $cookie->id_lang . ' AND a.id_attribute_group = ' . $key);
                     $tmp_price = $tmp_price * $value[1] / $default_dimension;
                     $tmp_weight = $tmp_weight * $value[1] / $default_dimension;
                     $tmp_wholesale_price = $tmp_wholesale_price * $value[1] / $default_dimension;
                 }
                 $price = $price * $tmp_price - floatval($product_data['price']);
                 $weight = $weight * $tmp_weight - $weight;
                 $wholesale_price = $wholesale_price * $tmp_wholesale_price - $wholesale_price;
                 //	Update product attribute data
                 Db::getInstance()->Execute('UPDATE ' . _DB_PREFIX_ . 'product_attribute SET price = ' . $price . ', wholesale_price = ' . $wholesale_price . ', weight = ' . $weight . ' WHERE id_product = ' . $product_id . ' AND id_product_attribute = ' . $product_attribute_id);
                 //	If image, add it
                 $image = Db::getInstance()->getValue('SELECT id_image FROM ' . _DB_PREFIX_ . 'product_attribute_image WHERE id_product_attribute = ' . (int) $combination['id_product_attribute']);
                 if ($image) {
                     Db::getInstance()->Execute('INSERT INTO ' . _DB_PREFIX_ . 'product_attribute_image (id_product_attribute, id_image) VALUES (' . $product_attribute_id . ', ' . $image . ')');
                 }
                 //	Add for Prestashop 1.5 version and above
                 if ((double) substr(_PS_VERSION_, 0, 3) >= 1.5) {
                     //	Insert in shops
                     if ((int) Configuration::get('PS_MULTISHOP_FEATURE_ACTIVE') == 1 && (Tools::getIsset('shop_linked') && Tools::getValue('shop_linked'))) {
                         $shops_id = array('id_shop' => (int) Tools::getValue('shop_linked'));
                     } else {
                         $shops_id = Db::getInstance()->ExecuteS('SELECT id_shop FROM ' . _DB_PREFIX_ . 'shop WHERE active = 1');
                     }
                     if (isset($shops_id)) {
                         foreach ($shops_id as $shop_id) {
                             //	Add product attribute shop
                             Db::getInstance()->Execute('INSERT INTO ' . _DB_PREFIX_ . 'product_attribute_shop (id_product_attribute, id_shop, price, wholesale_price, weight, minimal_quantity, default_on, available_date) VALUES (' . $product_attribute_id . ', ' . (int) $shop_id['id_shop'] . ', ' . $price . ', ' . $wholesale_price . ', ' . $weight . ', ' . $combination['minimal_quantity'] . ', ' . $default . ', "0000-00-00")');
                             //	Add stock availability
                             $product_tmp = new Product($product_id);
                             Db::getInstance()->Execute('INSERT INTO ' . _DB_PREFIX_ . 'stock_available (id_product, id_product_attribute, id_shop, id_shop_group, quantity, out_of_stock) VALUES (' . $product_id . ', ' . $product_attribute_id . ', ' . (int) $shop_id['id_shop'] . ', 0, 1, ' . $product_tmp->out_of_stock . ')');
                             //	Update stock for base product
                             Db::getInstance()->Execute('UPDATE ' . _DB_PREFIX_ . 'stock_available SET quantity = quantity + 1 WHERE id_product = ' . $product_id . ' AND id_product_attribute = 0 AND id_shop = ' . (int) $shop_id['id_shop']);
                         }
                     }
                 }
             }
             //	Unset the default combination if needed
             if ($default == 1) {
                 Db::getInstance()->Execute('UPDATE ' . _DB_PREFIX_ . 'product_attribute SET default_on = 0 WHERE id_product = ' . $product_id . ' AND id_product_attribute = ' . $combination['id_product_attribute']);
                 if ((double) substr(_PS_VERSION_, 0, 3) >= 1.5) {
                     Db::getInstance()->Execute('UPDATE ' . _DB_PREFIX_ . 'product_attribute_shop SET default_on = 0 WHERE id_product_attribute = ' . $combination['id_product_attribute']);
                 }
             }
         }
     }
 }