MediaWiki  REL1_23
ComposerPackageModifier.php
Go to the documentation of this file.
00001 <?php
00002 
00003 use Composer\Package\Link;
00004 use Composer\Package\LinkConstraint\VersionConstraint;
00005 use Composer\Package\Package;
00006 
00011 class ComposerPackageModifier {
00012 
00013     const MEDIAWIKI_PACKAGE_NAME = 'mediawiki/mediawiki';
00014 
00015     protected $package;
00016     protected $versionNormalizer;
00017     protected $versionFetcher;
00018 
00019     public function __construct( Package $package, ComposerVersionNormalizer $versionNormalizer, MediaWikiVersionFetcher $versionFetcher ) {
00020         $this->package = $package;
00021         $this->versionNormalizer = $versionNormalizer;
00022         $this->versionFetcher = $versionFetcher;
00023     }
00024 
00025     public function setProvidesMediaWiki() {
00026         $this->setLinkAsProvides( $this->newMediaWikiLink() );
00027     }
00028 
00029     private function setLinkAsProvides( Link $link ) {
00030         $this->package->setProvides( array( $link ) );
00031     }
00032 
00033     private function newMediaWikiLink() {
00034         $version = $this->getMediaWikiVersionConstraint();
00035 
00036         $link = new Link(
00037             '__root__',
00038             self::MEDIAWIKI_PACKAGE_NAME,
00039             $version,
00040             'provides',
00041             $version->getPrettyString()
00042         );
00043 
00044         return $link;
00045     }
00046 
00047     private function getMediaWikiVersionConstraint() {
00048         $mvVersion = $this->versionFetcher->fetchVersion();
00049         $mvVersion = $this->versionNormalizer->normalizeSuffix( $mvVersion );
00050 
00051         $version = new VersionConstraint( '==', $this->versionNormalizer->normalizeLevelCount( $mvVersion ) );
00052         $version->setPrettyString( $mvVersion );
00053 
00054         return $version;
00055     }
00056 
00057 }