PluginProbe
Fluent Booking – The Ultimate Appointments Scheduling, Events Booking, Events Calendar Solution / 1.7.0
Fluent Booking – The Ultimate Appointments Scheduling, Events Booking, Events Calendar Solution v1.7.0
2.4.0 2.3.0 2.2.5 2.2.0 2.1.2 2.1.1 trunk 1.10.0 1.10.01 1.10.02 1.5.0 1.5.01 1.5.02 1.5.1 1.5.10 1.5.20 1.5.21 1.5.22 1.5.23 1.5.24 1.5.25 1.6.0 1.7.0 1.7.1 1.7.2 All 33 releases
fluent-booking / app / ComposerScript.php

ComposerScript.php in Fluent Booking – The Ultimate Appointments Scheduling, Events Booking, Events Calendar Solution 1.7.0, at app/ComposerScript.php

126 lines 4.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace FluentBooking\App;
4
5 use Composer\Script\Event;
6 use InvalidArgumentException;
7 use RecursiveIteratorIterator;
8 use RecursiveDirectoryIterator;
9
10 class ComposerScript
11 {
12 public static function postInstall(Event $event)
13 {
14 static::postUpdate($event);
15 }
16
17 public static function postUpdate(Event $event)
18 {
19 $vendorDir = $event->getComposer()->getConfig()->get('vendor-dir');
20 $composerJson = json_decode(file_get_contents($vendorDir . '/../composer.json'), true);
21 $namespace = $composerJson['extra']['wpfluent']['namespace']['current'];
22
23 if (!$namespace) {
24 throw new InvalidArgumentException("Namespace not set in composer.json file.");
25 }
26
27 $itr = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(
28 $vendorDir.'/wpfluent/framework/src/', RecursiveDirectoryIterator::SKIP_DOTS
29 ), RecursiveIteratorIterator::SELF_FIRST);
30
31 foreach ($itr as $file) {
32 if ($file->isDir()) {
33 continue;
34 }
35
36 $fileName = $file->getPathname();
37
38 $content = file_get_contents($fileName);
39 $content = str_replace(
40 ['WPFluent\\', 'WPFluentPackage\\'],
41 [$namespace . '\\Framework\\', $namespace . '\\'],
42 $content
43 );
44
45 file_put_contents($fileName, $content);
46 }
47
48 static::updateVendorComposerFiles($vendorDir, $namespace);
49 }
50
51 protected static function updateVendorComposerFiles($vendorDir, $namespace)
52 {
53 $composerInstalledJson = json_decode(file_get_contents(
54 $installedJsonFile = $vendorDir . '/composer/installed.json'
55 ), true);
56
57 foreach ($composerInstalledJson['packages'] as &$package) {
58 if ($package['name'] == 'wpfluent/framework') {
59 $package['autoload']['psr-4'] = [
60 $namespace . "\\Framework\\" => "src/WPFluent"
61 ];
62 } else {
63 if(strpos($package['name'], 'wpfluent') === false) {
64 continue;
65 }
66
67 $packageDir = $vendorDir . "/{$package['name']}/src/";
68
69 $iterator = new RecursiveIteratorIterator(
70 new RecursiveDirectoryIterator(
71 $packageDir, RecursiveDirectoryIterator::SKIP_DOTS
72 ),
73 RecursiveIteratorIterator::SELF_FIRST
74 );
75
76 foreach ($iterator as $item) {
77
78 if ($item->isDir()) {
79 continue;
80 }
81
82 $fileName = $item->getPathname();
83 $content = file_get_contents($fileName);
84 $content = str_replace(
85 ['WPFluent\\', 'WPFluentPackage\\'],
86 [$namespace . '\\Framework\\', $namespace . '\\'],
87 $content
88 );
89
90 file_put_contents($fileName, $content);
91 }
92
93 $psr4 = array_keys($package['autoload']['psr-4']);
94
95 $replaced = str_replace(
96 'WPFluentPackage', $namespace, $psr4[0]
97 );
98
99 $package['autoload']['psr-4'] = [
100 $replaced => "src/"
101 ];
102
103 $packageComposerJson = json_decode(file_get_contents(
104 $vendorDir .'/' . $package['name'] . '/composer.json'
105 ), true);
106
107 $packageComposerJson['autoload']['psr-4'] = [
108 $replaced => "src/"
109 ];
110
111 file_put_contents(
112 $vendorDir .'/' . $package['name'] . '/composer.json',
113 json_encode($packageComposerJson, JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES)
114 );
115 }
116 }
117
118 file_put_contents(
119 $installedJsonFile,
120 json_encode($composerInstalledJson, JSON_UNESCAPED_SLASHES|JSON_PRETTY_PRINT)
121 );
122
123 exec('composer dump-autoload');
124 }
125 }
126