PageRenderTime 42ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/plugins/VisitFrequency/Controller.php

https://github.com/CodeYellowBV/piwik
PHP | 111 lines | 84 code | 13 blank | 14 comment | 6 complexity | f06a16e0802dd8ef3f36129128b50c4d MD5 | raw file
Possible License(s): LGPL-3.0, JSON, MIT, GPL-3.0, LGPL-2.1, GPL-2.0, AGPL-1.0, BSD-2-Clause, BSD-3-Clause
  1. <?php
  2. /**
  3. * Piwik - free/libre analytics platform
  4. *
  5. * @link http://piwik.org
  6. * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
  7. *
  8. */
  9. namespace Piwik\Plugins\VisitFrequency;
  10. use Piwik\API\Request;
  11. use Piwik\Common;
  12. use Piwik\Piwik;
  13. use Piwik\View;
  14. /**
  15. *
  16. */
  17. class Controller extends \Piwik\Plugin\Controller
  18. {
  19. function index()
  20. {
  21. $view = new View('@VisitFrequency/index');
  22. $view->graphEvolutionVisitFrequency = $this->getEvolutionGraph(array(), array('nb_visits_returning'));
  23. $this->setSparklinesAndNumbers($view);
  24. return $view->render();
  25. }
  26. public function getSparklines()
  27. {
  28. $view = new View('@VisitFrequency/getSparklines');
  29. $this->setSparklinesAndNumbers($view);
  30. return $view->render();
  31. }
  32. public function getEvolutionGraph(array $columns = array(), array $defaultColumns = array())
  33. {
  34. if (empty($columns)) {
  35. $columns = Common::getRequestVar('columns', false);
  36. if (false !== $columns) {
  37. $columns = Piwik::getArrayFromApiParameter($columns);
  38. }
  39. }
  40. $documentation = Piwik::translate('VisitFrequency_ReturningVisitsDocumentation') . '<br />'
  41. . Piwik::translate('General_BrokenDownReportDocumentation') . '<br />'
  42. . Piwik::translate('VisitFrequency_ReturningVisitDocumentation');
  43. // Note: if you edit this array, maybe edit the code below as well
  44. $selectableColumns = array(
  45. // columns from VisitFrequency.get
  46. 'nb_visits_returning',
  47. 'nb_actions_returning',
  48. 'nb_actions_per_visit_returning',
  49. 'bounce_rate_returning',
  50. 'avg_time_on_site_returning',
  51. // columns from VisitsSummary.get
  52. 'nb_visits',
  53. 'nb_actions',
  54. 'nb_actions_per_visit',
  55. 'bounce_rate',
  56. 'avg_time_on_site'
  57. );
  58. $period = Common::getRequestVar('period', false);
  59. if ($period == 'day') {
  60. // add number of unique (returning) visitors for period=day
  61. $selectableColumns = array_merge(
  62. array($selectableColumns[0]),
  63. array('nb_uniq_visitors_returning'),
  64. array_slice($selectableColumns, 1, -4),
  65. array('nb_uniq_visitors'),
  66. array_slice($selectableColumns, -4));
  67. }
  68. $view = $this->getLastUnitGraphAcrossPlugins($this->pluginName, __FUNCTION__, $columns,
  69. $selectableColumns, $documentation);
  70. if (empty($view->config->columns_to_display) && !empty($defaultColumns)) {
  71. $view->config->columns_to_display = $defaultColumns;
  72. }
  73. return $this->renderView($view);
  74. }
  75. protected function setSparklinesAndNumbers($view)
  76. {
  77. $view->urlSparklineNbVisitsReturning = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('nb_visits_returning')));
  78. $view->urlSparklineNbActionsReturning = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('nb_actions_returning')));
  79. $view->urlSparklineActionsPerVisitReturning = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('nb_actions_per_visit_returning')));
  80. $view->urlSparklineAvgVisitDurationReturning = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('avg_time_on_site_returning')));
  81. $view->urlSparklineBounceRateReturning = $this->getUrlSparkline('getEvolutionGraph', array('columns' => array('bounce_rate_returning')));
  82. $dataTableFrequency = $this->getSummary();
  83. $dataRow = $dataTableFrequency->getFirstRow();
  84. $nbVisitsReturning = $dataRow->getColumn('nb_visits_returning');
  85. $view->nbVisitsReturning = $nbVisitsReturning;
  86. $view->nbActionsReturning = $dataRow->getColumn('nb_actions_returning');
  87. $view->nbActionsPerVisitReturning = $dataRow->getColumn('nb_actions_per_visit_returning');
  88. $view->avgVisitDurationReturning = $dataRow->getColumn('avg_time_on_site_returning');
  89. $nbBouncedReturningVisits = $dataRow->getColumn('bounce_count_returning');
  90. $view->bounceRateReturning = Piwik::getPercentageSafe($nbBouncedReturningVisits, $nbVisitsReturning);
  91. }
  92. protected function getSummary()
  93. {
  94. $requestString = "method=VisitFrequency.get&format=original";
  95. $request = new Request($requestString);
  96. return $request->process();
  97. }
  98. }