User Tools

Site Tools


koding:hostcms:shop:minmaxpricegroup

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

koding:hostcms:shop:minmaxpricegroup [06.05.15 в 18:41]
Артем Куц создано
— (current)
Line 1: Line 1:
-<​code><?​php 
  
-defined('​HOSTCMS'​) || exit('​HostCMS:​ access denied.'​);​ 
- 
-/** 
-* 
-* Версия для HostCMS v.6x 
-* @author KAD 
-* http://​www.artemkuts.ru/​ 
-* artem.kuts@gmail.com 
-* 
-* Копирование и использование файлов модуля ​ 
-* в коммерческих целях ЗАПРЕЩЕНО 
-* 
-Core_Event::​attach('​Shop_Group_Model.onBeforeGetXml',​ array('​Kad_Shop_Group_Observers_Minmaxpriceob',​ '​onBeforeGetXml'​));​ 
-* 
-*/ 
-  
-class Kad_Shop_Group_Observers_Minmaxpriceob 
-{  
- 
- // Кэш 
- static public $aCache = NULL; 
-  
- /** 
- * The singleton instances. 
- * @var mixed 
- */ 
- static public $instance = NULL; 
-  
- public function __construct() 
- { 
- return self::​instance();​ 
- } 
-  
- static public function instance() 
- { 
- if (is_null(self::​$instance)) 
- { 
- self::​$instance = new self(); 
- } 
- 
- return self::​$instance;​  
- } 
- 
- // Добавляем информацию о минимальной и максимальной цене товара в группе 
- static public function onBeforeGetXml($object,​ $operation) 
- { 
- /*if (CURRENT_SITE != 2) 
- { 
- return; 
- }*/ 
-  
- if (!isset(self::​$aCache[$object->​id])) 
- { 
- // Получаем подгруппы 
- $aGroupsId = array(); 
- $currGroupId = $object->​id;​ 
- $aGroupsId[] = $currGroupId;​  
- $aoCurGroups = array(Core_Entity::​factory('​Shop_group',​ $currGroupId));​  
-  
- do{ 
- $aoParGroups = $aoCurGroups;​ 
- $aCurGroupsId = array();  
- $aoCurGroups = array(); 
-  
- foreach($aoParGroups as $oParGroup) 
- { 
- $aCurGroupsId[] = $oParGroup->​id;​ 
- $aGroupsId[] = $oParGroup->​id;​ 
- } 
-  
- $aGroups = Core_Entity::​factory('​Shop_group'​);​ 
- $aGroups->​queryBuilder() 
- ->​where('​parent_id',​ '​IN',​ $aCurGroupsId);​ 
- $aoCurGroups = $aGroups->​findAll();​ 
- }while(count($aoCurGroups) != 0); 
-  
- $oQB = Core_QueryBuilder::​select(array('​max(price)',​ '​max'​),​ array('​min(price)',​ '​min'​)) 
- ->​from('​shop_items'​) 
- ->​where('​shop_group_id',​ '​IN',​ $aGroupsId);​ 
- $aRes = $oQB->​execute()->​asAssoc()->​result();​ 
-  
- $min = $aRes[0]['​min'​];​ 
- $max = $aRes[0]['​max'​];​ 
-  
- self::​$aCache[$object->​id]['​min'​] = $min; 
- self::​$aCache[$object->​id]['​max'​] = $max; 
- } else 
- {  
- $min = self::​$aCache[$object->​id]['​min'​];​ 
- $max = self::​$aCache[$object->​id]['​max'​];​  
- } 
-  
- $object 
- ->​addEntity( 
- Core::​factory('​Core_Xml_Entity'​) 
- ->​name('​min_price'​) 
- ->​value($min) 
- ) 
- ->​addEntity( 
- Core::​factory('​Core_Xml_Entity'​) 
- ->​name('​max_price'​) 
- ->​value($max) 
- ); 
- } 
-}</​code>​ 
koding/hostcms/shop/minmaxpricegroup.1430926866.txt.gz · Last modified: 26.06.15 в 15:07 (external edit)