forked from litespeedtech/lscache_wp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnextgengallery.cls.php
229 lines (206 loc) · 6.25 KB
/
nextgengallery.cls.php
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
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
<?php
/**
* The Third Party integration with the NextGen Gallery plugin.
*
* @since 1.0.5
*/
namespace LiteSpeed\Thirdparty ;
defined( 'WPINC' ) || exit ;
// Try preload instead
// todo: need test
// add_action('load_nextgen_gallery_modules', 'NextGenGallery::detect') ;
class NextGenGallery
{
const CACHETAG_ALBUMS = 'NGG_A.' ;
const CACHETAG_GALLERIES = 'NGG_G.' ;
const CACHETAG_TAGS = 'NGG_T.' ;
/**
* Detect is triggered at the load_nextgen_gallery_modules action.
*
* If this action is triggered, assume NextGen Gallery is used.
*
* @since 1.0.5
* @access public
*/
public static function preload()
{
add_action( 'ngg_added_new_image', __CLASS__ . '::add_image' ) ;
add_action( 'ngg_ajax_image_save', __CLASS__ . '::update_image' ) ;
add_action( 'ngg_delete_picture', __CLASS__ . '::delete_image' ) ;
add_action( 'ngg_moved_images', __CLASS__ . '::move_image', 10, 3 ) ;
add_action( 'ngg_copied_images', __CLASS__ . '::copy_image', 10, 3 ) ;
add_action( 'ngg_generated_image', __CLASS__ . '::gen_image' ) ;
add_action( 'ngg_recovered_image', __CLASS__ . '::gen_image' ) ;
add_action( 'ngg_gallery_sort', __CLASS__ . '::update_gallery' ) ;
add_action( 'ngg_delete_gallery', __CLASS__ . '::update_gallery' ) ;
add_action( 'ngg_update_album', __CLASS__ . '::update_album' ) ;
add_action( 'ngg_delete_album', __CLASS__ . '::update_album' ) ;
add_filter( 'ngg_displayed_gallery_cache_params', __CLASS__ . '::add_container' ) ;
}
/**
* When an image is added, need to purge all pages that displays its gallery.
*
* @since 1.0.5
* @access public
* @param string $image The image object added.
*/
public static function add_image($image)
{
if ( ! $image || ! method_exists( $image, 'get_gallery' ) ) {
return ;
}
$gallery = $image->get_gallery() ;
if ( $gallery && $gallery->pageid ) {
do_action( 'litespeed_purge', self::CACHETAG_GALLERIES . $gallery->pageid ) ;
}
}
/**
* When an image is updated, need to purge all pages that displays its gallery.
*
* @since 1.0.5
* @access public
*/
public static function update_image()
{
if ( isset( $_REQUEST[ 'gallery_id' ] ) ) {
do_action( 'litespeed_purge', self::CACHETAG_GALLERIES . $_REQUEST[ 'gallery_id' ] ) ;
return ;
}
if ( isset( $_POST[ 'task_list' ] ) ) {
$task_list = str_replace( '\\', '', $_POST[ 'task_list' ] ) ;
$task_list = json_decode( $task_list, true ) ;
if ( ! empty( $task_list[ 0 ][ 'query' ][ 'id' ] ) ) {
do_action( 'litespeed_purge', self::CACHETAG_GALLERIES . $task_list[ 0 ][ 'query' ][ 'id' ] ) ;
return ;
}
}
if ( isset($_POST['id']) ) {
$id = $_POST['id'] ;
}
elseif ( isset($_POST['image']) ) {
$id = $_POST['image'] ;
}
elseif ( isset($_GET['pid']) ) {
$id = $_GET['pid'] ;
}
else {
error_log('LiteSpeed_Cache hit ngg_ajax_image_save with no post image id.') ;
return ;
}
$image = \C_Image_Mapper::get_instance()->find($id) ;
if ( $image ) {
do_action( 'litespeed_purge', self::CACHETAG_GALLERIES . $image->galleryid );
}
}
/**
* When an image is deleted, need to purge all pages that displays its gallery.
*
* @since 1.0.5
* @access public
*/
public static function delete_image()
{
if ( isset($_GET['gid']) ) {
do_action( 'litespeed_purge', self::CACHETAG_GALLERIES . $_GET['gid'] );
}
}
/**
* When an image is moved, need to purge all old galleries and the new gallery.
*
* @since 1.0.8
* @access public
* @param array $images unused
* @param array $old_gallery_ids Source gallery ids for the images.
* @param integer $new_gallery_id Destination gallery id.
*/
public static function move_image($images, $old_gallery_ids, $new_gallery_id)
{
foreach ($old_gallery_ids as $gid) {
do_action( 'litespeed_purge', self::CACHETAG_GALLERIES . $gid );
}
do_action( 'litespeed_purge', self::CACHETAG_GALLERIES . $new_gallery_id );
}
/**
* When an image is copied, need to purge the destination gallery.
*
* @param array $image_pid_map unused
* @param array $old_gallery_ids unused
* @param integer $new_gallery_id Destination gallery id.
*/
public static function copy_image($image_pid_map, $old_gallery_ids, $new_gallery_id)
{
do_action( 'litespeed_purge', self::CACHETAG_GALLERIES . $new_gallery_id );
}
/**
* When an image is re-generated, need to purge the gallery it belongs to.
* Also applies to recovered images.
*
* @param Image $image The re-generated image.
*/
public static function gen_image($image)
{
do_action( 'litespeed_purge', self::CACHETAG_GALLERIES . $image->galleryid );
}
/**
* When a gallery is updated, need to purge all pages that display the gallery.
*
* @since 1.0.5
* @access public
* @param integer $gid The gallery id of the gallery updated.
*/
public static function update_gallery($gid)
{
// New version input will be an object with gid value
if ( is_object( $gid ) && ! empty( $gid->gid ) ) {
$gid = $gid->gid ;
}
do_action( 'litespeed_purge', self::CACHETAG_GALLERIES . $gid );
}
/**
* When an album is updated, need to purge all pages that display the album.
*
* @since 1.0.5
* @access public
* @param integer $aid The album id of the album updated.
*/
public static function update_album($aid)
{
do_action( 'litespeed_purge', self::CACHETAG_ALBUMS . $aid );
}
/**
* When rendering a page, if the page has a gallery, album or tag cloud,
* it needs to be tagged appropriately.
*
* @since 1.0.5
* @access public
* @param object $render_parms Parameters used to render the associated part of the page.
* @return mixed Null if passed in null, $render_parms otherwise.
*/
public static function add_container($render_parms)
{
// Check if null. If it is null, can't continue.
if ( is_null($render_parms) ) {
return null ;
}
$src = $render_parms[0]->source ;
$container_ids = $render_parms[0]->container_ids ;
// Can switch on first char if we end up with more sources.
switch ($src) {
case 'albums':
$tag = self::CACHETAG_ALBUMS ;
break ;
case 'galleries':
$tag = self::CACHETAG_GALLERIES ;
break ;
case 'tags':
$tag = self::CACHETAG_TAGS ;
break ;
default:
return $render_parms ;
}
foreach ($container_ids as $id) {
do_action( 'litespeed_tag_add', $tag . $id );
}
return $render_parms ;
}
}