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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
|
<?php namespace Imagify\Context;
defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
/** * Context class used for the WP media library. * * @since 1.9 * @author Grégory Viguier */ class WP extends AbstractContext { use \Imagify\Traits\InstanceGetterTrait;
/** * Context "short name". * * @var string * @since 1.9 * @access protected * @author Grégory Viguier */ protected $context = 'wp';
/** * Images max width for this context. This is used when resizing. * * @var int * @since 1.9.8 * @access protected * @author Grégory Viguier */ protected $resizing_threshold;
/** * Get the thumbnail sizes for this context, except the full size. * * @since 1.9 * @access public * @author Grégory Viguier * * @return array { * Data for the currently registered thumbnail sizes. * Size names are used as array keys. * * @type int $width The image width. * @type int $height The image height. * @type bool $crop True to crop, false to resize. * @type string $name The size name. * } */ public function get_thumbnail_sizes() { if ( isset( $this->thumbnail_sizes ) ) { return $this->thumbnail_sizes; }
$this->thumbnail_sizes = get_imagify_thumbnail_sizes();
return $this->thumbnail_sizes; }
/** * Get images max width for this context. This is used when resizing. * 0 means to not resize. * * @since 1.9.8 * @access public * @author Grégory Viguier * * @return int */ public function get_resizing_threshold() { if ( isset( $this->resizing_threshold ) ) { return $this->resizing_threshold; }
if ( ! get_imagify_option( 'resize_larger' ) ) { $this->resizing_threshold = 0; } else { $this->resizing_threshold = max( 0, get_imagify_option( 'resize_larger_w' ) ); }
return $this->resizing_threshold; }
/** * Tell if the optimization process is allowed to backup in this context. * * @since 1.9 * @access public * @author Grégory Viguier * * @return bool */ public function can_backup() { if ( isset( $this->can_backup ) ) { return $this->can_backup; }
$this->can_backup = get_imagify_option( 'backup' );
return $this->can_backup; }
/** * Tell if the optimization process is allowed to keep exif in this context. * * @since 1.9 * @access public * @author Grégory Viguier * * @return bool */ public function can_keep_exif() { if ( isset( $this->can_keep_exif ) ) { return $this->can_keep_exif; }
$this->can_keep_exif = get_imagify_option( 'exif' );
return $this->can_keep_exif; }
/** * Get user capacity to operate Imagify in this context. * * @since 1.9 * @access public * @author Grégory Viguier * * @param string $describer Capacity describer. Possible values are like 'manage', 'bulk-optimize', 'manual-optimize', 'auto-optimize'. * @return string */ public function get_capacity( $describer ) { static $edit_attachment_cap;
switch ( $describer ) { case 'manage': $capacity = imagify_is_active_for_network() ? 'manage_network_options' : 'manage_options'; break;
case 'bulk-optimize': $capacity = 'manage_options'; break;
case 'optimize': case 'restore': // This is a generic capacity: don't use it unless you have no other choices! if ( ! isset( $edit_attachment_cap ) ) { $edit_attachment_cap = get_post_type_object( 'attachment' ); $edit_attachment_cap = $edit_attachment_cap ? $edit_attachment_cap->cap->edit_posts : 'edit_posts'; }
$capacity = $edit_attachment_cap; break;
case 'manual-optimize': case 'manual-restore': // Must be used with an Attachment ID. $capacity = 'edit_post'; break;
case 'auto-optimize': $capacity = 'upload_files'; break;
default: $capacity = $describer; }
return $this->filter_capacity( $capacity, $describer ); } }
|