PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.6.4
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.6.4
4.6.6 4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.0 4.5.1 4.5.0 4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / vendor / composer / installers / src / Composer / Installers / BaseInstaller.php
surecart / vendor / composer / installers / src / Composer / Installers Last commit date
AglInstaller.php 4 years ago AimeosInstaller.php 4 years ago AnnotateCmsInstaller.php 4 years ago AsgardInstaller.php 4 years ago AttogramInstaller.php 4 years ago BaseInstaller.php 4 years ago BitrixInstaller.php 4 years ago BonefishInstaller.php 4 years ago CakePHPInstaller.php 4 years ago ChefInstaller.php 4 years ago CiviCrmInstaller.php 4 years ago ClanCatsFrameworkInstaller.php 4 years ago CockpitInstaller.php 4 years ago CodeIgniterInstaller.php 4 years ago Concrete5Installer.php 4 years ago CraftInstaller.php 4 years ago CroogoInstaller.php 4 years ago DecibelInstaller.php 4 years ago DframeInstaller.php 4 years ago DokuWikiInstaller.php 4 years ago DolibarrInstaller.php 4 years ago DrupalInstaller.php 4 years ago ElggInstaller.php 4 years ago EliasisInstaller.php 4 years ago ExpressionEngineInstaller.php 4 years ago EzPlatformInstaller.php 4 years ago FuelInstaller.php 4 years ago FuelphpInstaller.php 4 years ago GravInstaller.php 4 years ago HuradInstaller.php 4 years ago ImageCMSInstaller.php 4 years ago Installer.php 4 years ago ItopInstaller.php 4 years ago JoomlaInstaller.php 4 years ago KanboardInstaller.php 4 years ago KirbyInstaller.php 4 years ago KnownInstaller.php 4 years ago KodiCMSInstaller.php 4 years ago KohanaInstaller.php 4 years ago LanManagementSystemInstaller.php 4 years ago LaravelInstaller.php 4 years ago LavaLiteInstaller.php 4 years ago LithiumInstaller.php 4 years ago MODULEWorkInstaller.php 4 years ago MODXEvoInstaller.php 4 years ago MagentoInstaller.php 4 years ago MajimaInstaller.php 4 years ago MakoInstaller.php 4 years ago MantisBTInstaller.php 4 years ago MauticInstaller.php 4 years ago MayaInstaller.php 4 years ago MediaWikiInstaller.php 4 years ago MiaoxingInstaller.php 4 years ago MicroweberInstaller.php 4 years ago ModxInstaller.php 4 years ago MoodleInstaller.php 4 years ago OctoberInstaller.php 4 years ago OntoWikiInstaller.php 4 years ago OsclassInstaller.php 4 years ago OxidInstaller.php 4 years ago PPIInstaller.php 4 years ago PantheonInstaller.php 4 years ago PhiftyInstaller.php 4 years ago PhpBBInstaller.php 4 years ago PimcoreInstaller.php 4 years ago PiwikInstaller.php 4 years ago PlentymarketsInstaller.php 4 years ago Plugin.php 4 years ago PortoInstaller.php 4 years ago PrestashopInstaller.php 4 years ago ProcessWireInstaller.php 4 years ago PuppetInstaller.php 4 years ago PxcmsInstaller.php 4 years ago RadPHPInstaller.php 4 years ago ReIndexInstaller.php 4 years ago Redaxo5Installer.php 4 years ago RedaxoInstaller.php 4 years ago RoundcubeInstaller.php 4 years ago SMFInstaller.php 4 years ago ShopwareInstaller.php 4 years ago SilverStripeInstaller.php 4 years ago SiteDirectInstaller.php 4 years ago StarbugInstaller.php 4 years ago SyDESInstaller.php 4 years ago SyliusInstaller.php 4 years ago Symfony1Installer.php 4 years ago TYPO3CmsInstaller.php 4 years ago TYPO3FlowInstaller.php 4 years ago TaoInstaller.php 4 years ago TastyIgniterInstaller.php 4 years ago TheliaInstaller.php 4 years ago TuskInstaller.php 4 years ago UserFrostingInstaller.php 4 years ago VanillaInstaller.php 4 years ago VgmcpInstaller.php 4 years ago WHMCSInstaller.php 4 years ago WinterInstaller.php 4 years ago WolfCMSInstaller.php 4 years ago WordPressInstaller.php 4 years ago YawikInstaller.php 4 years ago ZendInstaller.php 4 years ago ZikulaInstaller.php 4 years ago
BaseInstaller.php
138 lines
1 <?php
2 namespace Composer\Installers;
3
4 use Composer\IO\IOInterface;
5 use Composer\Composer;
6 use Composer\Package\PackageInterface;
7
8 abstract class BaseInstaller
9 {
10 protected $locations = array();
11 protected $composer;
12 protected $package;
13 protected $io;
14
15 /**
16 * Initializes base installer.
17 *
18 * @param PackageInterface $package
19 * @param Composer $composer
20 * @param IOInterface $io
21 */
22 public function __construct(PackageInterface $package = null, Composer $composer = null, IOInterface $io = null)
23 {
24 $this->composer = $composer;
25 $this->package = $package;
26 $this->io = $io;
27 }
28
29 /**
30 * Return the install path based on package type.
31 *
32 * @param PackageInterface $package
33 * @param string $frameworkType
34 * @return string
35 */
36 public function getInstallPath(PackageInterface $package, $frameworkType = '')
37 {
38 $type = $this->package->getType();
39
40 $prettyName = $this->package->getPrettyName();
41 if (strpos($prettyName, '/') !== false) {
42 list($vendor, $name) = explode('/', $prettyName);
43 } else {
44 $vendor = '';
45 $name = $prettyName;
46 }
47
48 $availableVars = $this->inflectPackageVars(compact('name', 'vendor', 'type'));
49
50 $extra = $package->getExtra();
51 if (!empty($extra['installer-name'])) {
52 $availableVars['name'] = $extra['installer-name'];
53 }
54
55 if ($this->composer->getPackage()) {
56 $extra = $this->composer->getPackage()->getExtra();
57 if (!empty($extra['installer-paths'])) {
58 $customPath = $this->mapCustomInstallPaths($extra['installer-paths'], $prettyName, $type, $vendor);
59 if ($customPath !== false) {
60 return $this->templatePath($customPath, $availableVars);
61 }
62 }
63 }
64
65 $packageType = substr($type, strlen($frameworkType) + 1);
66 $locations = $this->getLocations();
67 if (!isset($locations[$packageType])) {
68 throw new \InvalidArgumentException(sprintf('Package type "%s" is not supported', $type));
69 }
70
71 return $this->templatePath($locations[$packageType], $availableVars);
72 }
73
74 /**
75 * For an installer to override to modify the vars per installer.
76 *
77 * @param array<string, string> $vars This will normally receive array{name: string, vendor: string, type: string}
78 * @return array<string, string>
79 */
80 public function inflectPackageVars($vars)
81 {
82 return $vars;
83 }
84
85 /**
86 * Gets the installer's locations
87 *
88 * @return array<string, string> map of package types => install path
89 */
90 public function getLocations()
91 {
92 return $this->locations;
93 }
94
95 /**
96 * Replace vars in a path
97 *
98 * @param string $path
99 * @param array<string, string> $vars
100 * @return string
101 */
102 protected function templatePath($path, array $vars = array())
103 {
104 if (strpos($path, '{') !== false) {
105 extract($vars);
106 preg_match_all('@\{\$([A-Za-z0-9_]*)\}@i', $path, $matches);
107 if (!empty($matches[1])) {
108 foreach ($matches[1] as $var) {
109 $path = str_replace('{$' . $var . '}', $$var, $path);
110 }
111 }
112 }
113
114 return $path;
115 }
116
117 /**
118 * Search through a passed paths array for a custom install path.
119 *
120 * @param array $paths
121 * @param string $name
122 * @param string $type
123 * @param string $vendor = NULL
124 * @return string|false
125 */
126 protected function mapCustomInstallPaths(array $paths, $name, $type, $vendor = NULL)
127 {
128 foreach ($paths as $path => $names) {
129 $names = (array) $names;
130 if (in_array($name, $names) || in_array('type:' . $type, $names) || in_array('vendor:' . $vendor, $names)) {
131 return $path;
132 }
133 }
134
135 return false;
136 }
137 }
138