PluginProbe ʕ •ᴥ•ʔ
Nested Pages / 3.2.14
Nested Pages v3.2.14
3.3.1 3.2.15 3.2.14 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 trunk 1.0 1.1 1.1.1 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.2.0 1.2.1 1.3.0 1.3.1 1.3.10 1.3.11 1.3.12 1.3.13 1.3.14 1.3.15 1.3.2 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.6.1 1.6.2 1.6.3 1.6.3.1 1.6.3.2 1.6.4 1.6.5 1.6.5.1 1.6.5.2 1.6.6 1.6.7 1.6.8 1.7.0 1.7.1 2.0.1 2.0.2 2.0.3 2.0.4 3.0.1 3.0.10 3.0.11 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.20 3.1.21 3.1.22 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7
wp-nested-pages / vendor / composer / installers / src / Composer / Installers / BaseInstaller.php
wp-nested-pages / vendor / composer / installers / src / Composer / Installers Last commit date
AglInstaller.php 11 years ago AnnotateCmsInstaller.php 11 years ago BaseInstaller.php 11 years ago CakePHPInstaller.php 11 years ago CodeIgniterInstaller.php 11 years ago CroogoInstaller.php 11 years ago DrupalInstaller.php 11 years ago FuelInstaller.php 11 years ago Installer.php 11 years ago JoomlaInstaller.php 11 years ago KohanaInstaller.php 11 years ago LaravelInstaller.php 11 years ago LithiumInstaller.php 11 years ago MODULEWorkInstaller.php 11 years ago MagentoInstaller.php 11 years ago MakoInstaller.php 11 years ago MediaWikiInstaller.php 11 years ago OxidInstaller.php 11 years ago PPIInstaller.php 11 years ago PhpBBInstaller.php 11 years ago SilverStripeInstaller.php 11 years ago Symfony1Installer.php 11 years ago TYPO3CmsInstaller.php 11 years ago TYPO3FlowInstaller.php 11 years ago WordPressInstaller.php 11 years ago ZendInstaller.php 11 years ago
BaseInstaller.php
131 lines
1 <?php
2 namespace Composer\Installers;
3
4 use Composer\Composer;
5 use Composer\Package\PackageInterface;
6
7 abstract class BaseInstaller
8 {
9 protected $locations = array();
10 protected $composer;
11 protected $package;
12
13 /**
14 * Initializes base installer.
15 *
16 * @param PackageInterface $package
17 * @param Composer $composer
18 */
19 public function __construct(PackageInterface $package = null, Composer $composer = null)
20 {
21 $this->composer = $composer;
22 $this->package = $package;
23 }
24
25 /**
26 * Return the install path based on package type.
27 *
28 * @param PackageInterface $package
29 * @param string $frameworkType
30 * @return string
31 */
32 public function getInstallPath(PackageInterface $package, $frameworkType = '')
33 {
34 $type = $this->package->getType();
35
36 $prettyName = $this->package->getPrettyName();
37 if (strpos($prettyName, '/') !== false) {
38 list($vendor, $name) = explode('/', $prettyName);
39 } else {
40 $vendor = '';
41 $name = $prettyName;
42 }
43
44 $availableVars = $this->inflectPackageVars(compact('name', 'vendor', 'type'));
45
46 $extra = $package->getExtra();
47 if (!empty($extra['installer-name'])) {
48 $availableVars['name'] = $extra['installer-name'];
49 }
50
51 if ($this->composer->getPackage()) {
52 $extra = $this->composer->getPackage()->getExtra();
53 if (!empty($extra['installer-paths'])) {
54 $customPath = $this->mapCustomInstallPaths($extra['installer-paths'], $prettyName, $type);
55 if ($customPath !== false) {
56 return $this->templatePath($customPath, $availableVars);
57 }
58 }
59 }
60
61 $packageType = substr($type, strlen($frameworkType) + 1);
62 if (!isset($this->locations[$packageType])) {
63 throw new \InvalidArgumentException(sprintf('Package type "%s" is not supported', $type));
64 }
65
66 return $this->templatePath($this->locations[$packageType], $availableVars);
67 }
68
69 /**
70 * For an installer to override to modify the vars per installer.
71 *
72 * @param array $vars
73 * @return array
74 */
75 public function inflectPackageVars($vars)
76 {
77 return $vars;
78 }
79
80 /**
81 * Gets the installer's locations
82 *
83 * @return array
84 */
85 public function getLocations()
86 {
87 return $this->locations;
88 }
89
90 /**
91 * Replace vars in a path
92 *
93 * @param string $path
94 * @param array $vars
95 * @return string
96 */
97 protected function templatePath($path, array $vars = array())
98 {
99 if (strpos($path, '{') !== false) {
100 extract($vars);
101 preg_match_all('@\{\$([A-Za-z0-9_]*)\}@i', $path, $matches);
102 if (!empty($matches[1])) {
103 foreach ($matches[1] as $var) {
104 $path = str_replace('{$' . $var . '}', $$var, $path);
105 }
106 }
107 }
108
109 return $path;
110 }
111
112 /**
113 * Search through a passed paths array for a custom install path.
114 *
115 * @param array $paths
116 * @param string $name
117 * @param string $type
118 * @return string
119 */
120 protected function mapCustomInstallPaths(array $paths, $name, $type)
121 {
122 foreach ($paths as $path => $names) {
123 if (in_array($name, $names) || in_array('type:' . $type, $names)) {
124 return $path;
125 }
126 }
127
128 return false;
129 }
130 }
131