original_string: protected function getApiMethodForSubtable($request)
      {
          if (!$this->apiMethodForSubtable) {
              if (!empty($request['idSite'])) {
                  $idSite = $request['idSite'];
              } else {
                  $idSite = 'all';
              }
  
              $apiParameters = array();
              $entityNames = StaticContainer::get('entities.idNames');
              foreach ($entityNames as $idName) {
                  if (!empty($request[$idName])) {
                      $apiParameters[$idName] = $request[$idName];
                  }
              }
  
              $meta = API::getInstance()->getMetadata($idSite, $this->apiModule, $this->apiMethod, $apiParameters);
  
              if (empty($meta) && array_key_exists('idGoal', $apiParameters)) {
                  unset($apiParameters['idGoal']);
                  $meta = API::getInstance()->getMetadata($idSite, $this->apiModule, $this->apiMethod, $apiParameters);
              }
  
              if (empty($meta)) {
                  throw new Exception(sprintf(
                      "The DataTable cannot be manipulated: Metadata for report %s.%s could not be found. You can define the metadata in a hook, see example at: https://developer.matomo.org/api-reference/events#apigetreportmetadata",
                      $this->apiModule, $this->apiMethod
                  ));
              }
  
              if (isset($meta[0]['actionToLoadSubTables'])) {
                  $this->apiMethodForSubtable = $meta[0]['actionToLoadSubTables'];
              } else {
                  $this->apiMethodForSubtable = $this->apiMethod;
              }
          }
          return $this->apiMethodForSubtable;
      }
code: protected function getApiMethodForSubtable($request)
      {
          if (!$this->apiMethodForSubtable) {
              if (!empty($request['idSite'])) {
                  $idSite = $request['idSite'];
              } else {
                  $idSite = 'all';
              }
  
              $apiParameters = array();
              $entityNames = StaticContainer::get('entities.idNames');
              foreach ($entityNames as $idName) {
                  if (!empty($request[$idName])) {
                      $apiParameters[$idName] = $request[$idName];
                  }
              }
  
              $meta = API::getInstance()->getMetadata($idSite, $this->apiModule, $this->apiMethod, $apiParameters);
  
              if (empty($meta) && array_key_exists('idGoal', $apiParameters)) {
                  unset($apiParameters['idGoal']);
                  $meta = API::getInstance()->getMetadata($idSite, $this->apiModule, $this->apiMethod, $apiParameters);
              }
  
              if (empty($meta)) {
                  throw new Exception(sprintf(
                      "The DataTable cannot be manipulated: Metadata for report %s.%s could not be found. You can define the metadata in a hook, see example at: https://developer.matomo.org/api-reference/events#apigetreportmetadata",
                      $this->apiModule, $this->apiMethod
                  ));
              }
  
              if (isset($meta[0]['actionToLoadSubTables'])) {
                  $this->apiMethodForSubtable = $meta[0]['actionToLoadSubTables'];
              } else {
                  $this->apiMethodForSubtable = $this->apiMethod;
              }
          }
          return $this->apiMethodForSubtable;
      }
code_tokens: protected function getApiMethodForSubtable ( $ request ) { if ( ! $ this -> apiMethodForSubtable ) { if ( ! empty ( $ request [ 'idSite' ] ) ) { $ idSite = $ request [ 'idSite' ] ; } else { $ idSite = 'all' ; } $ apiParameters = array ( ) ; $ entityNames = StaticContainer :: get ( 'entities.idNames' ) ; foreach ( $ entityNames as $ idName ) { if ( ! empty ( $ request [ $ idName ] ) ) { $ apiParameters [ $ idName ] = $ request [ $ idName ] ; } } $ meta = API :: getInstance ( ) -> getMetadata ( $ idSite , $ this -> apiModule , $ this -> apiMethod , $ apiParameters ) ; if ( empty ( $ meta ) && array_key_exists ( 'idGoal' , $ apiParameters ) ) { unset ( $ apiParameters [ 'idGoal' ] ) ; $ meta = API :: getInstance ( ) -> getMetadata ( $ idSite , $ this -> apiModule , $ this -> apiMethod , $ apiParameters ) ; } if ( empty ( $ meta ) ) { throw new Exception ( sprintf ( "The DataTable cannot be manipulated: Metadata for report %s.%s could not be found. You can define the metadata in a hook, see example at: https://developer.matomo.org/api-reference/events#apigetreportmetadata" , $ this -> apiModule , $ this -> apiMethod ) ) ; } if ( isset ( $ meta [ 0 ] [ 'actionToLoadSubTables' ] ) ) { $ this -> apiMethodForSubtable = $ meta [ 0 ] [ 'actionToLoadSubTables' ] ; } else { $ this -> apiMethodForSubtable = $ this -> apiMethod ; } } return $ this -> apiMethodForSubtable ; }
docstring: Extract the API method for loading subtables from the meta data
  
  @throws Exception
  @return string
docstring_tokens: Extract the API method for loading subtables from the meta data