Issues (1386)

version.php (31 issues)

1
<?php 
2
/**
3
 * Version management for database migrations.
4
 * 
5
 * Database changes require special care:
6
 * - the model has to be adjusted for users installing the plugin
7
 * - the current setup has to be migrated for current users
8
 * 
9
 * These migrations are a way to handle current users. They do *not*
10
 * run on plugin activation.
11
 * 
12
 * Pattern:
13
 * 
14
 * - increment \PodloveSubscribeButton\DATABASE_VERSION constant by 1, e.g.
15
 * 		```php
16
 * 		define( __NAMESPACE__ . '\DATABASE_VERSION', 2 );
17
 * 		```
18
 * 		
19
 * - add a case in `\PodloveSubscribeButton\run_migrations_for_version`, e.g.
20
 * 		```php
21
 * 		function run_migrations_for_version( $version ) {
22
 *			global $wpdb;
23
 *			switch ( $version ) {
24
 *				case 2:
25
 *					$wbdb-> // run sql or whatever
26
 *					break;
27
 *			}
28
 *		}
29
 *		```
30
 *		
31
 *		Feel free to move the migration code into a separate function if it's
32
 *		rather complex.
33
 *		
34
 * - adjust the main model / setup process so new users installing the plugin
35
 *   will have these changes too
36
 *   
37
 * - Test the migrations! :)
38
 */
0 ignored issues
show
Coding Style Documentation introduced by
Missing @package tag in file comment
Loading history...
39
40
namespace PodloveSubscribeButton;
41
use \PodloveSubscribeButton\Model;
42
43
define( __NAMESPACE__ . '\DATABASE_VERSION', 2 );
44
45
add_action( 'admin_init', '\PodloveSubscribeButton\maybe_run_database_migrations' );
46
add_action( 'admin_init', '\PodloveSubscribeButton\run_database_migrations', 5 );
47
48
function maybe_run_database_migrations() {
0 ignored issues
show
Coding Style Documentation introduced by
Missing function doc comment
Loading history...
49
	$database_version = get_option('podlove_subscribe_button_plugin_database_version');
0 ignored issues
show
Expected 1 spaces after opening bracket; 0 found
Loading history...
Expected 1 spaces before closing bracket; 0 found
Loading history...
50
51
	if ( $database_version === false ) {
52
		// plugin has just been installed or Plugin Version < 1.3
0 ignored issues
show
Inline comments must end in full-stops, exclamation marks, or question marks
Loading history...
53
		update_option( 'podlove_subscribe_button_plugin_database_version', DATABASE_VERSION );
54
	}
55
}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
56
57
function run_database_migrations() {
0 ignored issues
show
Coding Style Documentation introduced by
Missing function doc comment
Loading history...
58
	if (get_option('podlove_subscribe_button_plugin_database_version') >= DATABASE_VERSION)
0 ignored issues
show
Expected 1 spaces after opening bracket; 0 found
Loading history...
Expected 1 spaces before closing bracket; 0 found
Loading history...
59
		return;
60
61
	if (is_multisite()) {
62
		set_time_limit(0); // may take a while, depending on network size
0 ignored issues
show
Expected 1 spaces after opening bracket; 0 found
Loading history...
Expected 1 spaces before closing bracket; 0 found
Loading history...
Inline comments must end in full-stops, exclamation marks, or question marks
Loading history...
63
		\PodloveSubscribeButton\for_every_podcast_blog(function() { migrate_for_current_blog(); });
0 ignored issues
show
Expected 1 spaces after opening bracket; 0 found
Loading history...
Expected 1 spaces before closing bracket; 0 found
Loading history...
Opening brace must be the last content on the line
Loading history...
Closing brace of nested function must be on a new line
Loading history...
It is generally recommended to place each PHP statement on a line by itself.

Let’s take a look at an example:

// Bad
$a = 5; $b = 6; $c = 7;

// Good
$a = 5;
$b = 6;
$c = 7;
Loading history...
64
	} else {
65
		migrate_for_current_blog();
66
	}
67
68
	if (isset($_REQUEST['_wp_http_referer']) && $_REQUEST['_wp_http_referer']) {
0 ignored issues
show
Expected 1 spaces after opening bracket; 0 found
Loading history...
Expected 1 spaces before closing bracket; 0 found
Loading history...
69
		wp_redirect($_REQUEST['_wp_http_referer']);
0 ignored issues
show
Expected 1 spaces after opening bracket; 0 found
Loading history...
Expected 1 spaces before closing bracket; 0 found
Loading history...
70
		exit;
71
	}
72
}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
73
74
function migrate_for_current_blog() {
0 ignored issues
show
Coding Style Documentation introduced by
Missing function doc comment
Loading history...
75
	$database_version = get_option('podlove_subscribe_button_plugin_database_version');
0 ignored issues
show
Expected 1 spaces after opening bracket; 0 found
Loading history...
Expected 1 spaces before closing bracket; 0 found
Loading history...
76
77
	for ($i = $database_version+1; $i <= DATABASE_VERSION; $i++) { 
78
		\PodloveSubscribeButton\run_migrations_for_version($i);
0 ignored issues
show
Expected 1 spaces after opening bracket; 0 found
Loading history...
Expected 1 spaces before closing bracket; 0 found
Loading history...
79
		update_option('podlove_subscribe_button_plugin_database_version', $i);
0 ignored issues
show
Expected 1 spaces after opening bracket; 0 found
Loading history...
Expected 1 spaces before closing bracket; 0 found
Loading history...
80
	}
81
}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
82
83
/**
84
 * Find and run migration for given version number.
85
 *
86
 * @todo  move migrations into separate files
87
 * 
88
 * @param  int $version
0 ignored issues
show
Coding Style Documentation introduced by
Missing parameter comment
Loading history...
89
 */
90
function run_migrations_for_version( $version ) {
91
	global $wpdb;
92
	
93
	switch ( $version ) {}
94
95
}