PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.2.0
Independent Analytics – WordPress Analytics Plugin v2.2.0
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / vendor / illuminate / database / Migrations / MigrationCreator.php
independent-analytics / vendor / illuminate / database / Migrations Last commit date
stubs 3 years ago DatabaseMigrationRepository.php 2 years ago Migration.php 2 years ago MigrationCreator.php 2 years ago MigrationRepositoryInterface.php 2 years ago Migrator.php 2 years ago
MigrationCreator.php
198 lines
1 <?php
2
3 namespace IAWP_SCOPED\Illuminate\Database\Migrations;
4
5 use Closure;
6 use IAWP_SCOPED\Illuminate\Filesystem\Filesystem;
7 use IAWP_SCOPED\Illuminate\Support\Str;
8 use InvalidArgumentException;
9 /** @internal */
10 class MigrationCreator
11 {
12 /**
13 * The filesystem instance.
14 *
15 * @var \Illuminate\Filesystem\Filesystem
16 */
17 protected $files;
18 /**
19 * The custom app stubs directory.
20 *
21 * @var string
22 */
23 protected $customStubPath;
24 /**
25 * The registered post create hooks.
26 *
27 * @var array
28 */
29 protected $postCreate = [];
30 /**
31 * Create a new migration creator instance.
32 *
33 * @param \Illuminate\Filesystem\Filesystem $files
34 * @param string $customStubPath
35 * @return void
36 */
37 public function __construct(Filesystem $files, $customStubPath)
38 {
39 $this->files = $files;
40 $this->customStubPath = $customStubPath;
41 }
42 /**
43 * Create a new migration at the given path.
44 *
45 * @param string $name
46 * @param string $path
47 * @param string|null $table
48 * @param bool $create
49 * @return string
50 *
51 * @throws \Exception
52 */
53 public function create($name, $path, $table = null, $create = \false)
54 {
55 $this->ensureMigrationDoesntAlreadyExist($name, $path);
56 // First we will get the stub file for the migration, which serves as a type
57 // of template for the migration. Once we have those we will populate the
58 // various place-holders, save the file, and run the post create event.
59 $stub = $this->getStub($table, $create);
60 $path = $this->getPath($name, $path);
61 $this->files->ensureDirectoryExists(\dirname($path));
62 $this->files->put($path, $this->populateStub($name, $stub, $table));
63 // Next, we will fire any hooks that are supposed to fire after a migration is
64 // created. Once that is done we'll be ready to return the full path to the
65 // migration file so it can be used however it's needed by the developer.
66 $this->firePostCreateHooks($table);
67 return $path;
68 }
69 /**
70 * Ensure that a migration with the given name doesn't already exist.
71 *
72 * @param string $name
73 * @param string $migrationPath
74 * @return void
75 *
76 * @throws \InvalidArgumentException
77 */
78 protected function ensureMigrationDoesntAlreadyExist($name, $migrationPath = null)
79 {
80 if (!empty($migrationPath)) {
81 $migrationFiles = $this->files->glob($migrationPath . '/*.php');
82 foreach ($migrationFiles as $migrationFile) {
83 $this->files->requireOnce($migrationFile);
84 }
85 }
86 if (\class_exists($className = $this->getClassName($name))) {
87 throw new InvalidArgumentException("A {$className} class already exists.");
88 }
89 }
90 /**
91 * Get the migration stub file.
92 *
93 * @param string|null $table
94 * @param bool $create
95 * @return string
96 */
97 protected function getStub($table, $create)
98 {
99 if (\is_null($table)) {
100 $stub = $this->files->exists($customPath = $this->customStubPath . '/migration.stub') ? $customPath : $this->stubPath() . '/migration.stub';
101 } elseif ($create) {
102 $stub = $this->files->exists($customPath = $this->customStubPath . '/migration.create.stub') ? $customPath : $this->stubPath() . '/migration.create.stub';
103 } else {
104 $stub = $this->files->exists($customPath = $this->customStubPath . '/migration.update.stub') ? $customPath : $this->stubPath() . '/migration.update.stub';
105 }
106 return $this->files->get($stub);
107 }
108 /**
109 * Populate the place-holders in the migration stub.
110 *
111 * @param string $name
112 * @param string $stub
113 * @param string|null $table
114 * @return string
115 */
116 protected function populateStub($name, $stub, $table)
117 {
118 $stub = \str_replace(['DummyClass', '{{ class }}', '{{class}}'], $this->getClassName($name), $stub);
119 // Here we will replace the table place-holders with the table specified by
120 // the developer, which is useful for quickly creating a tables creation
121 // or update migration from the console instead of typing it manually.
122 if (!\is_null($table)) {
123 $stub = \str_replace(['DummyTable', '{{ table }}', '{{table}}'], $table, $stub);
124 }
125 return $stub;
126 }
127 /**
128 * Get the class name of a migration name.
129 *
130 * @param string $name
131 * @return string
132 */
133 protected function getClassName($name)
134 {
135 return Str::studly($name);
136 }
137 /**
138 * Get the full path to the migration.
139 *
140 * @param string $name
141 * @param string $path
142 * @return string
143 */
144 protected function getPath($name, $path)
145 {
146 return $path . '/' . $this->getDatePrefix() . '_' . $name . '.php';
147 }
148 /**
149 * Fire the registered post create hooks.
150 *
151 * @param string|null $table
152 * @return void
153 */
154 protected function firePostCreateHooks($table)
155 {
156 foreach ($this->postCreate as $callback) {
157 $callback($table);
158 }
159 }
160 /**
161 * Register a post migration create hook.
162 *
163 * @param \Closure $callback
164 * @return void
165 */
166 public function afterCreate(Closure $callback)
167 {
168 $this->postCreate[] = $callback;
169 }
170 /**
171 * Get the date prefix for the migration.
172 *
173 * @return string
174 */
175 protected function getDatePrefix()
176 {
177 return \date('Y_m_d_His');
178 }
179 /**
180 * Get the path to the stubs.
181 *
182 * @return string
183 */
184 public function stubPath()
185 {
186 return __DIR__ . '/stubs';
187 }
188 /**
189 * Get the filesystem instance.
190 *
191 * @return \Illuminate\Filesystem\Filesystem
192 */
193 public function getFilesystem()
194 {
195 return $this->files;
196 }
197 }
198