Пример #1
0
 public static function getInstance()
 {
     if (self::$instance == null) {
         $c = __CLASS__;
         self::$instance = new $c();
     }
     return self::$instance;
 }
Пример #2
0
 function index()
 {
     $view = Piwik_View::factory('overview');
     $this->setGeneralVariablesView($view);
     $view->funnels = $this->funnels;
     $view->funnelsJSON = json_encode($this->funnels);
     $view->userCanEditFunnels = Piwik::isUserHasAdminAccess($this->idSite);
     $view->goalsWithoutFunnels = Piwik_Funnels_API::getInstance()->getGoalsWithoutFunnels($this->idSite);
     echo $view->render();
 }
Пример #3
0
 public function test_addFunnel()
 {
     $idSite = Piwik_SitesManager_API::getInstance()->addSite("test site", "http://www.example.com");
     $idGoal = Piwik_Goals_API::getInstance()->addGoal($idSite, "test goal", 'url', 'test', 'contains', 0, 0);
     $steps = array(1 => array('name' => 'step one', 'url' => 'http://www.example.com/step_one', 'id' => 1));
     $idFunnel = Piwik_Funnels_API::getInstance()->addFunnel($idSite, $idGoal, $steps);
     $this->assertIsA($idFunnel, 'int');
     $funnels = Piwik_Funnels_API::getInstance()->getFunnels($idSite);
     $this->assertTrue(count($funnels) === 1);
     $funnel = $funnels[$idFunnel];
     $this->assertEqual($funnel['idsite'], $idSite);
     $this->assertEqual($funnel['idgoal'], $idGoal);
     $steps = $funnel['steps'];
     $this->assertTrue(count($steps) === 1);
     $step = $steps[0];
     $this->assertEqual($step['name'], 'step one');
     $this->assertEqual($step['url'], 'http://www.example.com/step_one');
     $this->assertEqual($step['idstep'], 1);
 }
Пример #4
0
 function archivePeriod($notification)
 {
     $archiveProcessing = $notification->getNotificationObject();
     $funnelMetricsToSum = array('nb_actions');
     $stepMetricsToSum = array('nb_actions', 'nb_next_step_actions', 'nb_entry', 'nb_exit');
     $stepDataTables = array('idaction_url_next', 'idaction_url_ref');
     $funnels = Piwik_Funnels_API::getInstance()->getFunnels($archiveProcessing->idsite);
     $fieldsToSum = array();
     $tablesToSum = array();
     foreach ($funnels as $funnel) {
         $idFunnel = $funnel['idfunnel'];
         foreach ($funnelMetricsToSum as $metricName) {
             $fieldsToSum[] = self::getRecordName($metricName, $idFunnel, false);
         }
         foreach ($funnel['steps'] as $step) {
             $idStep = $step['idstep'];
             foreach ($stepMetricsToSum as $metricName) {
                 $fieldsToSum[] = self::getRecordName($metricName, $idFunnel, $idStep);
             }
             foreach ($stepDataTables as $dataTable) {
                 $tablesToSum[] = self::getRecordName($dataTable, $idFunnel, $idStep);
             }
         }
     }
     $numeric_records = $archiveProcessing->archiveNumericValuesSum($fieldsToSum);
     $rows_to_keep = Piwik_Funnels_Controller::NUM_URLS_TO_DISPLAY + 2;
     $blob_records = $archiveProcessing->archiveDataTable($tablesToSum, null, $rows_to_keep, null, 'value');
     // also recording percent for each step going to next step,
     // conversion rate for funnel
     foreach ($funnels as $funnel) {
         $idFunnel = $funnel['idfunnel'];
         $i = 0;
         $funnel_start_actions = 0;
         foreach ($funnel['steps'] as $step) {
             $idStep = $step['idstep'];
             $nb_actions = $numeric_records[self::getRecordName('nb_actions', $idFunnel, $idStep)]->value;
             if ($i == 0) {
                 $funnel_start_actions = $nb_actions;
             }
             $nb_next_step_actions = $numeric_records[self::getRecordName('nb_next_step_actions', $idFunnel, $idStep)]->value;
             $percent_next_step_actions = $this->percent($nb_next_step_actions, $nb_actions);
             $recordName = self::getRecordName('percent_next_step_actions', $idFunnel, $idStep);
             $archiveProcessing->insertNumericRecord($recordName, $percent_next_step_actions);
             $i++;
         }
         $recordName = Piwik_Funnels::getRecordName('conversion_rate', $idFunnel, false);
         $archiveProcessing->insertNumericRecord($recordName, $this->percent($nb_next_step_actions, $funnel_start_actions));
     }
 }