Преглед изворни кода

#2381 Inviter: track who invited whom - analytics app

RomanL пре 6 година
родитељ
комит
a46adc59ec
1 измењених фајлова са 84 додато и 55 уклоњено
  1. 84 55
      modules/boonex/analytics/classes/BxAnalyticsModule.php

+ 84 - 55
modules/boonex/analytics/classes/BxAnalyticsModule.php

@@ -74,7 +74,6 @@ class BxAnalyticsModule extends BxDolModule
     public function serviceGetModules()
     {
         $aResult = array();
-        $aResult2 = array();
         $aResult[BX_ANALYTICS_SYSTEM] = _t('_bx_analytics_system_text');
         $BxDolModuleQuery = BxDolModuleQuery::getInstance();
         $aModules = $BxDolModuleQuery->getModulesBy(array('type' => 'modules', 'active' => 1));
@@ -84,7 +83,12 @@ class BxAnalyticsModule extends BxDolModule
                 $aResult[$aModule['name']] = $aModule['title'];
             }
         }
-        return array_merge($aResult, $aResult2);
+        
+        bx_alert($this->_aModule['name'], 'get_modules', 0, 0, array(
+            'list' => &$aResult,
+        ));
+        
+        return $aResult;
     }
           
     /**
@@ -125,6 +129,12 @@ class BxAnalyticsModule extends BxDolModule
             $aRv[BX_ANALYTICS_CONTENT_TOTAL] = _t('_bx_analytics_type_content_growth');
             $aRv[BX_ANALYTICS_CONTENT_SPEED] = _t('_bx_analytics_type_content_speed');
         }
+        
+        bx_alert($this->_aModule['name'], 'get_reports', 0, 0, array(
+            'module' => $sModuleName,
+            'list' => &$aRv,
+        ));
+        
         echo json_encode($aRv);
     }
           
@@ -143,8 +153,7 @@ class BxAnalyticsModule extends BxDolModule
         if ($sType == ''){
             header('Content-Type: application/json');
             echo $this->actionGetReportsDataJson($sModuleName, $sReportName, $sDateFrom, $sDateTo);
-        }
-            
+        } 
     }
     
     private function actionGetReportsDataCsv($sModuleName, $sReportName, $sDateFrom, $sDateTo)
@@ -200,21 +209,61 @@ class BxAnalyticsModule extends BxDolModule
         $iMinValueY = 0;
         $iMaxValueY = 0;
         $bDefaultFillData = true;
+        $sReportType = $sReportName;
+        
         $aValues = array('labels' => array(), 'values' => array(array('legend' => '', 'data' => array())), 'links' => array(), 'strings' => array(0 => _t('_bx_analytics_txt_item'), 1 => _t('_bx_analytics_txt_value')));
    
         if ($sModuleName != BX_ANALYTICS_SYSTEM){
             $oModule = BxDolModule::getInstance($sModuleName);
             $aValues['strings'][0] = $oModule->_aModule['title'];
-            $aValues['strings'][1] = _t('_bx_analytics_type_' . $sReportName . '_label');
+            $aValues['strings'][1] = _t('_bx_analytics_type_' . $sReportType . '_label');
         }
         else{
             $aValues['strings'][0] = _t('_bx_analytics_txt_total_content');
-            $aValues['strings'][1] = _t('_bx_analytics_type_' . $sReportName . '_label');
+            $aValues['strings'][1] = _t('_bx_analytics_type_' . $sReportType . '_label');
         }
               
-        switch ($sReportName) {
-            case BX_ANALYTICS_CONTENT_TOTAL:
-            case BX_ANALYTICS_CONTENT_SPEED:
+        switch ($sReportType) {
+            case BX_ANALYTICS_TOP_BY_LIKES:
+                $bDefaultFillData = false;
+                $this->getViewsOrVotes(BxDolVote::getSystems(), 'OBJECT_VOTES', $sModuleName, $iDateFrom, $iDateTo, $aValues, $iMaxValueY, $iMinValueY);
+                break;
+                  
+            case BX_ANALYTICS_TOP_BY_VIEWS:
+                $bDefaultFillData = false;
+                $this->getViewsOrVotes(BxDolView::getSystems(), 'OBJECT_VIEWS', $sModuleName, $iDateFrom, $iDateTo, $aValues, $iMaxValueY, $iMinValueY);
+                break;
+                  
+            case BX_ANALYTICS_MOST_FOLLOWED_PROFILES:
+                $oModule = BxDolModule::getInstance($sModuleName);
+                $aData = $this->_oDb->getMostFollowedProfiles($sModuleName, $iDateFrom, $iDateTo);
+                break;
+                  
+            case BX_ANALYTICS_MOST_ACTIVE_PROFILES:
+                $aData = array();
+                $oModule = BxDolModule::getInstance($sModuleName);
+                $aTmp = $this->getSelectedModules();
+                foreach($aTmp[0] as $sContentModule){
+                    $oContentModule = BxDolModule::getInstance($sContentModule);
+                    if ($oContentModule && isset($oContentModule->_oConfig->CNF['TABLE_ENTRIES']) && isset($oContentModule->_oConfig->CNF['FIELD_AUTHOR'])){
+                        $sContentTable = $oContentModule->_oConfig->CNF['TABLE_ENTRIES'];
+                        $sColumnAuthor = $oContentModule->_oConfig->CNF['FIELD_AUTHOR'];
+                        $sColumnAdded = $oContentModule->_oConfig->CNF['FIELD_ADDED'];
+                        if (!empty($sContentTable) && !empty($sColumnAuthor) && !empty($sColumnAdded) && (!BxDolRequest::serviceExists($sContentModule, 'act_as_profile') || BxDolService::call($sContentModule, 'act_as_profile') == false)){
+                            $aData1 = $this->_oDb->getMostActiveProfiles($sModuleName, $sContentModule, $sContentTable, $sColumnAuthor, $sColumnAuthor, $sColumnAdded, $iDateFrom, $iDateTo);
+                            foreach($aData1 as $aTmp3){
+                                if (array_key_exists($aTmp3['object_id'], $aData))
+                                    $aData[$aTmp3['object_id']]['value'] += $aTmp3['value'];
+                                else
+                                    $aData[$aTmp3['object_id']] = $aTmp3;
+                            }
+                        }
+                    }
+                }
+                $aData = $this->sortArrayOfArraysAndSlice($aData, 'value', intval(getParam('bx_analytics_items_count')));
+                break;
+                
+            default:
                 $sType = "line";
                 $bIsTimeX = true;
                 $sTableName = '';
@@ -224,19 +273,38 @@ class BxAnalyticsModule extends BxDolModule
                     $oModule = BxDolModule::getInstance($sModuleName);
                     if (isset($oModule->_oConfig->CNF['TABLE_ENTRIES']))
                         $sTableName = $oModule->_oConfig->CNF['TABLE_ENTRIES'];
-                    $aValues['strings'][1] = ($sReportName == BX_ANALYTICS_CONTENT_TOTAL ? _t('_bx_analytics_txt_total_count', $oModule->_aModule['title']) : _t('_bx_analytics_txt_count', $oModule->_aModule['title']));
+                    $aValues['strings'][1] = ($sReportType == BX_ANALYTICS_CONTENT_TOTAL ? _t('_bx_analytics_txt_total_count', $oModule->_aModule['title']) : _t('_bx_analytics_txt_count', $oModule->_aModule['title']));
                 }
                 else{
                     $sTableName = 'sys_accounts';
-                    $aValues['strings'][1] = ($sReportName == BX_ANALYTICS_CONTENT_TOTAL ? _t('_bx_analytics_txt_total_count', _t('_bx_analytics_txt_accounts')) : _t('_bx_analytics_txt_count', _t('_bx_analytics_txt_accounts')));
+                    $aValues['strings'][1] = ($sReportType == BX_ANALYTICS_CONTENT_TOTAL ? _t('_bx_analytics_txt_total_count', _t('_bx_analytics_txt_accounts')) : _t('_bx_analytics_txt_count', _t('_bx_analytics_txt_accounts')));
                 }
                 if (isset($oModule) && isset($oModule->_oConfig->CNF['FIELD_ADDED']))
                     $sColumnAdded = $oModule->_oConfig->CNF['FIELD_ADDED'];
                 else
                     $sColumnAdded = 'added';
-                if ($sColumnAdded != ''){
+                
+                $aData = array();
+                $iValuePrev = 0;
+                
+                bx_alert($this->_aModule['name'], 'get_chart_data_line', 0, 0, array(
+                    'module' => $sModuleName,
+                    'report_name' => $sReportName,
+                    'report_type' => &$sReportType,
+                    'date_from' => $iDateFrom,
+                    'date_to' => $iDateTo,
+                    'data' => &$aData,
+                    'prev_value' => &$iValuePrev,
+                ));
+                
+                
+                
+                if ($sColumnAdded != '' && count($aData) == 0){
                     $aData = $this->_oDb->getGrowth($sTableName, $sColumnAdded, $iDateFrom, $iDateTo);
                     $iValuePrev = $this->_oDb->getGrowthInitValue($sTableName, $sColumnAdded, $iDateFrom);
+                }
+                
+                if (count($aData) > 0){
                     $aTmpDates = array();
                     foreach ($aData as $aValue) {
                         $sX = $aValue['period'];
@@ -245,14 +313,14 @@ class BxAnalyticsModule extends BxDolModule
                     for ($i = $iDateFrom; $i < $iDateTo ; $i = $i + 86400 ){
                         $sX = date('Y-m-d', $i);
                         if (!array_key_exists($sX, $aTmpDates)){
-                            array_push($aValues['values'][0]['data'], array('x' => $sX, 'y' => $sReportName == BX_ANALYTICS_CONTENT_TOTAL ? $iValuePrev : 0));
+                            array_push($aValues['values'][0]['data'], array('x' => $sX, 'y' => $sReportType == BX_ANALYTICS_CONTENT_TOTAL ? $iValuePrev : 0));
                         }
                         else{
-                            array_push($aValues['values'][0]['data'], array('x' => $sX, 'y' => $sReportName == BX_ANALYTICS_CONTENT_TOTAL ? ($iValuePrev + $aTmpDates[$sX]) : $aTmpDates[$sX]));
+                            array_push($aValues['values'][0]['data'], array('x' => $sX, 'y' => $sReportType == BX_ANALYTICS_CONTENT_TOTAL ? ($iValuePrev + $aTmpDates[$sX]) : $aTmpDates[$sX]));
                             $iValuePrev += $aTmpDates[$sX];
                         }
                         //array_push($aValues['labels'], $sX);
-                        if ($sReportName == BX_ANALYTICS_CONTENT_TOTAL){
+                        if ($sReportType == BX_ANALYTICS_CONTENT_TOTAL){
                             if ($iValuePrev > $iMaxValueY)
                                 $iMaxValueY = $iValuePrev;
                         }
@@ -263,47 +331,8 @@ class BxAnalyticsModule extends BxDolModule
                     }
                 }
                 break;
-                  
-            case BX_ANALYTICS_TOP_BY_LIKES:
-                $bDefaultFillData = false;
-                $this->getViewsOrVotes(BxDolVote::getSystems(), 'OBJECT_VOTES', $sModuleName, $iDateFrom, $iDateTo, $aValues, $iMaxValueY, $iMinValueY);
-                break;
-                  
-            case BX_ANALYTICS_TOP_BY_VIEWS:
-                $bDefaultFillData = false;
-                $this->getViewsOrVotes(BxDolView::getSystems(), 'OBJECT_VIEWS', $sModuleName, $iDateFrom, $iDateTo, $aValues, $iMaxValueY, $iMinValueY);
-                break;
-                  
-            case BX_ANALYTICS_MOST_FOLLOWED_PROFILES:
-                $oModule = BxDolModule::getInstance($sModuleName);
-                $aData = $this->_oDb->getMostFollowedProfiles($sModuleName, $iDateFrom, $iDateTo);
-                break;
-                  
-            case BX_ANALYTICS_MOST_ACTIVE_PROFILES:
-                $aData = array();
-                $oModule = BxDolModule::getInstance($sModuleName);
-                $aTmp = $this->getSelectedModules();
-                foreach($aTmp[0] as $sContentModule){
-                    $oContentModule = BxDolModule::getInstance($sContentModule);
-                    if ($oContentModule && isset($oContentModule->_oConfig->CNF['TABLE_ENTRIES']) && isset($oContentModule->_oConfig->CNF['FIELD_AUTHOR'])){
-                        $sContentTable = $oContentModule->_oConfig->CNF['TABLE_ENTRIES'];
-                        $sColumnAuthor = $oContentModule->_oConfig->CNF['FIELD_AUTHOR'];
-                        $sColumnAdded = $oContentModule->_oConfig->CNF['FIELD_ADDED'];
-                        if (!empty($sContentTable) && !empty($sColumnAuthor) && !empty($sColumnAdded) && (!BxDolRequest::serviceExists($sContentModule, 'act_as_profile') || BxDolService::call($sContentModule, 'act_as_profile') == false)){
-                            $aData1 = $this->_oDb->getMostActiveProfiles($sModuleName, $sContentModule, $sContentTable, $sColumnAuthor, $sColumnAuthor, $sColumnAdded, $iDateFrom, $iDateTo);
-                            foreach($aData1 as $aTmp3){
-                                if (array_key_exists($aTmp3['object_id'], $aData))
-                                    $aData[$aTmp3['object_id']]['value'] += $aTmp3['value'];
-                                else
-                                    $aData[$aTmp3['object_id']] = $aTmp3;
-                            }
-                        }
-                    }
-                }
-                $aData = $this->sortArrayOfArraysAndSlice($aData, 'value', intval(getParam('bx_analytics_items_count')));
-                break;
         }
-              
+          
         if ($bDefaultFillData){
             foreach ($aData as $aValue) {
                 array_push($aValues['labels'], $this->getItemName($oModule->serviceGetTitle($aValue['object_id'])));