Index: branches/unlabeled/unlabeled-1.6.2/core/units/visits/visits_tag_processor.php =================================================================== diff -u -r2465 -r3051 --- branches/unlabeled/unlabeled-1.6.2/core/units/visits/visits_tag_processor.php (.../visits_tag_processor.php) (revision 2465) +++ branches/unlabeled/unlabeled-1.6.2/core/units/visits/visits_tag_processor.php (.../visits_tag_processor.php) (revision 3051) @@ -22,83 +22,107 @@ } } - function GetTotalAffiliateVisits($params){ - $object_user = &$this->Application->recallObject('u'); - - $sql='SELECT COUNT(*) FROM '.TABLE_PREFIX.'Visits vis - LEFT JOIN '.TABLE_PREFIX.'Affiliates af ON (vis.AffiliateId = af.AffiliateId) - WHERE af.PortalUserId = '.$object_user->GetDBField('PortalUserId'); - return $this->Conn->GetOne($sql); - + function getDateLimitClause($field) + { + $search_filter = $this->Application->RecallVar( $this->getPrefixSpecial().'_search_filter'); + if($search_filter) + { + $search_filter = unserialize($search_filter); + return $search_filter[$field]['value']; + } + return ''; } - function AffiliateOrderInfo($params){ - $object_user = &$this->Application->recallObject('u'); + function AffiliateOrderInfo($params) + { + $list =& $this->GetList($params); - $sql='SELECT COUNT(ord.OrderId) as OrderCount, SUM(AffiliateCommission) as TotalCommission, SUM(SubTotal+ShippingCost+VAT-CouponDiscount) as TotalAmount - FROM '.TABLE_PREFIX.'Orders ord - LEFT JOIN '.TABLE_PREFIX.'Affiliates af ON (vis.AffiliateId = af.AffiliateId) - LEFT JOIN '.TABLE_PREFIX.'Visits vis ON (ord.VisitId = vis.VisitId) - WHERE af.PortalUserId = '.$object_user->GetDBField('PortalUserId').' - GROUP BY af.PortalUserId - '; + $date_limit = str_replace($list->TableName, 'vis', $this->getDateLimitClause('VisitDate') ); - $info = $this->Conn->GetRow($sql); + $affil_table = $this->Application->getUnitOption('affil', 'TableName'); + $affil_idfield = $this->Application->getUnitOption('affil', 'IDField'); + $sql = 'SELECT '.$affil_idfield.' FROM '.$affil_table.' WHERE PortalUserId = '.$this->Application->GetVar('u_id'); + $affiliate_id = $this->Conn->GetOne($sql); - $params_info = $this->prepareTagParams($params); - $params_info['name'] = $params_info['render_as']; - if (!$info['OrderCount']) $info['OrderCount'] = 0; - if (!$info['TotalAmount']) $info['TotalAmount'] = 0; - if (!$info['AffiliateCommission']) $info['AffiliateCommission'] = 0; + $sql = 'SELECT COUNT(ord.OrderId) AS OrderCount + FROM '.$list->TableName.' vis + LEFT JOIN '.TABLE_PREFIX.'Orders ord ON ord.VisitId = vis.VisitId + WHERE (vis.AffiliateId = '.$affiliate_id.') AND (ord.Status = '.ORDER_STATUS_PROCESSED.')'.($date_limit ? ' AND '.$date_limit : ''); + + $result = $this->Conn->GetRow($sql); - $params_info = array_merge_recursive2($params_info, $info); - $params_info['TotalVisits'] = $this->GetTotalAffiliateVisits($params); + $sql = 'SELECT COUNT(*) FROM '.$list->TableName.' vis + WHERE AffiliateId = '.$affiliate_id.($date_limit ? ' AND '.$date_limit : ''); - $this->Application->setUnitOption('ord', 'AutoLoad', false); - $order_object = &$this->Application->recallObject('ord.totals'); - $order_object->SetDBField('AffiliateCommission', $params_info['TotalCommission']); - $order_object->SetDBField('TotalAmount', $params_info['TotalAmount']); + $result['TotalVisitors'] = $this->Conn->GetOne($sql); + $result['OrderTotalAmount'] = $list->getTotal('OrderTotalAmount', 'SUM'); + $result['OrderAffiliateCommission'] = $list->getTotal('OrderAffiliateCommission', 'SUM'); - $fields_to_convert = array('AffiliateCommission', 'TotalAmount'); + $block_params = $this->prepareTagParams($params); + $block_params['name'] = $params['render_as']; + + $format_fields = Array('OrderTotalAmount', 'OrderAffiliateCommission'); - - if( $this->HasParam($params, 'currency') ) - { - $iso = $this->GetISO($params['currency']); - foreach($fields_to_convert as $key => $field){ + if( $this->HasParam($params, 'currency') ) + { $iso = $this->GetISO($params['currency']); - $original = $order_object->GetDBField($field); - $value = $this->ConvertCurrency($original, $iso); - $order_object->SetDBField($field, $value); - + foreach($format_fields as $format_field) + { + $value = sprintf($list->Fields[$format_field]['format'], $result[$format_field]); + $value = $this->ConvertCurrency($value, $iso); + $value = $this->AddCurrencySymbol($value, $iso); + $result[$format_field] = $value; + } } - $params_info['TotalCommission'] = $this->AddCurrencySymbol($order_object->GetField('AffiliateCommission'), $iso); - $params_info['TotalAmount'] = $this->AddCurrencySymbol($order_object->GetField('TotalAmount'), $iso); - } - + $block_params = array_merge_recursive2($block_params, $result); - - - return $this->Application->ParseBlock($params_info); - + return $this->Application->ParseBlock($block_params); } - function ListVisitors($params){ - + + /*function ShowTotals($params) + { + $list =& $this->GetList($params); + $block_params = $this->prepareTagParams($params); + $block_params = array_merge_recursive2($block_params, $list->Totals); + $block_params['name'] = $this->SelectParam($params, 'render_as,block'); + return $this->Application->ParseBlock($block_params); + }*/ + + function ListVisitors($params) + { $o = ''; $params['render_as'] = $params['item_render_as']; $o_visitors = $this->PrintList2($params); - if ($o_visitors){ + if($o_visitors) + { + $header = ''; + $footer = ''; - $visitors_params = array('name' => $params['header_render_as']); - $o = $this->Application->ParseBlock($visitors_params); - $o .= $o_visitors; + $block_params = $this->prepareTagParams($params); - }else { + $header_block = getArrayValue($params, 'header_render_as'); + if($header_block) + { + $block_params['name'] = $header_block; + $header = $this->Application->ParseBlock($block_params); + } + + $footer_block = getArrayValue($params, 'footer_render_as'); + if($footer_block) + { + $block_params['name'] = $footer_block; + $footer = $this->Application->ParseBlock($block_params); + } + + $o = $header.$o_visitors.$footer; + } + else + { $visitors_params = array('name' => $params['empty_myvisitors_render_as']); $o = $this->Application->ParseBlock($visitors_params); } @@ -114,6 +138,35 @@ return $main_processor->T($params); } */ + + /** + * Enter description here... + * + * @param unknown_type $params + * @return kDBList + */ + + function &GetList($params) + { + $list_name = $this->SelectParam($params, 'list_name,name'); + if (!$list_name) { + $list_name = $this->Application->Parser->GetParam('list_name'); + } + $types = $this->SelectParam($params, 'types'); + $special=''; + if ($types=='myvisitororders' || $types=='myvisitors'){ + $special = 'incommerce'; + $names_mapping = $this->Application->GetVar('NamesToSpecialMapping'); + $names_mapping[$list_name] = $special; + $this->Application->SetVar('NamesToSpecialMapping', $names_mapping); + + } + + + return parent::GetList($params); + } + } + ?> \ No newline at end of file Index: branches/unlabeled/unlabeled-1.8.2/core/units/visits/visits_event_handler.php =================================================================== diff -u -r2440 -r3051 --- branches/unlabeled/unlabeled-1.8.2/core/units/visits/visits_event_handler.php (.../visits_event_handler.php) (revision 2440) +++ branches/unlabeled/unlabeled-1.8.2/core/units/visits/visits_event_handler.php (.../visits_event_handler.php) (revision 3051) @@ -20,20 +20,8 @@ $this->Application->SetVar('visits_id', $object->GetID() ); } } - /** - * Search - * - * @param kEvent $event - */ - function OnSearch(&$event){ - parent::OnSearch($event); - - - } - - /** * Apply any custom changes to list's sql query * * @param kEvent $event @@ -45,7 +33,8 @@ $object =& $event->getObject(); $types = $event->getEventParam('types'); - if ($types=='myvisitors'){ + if($types == 'myvisitors') + { $user_id = $this->Application->GetVar('u_id'); $object->addFilter('myitems_user1','au.PortalUserId = '.$user_id); @@ -55,15 +44,14 @@ } - if ($types=='myvisitororders'){ - + if($types == 'myvisitororders' && $event->Special == 'incommerce') + { $user_id = $this->Application->GetVar('u_id'); $object->addFilter('myitems_orders','ord.OrderId IS NOT NULL'); $object->addFilter('myitems_user1','au.PortalUserId = '.$user_id); $object->addFilter('myitems_user2','au.PortalUserId >0'); - + $object->addFilter('myitems_orders_processed','ord.Status = 4'); } - } /** @@ -78,12 +66,15 @@ function prepareObject(&$object, &$event) { $types = $event->getEventParam('types'); - if(method_exists($object, 'AddGroupByField')){ - if ($types=='myvisitors' || !$types){ - $object->addCalculatedField('OrderTotalAmountSum', 'SUM(ord.SubTotal+ord.ShippingCost+ord.VAT-ord.CouponDiscount)'); - $object->addCalculatedField('OrderAffiliateCommissionSum', 'SUM(ord.AffiliateCommission)'); - $object->addCalculatedField('OrderCountByVisit', 'COUNT(OrderId)'); + if(method_exists($object, 'AddGroupByField')) + { + if( ($types == 'myvisitors' || !$types) && $object->Special == 'incommerce') + { + $object->addCalculatedField('OrderTotalAmountSum', 'SUM(IF(ord.Status = 4, ord.SubTotal+ord.ShippingCost+ord.VAT, 0))'); + $object->addCalculatedField('OrderAffiliateCommissionSum', 'SUM( IF(ord.Status = 4,ord.AffiliateCommission,0))'); + $object->addCalculatedField('OrderCountByVisit', 'SUM( IF(ord.Status = 4, 1, 0) )'); } + if (!$types){ $object->AddGroupByField('%1$s.VisitId'); } Index: branches/unlabeled/unlabeled-1.12.2/core/units/visits/visits_config.php =================================================================== diff -u -r2439 -r3051 --- branches/unlabeled/unlabeled-1.12.2/core/units/visits/visits_config.php (.../visits_config.php) (revision 2439) +++ branches/unlabeled/unlabeled-1.12.2/core/units/visits/visits_config.php (.../visits_config.php) (revision 3051) @@ -18,40 +18,47 @@ 'IDField' => 'VisitId', 'TableName' => TABLE_PREFIX.'Visits', 'TitlePresets' => Array( - 'default' => Array( ), - 'visits_list' => Array( 'prefixes' => Array('visits_List'), - 'format' => "!la_title_Visits! (#visits_recordcount#)", - ), - ), + 'default' => Array(), + 'visits_list' => Array('prefixes' => Array('visits_List'), 'format' => "!la_title_Visits! (#visits_recordcount#)"), + 'visits.incommerce_list' => Array('prefixes' => Array('visits.incommerce_List'), 'format' => "!la_title_Visits! (#visits.incommerce_recordcount#)"), + ), 'CalculatedFields' => Array( '' => Array ( 'UserName' => 'IF( ISNULL(u.Login), IF (%1$s.PortalUserId = -1, \'root\', IF (%1$s.PortalUserId = -2, \'Guest\', \'n/a\')), u.Login)', - 'AffiliateUser' => 'IF( LENGTH(au.Login),au.Login,\'!la_None!\')', - 'AffiliatePortalUserId' => 'af.PortalUserId', - 'OrderTotalAmount' => '(ord.SubTotal+ord.ShippingCost+ord.VAT-ord.CouponDiscount)', - 'OrderAffiliateCommission' => 'ord.AffiliateCommission', - 'OrderNumber' => 'CONCAT(LPAD(Number,6,0),\'-\',LPAD(SubNumber,3,0) )', - 'OrderId' => 'ord.OrderId', - ), + 'incommerce' => Array ( + 'UserName' => 'IF( ISNULL(u.Login), IF (%1$s.PortalUserId = -1, \'root\', IF (%1$s.PortalUserId = -2, \'Guest\', \'n/a\')), u.Login)', + 'AffiliateUser' => 'IF( LENGTH(au.Login),au.Login,\'!la_None!\')', + 'AffiliatePortalUserId' => 'af.PortalUserId', + 'OrderTotalAmount' => 'IF(ord.Status = 4, ord.SubTotal+ord.ShippingCost+ord.VAT, 0)', + 'OrderAffiliateCommission' => 'IF(ord.Status = 4, ord.AffiliateCommission, 0)', + 'OrderNumber' => 'CONCAT(LPAD(Number,6,0),\'-\',LPAD(SubNumber,3,0) )', + 'OrderId' => 'ord.OrderId', + ), ), 'ListSQLs' => Array( ''=>' SELECT %1$s.* %2$s FROM %1$s + LEFT JOIN '.TABLE_PREFIX.'PortalUser u ON %1$s.PortalUserId = u.PortalUserId', + 'incommerce'=>' SELECT %1$s.* %2$s + FROM %1$s LEFT JOIN '.TABLE_PREFIX.'PortalUser u ON %1$s.PortalUserId = u.PortalUserId LEFT JOIN '.TABLE_PREFIX.'Affiliates af ON %1$s.AffiliateId = af.AffiliateId LEFT JOIN '.TABLE_PREFIX.'PortalUser au ON af.PortalUserId = au.PortalUserId - LEFT JOIN '.TABLE_PREFIX.'Orders ord ON %1$s.VisitId = ord.VisitId' + LEFT JOIN '.TABLE_PREFIX.'Orders ord ON %1$s.VisitId = ord.VisitId', ), 'ItemSQLs' => Array( ''=>' SELECT %1$s.* %2$s FROM %1$s + LEFT JOIN '.TABLE_PREFIX.'PortalUser u ON %1$s.PortalUserId = u.PortalUserId', + 'incommerce'=>' SELECT %1$s.* %2$s + FROM %1$s LEFT JOIN '.TABLE_PREFIX.'PortalUser u ON %1$s.PortalUserId = u.PortalUserId LEFT JOIN '.TABLE_PREFIX.'Affiliates af ON %1$s.AffiliateId = af.AffiliateId LEFT JOIN '.TABLE_PREFIX.'PortalUser au ON af.PortalUserId = au.PortalUserId - LEFT JOIN '.TABLE_PREFIX.'Orders ord ON %1$s.VisitId = ord.VisitId - '), + LEFT JOIN '.TABLE_PREFIX.'Orders ord ON %1$s.VisitId = ord.VisitId', + ), 'ListSortings' => Array( '' => Array( @@ -60,22 +67,23 @@ ), 'Fields' => Array( - 'VisitId' => Array(), - 'VisitDate' => Array('type' => 'int', 'formatter'=>'kDateFormatter', 'filter_type'=>'range', 'not_null' => '1','default' => '0'), + 'VisitId' => Array('type' => 'int'), + 'VisitDate' => Array('type' => 'int', 'formatter'=>'kDateFormatter', 'custom_filter' => 'date_range', 'not_null' => '1','default' => '0'), 'Referer' => Array('type' => 'string','not_null' => '1','default' => ''), 'IPAddress' => Array('type' => 'string','not_null' => '1','default' => ''), 'AffiliateId' => Array('type'=>'int','formatter'=>'kLEFTFormatter','options'=>Array(0=>'lu_none'),'left_sql'=>'SELECT %s FROM '.TABLE_PREFIX.'Affiliates af LEFT JOIN '.TABLE_PREFIX.'PortalUser pu ON pu.PortalUserId = af.PortalUserId WHERE `%s` = \'%s\'','left_key_field'=>'AffiliateId','left_title_field'=>'Login','not_null'=>1,'default'=>0), 'PortalUserId' => Array('type' => 'int','not_null' => '1','default' => -2), ), 'VirtualFields' => Array( - 'UserName' => Array('type'=>'string'), - 'AffiliateUser' => Array('type'=>'string'), - 'AffiliatePortalUserId' => Array('type'=>'int'), - 'OrderTotalAmount' => Array('type' => 'float', 'formatter'=>'kFormatter', 'format'=>'%01.2f', 'not_null' => '1','default' => '0.00'), + 'UserName' => Array('type'=>'string'), + 'AffiliateUser' => Array('type'=>'string'), + 'AffiliatePortalUserId' => Array('type'=>'int'), + 'OrderTotalAmount' => Array('type' => 'float', 'formatter'=>'kFormatter', 'format'=>'%01.2f', 'not_null' => '1','default' => '0.00', 'totals' => 'SUM'), 'OrderTotalAmountSum' => Array('type' => 'float', 'formatter'=>'kFormatter', 'format'=>'%01.2f', 'not_null' => '1','default' => '0.00'), - 'OrderAffiliateCommission' => Array('type' => 'numeric', 'formatter'=>'kFormatter','format'=>'%.02f', 'not_null' => '1','default' => '0.0000'), - 'OrderAffiliateCommissionSum' => Array('type' => 'numeric', 'formatter'=>'kFormatter','format'=>'%.02f', 'not_null' => '1','default' => '0.0000'), + 'OrderAffiliateCommission' => Array('type' => 'double', 'formatter'=>'kFormatter','format'=>'%.02f', 'not_null' => '1','default' => '0.0000', 'totals' => 'SUM'), + 'OrderAffiliateCommissionSum' => Array('type' => 'double', 'formatter'=>'kFormatter','format'=>'%.02f', 'not_null' => '1','default' => '0.0000'), + 'OrderId' => Array('type' => 'int', 'default' => '0'), ), 'Grids' => Array( @@ -86,11 +94,20 @@ 'IPAddress' => Array( 'title'=>'la_col_IPAddress' ), 'Referer' => Array( 'title'=>'la_col_Referer', 'data_block' => 'grid_referer_td' ), 'UserName' => Array('title' => 'la_col_Username', 'data_block' => 'grid_userlink_td', 'user_field' => 'PortalUserId'), + ), + ), + 'visitsincommerce' => Array( + 'Icons' => Array('default'=>'icon16_custom.gif'), // icons for each StatusField values, if no matches or no statusfield selected, then "default" icon is used + 'Fields' => Array( + 'VisitDate' => Array( 'title'=>'la_col_VisitDate', 'data_block' => 'grid_checkbox_td' ), + 'IPAddress' => Array( 'title'=>'la_col_IPAddress' ), + 'Referer' => Array( 'title'=>'la_col_Referer', 'data_block' => 'grid_referer_td' ), + 'UserName' => Array('title' => 'la_col_Username', 'data_block' => 'grid_userlink_td', 'user_field' => 'PortalUserId'), 'AffiliateUser' => Array( 'title' => 'la_col_AffiliateUser', 'data_block' => 'grid_userlink_td', 'user_field' => 'AffiliatePortalUserId'), 'OrderTotalAmountSum' => Array( 'title' => 'la_col_OrderTotal'), 'OrderAffiliateCommissionSum' => Array( 'title' => 'la_col_Commission'), ), - ), + ), ), );