displayLogoInsteadOfLabel = $bool; } protected function getViewDataTableId() { return 'cloud'; } /** * @see Piwik_ViewDataTable::init() */ function init($currentControllerName, $currentControllerAction, $apiMethodToRequestDataTable ) { parent::init($currentControllerName, $currentControllerAction, $apiMethodToRequestDataTable ); $this->dataTableTemplate = 'CoreHome/templates/cloud.tpl'; $this->disableOffsetInformation(); $this->disableExcludeLowPopulation(); } /** * @see Piwik_ViewDataTable::main() * */ public function main() { $this->setLimit( 30 ); if($this->mainAlreadyExecuted) { return; } $this->mainAlreadyExecuted = true; $this->isDataAvailable = true; try { $this->loadDataTableFromAPI(); } catch(Exception $e) { $this->isDataAvailable = false; } $this->view = $this->buildView(); } function getColumnToDisplay() { $columns = parent::getColumnsToDisplay(); // not label, but the first numeric column return $columns[1]; } protected function buildView() { $view = new Piwik_View($this->dataTableTemplate); if(!$this->isDataAvailable) { $view->cloudValues = array(); } else { $columnToDisplay = $this->getColumnToDisplay(); $columnTranslation = $this->getColumnTranslation($columnToDisplay); $values = $this->dataTable->getColumn($columnToDisplay); $labels = $this->dataTable->getColumn('label'); $labelMetadata = array(); foreach($this->dataTable->getRows() as $row) { $logo = false; if($this->displayLogoInsteadOfLabel) { $logo = $row->getMetadata('logo'); } $labelMetadata[$row->getColumn('label')] = array( 'logo' => $logo, 'url' => $row->getMetadata('url'), ); } $cloud = new Piwik_Visualization_Cloud(); foreach($labels as $i => $label) { $cloud->addWord($label, $values[$i]); } $cloudValues = $cloud->render('array'); foreach($cloudValues as &$value) { $value['logoWidth'] = round(max(16, $value['percent'])); } $view->columnTranslation = $columnTranslation; $view->labelMetadata = $labelMetadata; $view->cloudValues = $cloudValues; } $view->javascriptVariablesToSet = $this->getJavascriptVariablesToSet(); $view->properties = $this->getViewProperties(); return $view; } }