1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
<?php /** * Smush directory smush scanner: DScanner class * * @package Smush\Core\Modules\Helpers * @since 2.8.1 * * @author Anton Vanyukov <anton@incsub.com> * * @copyright (c) 2018, Incsub (http://incsub.com) */
namespace Smush\Core\Modules\Helpers;
use WP_Smush;
if ( ! defined( 'ABSPATH' ) ) { exit; }
/** * Class DScanner * * @since 2.8.1 */ class DScanner {
/** * Indicates if a scan is in process * * @var bool */ private $is_scanning = false;
/** * Indicates the current step being scanned * * @var int */ private $current_step = 0;
/** * Options names */ const IS_SCANNING_SLUG = 'wp-smush-files-scanning'; const CURRENT_STEP = 'wp-smush-scan-step';
/** * Refresh status variables. */ private function refresh_status() { $this->is_scanning = get_transient( self::IS_SCANNING_SLUG ); $this->current_step = (int) get_option( self::CURRENT_STEP ); }
/** * Initializes the scan. */ public function init_scan() { set_transient( self::IS_SCANNING_SLUG, true, 60 * 5 ); // 5 minutes max update_option( self::CURRENT_STEP, 0 ); $this->refresh_status(); }
/** * Reset the scan as if it weren't being executed (on finish and cancel). */ public function reset_scan() { delete_transient( self::IS_SCANNING_SLUG ); delete_option( self::CURRENT_STEP ); $this->refresh_status(); }
/** * Update the current step being scanned. * * @param int $step Current scan step. */ public function update_current_step( $step ) { update_option( self::CURRENT_STEP, absint( $step ) ); $this->refresh_status(); }
/** * Get the current scan step being scanned. * * @return mixed */ public function get_current_scan_step() { $this->refresh_status(); return $this->current_step; }
/** * Return the number of total steps to finish the scan. * * @return int */ public function get_scan_steps() { return count( WP_Smush::get_instance()->core()->mod->dir->get_scanned_images() ); }
/** * Check if a scanning is in process * * @return bool */ public function is_scanning() { $this->refresh_status(); return $this->is_scanning; }
}
|