public function add() { $db = JFactory::getDBO(); $view = JFactory::getApplication()->input->get('view'); $languages = JeproshopLanguageModelLanguage::getLanguages(); $data = JRequest::get('post'); $input_data = $data['jform']; $result = true; foreach ($languages as $language) { if ($view == 'tag') { $name = $input_data['name_' . $language->lang_id]; } else { $name = $input_data['tag_' . $language->lang_id]; } $query = "INSERT INTO " . $db->quoteName('#__jeproshop_tag') . "(" . $db->quoteName('lang_id') . ", " . $db->quoteName('name') . ") VALUES ("; $query .= (int) $language->lang_id . ", " . $db->quote($name) . ")"; $db->setQuery($query); $result &= $db->query(); } if (!$result) { return false; } else { if (isset($input_data['products'])) { return $this->setProducts($input_data['products']); } } return true; }
public function renderEditForm($tpl = NULL) { $app = JFactory::getApplication(); if (!isset($this->context)) { $this->context = JeproshopContext::getContext(); } $this->helper = new JeproshopHelper(); $languages = JeproshopLanguageModelLanguage::getLanguages(); $this->assignRef('languages', $languages); $currencies = JeproshopCurrencyModelCurrency::getStaticCurrencies(); $this->assignRef('currencies', $currencies); $zones = JeproshopZoneModelZone::getZones(); $this->assignRef('zones', $zones); $addressLayout = JeproshopAddressFormatModelAddressFormat::getAddressCountryFormat($this->country->country_id); if ($value = $app->input->get('address_layout')) { $addressLayout = $value; } $default_layout = ''; $default_layout_tab = array(array('firstname', 'lastname'), array('company'), array('vat_number'), array('address1'), array('address2'), array('postcode', 'city'), array('Country:name'), array('phone'), array('phone_mobile')); foreach ($default_layout_tab as $line) { $default_layout .= implode(' ', $line) . "\r\n"; } $this->assignRef('address_layout', $addressLayout); $encodingAddressLayout = urlencode($addressLayout); $this->assignRef('encoding_address_layout', $encodingAddressLayout); $encodingDefaultLayout = urlencode($default_layout); $this->assignRef('encoding_default_layout', $encodingDefaultLayout); $displayValidFields = $this->displayValidFields(); $this->assignRef('display_valid_fields', $displayValidFields); $this->addToolBar(); $this->sideBar = JHtmlSidebar::render(); parent::display($tpl); }
public function multiLanguageTextAreaField($fieldName, $wrapper, $content = NULL, $width = '550', $height = '100') { $wrapper = $wrapper ? $wrapper : 'jform'; if (!isset($this->languages) || !$this->languages) { $this->languages = JeproshopLanguageModelLanguage::getLanguages(); } $script = '<div class="translatable" >'; foreach ($this->languages as $language) { $script .= '<div class="lang_' . $language->lang_id . ' input_lang"' . (!$language->is_default ? 'style="display:none" ' : '') . ' >'; $script .= '<textarea class="ckeditor" name="' . $wrapper . '[' . $fieldName . '_' . $language->lang_id . ']" id="jform_' . $fieldName . '_' . $language->lang_id . '" >'; $script .= ($content ? $content[$language->lang_id] : '') . '</textarea>'; $script .= '</div><div class="btn-group-action lang-select" ><div class="btn-group" >'; $script .= '<button type="button" class="btn btn-default dropdown_toggle" tabindex="-1" data-toggle="dropdown" > '; $script .= $language->iso_code . ' <i class="caret" ></i> </button><ul class="dropdown-menu" >'; foreach ($this->languages as $value) { $script .= '<li><a href="jeproLang.hideOtherLanguage(' . $value->lang_id . ');" tabindex="-1" >' . $value->name . '</a></li>'; } $script .= '</ul></div></div>'; //$script .= '</div></div>'; } $script .= '</div>'; return $script; }
public static function indexation($full = false, $product_id = false) { $db = JFactory::getDBO(); if ($product_id) { $full = false; } if ($full) { $db->execute('TRUNCATE ' . $db->quoteName('#__jeproshop_search_index')); $db->execute('TRUNCATE ' . $db->quoteName('#__jeproshop_search_word')); self::updateMultishopTable('Product', array('indexed' => 0)); } else { // Do it even if you already know the product id in order to be sure that it exists and it needs to be indexed $query = "SELECT product.product_id FROM " . $db->quoteName('#__jeproshop_product') . " AS product "; $query .= JeproshopShopModelShop::addSqlAssociation('product') . " WHERE product_shop.visibility IN (\"both\", \"search\") "; $query .= " AND product_shop." . $db->quoteName('published') . " = 1 AND "; $query .= $product_id ? "product.product_id = " . (int) $product_id : "product_shop.indexed = 0"; $db->setQuery($query); $products = $db->loadObjectList(); $ids = array(); if ($products) { foreach ($products as $product) { $ids[] = (int) $product->product_id; } } if (count($ids)) { $query = "DELETE FROM " . $db->quoteName('#__jeproshop_search_index') . " WHERE product_id IN (" . implode(',', $ids) . ")"; $db->setQuery($query); $db->query(); $data = " SET product." . $db->quoteName('indexed') . " = 0"; $where = ' WHERE product.product_id IN (' . implode(',', $ids) . ')'; JeproshopProductModelProduct::updateMultishopTable($data, $where, '', true); } } // Every fields are weighted according to the configuration in the backend $weight_array = array('product_name' => JeproshopSettingModelSetting::getValue('search_weight_product_name'), 'reference' => JeproshopSettingModelSetting::getValue('search_weight_reference'), 'product_attribute_reference' => JeproshopSettingModelSetting::getValue('search_weight_reference'), 'ean13' => JeproshopSettingModelSetting::getValue('search_weight_reference'), 'upc' => JeproshopSettingModelSetting::getValue('search_weight_reference'), 'short_description' => JeproshopSettingModelSetting::getValue('search_weight_short_description'), 'description' => JeproshopSettingModelSetting::getValue('search_weight_description'), 'category_name' => JeproshopSettingModelSetting::getValue('search_weight_category_name'), 'manufacture_name' => JeproshopSettingModelSetting::getValue('search_weight_manufacturer_name'), 'tag' => JeproshopSettingModelSetting::getValue('search_weight_tag'), 'attributes' => JeproshopSettingModelSetting::getValue('search_weight_attribute'), 'features' => JeproshopSettingModelSetting::getValue('search_weight_feature')); // Those are kind of global variables required to save the processed data in the database every X occurrences, in order to avoid overloading MySQL $count_words = 0; $query_array3 = array(); // Every indexed words are cached into a PHP array $query = "SELECT word_id, word, lang_id, shop_id FROM " . $db->quoteName('#__jeproshop_search_word'); $db->setQuery($query); $word_ids = $db->loadObjectList(); $word_ids_by_word = array(); while ($word_id = $db->nextRow($word_ids)) { if (!isset($word_ids_by_word[$word_id->shop_id][$word_id->lang_id])) { $word_ids_by_word[$word_id['id_shop']][$word_id['id_lang']] = array(); } $word_ids_by_word[$word_id->shop_id][$word_id->lang_id]['_' . $word_id->word] = (int) $word_id->word_id; } // Retrieve the number of languages $total_languages = count(JeproshopLanguageModelLanguage::getLanguages(false)); // Products are processed 50 by 50 in order to avoid overloading MySQL while (($products = JeproshopSearch::getProductsToIndex($total_languages, $product_id, 50, $weight_array)) && count($products) > 0) { $products_array = array(); // Now each non-indexed product is processed one by one, langage by langage foreach ($products as $product) { if ((int) $weight_array['tag']) { $product->tags = JeproshopSearch::getTags($db, (int) $product->product_id, (int) $product->lang_id); } if ((int) $weight_array['attributes']) { $product->attributes = JeproshopSearch::getAttributes($db, (int) $product->product_id, (int) $product->lang_id); } if ((int) $weight_array['features']) { $product->features = JeproshopSearch::getFeatures($db, (int) $product->product_id, (int) $product->lang_id); } // Data must be cleaned of html, bad characters, spaces and anything, then if the resulting words are long enough, they're added to the array $product_array = array(); foreach ($product as $key => $value) { if (strncmp($key, 'id_', 3) && isset($weight_array[$key])) { $words = explode(' ', JeproshopSearch::sanitize($value, (int) $product->lang_id, true, JeproshopContext::getContext()->language->iso_code)); foreach ($words as $word) { if (!empty($word)) { $word = substr($word, 0, PS_SEARCH_MAX_WORD_LENGTH); // Remove accents $word = JeproshopValidator::replaceAccentedChars($word); if (!isset($product_array[$word])) { $product_array[$word] = 0; } $product_array[$word] += $weight_array[$key]; } } } } // If we find words that need to be indexed, they're added to the word table in the database if (count($product_array)) { $query_array = $query_array2 = array(); foreach ($product_array as $word => $weight) { if ($weight && !isset($word_ids_by_word['_' . $word])) { $query_array[$word] = '(' . (int) $product->lang_id . ', ' . (int) $product->shop_id . ', ' . $db->quote($word) . ')'; $query_array2[] = $db->quote($word); $word_ids_by_word[$product->shop_id][$product->lang_id]['_' . $word] = 0; } } if ($query_array2) { $query = "SELECT DISTINCT word FROM " . $db->quoteName('#__jeproshop_search_word') . " WHERE word IN ("; $query .= implode(',', $query_array2) . ") AND lang_id = " . (int) $product->lang_id . " AND shop_id = " . (int) $product->shop_id; $db->setQuery($query); $existing_words = $db->loadObjectList(); foreach ($existing_words as $data) { unset($query_array[JeproshopValidator::replaceAccentedChars($data->word)]); } } if (count($query_array)) { // The words are inserted... $query = "INSERT IGNORE INTO " . $db->quoteName('#__jeproshop_search_word') . " (lang_id, shop_id, word) VALUES " . implode(',', $query_array); $db->setQuery($query); $db->query(); } if (count($query_array2)) { // ...then their IDs are retrieved and added to the cache $query = "SELECT search_word.word_id, search_word.word FROM " . $db->quoteName('#__jeproshop_search_word') . " AS search_word "; $query .= " WHERE search_word.word IN (" . implode(',', $query_array2) . ") AND search_word.lang_id = " . (int) $product->lang_id; $query .= " AND search_word.shop_id = " . (int) $product->shop_id . " LIMIT " . count($query_array2); $db->setQuery($query); $added_words = $db->loadObjectList(); // replace accents from the retrieved words so that words without accents or with differents accents can still be linked foreach ($added_words as $word_id) { $word_ids_by_word[$product->shop_id][$product->lang_id]['_' . JeproshopValidator::replaceAccentedChars($word_id->word)] = (int) $word_id->word_id; } } } foreach ($product_array as $word => $weight) { if (!$weight) { continue; } if (!isset($word_ids_by_word[$product->shop_id][$product->lang_id]['_' . $word])) { continue; } if (!$word_ids_by_word[$product->shop_id][$product->lang_id]['_' . $word]) { continue; } $query_array3[] = '(' . (int) $product->product_id . ',' . (int) $word_ids_by_word[$product->shop_id][$product->lang_id]['_' . $word] . ',' . (int) $weight . ')'; // Force save every 200 words in order to avoid overloading MySQL if (++$count_words % 200 == 0) { JeproshopSearch::saveIndex($query_array3); } } if (!in_array($product->product_id, $products_array)) { $products_array[] = (int) $product->product_id; } } JeproshopSearch::setProductsAsIndexed($products_array); // One last save is done at the end in order to save what's left JeproshopSearch::saveIndex($query_array3); } return true; }
public function updateCategory() { $db = JFactory::getDBO(); $app = JFactory::getApplication(); $input = JRequest::get('post'); $category_data = $input['jform']; $languages = JeproshopLanguageModelLanguage::getLanguages(); $context = JeproshopContext::getContext(); if (!$context->controller->has_errors) { $category_id = (int) $app->input->get('category_id'); /** update category */ if (isset($category_id) && !empty($category_id)) { //$category = new JeproshopCategoryModelCategory($category_id); if (JeproshopTools::isLoadedObject($this, 'category_id')) { if ($this->category_id == $this->parent_id) { $context->controller->has_errors = true; JError::_(500, JText::_('COM_JEPROSHOP_A_CATEGORY_CANNOT_BE_ITS_OWN_PARENT_LABEL')); } if ($this->is_root_category) { $this->parent_id = JeproshopSettingModelSetting::getValue('root_category'); } // Update group selection $this->updateGroup($this->groupBox); $this->depth_level = $this->calculateDepthLevel(); // If the parent category was changed, we don't want to have 2 categories with the same position if ($this->getDuplicatedPosition()) { if ($category_data['check_box_shop_associated_category']) { foreach ($category_data['check_box_shop_associated_category'] as $associated_category_id => $row) { foreach ($row as $shop_id => $value) { $this->addPosition(JeproshopCategoryModelCategory::getLastPosition((int) $this->parent_id, (int) $shop_id), (int) $shop_id); } } } else { foreach (JeproshopShopModelShop::getShops(true) as $shop) { $this->addPosition(max(1, JeproshopCategoryModelCategory::getLastPosition((int) $this->parent_id, $shop->shop_id)), $shop->shop_id); } } } $this->cleanPositions((int) $this->parent_id); $this->clearCache(); $this->date_upd = date('Y-m-d H:i:s'); $shop_list_ids = JeproshopShopModelShop::getContextListShopIds(); if (count($this->shop_list_ids) > 0) { $shop_list_ids = $this->shop_list_ids; } if (JeproshopShopModelShop::checkDefaultShopId('category') && !$this->default_shop_id) { $this->default_shop_id = min($shop_list_ids); } $result = true; $query = "UPDATE " . $db->quoteName('#__jeproshop_category') . " SET " . $db->quoteName('n_left') . " = " . (int) $this->n_left . ", "; $query .= $db->quoteName('n_right') . " = " . (int) $this->n_right . ", " . $db->quoteName('depth_level') . " = " . (int) $this->depth_level; $query .= ", " . $db->quoteName('published') . " = " . (int) $category_data['published'] . ", " . $db->quoteName('default_shop_id') . " = " . (int) $this->default_shop_id; $query .= ", " . $db->quoteName('is_root_category') . " = " . (int) $category_data['is_root_category'] . ", " . $db->quoteName('position') . " = "; $query .= (int) $this->position . ", " . $db->quoteName('date_upd') . " = " . $db->quote($this->date_upd) . " WHERE " . $db->quoteName('category_id'); $query .= " = " . (int) $this->category_id; $db->setQuery($query); $result &= $db->query(); foreach ($shop_list_ids as $shop_id) { $where = " WHERE " . $db->quoteName('category_id') . " = " . (int) $this->category_id . " AND " . $db->quoteName('shop_id') . " = " . (int) $shop_id; $select = "SELECT " . $db->quoteName('category_id') . " FROM " . $db->quoteName('#__jeproshop_category_shop') . $where; $db->setQuery($select); $shop_exist = $db->loadObject()->category_id > 0; if ($shop_exist) { $query = "UPDATE " . $db->quoteName('#__jeproshop_category_shop') . " SET " . $db->quoteName('position') . " = " . (int) $this->position . $where; $db->setQuery($query); $result &= $db->query(); } elseif (JeproshopShopModelShop::getShopContext() == JeproshopShopModelShop::CONTEXT_SHOP) { $query = "INSERT INTO " . $db->quoteName('#__jeproshop_category_shop') . "(" . $db->quoteName('category_id') . ", " . $db->quoteName('shop_id') . ", " . $db->quoteName('position'); $query .= ") VALUES (" . (int) $this->category_id . ", " . (int) $shop_id . ", " . (int) $this->position . ")"; $db->setQuery($query); $result &= $db->query(); } foreach ($languages as $language) { $where = " WHERE " . $db->quoteName('category_id') . " = " . (int) $this->category_id . " AND " . $db->quoteName('shop_id'); $where .= " = " . (int) $shop_id . " AND " . $db->quoteName('lang_id') . " = " . (int) $language->lang_id; $select = "SELECT COUNT(*) FROM " . $db->quoteNAme('#__jeproshop_category_lang') . $where; $db->setQuery($select); $lang_exist = $db->loadResult(); if ($lang_exist) { $query = "UPDATE " . $db->quoteName('#__jeproshop_category_lang') . " SET " . $db->quoteName('name') . " = " . $db->quote($category_data['name_' . $language->lang_id]) . ", "; $query .= $db->quoteName('description') . " = " . $db->quote($category_data['description_' . $language->lang_id]) . ", " . $db->quoteName('link_rewrite') . " = "; $query .= $db->quote($category_data['link_rewrite_' . $language->lang_id]) . ", " . $db->quoteName('meta_title') . " = " . $db->quote($category_data['meta_title_' . $language->lang_id]); $query .= ", " . $db->quoteName('meta_keywords') . " = " . $db->quote($category_data['meta_keywords_' . $language->lang_id]) . ", " . $db->quoteName('meta_description'); $query .= " = " . $db->quote($category_data['meta_description_' . $language->lang_id]) . $where; } else { $query = "INSERT INTO " . $db->quoteName('#__jeproshop_category_lang') . " (" . $db->quoteName('name') . ", " . $db->quoteName('description') . ", " . $db->quoteName('link_rewrite'); $query .= ", " . $db->quoteName('meta_title') . ", " . $db->quoteName('meta_keywords') . ", " . $db->quoteName('meta_description') . ") VALUES (" . $db->quote($category_data['name_' . $language->lang_id]); $query .= ", " . $db->quote($category_data['description_' . $language->lang_id]) . ", " . $db->quote($category_data['link_rewrite_' . $language->lang_id]) . ", "; $query .= $db->quote($category_data['meta_title_' . $language->lang_id]) . ", " . $db->quote($category_data['meta_keywords_' . $language->lang_id]) . ", "; $query .= $db->quote($category_data['meta_description_' . $language->lang_id]) . ") " . $where; } $db->setQuery($query); $result &= $db->query(); } } if (!isset($this->doNotRegenerateNTree) || !$this->doNotRegenerateNTree) { JeproshopCategoryModelCategory::regenerateEntireNestedtree(); $this->recalculateLevelDepth($this->category_id); } } $message = ''; $link = 'index.php?option=com_jeproshop&view=category&category_id=' . (int) $this->category_id . '&task=edit' . JeproshopTools::getCategoryToken(); } else { $message = ''; $link = 'index.php?option=com_jeproshop&view=category&category_id=' . (int) $this->category_id . '&task=edit' . JeproshopTools::getCategoryToken(); } $app->redirect($link, $message); } }
public function renderAddForm($tpl = null) { //print_r(JeproshopCustomerModelCustomer::searchByName('je')); $context = JeproshopContext::getContext(); if ($context->shop->getShopContext() != JeproshopShopModelShop::CONTEXT_SHOP && JeproshopShopModelShop::isFeaturePublished()) { $context->controller->has_errors = true; $this->l('You have to select a shop before creating new orders.'); } $app = JFactory::getApplication(); $cart_id = (int) $app->input->get('cart_id'); $cart = new JeproshopCartModelCart((int) $cart_id); if ($cart_id && !JeproshopTools::isLoadedObject($cart, 'cart_id')) { $context->controller->has_errors = true; $this->l('This cart does not exists'); } if ($cart_id && JeproshopTools::isLoadedObject($cart, 'cart_id') && !$cart->customer_id) { $context->controller->has_errors = true; $this->l('The cart must have a customer'); } if ($context->controller->has_errors) { return false; } /*parent::renderForm(); unset($this->toolbar_btn['save']); $this->addJqueryPlugin(array('autocomplete', 'fancybox', 'typewatch')); */ $defaults_order_statues = array('cheque' => (int) JeproshopSettingModelSetting::getValue('order_status_cheque'), 'bank_wire' => (int) JeproshopSettingModelSetting::getValue('order_status_bank_wire'), 'cash_on_delivery' => (int) JeproshopSettingModelSetting::getValue('order_status_preparation'), 'other' => (int) JeproshopSettingModelSetting::getValue('order_status_payment')); $payment_modules = array(); /* foreach (PaymentModule::getInstalledPaymentModules() as $p_module) $payment_modules[] = Module::getInstanceById((int)$p_module['id_module']); */ $recyclable_pack = (int) JeproshopSettingModelSetting::getValue('offer_recycled_wrapping'); $this->assignRef('recyclable_pack', $recyclable_pack); $gift_wrapping = (int) JeproshopSettingModelSetting::getValue('offer_gift_wrapping'); $this->assignRef('gift_wrapping', $gift_wrapping); $this->assignRef('cart', $cart); $this->assignRef('cart_id', $cart_id); $currencies = JeproshopCurrencyModelCurrency::getCurrenciesByShopId(JeproshopContext::getContext()->shop->shop_id); $this->assignRef('currencies', $currencies); $languages = JeproshopLanguageModelLanguage::getLanguages(true, JeproshopContext::getContext()->shop->shop_id); $this->assignRef('languages', $languages); $this->assignRef('payment_modules', $payment_modules); $order_statues = JeproshopOrderStatusModelOrderStatus::getOrderStatus((int) JeproshopContext::getContext()->language->lang_id); $this->assignRef('order_statues', $order_statues); $this->assignRef('defaults_order_statues', $defaults_order_statues); /* 'show_toolbar' => $this->show_toolbar, 'toolbar_btn' => $this->toolbar_btn, 'toolbar_scroll' => $this->toolbar_scroll, 'title' => array($this->l('Orders'), $this->l('Create order')) ));* / $this->content .= $this->createTemplate('form.tpl')->fetch(); */ $this->addToolBar(); $this->sideBar = JHtmlSideBar::render(); parent::display($tpl); }
public function getLanguages() { $cookie = JeproshopContext::getContext()->cookie; $this->allow_employee_form_language = (int) JeproshopSettingModelSetting::getValue('allow_employee_form_lang'); if ($this->allow_employee_form_language && !$cookie->employee_form_lang) { $cookie->employee_form_lang = (int) JeproshopSettingModelSetting::getValue('default_lang'); } $lang_exists = false; $languages = JeproshopLanguageModelLanguage::getLanguages(false); foreach ($languages as $language) { if (isset($cookie->employee_form_language) && $cookie->employee_form_language == $language->lang_id) { $lang_exists = true; } } $this->default_form_language = $lang_exists ? (int) $cookie->employee_form_language : (int) JeproshopSettingModelSetting::getValue('default_lang'); return $languages; }
private function initImagesForm() { if ((bool) $this->product->product_id) { if ($this->product_exists_in_shop) { $shops = false; if (JeproshopShopModelShop::isFeaturePublished()) { $shops = JeproshopShopModelShop::getShops(); } if ($shops) { foreach ($shops as $key => $shop) { if (!$this->product->isAssociatedToShop($shop->shop_id)) { unset($shops[$key]); } } } $this->assignRef('shops', $shops); $db = JFactory::getDBO(); $app = JFactory::getApplication(); $query = "SELECT COUNT(product_id) FROM " . $db->quoteName('#__jeproshop_image'); $query .= " WHERE product_id = " . (int) $this->product->product_id; $db->setQuery($query); $count_images = $db->loadResult(); $images = JeproshopImageModelImage::getImages($this->context->language->lang_id, $this->product->product_id); foreach ($images as $k => $image) { $images[$k] = new JeproshopImageModelImage($image->image_id); } if ($this->context->shop->getShopContext() == JeproshopShopModelShop::CONTEXT_SHOP) { $current_shop_id = (int) $this->context->shop->shop_id; } else { $current_shop_id = 0; } $languages = JeproshopLanguageModelLanguage::getLanguages(true); $image_uploader = new JeproshopImageUploader('file'); $image_link = JRoute::_('index.php?option=com_jeproshop&view=product&ajax=1&product_id=' . (int) $this->product->product_id . '&task=add_product_image'); $image_uploader->setMultiple(!(JeproshopTools::getUserBrowser() == 'Apple Safari' && JeproshopTools::getUserPlatform() == 'Windows'))->setUseAjax(true)->setUrl($image_link); $this->assignRef('countImages', $count_images); /*$this->assignRef( 'id_product' => (int)Tools::getValue('id_product'), 'id_category_default' => (int)$this->_category->id, */ $this->assignRef('images', $images); /*'iso_lang' => $languages[0]['iso_code'], 'token' => $this->token, 'table' => $this->table,*/ $image_size = (int) JeproshopSettingModelSetting::getValue('product_picture_max_size') / 1024 / 1024; $this->assignRef('max_image_size', $image_size); $virtualProductFilenameAttribute = (string) $app->input->get('virtual_product_filename_attribute'); $this->assignRef('up_filename', $virtualProductFilenameAttribute); //'currency' => $this->context->currency, $this->assignRef('current_shop_id', $current_shop_id); // 'languages' => $this->_languages, // 'default_language' => (int)Configuration::get('PS_LANG_DEFAULT'), $imageUploader = $image_uploader->render(); $this->assignRef('image_uploader', $imageUploader); //)); $type = JeproshopImageTypeModelImageType::getByNameNType('%', 'products', 'height'); if (isset($type->name)) { $imageType = $type->name; } else { $imageType = 'small_default'; } $this->assignRef('image_type', $imageType); } else { $this->displayWarning($this->l('You must save the product in this shop before adding images.')); } } }
public function updateProduct() { $db = JFactory::getDBO(); $app = JFactory::getApplication(); $languages = JeproshopLanguageModelLanguage::getLanguages(false); if (!isset($this->context)) { $this->context = JeproshopContext::getContext(); } $this->clearCache(); $this->date_upd = date('Y-m-d H:i:s'); if (JeproshopTools::isLoadedObject($this, 'product_id')) { $this->removeTaxFromEcotax(); $product_type_before = $this->getType(); $this->indexed = 0; $input = JRequest::get('post'); $product_data = isset($input['information']) ? $input['information'] : $input['jform']; $existingProduct = $this; if (JeproshopShopModelShop::isFeaturePublished() && JeproshopShopModelShop::getShopContext() != JeproshopShopModelShop::CONTEXT_SHOP) { $this->setFieldsToUpdate((array) $input['multishop_check']); } if ($this->context->shop->getShopContext() == JeproshopShopModelShop::CONTEXT_ALL && !$this->isAssociatedToShop()) { $isAssociatedToShop = false; $combinations = JeproshopProductModelProduct::getProductAttributesIds($this->product_id); if ($combinations) { foreach ($combinations as $combination_id) { $combination = new JeproshopCombinationModelCombination($combination_id); $default_combination = new JeproshopCombinationModelCombination($combination_id, null, $this->default_shop_id); $combination->product_id = (int) $default_combination->product_id; $combination->location = $db->quote($default_combination->location); $combination->ean13 = $db->quote($default_combination->ean13); $combination->upc = $db->quote($default_combination->upc); $combination->quantity = (int) $default_combination->quantity; $combination->reference = $db->quote($default_combination->reference); $combination->supplier_reference = $db->quote($default_combination->supplier_reference); $combination->wholesale_price = (double) $default_combination->wholesale_price; $combination->price = (double) $default_combination->price; $combination->ecotax = (double) $default_combination->ecotax; $combination->weight = $default_combination->weight; $combination->unit_price_impact = (double) $default_combination->unit_price_impact; $combination->default_on = (int) $default_combination->default_on; $combination->available_date = $default_combination->available_date ? $db->quote($default_combination->available_date) : '0000-00-00'; $combination->save(); } } } else { $isAssociatedToShop = true; } $shop_list_ids = JeproshopShopModelShop::getCompleteListOfShopsId(); if (count($this->shop_list_id) > 0) { $shop_list_ids = $this->shop_list_id; } if (JeproshopShopModelShop::checkDefaultShopId('product') && !$this->default_shop_id) { $this->default_shop_id = min($shop_list_ids); } /*$manufacturer_id = $product_data['manufacturer_id']; $default_category_id = 1; $default_shop_id = JeproshopSettingModelSetting::getValue('default_shop'); */ //$tax_rules_group_id = $product_data['tax_rules_group_id']; $show_price = isset($input_data['show_price']) ? 1 : 0; $on_sale = isset($product_data['on_sale']) ? 1 : 0; $online_only = isset($product_data['online_only']) ? 1 : 0; $available_for_order = isset($product_data['available_for_order']) ? 1 : 0; $ean_13 = JeproshopTools::isEan13($product_data['ean13']) ? $product_data['ean13'] : ''; $upc = JeproshopTools::isUpc($product_data['upc']) ? $product_data['upc'] : ''; $reference = JeproshopTools::isReference($product_data['reference']) ? $product_data['reference'] : ''; //$product_type = $product_data['product_type']; $published = $product_data['published']; $redirect_type = $product_data['redirect_type']; /*$ecotax = $product_data['ecotax']; $unity = $product_data['unity']; $unit_price = (float)$product_data['unit_price']; $wholesale_price = (float)$product_data['wholesale_price']; */ $visibility = $product_data['visibility']; $condition = $product_data['condition']; $result = true; /** data base updating **/ $query = "UPDATE " . $db->quoteName('#__jeproshop_product') . " SET " . $db->quoteName('reference') . " = " . $db->quote($reference) . ", " . $db->quoteName('on_sale') . " = " . (int) $on_sale . ", "; $query .= $db->quoteName('online_only') . " = " . (int) $online_only . ", " . $db->quoteName('ean13') . " = " . $db->quote($ean_13) . ", " . $db->quoteName('upc') . " = " . $db->quote($upc) . ", "; $query .= $db->quoteName('published') . " = " . (int) $published . ", " . $db->quoteName('redirect_type') . "= " . $db->quote($redirect_type) . ", " . $db->quoteName('visibility') . " = " . $db->quote($visibility) . ", "; $query .= $db->quoteName('product_redirected_id') . " = " . $db->quote($product_data['product_redirected_id']) . ", " . $db->quoteName('available_for_order') . " = " . (int) $available_for_order . ", "; $query .= $db->quoteName('show_price') . " = " . (int) $show_price . ", " . $db->quoteName('condition') . " = " . $db->quote($condition) . ", " . $db->quoteName('date_upd') . " = " . $db->quote($this->date_upd); $query .= " WHERE " . $db->quoteName('product_id') . " = " . (int) $this->product_id; $db->setQuery($query); $result &= $db->query(); if ($result) { // Database insertion for multishop fields related to the object if (JeproshopShopModelShop::isTableAssociated('product')) { $default_category_id = 1; /* Shop fields */ foreach ($shop_list_ids as $shop_id) { $query = "UPDATE " . $db->quoteName('#__jeproshop_product_shop') . " SET " . $db->quoteName('default_category_id') . " = " . (int) $default_category_id; $query .= ", " . $db->quoteName('online_only') . " = " . (int) $online_only; $query .= ", " . $db->quoteName('redirect_type') . " = " . $db->quote($redirect_type) . ", " . $db->quoteName('product_redirected_id') . " = " . (int) $product_data['product_redirected_id']; $query .= ", " . $db->quoteName('available_for_order') . " = " . (int) $available_for_order . ", " . $db->quoteName('condition') . " = " . $db->quote($product_data['condition']); $query .= ", " . $db->quoteName('published') . " = " . (int) $product_data['published'] . ", " . $db->quoteName('show_price') . " = " . (int) $show_price; //$query .= ", " . $db->quoteName('additional_shipping_cost') . " = " . (float)$product_data['additional_shipping_cost']; $query .= ", " . $db->quoteName('visibility') . " = " . $db->quote($product_data['visibility']) . ", " . $db->quoteName('date_upd') . " = " . $db->quote($this->date_upd); $query .= " WHERE " . $db->quoteName('product_id') . " = " . $this->product_id . " AND " . $db->quoteName('shop_id') . " = " . $shop_id; $db->setQuery($query); $result &= $db->query(); if ($result) { /* Multilingual fields */ foreach ($languages as $language) { $query = "UPDATE " . $db->quoteName('#__jeproshop_product_lang') . " SET " . $db->quoteName('description') . " = "; $query .= $db->quote($product_data['description_' . $language->lang_id]) . ", " . $db->quoteName('short_description'); $query .= " = " . $db->quote($product_data['short_description_' . $language->lang_id]) . ", " . $db->quoteName('name'); $query .= " = " . $db->quote($product_data['name_' . $language->lang_id]) . " WHERE " . $db->quoteName('product_id') . " = "; $query .= (int) $this->product_id . " AND " . $db->quoteName('shop_id'); $query .= " = " . (int) $shop_id . " AND " . $db->quoteName('lang_id') . " = " . (int) $language->lang_id; $db->setQuery($query); $result &= $db->query(); } } } } } if ($result) { // If the product doesn't exist in the current shop but exists in another shop if (JeproshopShopModelShop::getShopContext() == JeproshopShopModelShop::CONTEXT_SHOP && $existingProduct->isAssociatedToShop($this->context->shop->shop_id)) { $outOfStock = JeproshopStockAvailableModelStockAvailable::outOfStock($existingProduct->product_id, $existingProduct->default_shop_id); $dependsOnStock = JeproshopStockAvailableModelStockAvailable::dependsOnStock($existingProduct->product_id, $existingProduct->default_shop_id); JeproshopStockAvailableModelStockAvailable::setProductOutOfStock((int) $this->product_id, $outOfStock, $this->context->shop->shop_id); JeproshopStockAvailableModelStockAvailable::setProductDependsOnStock((int) $this->product_id, $dependsOnStock, $this->context->shop->shop_id); } if (in_array($this->context->shop->getShopContext(), array(JeproshopShopModelShop::CONTEXT_SHOP, JeproshopShopModelShop::CONTEXT_ALL))) { $this->addCarriers(); $this->updateAccessories(); $this->processSuppliers(); $this->processFeatures(); $this->processProductAttribute(); $this->processProductAttribute(); $this->processPriceAddition(); $this->processSpecificPricePriorities(); $this->processCustomizationConfiguration(); $this->processAttachments(); $this->updatePackItems(); // Disallow advanced stock management if the product become a pack if ($product_type_before == JeproshopProductModelProduct::SIMPLE_PRODUCT && $this->getType() == JeproshopProductModelProduct::PACKAGE_PRODUCT) { JeproshopStockAvailableModelStockAvailable::setProductDependsOnStock($this->product_id, false); } $this->updateDownloadProduct(1); $this->updateTags(JeproshopLanguageModelLanguage::getLanguages(false)); if ($this->isProductFieldUpdated('category_box') && !$this->updateCategories($product_data['category_box'])) { JError::raiseError(500, JText::_('COM_JEPROSHOP_AN_ERROR_OCCURRED_WHILE_LINKING_THE_PRODUCT_TO_CATEGORIES_MESSAGE')); $this->context->controller->has_errors = true; } //TODO correct category update and check php $_POST limit to handle the form } $this->processWarehouses(); $category_link = $app->input->get('category_id') ? '&category_id=' . $app->input->get('category_id') : ''; if (!$this->context->controller->has_errors) { if (in_array($this->visibility, array('both', 'search')) && JeproshopSettingModelSetting::getValue('search_indexation')) { JeproshopSearch::indexation(false, $this->product_id); } //save and preview $message = JText::_('COM_JEPROSHOP_UPDATE_SUCCESSFULLY_MESSAGE'); if ($app->input->get('task') == 'save_preview') { $link = $this->getPreviewUrl(); } else { if ($app->input->get('task') == 'edit') { $link = JRoute::_('index.php?option=com_jeproshop&view=product&task=edit&product_id=' . $this->product_id . $category_link . JeproshopTools::getProductToken()); } else { $link = JRoute::_('index.php?option=com_jeproshop&view=product&' . $category_link); $message = JText::_('COM_JEPROSHOP_UPDATE_SUCCESSFULLY_MESSAGE'); } } $app->redirect($link, $message); } else { $app->input->set('task', 'edit'); $app->redirect('index.php?option=com_jeproshop&view=product&task=edit&product_id=' . $this->product_id . $category_link . JeproshopTools::getProductToken()); } } else { if (!$isAssociatedToShop && $combinations) { foreach ($combinations as $combination_id) { $combination = new JeproshopCombinationModelCombination((int) $combination_id); $combination->delete(); } JError::raiseError(500, JText::_('COM_JEPROSHOP_AN_ERROR_OCCURRED_WHILE_UPDATING_A_PRODUCT_MESSAGE')); } } $this->setGroupReduction(); if ($this->getType() == JeproshopProductModelProduct::VIRTUAL_PRODUCT && $this->published && !JeproshopSettingModelSetting::getValue('virtual_product_feature_active')) { JeproshopSettingModelSetting::updateValue('virtual_product_feature_active', '1'); } return true; } }
public function updateTax() { $db = JFactory::getDBO(); $this->clearCache(); $result = true; $languages = JeproshopLanguageModelLanguage::getLanguages(false); $input = JRequest::get('post'); $input_data = $input['jform']; $published = $input_data['published']; $deleted = $published ? 0 : 1; $query = "UPDATE " . $db->quoteName('#__jeproshop_tax') . " SET " . $db->quoteName('rate') . " = " . (double) $input_data['tax_rate'] . ", " . $db->quoteName('published') . " = " . (int) $published; $query .= ", " . $db->quoteName('deleted') . " = " . (int) $deleted . " WHERE " . $db->quoteName('tax_id') . " = " . (int) $this->tax_id; $db->setQuery($query); $result &= $db->query(); foreach ($languages as $language) { $where = $db->quoteName('tax_id') . " = " . (int) $this->tax_id . " AND " . $db->quoteName('lang_id') . " = " . (int) $language->lang_id; $query = "SELECT COUNT(*) FROM " . $db->quoteName('#__jeproshop_tax_lang') . " WHERE " . $where; $db->setQuery($query); if ($db->loadResult()) { $query = "UPDATE " . $db->quoteName('#__jeproshop_tax_lang') . " SET " . $db->quoteName('name') . " = " . $db->quote($input_data['name_' . $language->lang_id]) . " WHERE " . $where; $db->setQuery($query); $result &= $db->query(); } else { $query = "INSERT INTO " . $db->quoteName('#__jeproshop_tax_lang') . "(" . $db->quoteName('name') . ") VALUE (" . $db->quote($input_data['name_' . $language->lang_id]) . ")"; $db->setQuery($query); $result &= $db->query(); } } return $result; }