PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.15.3
Independent Analytics – WordPress Analytics Plugin v2.15.3
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 weeks ago DatabaseMigrationRepository.php 3 weeks ago Migration.php 2 years ago MigrationCreator.php 3 weeks ago MigrationRepositoryInterface.php 2 years ago Migrator.php 3 weeks ago
MigrationCreator.php
197 lines
1 <?php
2
3 namespace IAWPSCOPED\Illuminate\Database\Migrations;
4
5 use Closure;
6 use IAWPSCOPED\Illuminate\Filesystem\Filesystem;
7 use IAWPSCOPED\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($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, $path);
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 $stub
112 * @param string|null $table
113 * @return string
114 */
115 protected function populateStub($stub, $table)
116 {
117 // Here we will replace the table place-holders with the table specified by
118 // the developer, which is useful for quickly creating a tables creation
119 // or update migration from the console instead of typing it manually.
120 if (!\is_null($table)) {
121 $stub = \str_replace(['DummyTable', '{{ table }}', '{{table}}'], $table, $stub);
122 }
123 return $stub;
124 }
125 /**
126 * Get the class name of a migration name.
127 *
128 * @param string $name
129 * @return string
130 */
131 protected function getClassName($name)
132 {
133 return Str::studly($name);
134 }
135 /**
136 * Get the full path to the migration.
137 *
138 * @param string $name
139 * @param string $path
140 * @return string
141 */
142 protected function getPath($name, $path)
143 {
144 return $path . '/' . $this->getDatePrefix() . '_' . $name . '.php';
145 }
146 /**
147 * Fire the registered post create hooks.
148 *
149 * @param string|null $table
150 * @param string $path
151 * @return void
152 */
153 protected function firePostCreateHooks($table, $path)
154 {
155 foreach ($this->postCreate as $callback) {
156 $callback($table, $path);
157 }
158 }
159 /**
160 * Register a post migration create hook.
161 *
162 * @param \Closure $callback
163 * @return void
164 */
165 public function afterCreate(Closure $callback)
166 {
167 $this->postCreate[] = $callback;
168 }
169 /**
170 * Get the date prefix for the migration.
171 *
172 * @return string
173 */
174 protected function getDatePrefix()
175 {
176 return \date('Y_m_d_His');
177 }
178 /**
179 * Get the path to the stubs.
180 *
181 * @return string
182 */
183 public function stubPath()
184 {
185 return __DIR__ . '/stubs';
186 }
187 /**
188 * Get the filesystem instance.
189 *
190 * @return \Illuminate\Filesystem\Filesystem
191 */
192 public function getFilesystem()
193 {
194 return $this->files;
195 }
196 }
197