Всем привет. На сайте используется магазин. Продажа ключей к программам. Изначально было так:
Есть товар. У товара есть два атрибута: Имя функции и Версия AutoCAD. И есть один свободный атрибут: Регистрационный ключ.
При покупке должен сформироваться ответный ключ, из строки "ВерсияАвтокад+РегКлюч+ИмяФункции" используя md5. Лично я не силен в php. У меня вся эта реализация есть на C#, поэтому я нанимал фрилансера и он мне реализовал мою задачу. Я поискал по файлам магазина и нашел реализацию в файле /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 = '".$this->_db->escape($this->order_id)."'";
$this->_db->setQuery($query);
$this->items = $this->_db->loadObjectList();
$query = "SELECT * FROM `#__jshopping_attr_values`";
$this->_db->setQuery($query);
$attributes = $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];
$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];
}
}
}
}
Теперь у меня случились важные изменения на сайте и появился еще один атрибут - Версия Revit. Т.е. у каждого товара повторяются атрибуты Версия функции, Имя функции и Рег Ключ и на выбор один атрибут - либо Версия Автокада либо версия Ревита.
По логике я понимаю, что в случае товара для ревита генерация ответного ключа должна выглядеть так:
$this->items[$k]->product_hash = md5(
$this->items[$k]->attributes_values[3] .
$key .
$this->items[$k]->attributes_values[2]
);
Осталась одна проблема - сделать условный оператор if. Т.е. если attributes_values[1] == null (по типу C# пишу )) ), то использовать attributes_values[3]. К сожалению, в php я вообще не шарю, поэтому прошу помощи форумчан