Page MenuHomeIn-Portal Phabricator

in-portal
No OneTemporary

File Metadata

Created
Wed, Jul 16, 7:26 AM

in-portal

Index: branches/unlabeled/unlabeled-1.6.2/core/units/visits/visits_tag_processor.php
===================================================================
--- branches/unlabeled/unlabeled-1.6.2/core/units/visits/visits_tag_processor.php (revision 3050)
+++ branches/unlabeled/unlabeled-1.6.2/core/units/visits/visits_tag_processor.php (revision 3051)
@@ -1,119 +1,172 @@
<?php
class VisitsTagProcessor extends kDBTagProcessor {
function UserFound($params)
{
$virtual_users = Array(-1,-2, 0);
$object =& $this->Application->recallObject( $this->getPrefixSpecial(), $this->Prefix, $params );
return !in_array( $object->GetDBField( $params['user_field'] ) , $virtual_users );
}
function UserLink($params)
{
$object =& $this->Application->recallObject( $this->getPrefixSpecial(), $this->Prefix, $params );
$user_id = $object->GetDBField( $params['user_field'] );
if($user_id)
{
//return $this->Application->HREF('in-commerce/users/users_edit_general','', Array('u_id' => $user_id) );
$resource_id = $this->Conn->GetOne('SELECT ResourceId FROM '.TABLE_PREFIX.'PortalUser WHERE PortalUserId = '.$user_id);
return 'javascript:OpenUserEdit('.$resource_id.');';
}
}
- 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');
-
- $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
- ';
-
- $info = $this->Conn->GetRow($sql);
+ function AffiliateOrderInfo($params)
+ {
+ $list =& $this->GetList($params);
- $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;
+ $date_limit = str_replace($list->TableName, 'vis', $this->getDateLimitClause('VisitDate') );
- $params_info = array_merge_recursive2($params_info, $info);
- $params_info['TotalVisits'] = $this->GetTotalAffiliateVisits($params);
+ $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);
+
+ $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);
- $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']);
+ $sql = 'SELECT COUNT(*) FROM '.$list->TableName.' vis
+ WHERE AffiliateId = '.$affiliate_id.($date_limit ? ' AND '.$date_limit : '');
- $fields_to_convert = array('AffiliateCommission', 'TotalAmount');
+ $result['TotalVisitors'] = $this->Conn->GetOne($sql);
+ $result['OrderTotalAmount'] = $list->getTotal('OrderTotalAmount', 'SUM');
+ $result['OrderAffiliateCommission'] = $list->getTotal('OrderAffiliateCommission', 'SUM');
+ $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);
- }
-
-
-
-
- return $this->Application->ParseBlock($params_info);
+ $block_params = array_merge_recursive2($block_params, $result);
+ 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);
}
return $o;
}
/*
function OrderLink($params){
$object = &$this->Application->recallObject($this->getPrefixSpecial());
$params['ord_id'] = $object->GetDBField('OrderId');
$main_processor =& $this->Application->recallObject('m_TagProcessor');
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
Property changes on: branches/unlabeled/unlabeled-1.6.2/core/units/visits/visits_tag_processor.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.6
\ No newline at end of property
+1.6.2.1
\ No newline at end of property
Index: branches/unlabeled/unlabeled-1.8.2/core/units/visits/visits_event_handler.php
===================================================================
--- branches/unlabeled/unlabeled-1.8.2/core/units/visits/visits_event_handler.php (revision 3050)
+++ branches/unlabeled/unlabeled-1.8.2/core/units/visits/visits_event_handler.php (revision 3051)
@@ -1,95 +1,86 @@
<?php
class VisitsEventHandler extends InpDBEventHandler {
/**
* Registers user visit to site
*
* @param kEvent $event
*/
function OnRegisterVisit(&$event)
{
$object =& $event->getObject( Array('skip_autoload'=>true) );
$object->SetDBField('VisitDate_date', time() );
$object->SetDBField('VisitDate_time', time() );
$object->SetDBField('Referer', getArrayValue($_SERVER, 'HTTP_REFERER') );
$object->SetDBField('IPAddress', $_SERVER['REMOTE_ADDR'] );
if( $object->Create() )
{
$this->Application->StoreVar('visit_id', $object->GetID() );
$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
* @access protected
* @see OnListBuild
*/
function SetCustomQuery(&$event)
{
$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);
$object->addFilter('myitems_user2','au.PortalUserId >0');
//$object->AddGroupByField('VisitDate');
$object->AddGroupByField('%1$s.VisitId');
}
- 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');
}
-
}
/**
* Apply some special processing to
* object beeing recalled before using
* it in other events that call prepareObject
*
* @param kBase $object
* @param kEvent $event
* @access protected
*/
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');
}
}
}
}
?>
\ No newline at end of file
Property changes on: branches/unlabeled/unlabeled-1.8.2/core/units/visits/visits_event_handler.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.8
\ No newline at end of property
+1.8.2.1
\ No newline at end of property
Index: branches/unlabeled/unlabeled-1.12.2/core/units/visits/visits_config.php
===================================================================
--- branches/unlabeled/unlabeled-1.12.2/core/units/visits/visits_config.php (revision 3050)
+++ branches/unlabeled/unlabeled-1.12.2/core/units/visits/visits_config.php (revision 3051)
@@ -1,98 +1,115 @@
<?php
$config = Array(
'Prefix' => 'visits',
'ItemClass' => Array('class'=>'kDBItem','file'=>'','build_event'=>'OnItemBuild'),
'ListClass' => Array('class'=>'kDBList','file'=>'','build_event'=>'OnListBuild'),
'EventHandlerClass' => Array('class'=>'VisitsEventHandler','file'=>'visits_event_handler.php','build_event'=>'OnBuild'),
'TagProcessorClass' => Array('class'=>'VisitsTagProcessor','file'=>'visits_tag_processor.php','build_event'=>'OnBuild'),
'AutoLoad' => true,
'QueryString' => Array(
1 => 'id',
2 => 'Page',
3 => 'event',
4 => 'mode',
),
'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(
'Sorting' => Array('VisitDate' => 'desc'),
)
),
'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(
'Default' => 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'),
+ ),
+ ),
+ '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'),
),
- ),
+ ),
),
);
?>
\ No newline at end of file
Property changes on: branches/unlabeled/unlabeled-1.12.2/core/units/visits/visits_config.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.12
\ No newline at end of property
+1.12.2.1
\ No newline at end of property

Event Timeline