Форум русской поддержки Joomla!® CMS
29.05.2017, 13:40:04 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

JoomShopping 4.16.1 - проблемы с атрибутами

 (Прочитано 169 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Modis
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 74


« : 12.05.2017, 18:22:48 »

Прилетело тут недавно обновление ЖШ и у меня все перестало работать  Angry
Но по порядку - при покупке на сайте товара генерируется ключ активации, который пишется в письме. Также к письму прикладывается файл с этими ключами. Все это организованно в двух файлах:
1. Генерация ключей в файле /components/com_jshopping/tables/order.php:
Код
function getAllItems(){
   if (!isset($this->items)){
       $jshopConfig = JSFactory::getConfig();
       $query = "SELECT OI.* FROM `#__jshopping_order_item` as OI WHERE OI.order_id=".(int)$this->order_id;
       $this->_db->setQuery($query);
       $this->items = $this->_db->loadObjectList();
       foreach($this->items as $k=>$v){
           $this->items[$k]->_qty_unit = '';
           $this->items[$k]->delivery_time = '';
 
$depend_attr = unserialize($this->items[$k]->attributes);
 
           foreach ($attributes as $key => $val) {
               if (array_key_exists($val->attr_id, $depend_attr) && in_array($val->value_id, $depend_attr)) {
                   $this->items[$k]->attributes_values[$val->attr_id] = $val->{'name_ru-RU'};
               }
           }
           $key = unserialize($this->items[$k]->freeattributes);
           $key = $key[1];
 
if($this->items[$k]->attributes_values[3] != ''){
$this->items[$k]->product_hash = md5(
$this->items[$k]->attributes_values[3] .
$key .
$this->items[$k]->attributes_values[2]
);
}else {
$this->items[$k]->product_hash = md5(
$this->items[$k]->attributes_values[1] .
$key .
$this->items[$k]->attributes_values[2]
);
}
       }
 
       if ($jshopConfig->display_delivery_time_for_product_in_order_mail){
           $deliverytimes = JSFactory::getAllDeliveryTime();
           foreach($this->items as $k=>$v){
               if (isset($deliverytimes[$v->delivery_times_id])) {
                   $this->items[$k]->delivery_time = $deliverytimes[$v->delivery_times_id];
               }
           }
       }
   }
return $this->items;
}
2. Приложение файла к письму в фале /components/com_jshopping/models/ordermail.php:
Код
public function sendMail($type, $recipient, $message, $vendor = null){
$app = JFactory::getApplication();
$jshopConfig = JSFactory::getConfig();
$dispatcher = JDispatcher::getInstance();
 
$mailfrom = $app->getCfg('mailfrom');
$fromname = $app->getCfg('fromname');
$pdfsend = $this->getPdfSend();
$manuallysend = $this->getManuallysend();
$subject = $this->getSubjectMail($type, $this->order);
$pdfsendtype = $this->getPdfSendType($type);
 
$mailer = JFactory::getMailer();
$mailer->setSender(array($mailfrom, $fromname));
$mailer->addRecipient($recipient);
$mailer->setSubject($subject);
$mailer->setBody($message);
/* for attach file*/
$user = JFactory::getUser($this->order->user_id);
$file = tempnam(sys_get_temp_dir(), '');
$doc = new DOMDocument('1.0', 'utf-8');
$doc->formatOutput = true;
$root = $doc->createElement('ActiveKeys');
$root->setAttribute('UserLogin', $user->username);
foreach ($this->order->products as $prod) {
$el = $doc->createElement('key');
$el->setAttribute('Name', $prod->attributes_values[2]);
$el->setAttribute('AvailProductExternalVersion', $prod->attributes_values[1]);
$el->setAttribute('ActiveKey', $prod->product_hash);
$root->appendChild($el);
}
$doc->appendChild($root);
$xmlData = $doc->saveXML();
file_put_contents($file, $xmlData);
if ($this->order->order_status == 6) {
error_reporting(E_ALL);
$mailer->addAttachment($file, "{$user->username}_ModPlus ActiveKeys.xml");
}
/*end of attach file*/
if ($pdfsendtype){
$mailer->addAttachment($jshopConfig->pdf_orders_path."/".$this->order->pdf_file);
}
$mailer->isHTML(true);
$dispatcher->trigger($this->getSendMailTriggerType($type),
array(&$mailer, &$this->order, &$manuallysend, &$pdfsend, &$vendor, &$this->vendors_send_message, &$this->vendor_send_order));
return $mailer->Send();
}
После обновления данные коды неверно генерируют ключ. А судя по тому, что в письме файл выглядит так:
Код
<?xml version="1.0" encoding="utf-8"?>
<ActiveKeys UserLogin="Modis">
 <key Name="" AvailProductExternalVersion="" ActiveKey="293c3f5a41c6640b7543ab6928c034c3"/>
</ActiveKeys>
я прихожу к выводу, что не работает получение значений атрибутов у товара:
Код
foreach ($this->order->products as $prod) {
$el = $doc->createElement('key');
$el->setAttribute('Name', $prod->attributes_values[2]);
$el->setAttribute('AvailProductExternalVersion', $prod->attributes_values[1]);
$el->setAttribute('ActiveKey', $prod->product_hash);
$root->appendChild($el);
Что поменялось? Куда копать и что искать? Как получить значения атрибутов?
Записан
Modis
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 74


« Ответ #1 : 13.05.2017, 11:46:14 »

Ну может кто-нибудь посоветует хоть что попробовать? Или может - где поискать?
Записан
dmitry_stas
Профи
********

Репутация: +912/-6
Online Online

Сообщений: 9372



« Ответ #2 : 13.05.2017, 11:50:09 »

не знаю насколько это соответствует вашим ожиданиям совета, но я бы посоветовал сделать нормально раз и навсегда - написать плагин под вашу задачу, и не задумываться о том, что каждое обновление нужно что-то делать и вспоминать как же там все устроено...
Записан
Modis
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 74


« Ответ #3 : 13.05.2017, 11:53:27 »

Да умел бы я)) Нужно кого-то нанять, а это уже проблематично - и цену могут задрать и без поддержки оставить. Да и в море вариантов фрилансеров просто сложно найти толкового и не кидалу
А на форуме есть ребята, способные решить эту проблему и которые всегда на форуме (т.е. проверенные)?
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet