PluginProbe ʕ •ᴥ•ʔ
Presto Player / trunk
Presto Player vtrunk
4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.4 4.2.3 4.2.2 4.2.0 4.2.1 trunk 1.10.0 1.10.1 1.10.2 1.11.0 1.12.0 1.13.0 1.14.0 1.14.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.13 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 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.8.6 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.2.0 2.2.1 2.2.2 2.2.3 2.2.3-beta1 2.3.0 2.3.1 2.3.2 2.3.3 3.0.0 3.0.0-beta1 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.1.0 3.1.1 3.1.2 3.1.3 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4
presto-player / vendor / composer / installers / src / Composer / Installers / BitrixInstaller.php
presto-player / vendor / composer / installers / src / Composer / Installers Last commit date
AglInstaller.php 4 years ago AkauntingInstaller.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 BotbleInstaller.php 11 months ago CakePHPInstaller.php 11 months 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 ConcreteCMSInstaller.php 11 months 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 11 months ago ElggInstaller.php 4 years ago EliasisInstaller.php 4 years ago ExpressionEngineInstaller.php 4 years ago EzPlatformInstaller.php 4 years ago ForkCMSInstaller.php 11 months 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 11 months ago ItopInstaller.php 4 years ago KanboardInstaller.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 MatomoInstaller.php 2 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 11 months 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 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 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
BitrixInstaller.php
124 lines
1 <?php
2
3 namespace Composer\Installers;
4
5 use Composer\Util\Filesystem;
6
7 /**
8 * Installer for Bitrix Framework. Supported types of extensions:
9 * - `bitrix-d7-module` — copy the module to directory `bitrix/modules/<vendor>.<name>`.
10 * - `bitrix-d7-component` — copy the component to directory `bitrix/components/<vendor>/<name>`.
11 * - `bitrix-d7-template` — copy the template to directory `bitrix/templates/<vendor>_<name>`.
12 *
13 * You can set custom path to directory with Bitrix kernel in `composer.json`:
14 *
15 * ```json
16 * {
17 * "extra": {
18 * "bitrix-dir": "s1/bitrix"
19 * }
20 * }
21 * ```
22 *
23 * @author Nik Samokhvalov <nik@samokhvalov.info>
24 * @author Denis Kulichkin <onexhovia@gmail.com>
25 */
26 class BitrixInstaller extends BaseInstaller
27 {
28 /** @var array<string, string> */
29 protected $locations = array(
30 'module' => '{$bitrix_dir}/modules/{$name}/', // deprecated, remove on the major release (Backward compatibility will be broken)
31 'component' => '{$bitrix_dir}/components/{$name}/', // deprecated, remove on the major release (Backward compatibility will be broken)
32 'theme' => '{$bitrix_dir}/templates/{$name}/', // deprecated, remove on the major release (Backward compatibility will be broken)
33 'd7-module' => '{$bitrix_dir}/modules/{$vendor}.{$name}/',
34 'd7-component' => '{$bitrix_dir}/components/{$vendor}/{$name}/',
35 'd7-template' => '{$bitrix_dir}/templates/{$vendor}_{$name}/',
36 );
37
38 /**
39 * @var string[] Storage for informations about duplicates at all the time of installation packages.
40 */
41 private static $checkedDuplicates = array();
42
43 public function inflectPackageVars(array $vars): array
44 {
45 /** @phpstan-ignore-next-line */
46 if ($this->composer->getPackage()) {
47 $extra = $this->composer->getPackage()->getExtra();
48
49 if (isset($extra['bitrix-dir'])) {
50 $vars['bitrix_dir'] = $extra['bitrix-dir'];
51 }
52 }
53
54 if (!isset($vars['bitrix_dir'])) {
55 $vars['bitrix_dir'] = 'bitrix';
56 }
57
58 return parent::inflectPackageVars($vars);
59 }
60
61 /**
62 * {@inheritdoc}
63 */
64 protected function templatePath(string $path, array $vars = array()): string
65 {
66 $templatePath = parent::templatePath($path, $vars);
67 $this->checkDuplicates($templatePath, $vars);
68
69 return $templatePath;
70 }
71
72 /**
73 * Duplicates search packages.
74 *
75 * @param array<string, string> $vars
76 */
77 protected function checkDuplicates(string $path, array $vars = array()): void
78 {
79 $packageType = substr($vars['type'], strlen('bitrix') + 1);
80 $localDir = explode('/', $vars['bitrix_dir']);
81 array_pop($localDir);
82 $localDir[] = 'local';
83 $localDir = implode('/', $localDir);
84
85 $oldPath = str_replace(
86 array('{$bitrix_dir}', '{$name}'),
87 array($localDir, $vars['name']),
88 $this->locations[$packageType]
89 );
90
91 if (in_array($oldPath, static::$checkedDuplicates)) {
92 return;
93 }
94
95 if ($oldPath !== $path && file_exists($oldPath) && $this->io->isInteractive()) {
96 $this->io->writeError(' <error>Duplication of packages:</error>');
97 $this->io->writeError(' <info>Package ' . $oldPath . ' will be called instead package ' . $path . '</info>');
98
99 while (true) {
100 switch ($this->io->ask(' <info>Delete ' . $oldPath . ' [y,n,?]?</info> ', '?')) {
101 case 'y':
102 $fs = new Filesystem();
103 $fs->removeDirectory($oldPath);
104 break 2;
105
106 case 'n':
107 break 2;
108
109 case '?':
110 default:
111 $this->io->writeError(array(
112 ' y - delete package ' . $oldPath . ' and to continue with the installation',
113 ' n - don\'t delete and to continue with the installation',
114 ));
115 $this->io->writeError(' ? - print help');
116 break;
117 }
118 }
119 }
120
121 static::$checkedDuplicates[] = $oldPath;
122 }
123 }
124