Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
BeaVe 06.12.2007 12:24 / 06.12.2007 13:29
Из таблицы products улетело поле thread_id. Вместо него добавилось parents_ids, а nesting же осталось, т.к. оно еще используется когда отбираются параметры (для определения тех, которые находятся на самом высоком уровне).@getProducts[hshParams][hParams] $hParams[^hash::create[$hshParams]] $result[^table::sql{ SELECT product_id, product_type_id, parent_id, nesting, parents_ids, price, currency_id FROM products ^if(def ^hParams.product_id.int(0)){ WHERE products.product_id = ^hParams.product_id.int(0) } }] #end @getProducts[] @getProductsFields[hshParams] $hParams[^hash::create[$hshParams]] $result[^table::sql{ SELECT product_field_id, product_id, parent_id, name, value ^if(def $hParams.SQL_SELECT){ , $hParams.SQL_SELECT } FROM products_fields ^if(def $hParams.SQL_FROM){ , $hParams.SQL_FROM } ^if(def $hParams.SQL_WHERE){ WHERE $hParams.SQL_WHERE } }] #end @getProductsFields[] @parseProduct_by_ID[intProductID][tProduct;tProductsFields] ^if(^intProductID.int(0)){ $tProduct[^self.getProducts[ $.product_id(^intProductID.int(0)) ]] ^if($tProduct){ $tProductsFields[^self.getProductsFields[ $.SQL_SELECT[nesting] $.SQL_FROM[products] $.SQL_WHERE[ products.product_id = products_fields.product_id AND products.product_id IN ($tProduct.parents_ids) ] ]] ^self.printProduct[$tProduct][ $.tag_body[ ^self.parseProductsFields[^tProductsFields.hash[parent_id];0] ] ] } }{ ^throw[...] } #end @parseProduct_by_ID[] @parseProductsFields[hshFields;intParentID][hFields;tFieldsNames;tFieldsByName;iMaxNesting;iOffset] ^if($hshFields.[$intParentID]){ # создаем hash с параметрами, отобранными по названию $hFields[:hshFields.[$intParentID].hash[name][$.distinct[tables]]] $tFieldsNames[^hFields._keys[name]] # делаем обход параметров для отбора более подходящих (на основе уровня наследования - nesting) ^tFieldsNames.menu{ $tFieldsByName[$hFields.[$tFieldsNames.name]] $iMaxNesting(0) $iOffset(0) ^tFieldsByName.menu{ ^if($tFieldsByName.nesting > $iMaxNesting){ $iMaxNesting($tFieldsByName.nesting) $iOffset(^tFieldsByName.offset[]) } } ^if($iMaxNesting){ ^tFieldsByName.offset[set]($iOffset) ^self.printProductField[$tFieldsByName.fields;^if($hshFields.[$tFieldsByName.product_id]){^parseProductsFields[$hshFields;$tFieldsByName.product_id]}] } } } #end @parseProductsFields[] @printProduct[altData;hshParams][hParams] $hParams[^hash::create[$hshParams]] $result[<product id="^altData.product_id.int(0)"> <price currency_id="^altData.currency_id.int(0)">$altData.price</price> $hParams.tag_body </product>] #end @printProduct[] @printProductField[altData;hshParams][hParams] $hParams[^hash::create[$hshParams]] $result[<$altData.name>$altData.value^if(def $hParams.tag_body){$hParams.tag_body}</$altData.name>] #end @printProductField[]P.S.
понятия не имею, на чем вы это пишите (в заголовке треда было 'OFF:')Можно просто "ты". Кстати, было уже про это...