original_string: public function getTransitionsForAction($actionName, $actionType, $idSite, $period, $date,
                                              $segment = false, $limitBeforeGrouping = false, $parts = 'all')
      {
          Piwik::checkUserHasViewAccess($idSite);
  
          // get idaction of the requested action
          $idaction = $this->deriveIdAction($actionName, $actionType);
          if ($idaction < 0) {
              throw new Exception('NoDataForAction');
          }
  
          // prepare log aggregator
          $segment = new Segment($segment, $idSite);
          $site = new Site($idSite);
          $period = Period\Factory::build($period, $date);
          $params = new ArchiveProcessor\Parameters($site, $period, $segment);
          $logAggregator = new LogAggregator($params);
  
          // prepare the report
          $report = array(
              'date' => Period\Factory::build($period->getLabel(), $date)->getLocalizedShortString()
          );
  
          $partsArray = explode(',', $parts);
          if ($parts == 'all' || in_array('internalReferrers', $partsArray)) {
              $this->addInternalReferrers($logAggregator, $report, $idaction, $actionType, $limitBeforeGrouping);
          }
          if ($parts == 'all' || in_array('followingActions', $partsArray)) {
              $includeLoops = $parts != 'all' && !in_array('internalReferrers', $partsArray);
              $this->addFollowingActions($logAggregator, $report, $idaction, $actionType, $limitBeforeGrouping, $includeLoops);
          }
          if ($parts == 'all' || in_array('externalReferrers', $partsArray)) {
              $this->addExternalReferrers($logAggregator, $report, $idaction, $actionType, $limitBeforeGrouping);
          }
  
          // derive the number of exits from the other metrics
          if ($parts == 'all') {
              $report['pageMetrics']['exits'] = $report['pageMetrics']['pageviews']
                  - $this->getTotalTransitionsToFollowingActions()
                  - $report['pageMetrics']['loops'];
          }
  
          // replace column names in the data tables
          $reportNames = array(
              'previousPages'         => true,
              'previousSiteSearches'  => false,
              'followingPages'        => true,
              'followingSiteSearches' => false,
              'outlinks'              => true,
              'downloads'             => true
          );
          foreach ($reportNames as $reportName => $replaceLabel) {
              if (isset($report[$reportName])) {
                  $columnNames = array(Metrics::INDEX_NB_ACTIONS => 'referrals');
                  if ($replaceLabel) {
                      $columnNames[Metrics::INDEX_NB_ACTIONS] = 'referrals';
                  }
                  $report[$reportName]->filter('ReplaceColumnNames', array($columnNames));
              }
          }
  
          return $report;
      }
code: public function getTransitionsForAction($actionName, $actionType, $idSite, $period, $date,
                                              $segment = false, $limitBeforeGrouping = false, $parts = 'all')
      {
          Piwik::checkUserHasViewAccess($idSite);
  
          // get idaction of the requested action
          $idaction = $this->deriveIdAction($actionName, $actionType);
          if ($idaction < 0) {
              throw new Exception('NoDataForAction');
          }
  
          // prepare log aggregator
          $segment = new Segment($segment, $idSite);
          $site = new Site($idSite);
          $period = Period\Factory::build($period, $date);
          $params = new ArchiveProcessor\Parameters($site, $period, $segment);
          $logAggregator = new LogAggregator($params);
  
          // prepare the report
          $report = array(
              'date' => Period\Factory::build($period->getLabel(), $date)->getLocalizedShortString()
          );
  
          $partsArray = explode(',', $parts);
          if ($parts == 'all' || in_array('internalReferrers', $partsArray)) {
              $this->addInternalReferrers($logAggregator, $report, $idaction, $actionType, $limitBeforeGrouping);
          }
          if ($parts == 'all' || in_array('followingActions', $partsArray)) {
              $includeLoops = $parts != 'all' && !in_array('internalReferrers', $partsArray);
              $this->addFollowingActions($logAggregator, $report, $idaction, $actionType, $limitBeforeGrouping, $includeLoops);
          }
          if ($parts == 'all' || in_array('externalReferrers', $partsArray)) {
              $this->addExternalReferrers($logAggregator, $report, $idaction, $actionType, $limitBeforeGrouping);
          }
  
          // derive the number of exits from the other metrics
          if ($parts == 'all') {
              $report['pageMetrics']['exits'] = $report['pageMetrics']['pageviews']
                  - $this->getTotalTransitionsToFollowingActions()
                  - $report['pageMetrics']['loops'];
          }
  
          // replace column names in the data tables
          $reportNames = array(
              'previousPages'         => true,
              'previousSiteSearches'  => false,
              'followingPages'        => true,
              'followingSiteSearches' => false,
              'outlinks'              => true,
              'downloads'             => true
          );
          foreach ($reportNames as $reportName => $replaceLabel) {
              if (isset($report[$reportName])) {
                  $columnNames = array(Metrics::INDEX_NB_ACTIONS => 'referrals');
                  if ($replaceLabel) {
                      $columnNames[Metrics::INDEX_NB_ACTIONS] = 'referrals';
                  }
                  $report[$reportName]->filter('ReplaceColumnNames', array($columnNames));
              }
          }
  
          return $report;
      }
code_tokens: public function getTransitionsForAction ( $ actionName , $ actionType , $ idSite , $ period , $ date , $ segment = false , $ limitBeforeGrouping = false , $ parts = 'all' ) { Piwik :: checkUserHasViewAccess ( $ idSite ) ; // get idaction of the requested action $ idaction = $ this -> deriveIdAction ( $ actionName , $ actionType ) ; if ( $ idaction < 0 ) { throw new Exception ( 'NoDataForAction' ) ; } // prepare log aggregator $ segment = new Segment ( $ segment , $ idSite ) ; $ site = new Site ( $ idSite ) ; $ period = Period \ Factory :: build ( $ period , $ date ) ; $ params = new ArchiveProcessor \ Parameters ( $ site , $ period , $ segment ) ; $ logAggregator = new LogAggregator ( $ params ) ; // prepare the report $ report = array ( 'date' => Period \ Factory :: build ( $ period -> getLabel ( ) , $ date ) -> getLocalizedShortString ( ) ) ; $ partsArray = explode ( ',' , $ parts ) ; if ( $ parts == 'all' || in_array ( 'internalReferrers' , $ partsArray ) ) { $ this -> addInternalReferrers ( $ logAggregator , $ report , $ idaction , $ actionType , $ limitBeforeGrouping ) ; } if ( $ parts == 'all' || in_array ( 'followingActions' , $ partsArray ) ) { $ includeLoops = $ parts != 'all' && ! in_array ( 'internalReferrers' , $ partsArray ) ; $ this -> addFollowingActions ( $ logAggregator , $ report , $ idaction , $ actionType , $ limitBeforeGrouping , $ includeLoops ) ; } if ( $ parts == 'all' || in_array ( 'externalReferrers' , $ partsArray ) ) { $ this -> addExternalReferrers ( $ logAggregator , $ report , $ idaction , $ actionType , $ limitBeforeGrouping ) ; } // derive the number of exits from the other metrics if ( $ parts == 'all' ) { $ report [ 'pageMetrics' ] [ 'exits' ] = $ report [ 'pageMetrics' ] [ 'pageviews' ] - $ this -> getTotalTransitionsToFollowingActions ( ) - $ report [ 'pageMetrics' ] [ 'loops' ] ; } // replace column names in the data tables $ reportNames = array ( 'previousPages' => true , 'previousSiteSearches' => false , 'followingPages' => true , 'followingSiteSearches' => false , 'outlinks' => true , 'downloads' => true ) ; foreach ( $ reportNames as $ reportName => $ replaceLabel ) { if ( isset ( $ report [ $ reportName ] ) ) { $ columnNames = array ( Metrics :: INDEX_NB_ACTIONS => 'referrals' ) ; if ( $ replaceLabel ) { $ columnNames [ Metrics :: INDEX_NB_ACTIONS ] = 'referrals' ; } $ report [ $ reportName ] -> filter ( 'ReplaceColumnNames' , array ( $ columnNames ) ) ; } } return $ report ; }
docstring: General method to get transitions for an action
  
  @param $actionName
  @param $actionType "url"|"title"
  @param $idSite
  @param $period
  @param $date
  @param bool $segment
  @param bool $limitBeforeGrouping
  @param string $parts
  @return array
  @throws Exception
docstring_tokens: General method to get transitions for an action