MediaWiki  REL1_24
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,
00020         ComposerVersionNormalizer $versionNormalizer, MediaWikiVersionFetcher $versionFetcher
00021     ) {
00022         $this->package = $package;
00023         $this->versionNormalizer = $versionNormalizer;
00024         $this->versionFetcher = $versionFetcher;
00025     }
00026 
00027     public function setProvidesMediaWiki() {
00028         $this->setLinkAsProvides( $this->newMediaWikiLink() );
00029     }
00030 
00031     private function setLinkAsProvides( Link $link ) {
00032         $this->package->setProvides( array( $link ) );
00033     }
00034 
00035     private function newMediaWikiLink() {
00036         $version = $this->getMediaWikiVersionConstraint();
00037 
00038         $link = new Link(
00039             '__root__',
00040             self::MEDIAWIKI_PACKAGE_NAME,
00041             $version,
00042             'provides',
00043             $version->getPrettyString()
00044         );
00045 
00046         return $link;
00047     }
00048 
00049     private function getMediaWikiVersionConstraint() {
00050         $mvVersion = $this->versionFetcher->fetchVersion();
00051         $mvVersion = $this->versionNormalizer->normalizeSuffix( $mvVersion );
00052 
00053         $version = new VersionConstraint(
00054             '==',
00055             $this->versionNormalizer->normalizeLevelCount( $mvVersion )
00056         );
00057         $version->setPrettyString( $mvVersion );
00058 
00059         return $version;
00060     }
00061 
00062 }