original_string: protected function get($archiveNames, $archiveDataType, $idSubtable = null)
      {
          if (!is_array($archiveNames)) {
              $archiveNames = array($archiveNames);
          }
  
          // apply idSubtable
          if ($idSubtable !== null
              && $idSubtable != self::ID_SUBTABLE_LOAD_ALL_SUBTABLES
          ) {
              // this is also done in ArchiveSelector. It should be actually only done in ArchiveSelector but DataCollection
              // does require to have the subtableId appended. Needs to be changed in refactoring to have it only in one
              // place.
              $dataNames = array();
              foreach ($archiveNames as $name) {
                  $dataNames[] = ArchiveSelector::appendIdsubtable($name, $idSubtable);
              }
          } else {
              $dataNames = $archiveNames;
          }
  
          $result = new Archive\DataCollection(
              $dataNames, $archiveDataType, $this->params->getIdSites(), $this->params->getPeriods(), $defaultRow = null);
  
          $archiveIds = $this->getArchiveIds($archiveNames);
          if (empty($archiveIds)) {
              /**
               * Triggered when no archive data is found in an API request.
               * @ignore
               */
              Piwik::postEvent('Archive.noArchivedData');
              return $result;
          }
  
          $archiveData = ArchiveSelector::getArchiveData($archiveIds, $archiveNames, $archiveDataType, $idSubtable);
  
          $isNumeric = $archiveDataType == 'numeric';
  
          foreach ($archiveData as $row) {
              // values are grouped by idsite (site ID), date1-date2 (date range), then name (field name)
              $periodStr = $row['date1'] . ',' . $row['date2'];
  
              if ($isNumeric) {
                  $row['value'] = $this->formatNumericValue($row['value']);
              } else {
                  $result->addMetadata($row['idsite'], $periodStr, DataTable::ARCHIVED_DATE_METADATA_NAME, $row['ts_archived']);
              }
  
              $result->set($row['idsite'], $periodStr, $row['name'], $row['value']);
          }
  
          return $result;
      }
code: protected function get($archiveNames, $archiveDataType, $idSubtable = null)
      {
          if (!is_array($archiveNames)) {
              $archiveNames = array($archiveNames);
          }
  
          // apply idSubtable
          if ($idSubtable !== null
              && $idSubtable != self::ID_SUBTABLE_LOAD_ALL_SUBTABLES
          ) {
              // this is also done in ArchiveSelector. It should be actually only done in ArchiveSelector but DataCollection
              // does require to have the subtableId appended. Needs to be changed in refactoring to have it only in one
              // place.
              $dataNames = array();
              foreach ($archiveNames as $name) {
                  $dataNames[] = ArchiveSelector::appendIdsubtable($name, $idSubtable);
              }
          } else {
              $dataNames = $archiveNames;
          }
  
          $result = new Archive\DataCollection(
              $dataNames, $archiveDataType, $this->params->getIdSites(), $this->params->getPeriods(), $defaultRow = null);
  
          $archiveIds = $this->getArchiveIds($archiveNames);
          if (empty($archiveIds)) {
              /**
               * Triggered when no archive data is found in an API request.
               * @ignore
               */
              Piwik::postEvent('Archive.noArchivedData');
              return $result;
          }
  
          $archiveData = ArchiveSelector::getArchiveData($archiveIds, $archiveNames, $archiveDataType, $idSubtable);
  
          $isNumeric = $archiveDataType == 'numeric';
  
          foreach ($archiveData as $row) {
              // values are grouped by idsite (site ID), date1-date2 (date range), then name (field name)
              $periodStr = $row['date1'] . ',' . $row['date2'];
  
              if ($isNumeric) {
                  $row['value'] = $this->formatNumericValue($row['value']);
              } else {
                  $result->addMetadata($row['idsite'], $periodStr, DataTable::ARCHIVED_DATE_METADATA_NAME, $row['ts_archived']);
              }
  
              $result->set($row['idsite'], $periodStr, $row['name'], $row['value']);
          }
  
          return $result;
      }
code_tokens: protected function get ( $ archiveNames , $ archiveDataType , $ idSubtable = null ) { if ( ! is_array ( $ archiveNames ) ) { $ archiveNames = array ( $ archiveNames ) ; } // apply idSubtable if ( $ idSubtable !== null && $ idSubtable != self :: ID_SUBTABLE_LOAD_ALL_SUBTABLES ) { // this is also done in ArchiveSelector. It should be actually only done in ArchiveSelector but DataCollection // does require to have the subtableId appended. Needs to be changed in refactoring to have it only in one // place. $ dataNames = array ( ) ; foreach ( $ archiveNames as $ name ) { $ dataNames [ ] = ArchiveSelector :: appendIdsubtable ( $ name , $ idSubtable ) ; } } else { $ dataNames = $ archiveNames ; } $ result = new Archive \ DataCollection ( $ dataNames , $ archiveDataType , $ this -> params -> getIdSites ( ) , $ this -> params -> getPeriods ( ) , $ defaultRow = null ) ; $ archiveIds = $ this -> getArchiveIds ( $ archiveNames ) ; if ( empty ( $ archiveIds ) ) { /**
               * Triggered when no archive data is found in an API request.
               * @ignore
               */ Piwik :: postEvent ( 'Archive.noArchivedData' ) ; return $ result ; } $ archiveData = ArchiveSelector :: getArchiveData ( $ archiveIds , $ archiveNames , $ archiveDataType , $ idSubtable ) ; $ isNumeric = $ archiveDataType == 'numeric' ; foreach ( $ archiveData as $ row ) { // values are grouped by idsite (site ID), date1-date2 (date range), then name (field name) $ periodStr = $ row [ 'date1' ] . ',' . $ row [ 'date2' ] ; if ( $ isNumeric ) { $ row [ 'value' ] = $ this -> formatNumericValue ( $ row [ 'value' ] ) ; } else { $ result -> addMetadata ( $ row [ 'idsite' ] , $ periodStr , DataTable :: ARCHIVED_DATE_METADATA_NAME , $ row [ 'ts_archived' ] ) ; } $ result -> set ( $ row [ 'idsite' ] , $ periodStr , $ row [ 'name' ] , $ row [ 'value' ] ) ; } return $ result ; }
docstring: Queries archive tables for data and returns the result.
  @param array|string $archiveNames
  @param $archiveDataType
  @param null|int $idSubtable
  @return Archive\DataCollection
docstring_tokens: Queries archive tables for data and returns the result .