public static function getInstance() { if (self::$instance == null) { $c = __CLASS__; self::$instance = new $c(); } return self::$instance; }
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(); }
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); }
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)); } }