PluginProbe ʕ •ᴥ•ʔ
Everest Forms – Contact Form, Payment Form, Quiz, Survey & Custom Form Builder with AI / 3.6.0
Everest Forms – Contact Form, Payment Form, Quiz, Survey & Custom Form Builder with AI v3.6.0
3.6.0 3.5.3 3.5.2 3.5.1 3.5.0 3.4.8 3.4.7 3.4.6 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5.1 1.1.6 1.1.7 1.1.8 1.1.9 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 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.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.5.0 1.5.1 1.5.10 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.6.1 1.6.7 1.7.0 1.7.0.1 1.7.0.2 1.7.0.3 1.7.1 1.7.2 1.7.2.1 1.7.2.2 1.7.3 1.7.4 1.7.5 1.7.5.1 1.7.5.2 1.7.6 1.7.7 1.7.7.1 1.7.7.2 1.7.8 1.7.9 1.8.0 1.8.0.1 1.8.1 1.8.2 1.8.2.1 1.8.2.2 1.8.2.3 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9.0 1.9.0.1 1.9.1 1.9.2 1.9.3 1.9.4 1.9.4.1 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.0.1 2.0.1 2.0.2 2.0.3 2.0.3.1 2.0.4 2.0.4.1 2.0.5 2.0.6 2.0.7 2.0.8 2.0.8.1 2.0.9 3.0.0 3.0.0.1 3.0.1 3.0.2 3.0.3 3.0.3.1 3.0.4 3.0.4.1 3.0.4.2 3.0.5 3.0.5.1 3.0.5.2 3.0.6 3.0.6.1 3.0.7.1 3.0.8 3.0.8.1 3.0.9 3.0.9.1 3.0.9.2 3.0.9.3 3.0.9.4 3.0.9.5 3.1.0 3.1.1 3.1.2 3.2.0 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.3.0 3.4.0 3.4.1 3.4.2 3.4.2.1 3.4.3 3.4.4 3.4.5 trunk 1.0 1.0.1 1.0.2 1.0.3
everest-forms / vendor / composer / installers / src / Composer / Installers / BaseInstaller.php
everest-forms / vendor / composer / installers / src / Composer / Installers Last commit date
AglInstaller.php 6 months ago AkauntingInstaller.php 6 months ago AnnotateCmsInstaller.php 6 months ago AsgardInstaller.php 6 months ago AttogramInstaller.php 6 months ago BaseInstaller.php 6 months ago BitrixInstaller.php 6 months ago BonefishInstaller.php 6 months ago CakePHPInstaller.php 6 months ago ChefInstaller.php 6 months ago CiviCrmInstaller.php 6 months ago ClanCatsFrameworkInstaller.php 6 months ago CockpitInstaller.php 6 months ago CodeIgniterInstaller.php 6 months ago Concrete5Installer.php 6 months ago CroogoInstaller.php 6 months ago DecibelInstaller.php 6 months ago DframeInstaller.php 6 months ago DokuWikiInstaller.php 6 months ago DolibarrInstaller.php 6 months ago DrupalInstaller.php 6 months ago ElggInstaller.php 6 months ago EliasisInstaller.php 6 months ago ExpressionEngineInstaller.php 6 months ago EzPlatformInstaller.php 6 months ago FuelInstaller.php 6 months ago FuelphpInstaller.php 6 months ago GravInstaller.php 6 months ago HuradInstaller.php 6 months ago ImageCMSInstaller.php 6 months ago Installer.php 6 months ago ItopInstaller.php 6 months ago KanboardInstaller.php 6 months ago KnownInstaller.php 6 months ago KodiCMSInstaller.php 6 months ago KohanaInstaller.php 6 months ago LanManagementSystemInstaller.php 6 months ago LaravelInstaller.php 6 months ago LavaLiteInstaller.php 6 months ago LithiumInstaller.php 6 months ago MODULEWorkInstaller.php 6 months ago MODXEvoInstaller.php 6 months ago MagentoInstaller.php 6 months ago MajimaInstaller.php 6 months ago MakoInstaller.php 6 months ago MantisBTInstaller.php 6 months ago MauticInstaller.php 6 months ago MayaInstaller.php 6 months ago MediaWikiInstaller.php 6 months ago MiaoxingInstaller.php 6 months ago MicroweberInstaller.php 6 months ago ModxInstaller.php 6 months ago MoodleInstaller.php 6 months ago OctoberInstaller.php 6 months ago OntoWikiInstaller.php 6 months ago OsclassInstaller.php 6 months ago OxidInstaller.php 6 months ago PPIInstaller.php 6 months ago PantheonInstaller.php 6 months ago PhiftyInstaller.php 6 months ago PhpBBInstaller.php 6 months ago PiwikInstaller.php 6 months ago PlentymarketsInstaller.php 6 months ago Plugin.php 6 months ago PortoInstaller.php 6 months ago PrestashopInstaller.php 6 months ago ProcessWireInstaller.php 6 months ago PuppetInstaller.php 6 months ago PxcmsInstaller.php 6 months ago RadPHPInstaller.php 6 months ago ReIndexInstaller.php 6 months ago Redaxo5Installer.php 6 months ago RedaxoInstaller.php 6 months ago RoundcubeInstaller.php 6 months ago SMFInstaller.php 6 months ago ShopwareInstaller.php 6 months ago SilverStripeInstaller.php 6 months ago SiteDirectInstaller.php 6 months ago StarbugInstaller.php 6 months ago SyDESInstaller.php 6 months ago SyliusInstaller.php 6 months ago TaoInstaller.php 6 months ago TastyIgniterInstaller.php 6 months ago TheliaInstaller.php 6 months ago TuskInstaller.php 6 months ago UserFrostingInstaller.php 6 months ago VanillaInstaller.php 6 months ago VgmcpInstaller.php 6 months ago WHMCSInstaller.php 6 months ago WinterInstaller.php 6 months ago WolfCMSInstaller.php 6 months ago WordPressInstaller.php 6 months ago YawikInstaller.php 6 months ago ZendInstaller.php 6 months ago ZikulaInstaller.php 6 months ago
BaseInstaller.php
138 lines
1 <?php
2
3 namespace Composer\Installers;
4
5 use Composer\IO\IOInterface;
6 use Composer\Composer;
7 use Composer\Package\PackageInterface;
8
9 abstract class BaseInstaller
10 {
11 /** @var array<string, string> */
12 protected $locations = array();
13 /** @var Composer */
14 protected $composer;
15 /** @var PackageInterface */
16 protected $package;
17 /** @var IOInterface */
18 protected $io;
19
20 /**
21 * Initializes base installer.
22 */
23 public function __construct(PackageInterface $package, Composer $composer, IOInterface $io)
24 {
25 $this->composer = $composer;
26 $this->package = $package;
27 $this->io = $io;
28 }
29
30 /**
31 * Return the install path based on package type.
32 */
33 public function getInstallPath(PackageInterface $package, string $frameworkType = ''): string
34 {
35 $type = $this->package->getType();
36
37 $prettyName = $this->package->getPrettyName();
38 if (strpos($prettyName, '/') !== false) {
39 list($vendor, $name) = explode('/', $prettyName);
40 } else {
41 $vendor = '';
42 $name = $prettyName;
43 }
44
45 $availableVars = $this->inflectPackageVars(compact('name', 'vendor', 'type'));
46
47 $extra = $package->getExtra();
48 if (!empty($extra['installer-name'])) {
49 $availableVars['name'] = $extra['installer-name'];
50 }
51
52 $extra = $this->composer->getPackage()->getExtra();
53 if (!empty($extra['installer-paths'])) {
54 $customPath = $this->mapCustomInstallPaths($extra['installer-paths'], $prettyName, $type, $vendor);
55 if ($customPath !== false) {
56 return $this->templatePath($customPath, $availableVars);
57 }
58 }
59
60 $packageType = substr($type, strlen($frameworkType) + 1);
61 $locations = $this->getLocations($frameworkType);
62 if (!isset($locations[$packageType])) {
63 throw new \InvalidArgumentException(sprintf('Package type "%s" is not supported', $type));
64 }
65
66 return $this->templatePath($locations[$packageType], $availableVars);
67 }
68
69 /**
70 * For an installer to override to modify the vars per installer.
71 *
72 * @param array<string, string> $vars This will normally receive array{name: string, vendor: string, type: string}
73 * @return array<string, string>
74 */
75 public function inflectPackageVars(array $vars): array
76 {
77 return $vars;
78 }
79
80 /**
81 * Gets the installer's locations
82 *
83 * @return array<string, string> map of package types => install path
84 */
85 public function getLocations(string $frameworkType)
86 {
87 return $this->locations;
88 }
89
90 /**
91 * Replace vars in a path
92 *
93 * @param array<string, string> $vars
94 */
95 protected function templatePath(string $path, array $vars = array()): string
96 {
97 if (strpos($path, '{') !== false) {
98 extract($vars);
99 preg_match_all('@\{\$([A-Za-z0-9_]*)\}@i', $path, $matches);
100 if (!empty($matches[1])) {
101 foreach ($matches[1] as $var) {
102 $path = str_replace('{$' . $var . '}', $$var, $path);
103 }
104 }
105 }
106
107 return $path;
108 }
109
110 /**
111 * Search through a passed paths array for a custom install path.
112 *
113 * @param array<string, string[]|string> $paths
114 * @return string|false
115 */
116 protected function mapCustomInstallPaths(array $paths, string $name, string $type, ?string $vendor = null)
117 {
118 foreach ($paths as $path => $names) {
119 $names = (array) $names;
120 if (in_array($name, $names) || in_array('type:' . $type, $names) || in_array('vendor:' . $vendor, $names)) {
121 return $path;
122 }
123 }
124
125 return false;
126 }
127
128 protected function pregReplace(string $pattern, string $replacement, string $subject): string
129 {
130 $result = preg_replace($pattern, $replacement, $subject);
131 if (null === $result) {
132 throw new \RuntimeException('Failed to run preg_replace with '.$pattern.': '.preg_last_error());
133 }
134
135 return $result;
136 }
137 }
138