PluginProbe
Boxzilla – WordPress Popup Builder / 3.2.13
Boxzilla – WordPress Popup Builder v3.2.13
3.4.11 3.4.10 3.4.9 3.4.3 3.4.4 3.4.5 3.4.6 3.4.7 3.4.8 trunk 3.0 3.0.1 3.0.2 3.0.3 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 All 72 releases
boxzilla / src / admin / class-migrations.php

class-migrations.php in Boxzilla – WordPress Popup Builder 3.2.13, at src/admin/class-migrations.php

101 lines 2.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Boxzilla\Admin;
4
5 use Exception;
6
7 /**
8 *
9 */
10 class Migrations
11 {
12
13 /**
14 * @var float
15 */
16 protected $version_from = 0;
17
18 /**
19 * @var float
20 */
21 protected $version_to = 0;
22
23 /**
24 * @var string
25 */
26 protected $migrations_dir = '';
27
28 /**
29 * @param float $from
30 * @param float $to
31 * @param string $migrations_dir
32 */
33 public function __construct($from, $to, $migrations_dir)
34 {
35 $this->version_from = $from;
36 $this->version_to = $to;
37 $this->migrations_dir = $migrations_dir;
38 }
39
40 /**
41 * Run the various upgrade routines, all the way up to the latest version
42 */
43 public function run()
44 {
45 $migrations = $this->find_migrations();
46 // run in sub-function for scope
47 array_map(array( $this, 'run_migration' ), $migrations);
48 }
49
50 /**
51 * @return array
52 */
53 public function find_migrations()
54 {
55 $files = glob(rtrim($this->migrations_dir, '/') . '/*.php');
56 $migrations = array();
57
58 // return empty array when glob returns non-array value.
59 if (! is_array($files)) {
60 return $migrations;
61 }
62
63 foreach ($files as $file) {
64 $migration = basename($file);
65 $parts = explode('-', $migration);
66 $version = $parts[0];
67
68 // check if migration file is not for an even higher version
69 if (version_compare($version, $this->version_to, '>')) {
70 continue;
71 }
72
73 // check if we ran migration file before.
74 if (version_compare($this->version_from, $version, '>=')) {
75 continue;
76 }
77
78 // schedule migration file for running
79 $migrations[] = $file;
80 }
81
82 return $migrations;
83 }
84
85 /**
86 * Include a migration file and runs it.
87 *
88 * @param string $file
89 *
90 * @throws Exception
91 */
92 protected function run_migration($file)
93 {
94 if (! file_exists($file)) {
95 throw new Exception("Migration file $file does not exist.");
96 }
97
98 include $file;
99 }
100 }
101