original_string: public function getComponentsWithNewVersion($componentsToCheck)
      {
          $componentsToUpdate = array();
  
          // we make sure core updates are processed before any plugin updates
          if (isset($componentsToCheck['core'])) {
              $coreVersions = $componentsToCheck['core'];
              unset($componentsToCheck['core']);
              $componentsToCheck = array_merge(array('core' => $coreVersions), $componentsToCheck);
          }
  
          $recordedCoreVersion = $this->getCurrentComponentVersion('core');
          if (empty($recordedCoreVersion)) {
              // This should not happen
              $recordedCoreVersion = Version::VERSION;
              $this->markComponentSuccessfullyUpdated('core', $recordedCoreVersion);
          }
  
          foreach ($componentsToCheck as $name => $version) {
              $currentVersion = $this->getCurrentComponentVersion($name);
  
              if (ColumnUpdater::isDimensionComponent($name)) {
                  $isComponentOutdated = $currentVersion !== $version;
              } else {
                  // note: when versionCompare == 1, the version in the DB is newer, we choose to ignore
                  $isComponentOutdated = version_compare($currentVersion, $version) == -1;
              }
  
              if ($isComponentOutdated || $currentVersion === false) {
                  $componentsToUpdate[$name] = array(
                      self::INDEX_CURRENT_VERSION => $currentVersion,
                      self::INDEX_NEW_VERSION     => $version
                  );
              }
          }
  
          return $componentsToUpdate;
      }
code: public function getComponentsWithNewVersion($componentsToCheck)
      {
          $componentsToUpdate = array();
  
          // we make sure core updates are processed before any plugin updates
          if (isset($componentsToCheck['core'])) {
              $coreVersions = $componentsToCheck['core'];
              unset($componentsToCheck['core']);
              $componentsToCheck = array_merge(array('core' => $coreVersions), $componentsToCheck);
          }
  
          $recordedCoreVersion = $this->getCurrentComponentVersion('core');
          if (empty($recordedCoreVersion)) {
              // This should not happen
              $recordedCoreVersion = Version::VERSION;
              $this->markComponentSuccessfullyUpdated('core', $recordedCoreVersion);
          }
  
          foreach ($componentsToCheck as $name => $version) {
              $currentVersion = $this->getCurrentComponentVersion($name);
  
              if (ColumnUpdater::isDimensionComponent($name)) {
                  $isComponentOutdated = $currentVersion !== $version;
              } else {
                  // note: when versionCompare == 1, the version in the DB is newer, we choose to ignore
                  $isComponentOutdated = version_compare($currentVersion, $version) == -1;
              }
  
              if ($isComponentOutdated || $currentVersion === false) {
                  $componentsToUpdate[$name] = array(
                      self::INDEX_CURRENT_VERSION => $currentVersion,
                      self::INDEX_NEW_VERSION     => $version
                  );
              }
          }
  
          return $componentsToUpdate;
      }
code_tokens: public function getComponentsWithNewVersion ( $ componentsToCheck ) { $ componentsToUpdate = array ( ) ; // we make sure core updates are processed before any plugin updates if ( isset ( $ componentsToCheck [ 'core' ] ) ) { $ coreVersions = $ componentsToCheck [ 'core' ] ; unset ( $ componentsToCheck [ 'core' ] ) ; $ componentsToCheck = array_merge ( array ( 'core' => $ coreVersions ) , $ componentsToCheck ) ; } $ recordedCoreVersion = $ this -> getCurrentComponentVersion ( 'core' ) ; if ( empty ( $ recordedCoreVersion ) ) { // This should not happen $ recordedCoreVersion = Version :: VERSION ; $ this -> markComponentSuccessfullyUpdated ( 'core' , $ recordedCoreVersion ) ; } foreach ( $ componentsToCheck as $ name => $ version ) { $ currentVersion = $ this -> getCurrentComponentVersion ( $ name ) ; if ( ColumnUpdater :: isDimensionComponent ( $ name ) ) { $ isComponentOutdated = $ currentVersion !== $ version ; } else { // note: when versionCompare == 1, the version in the DB is newer, we choose to ignore $ isComponentOutdated = version_compare ( $ currentVersion , $ version ) == - 1 ; } if ( $ isComponentOutdated || $ currentVersion === false ) { $ componentsToUpdate [ $ name ] = array ( self :: INDEX_CURRENT_VERSION => $ currentVersion , self :: INDEX_NEW_VERSION => $ version ) ; } } return $ componentsToUpdate ; }
docstring: Construct list of outdated components
  
  @param string[] $componentsToCheck An array mapping component names to the latest locally available version.
  If the version is later than the currently installed version, the component
  must be upgraded.
  
  Example: `array('core' => '2.11.0')`
  @throws \Exception
  @return array array( componentName => array( oldVersion, newVersion), [...])
docstring_tokens: Construct list of outdated components