public function getAllWithGroups() { Piwik::checkUserHasSomeViewAccess(); $period = Common::getRequestVar('period', null, 'string'); $date = Common::getRequestVar('date', null, 'string'); $segment = Common::getRequestVar('segment', false, 'string'); $pattern = Common::getRequestVar('pattern', '', 'string'); $limit = Common::getRequestVar('filter_limit', 0, 'int'); $segment = $segment ?: false; $request = $_GET + $_POST; $dashboard = new Dashboard($period, $date, $segment); if ($pattern !== '') { $dashboard->search(strtolower($pattern)); } $response = array('numSites' => $dashboard->getNumSites(), 'totals' => $dashboard->getTotals(), 'lastDate' => $dashboard->getLastDate(), 'sites' => $dashboard->getSites($request, $limit)); return json_encode($response); }
public function test_search_WithGroup_IfASiteMatchesButNotTheGroupName_ItShouldKeepTheGroupThough() { $sites = $this->setSitesTable(20); $this->setGroupForSiteId($sites, $siteId = 1, 'group1'); $this->setGroupForSiteId($sites, $siteId = 2, 'group2'); $this->setGroupForSiteId($sites, $siteId = 3, 'group1'); $this->setGroupForSiteId($sites, $siteId = 20, 'group4'); $this->setGroupForSiteId($sites, $siteId = 15, 'group1'); $this->setGroupForSiteId($sites, $siteId = 16, 'group1'); $this->setGroupForSiteId($sites, $siteId = 18, 'group1'); $this->setGroupForSiteId($sites, $siteId = 6, 'group4'); $this->dashboard->setSitesTable($sites); $this->dashboard->search('site2'); $expectedSites = array(array('label' => 'group4', 'nb_visits' => 20, 'isGroup' => 1), array('label' => 'Site20', 'nb_visits' => 10, 'group' => 'group4'), array('label' => 'group2', 'nb_visits' => 10, 'isGroup' => 1), array('label' => 'Site2', 'nb_visits' => 10, 'group' => 'group2')); // 2 matching sites + their group $this->assertSame(2 + 2, $this->dashboard->getNumSites()); $matchingSites = $this->dashboard->getSites(array(), $limit = 20); $this->assertEquals($expectedSites, $matchingSites); }