Passed
Push — master ( 9a7a6b...7de9ff )
by Paul
03:37
created

Upgrader::finish()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 2

Importance

Changes 0
Metric Value
cc 2
eloc 4
nc 2
nop 0
dl 0
loc 6
ccs 5
cts 5
cp 1
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace GeminiLabs\SiteReviews\Modules;
4
5
use DirectoryIterator;
6
use GeminiLabs\SiteReviews\Controllers\AdminController;
7
use GeminiLabs\SiteReviews\Database\OptionManager;
8
9
class Upgrader
10
{
11
	/**
12
	 * @return void
13
	 */
14 7
	public function run()
15
	{
16 7
		$filenames = [];
17 7
		$iterator = new DirectoryIterator( dirname( __FILE__ ).'/Upgrader' );
18 7
		foreach( $iterator as $fileinfo ) {
19 7
			if( !$fileinfo->isFile() )continue;
20 7
			$filenames[] = $fileinfo->getFilename();
21
		}
22 7
		natsort( $filenames );
23 7
		array_walk( $filenames, function( $file ) {
24 7
			$className = str_replace( '.php', '', $file );
25 7
			$version = str_replace( ['Upgrade_', '_'], ['', '.'], $className );
26 7
			$versionSuffix = preg_replace( '/[\d.]+(.+)?/', '${1}', glsr()->version ); // allow alpha/beta versions
27 7
			if( version_compare( $this->currentVersion(), $version.$versionSuffix, '>=' ))return;
28 6
			glsr( 'Modules\\Upgrader\\'.$className );
29 6
			glsr_log()->info( 'Completed Upgrade for v'.$version.$versionSuffix );
30 7
		});
31 7
		$this->finish();
32 7
	}
33
34
	/**
35
	 * @return void
36
	 */
37 7
	public function finish()
38
	{
39 7
		$version = $this->currentVersion();
40 7
		if( $version !== glsr()->version ) {
41 6
			$this->setReviewCounts();
42 6
			$this->updateVersionFrom( $version );
43
		}
44 7
	}
45
46
	/**
47
	 * @return string
48
	 */
49 7
	protected function currentVersion()
50
	{
51 7
		return glsr( OptionManager::class )->get( 'version', '0.0.0' );
52
	}
53
54
	/**
55
	 * @return void
56
	 */
57
	protected function setReviewCounts()
58
	{
59 7
		add_action( 'admin_init', function() {
60 1
			glsr( AdminController::class )->routerCountReviews( false );
61 1
			glsr_log()->info( __( 'Calculated rating counts.', 'site-reviews' ));
62 7
		});
63 6
	}
64
65
	/**
66
	 * @param string $previousVersion
67
	 * @return void
68
	 */
69 6
	protected function updateVersionFrom( $previousVersion )
70
	{
71 6
		glsr( OptionManager::class )->set( 'version', glsr()->version );
72 6
		glsr( OptionManager::class )->set( 'version_upgraded_from', $previousVersion );
73 6
	}
74
}
75