Linux webm002.cluster120.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
Apache
: 10.120.20.2 | : 216.73.216.55
Cant Read [ /etc/named.conf ]
8.5.7
verseaumee
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
home /
verseaumee /
empowernetkenyajuly2026 /
[ HOME SHELL ]
Name
Size
Permission
Action
.tmb
[ DIR ]
drwxrwxrwx
760093
[ DIR ]
drwxr-xr-x
wp-admin
[ DIR ]
drwx---r-x
wp-content
[ DIR ]
drwx---r-x
wp-includes
[ DIR ]
drwx---r-x
.htaccess.htaccess.tar.gz
373
B
-rw-r--r--
.htaccess.tar
6
KB
-rw-r--r--
.mad-root
0
B
-rw-r--r--
.mad-root.mad-root.tar.gz
122
B
-rw-r--r--
.mad-root.tar
7
KB
-rw-r--r--
.ovhconfig.ovhconfig.tar.gz
188
B
-rw-r--r--
.ovhconfig.tar
2
KB
-rw-r--r--
.tmb.tar.gz
133
B
-rw-r--r--
.tmb.zip
410
B
-rw-r--r--
0cb02.zip
1.16
KB
-rw-r--r--
1.txt.tar
3
KB
-rw-r--r--
1.txt.txt.tar.gz
132
B
-rw-r--r--
760093.tar
6
KB
-rw-r--r--
760093.tar.gz
250
B
-rw-r--r--
760093.zip
965
B
-rw-r--r--
ID3.tar
1.14
MB
-rw-r--r--
ID3.tar.gz
237.93
KB
-rw-r--r--
IXR.tar
38
KB
-rw-r--r--
IXR.tar.gz
7.05
KB
-rw-r--r--
IXR.zip
36.54
KB
-rw-r--r--
OAuth.php.php.tar.gz
1.44
KB
-rw-r--r--
OAuth.php.tar
5.5
KB
-rw-r--r--
README.txt.tar
6.5
KB
-rw-r--r--
README.txt.txt.tar.gz
1.81
KB
-rw-r--r--
README.txt__9a2a123.tar
6.5
KB
-rw-r--r--
README.txt__9a2a123.txt__9a2a1...
1.83
KB
-rw-r--r--
SimplePie.tar
799.5
KB
-rw-r--r--
SimplePie.tar.gz
123.36
KB
-rw-r--r--
abilities-api.php.php.tar.gz
7.44
KB
-rw-r--r--
abilities-api.php.tar
67
KB
-rw-r--r--
abilities-api.zip
60.43
KB
-rw-r--r--
about-rtl.css.css.tar.gz
5.11
KB
-rw-r--r--
about-rtl.css.tar
29.5
KB
-rw-r--r--
about.html.html.tar.gz
3.85
KB
-rw-r--r--
about.html.tar
19.5
KB
-rw-r--r--
about.php.php.tar.gz
133
B
-rw-r--r--
about.php.tar
4.5
KB
-rw-r--r--
actionlog.tar
37.5
KB
-rw-r--r--
actionlog.tar.gz
5.65
KB
-rw-r--r--
admin-ajax.php.php.tar.gz
0
B
-rw-r--r--
admin-ajax.php.tar
7
KB
-rw-r--r--
admin-menu-rtl.css.css.tar.gz
3.77
KB
-rw-r--r--
admin-menu-rtl.css.tar
20
KB
-rw-r--r--
admin.php.php.tar.gz
110
B
-rw-r--r--
admin.php.tar
9.5
KB
-rw-r--r--
adminer.php
0
B
-rw-r--r--
adminer.php.php.tar.gz
122
B
-rw-r--r--
adminer.php.tar
4.5
KB
-rw-r--r--
ai-client.php.php.tar.gz
0
B
-rw-r--r--
ai-client.php.tar
4
KB
-rw-r--r--
alfacgiapi.tar
7
KB
-rw-r--r--
alfacgiapi.tar.gz
1.31
KB
-rw-r--r--
align-none.png.png.tar.gz
581
B
-rw-r--r--
align-none.png.tar
2
KB
-rw-r--r--
align-right.png.png.tar.gz
678
B
-rw-r--r--
align-right.png.tar
2
KB
-rw-r--r--
arrows.png.png.tar.gz
356
B
-rw-r--r--
arrows.png.tar
2
KB
-rw-r--r--
assets.zip
407.8
KB
-rw-r--r--
async-upload.php.php.tar.gz
2.29
KB
-rw-r--r--
async-upload.php.tar
7
KB
-rw-r--r--
atomlib.php.php.tar.gz
3.33
KB
-rw-r--r--
atomlib.php.tar
13.5
KB
-rw-r--r--
authentication.tar
49
KB
-rw-r--r--
authentication.tar.gz
0
B
-rw-r--r--
base.css.css.tar.gz
1.65
KB
-rw-r--r--
base.css.tar
6.5
KB
-rw-r--r--
block-bindings.zip
11.37
KB
-rw-r--r--
block-editor.php.php.tar.gz
6.68
KB
-rw-r--r--
block-editor.php.tar
30
KB
-rw-r--r--
block-patterns.tar
30.5
KB
-rw-r--r--
block-patterns.tar.gz
3.67
KB
-rw-r--r--
block-supports.tar
213.5
KB
-rw-r--r--
block-supports.tar.gz
42.29
KB
-rw-r--r--
blocks.php.php.tar.gz
25.12
KB
-rw-r--r--
blocks.php.tar
123
KB
-rw-r--r--
blocks.tar
2.22
MB
-rw-r--r--
blocks.tar.gz
276.13
KB
-rw-r--r--
blueversionx-black-logo.png.pn...
31.88
KB
-rw-r--r--
blueversionx-black-logo.png.ta...
36
KB
-rw-r--r--
bootstrap.php.php.tar.gz
816
B
-rw-r--r--
bootstrap.php.tar
3
KB
-rw-r--r--
bubble_bg.gif.gif.tar.gz
499
B
-rw-r--r--
bubble_bg.gif.tar
2
KB
-rw-r--r--
build.tar
2.08
MB
-rw-r--r--
build.tar.gz
539.46
KB
-rw-r--r--
cache.php.php.tar.gz
2.62
KB
-rw-r--r--
cache.php.tar
28
KB
-rw-r--r--
category-template.php.php.tar....
13
KB
-rw-r--r--
category-template.php.tar
57.5
KB
-rw-r--r--
category.php.php.tar.gz
3.59
KB
-rw-r--r--
category.php.tar
28
KB
-rw-r--r--
certificates.tar
227.5
KB
-rw-r--r--
certificates.tar.gz
105.6
KB
-rw-r--r--
chatblueversion.zip
468.78
KB
-rw-r--r--
class-ftp.php.php.tar.gz
6.49
KB
-rw-r--r--
class-ftp.php.tar
28.5
KB
-rw-r--r--
class-http.php.php.tar.gz
337
B
-rw-r--r--
class-http.php.tar
2
KB
-rw-r--r--
class-oembed.php.php.tar.gz
357
B
-rw-r--r--
class-oembed.php.tar
3
KB
-rw-r--r--
class-phpass.php.php.tar.gz
2.52
KB
-rw-r--r--
class-phpass.php.tar
8.5
KB
-rw-r--r--
class-requests.php.php.tar.gz
951
B
-rw-r--r--
class-requests.php.tar
4
KB
-rw-r--r--
class-simplepie.php.php.tar.gz
0
B
-rw-r--r--
class-simplepie.php.tar
3
KB
-rw-r--r--
class-smtp.php.php.tar.gz
340
B
-rw-r--r--
class-smtp.php.tar
3
KB
-rw-r--r--
class-snoopy.php.php.tar.gz
7.94
KB
-rw-r--r--
class-snoopy.php.tar
38.5
KB
-rw-r--r--
class-walker-category-dropdown...
1.16
KB
-rw-r--r--
class-walker-category-dropdown...
4
KB
-rw-r--r--
class-walker-category.php.php....
2.45
KB
-rw-r--r--
class-walker-category.php.tar
19
KB
-rw-r--r--
class-walker-comment.php.php.t...
3.27
KB
-rw-r--r--
class-walker-comment.php.tar
15.5
KB
-rw-r--r--
class-walker-page-dropdown.php...
1.2
KB
-rw-r--r--
class-walker-page-dropdown.php...
4.5
KB
-rw-r--r--
class-walker-page.php.php.tar....
2.11
KB
-rw-r--r--
class-walker-page.php.tar
9
KB
-rw-r--r--
class-wp-admin-bar.php.php.tar...
4.86
KB
-rw-r--r--
class-wp-admin-bar.php.tar
19
KB
-rw-r--r--
class-wp-block-bindings-regist...
2.18
KB
-rw-r--r--
class-wp-block-bindings-regist...
10
KB
-rw-r--r--
class-wp-block-bindings-source...
1.09
KB
-rw-r--r--
class-wp-block-bindings-source...
4.5
KB
-rw-r--r--
class-wp-block-metadata-regist...
3.36
KB
-rw-r--r--
class-wp-block-metadata-regist...
13.5
KB
-rw-r--r--
class-wp-block-parser-block.ph...
869
B
-rw-r--r--
class-wp-block-parser-block.ph...
4
KB
-rw-r--r--
class-wp-block-parser-frame.ph...
694
B
-rw-r--r--
class-wp-block-parser-frame.ph...
3.5
KB
-rw-r--r--
class-wp-block-parser.php.php....
3.42
KB
-rw-r--r--
class-wp-block-parser.php.tar
13
KB
-rw-r--r--
class-wp-block-patterns-regist...
2.7
KB
-rw-r--r--
class-wp-block-patterns-regist...
23
KB
-rw-r--r--
class-wp-block-processor.php.p...
16.6
KB
-rw-r--r--
class-wp-block-processor.php.t...
70
KB
-rw-r--r--
class-wp-block-styles-registry...
1.81
KB
-rw-r--r--
class-wp-block-styles-registry...
8
KB
-rw-r--r--
class-wp-block-supports.php.ph...
1.7
KB
-rw-r--r--
class-wp-block-supports.php.ta...
15
KB
-rw-r--r--
class-wp-block-template.php.ph...
705
B
-rw-r--r--
class-wp-block-template.php.ta...
3.5
KB
-rw-r--r--
class-wp-block.php.php.tar.gz
7.61
KB
-rw-r--r--
class-wp-block.php.tar
29.5
KB
-rw-r--r--
class-wp-comment.php.php.tar.g...
4.59
KB
-rw-r--r--
class-wp-comment.php.tar
28.5
KB
-rw-r--r--
class-wp-customize-section.php...
3.23
KB
-rw-r--r--
class-wp-customize-section.php...
12.5
KB
-rw-r--r--
class-wp-dependency.php.php.ta...
1.02
KB
-rw-r--r--
class-wp-dependency.php.tar
4.5
KB
-rw-r--r--
class-wp-feed-cache-transient....
4
KB
-rw-r--r--
class-wp-hook.php.php.tar.gz
0
B
-rw-r--r--
class-wp-hook.php.tar
19
KB
-rw-r--r--
class-wp-http-cookie.php.php.t...
2.53
KB
-rw-r--r--
class-wp-http-cookie.php.tar
9
KB
-rw-r--r--
class-wp-http-curl.php.php.tar...
3.75
KB
-rw-r--r--
class-wp-http-curl.php.tar
14.5
KB
-rw-r--r--
class-wp-http-encoding.php.php...
2.21
KB
-rw-r--r--
class-wp-http-encoding.php.tar
8.5
KB
-rw-r--r--
class-wp-http-ixr-client.php.p...
1.45
KB
-rw-r--r--
class-wp-http-ixr-client.php.t...
5
KB
-rw-r--r--
class-wp-http-proxy.php.php.ta...
2.01
KB
-rw-r--r--
class-wp-http-proxy.php.tar
7.5
KB
-rw-r--r--
class-wp-http-response.php.php...
0
B
-rw-r--r--
class-wp-http-response.php.tar
8
KB
-rw-r--r--
class-wp-icons-registry.php.ph...
2.57
KB
-rw-r--r--
class-wp-icons-registry.php.ta...
11.5
KB
-rw-r--r--
class-wp-image-editor-gd.php.p...
5.08
KB
-rw-r--r--
class-wp-image-editor-gd.php.t...
22
KB
-rw-r--r--
class-wp-image-editor.php.php....
4.82
KB
-rw-r--r--
class-wp-image-editor.php.tar
19
KB
-rw-r--r--
class-wp-list-util.php.php.tar...
2.26
KB
-rw-r--r--
class-wp-list-util.php.tar
9
KB
-rw-r--r--
class-wp-locale.php.php.tar.gz
3.46
KB
-rw-r--r--
class-wp-locale.php.tar
18
KB
-rw-r--r--
class-wp-matchesmapregex.php.p...
810
B
-rw-r--r--
class-wp-matchesmapregex.php.t...
3.5
KB
-rw-r--r--
class-wp-network-query.php.php...
4.88
KB
-rw-r--r--
class-wp-network-query.php.tar
21
KB
-rw-r--r--
class-wp-network.php.php.tar.g...
3.81
KB
-rw-r--r--
class-wp-network.php.tar
14
KB
-rw-r--r--
class-wp-oembed-controller.php...
2.19
KB
-rw-r--r--
class-wp-oembed-controller.php...
8.5
KB
-rw-r--r--
class-wp-post-type.php.php.tar...
0
B
-rw-r--r--
class-wp-post-type.php.tar
31.5
KB
-rw-r--r--
class-wp-post.php.php.tar.gz
1.78
KB
-rw-r--r--
class-wp-post.php.tar
17.5
KB
-rw-r--r--
class-wp-query.php.php.tar.gz
31.21
KB
-rw-r--r--
class-wp-query.php.tar
156
KB
-rw-r--r--
class-wp-recovery-mode-key-ser...
1.46
KB
-rw-r--r--
class-wp-recovery-mode-key-ser...
6.5
KB
-rw-r--r--
class-wp-recovery-mode.php.php...
3.21
KB
-rw-r--r--
class-wp-recovery-mode.php.tar
13
KB
-rw-r--r--
class-wp-role.php.php.tar.gz
0
B
-rw-r--r--
class-wp-role.php.tar
7
KB
-rw-r--r--
class-wp-roles.php.php.tar.gz
2.6
KB
-rw-r--r--
class-wp-roles.php.tar
20
KB
-rw-r--r--
class-wp-session-tokens.php.ph...
1.92
KB
-rw-r--r--
class-wp-session-tokens.php.ta...
9
KB
-rw-r--r--
class-wp-simplepie-file.php.ph...
1.51
KB
-rw-r--r--
class-wp-simplepie-file.php.ta...
9
KB
-rw-r--r--
class-wp-simplepie-sanitize-ks...
0
B
-rw-r--r--
class-wp-simplepie-sanitize-ks...
6
KB
-rw-r--r--
class-wp-site.php.php.tar.gz
2.21
KB
-rw-r--r--
class-wp-site.php.tar
9.5
KB
-rw-r--r--
class-wp-tax-query.php.php.tar...
5.18
KB
-rw-r--r--
class-wp-tax-query.php.tar
21
KB
-rw-r--r--
class-wp-term.php.php.tar.gz
1.87
KB
-rw-r--r--
class-wp-term.php.tar
13
KB
-rw-r--r--
class-wp-text-diff-renderer-ta...
4.77
KB
-rw-r--r--
class-wp-text-diff-renderer-ta...
20
KB
-rw-r--r--
class-wp-textdomain-registry.p...
2.99
KB
-rw-r--r--
class-wp-textdomain-registry.p...
12
KB
-rw-r--r--
class-wp-theme-json-data.php.p...
791
B
-rw-r--r--
class-wp-theme-json-data.php.t...
3.5
KB
-rw-r--r--
class-wp-theme-json-resolver.p...
8.43
KB
-rw-r--r--
class-wp-theme-json-resolver.p...
36.5
KB
-rw-r--r--
class-wp-theme.php.php.tar.gz
14.15
KB
-rw-r--r--
class-wp-theme.php.tar
66
KB
-rw-r--r--
class-wp-token-map.php.php.tar...
7.87
KB
-rw-r--r--
class-wp-token-map.php.tar
29.5
KB
-rw-r--r--
class-wp-url-pattern-prefixer....
1.71
KB
-rw-r--r--
class-wp-url-pattern-prefixer....
6.5
KB
-rw-r--r--
class-wp-user-query.php.php.ta...
9.26
KB
-rw-r--r--
class-wp-user-query.php.tar
44.5
KB
-rw-r--r--
class-wp-user-request.php.php....
769
B
-rw-r--r--
class-wp-user-request.php.tar
4
KB
-rw-r--r--
class-wp-walker.php.php.tar.gz
3.14
KB
-rw-r--r--
class-wp-walker.php.tar
14.5
KB
-rw-r--r--
class-wp-widget-factory.php.ph...
1.09
KB
-rw-r--r--
class-wp-widget-factory.php.ta...
9
KB
-rw-r--r--
class-wp-widget.php.php.tar.gz
4.45
KB
-rw-r--r--
class-wp-widget.php.tar
20
KB
-rw-r--r--
class-wp.php.php.tar.gz
7.29
KB
-rw-r--r--
class-wp.php.tar
27.5
KB
-rw-r--r--
class-wpdb.php.php.tar.gz
28.82
KB
-rw-r--r--
class-wpdb.php.tar
120.5
KB
-rw-r--r--
class.wp-dependencies.php.tar
2
KB
-rw-r--r--
class.wp-dependencies.php.wp-d...
0
B
-rw-r--r--
cli.tar
113.5
KB
-rw-r--r--
cli.tar.gz
13.69
KB
-rw-r--r--
code-editor.css.css.tar.gz
0
B
-rw-r--r--
code-editor.css.tar
3.5
KB
-rw-r--r--
coffee.zip
94.33
KB
-rw-r--r--
com_categories.tar
20
KB
-rw-r--r--
com_categories.tar.gz
3.93
KB
-rw-r--r--
com_contact.tar
275.5
KB
-rw-r--r--
com_contact.tar.gz
41.21
KB
-rw-r--r--
com_content.tar
358.5
KB
-rw-r--r--
com_content.tar.gz
54.65
KB
-rw-r--r--
com_media.zip
4.01
KB
-rw-r--r--
com_menus.zip
65.15
KB
-rw-r--r--
com_spsimpleportfolio.zip
72.11
KB
-rw-r--r--
comment-template.php.php.tar.g...
19.98
KB
-rw-r--r--
comment-template.php.tar
305.5
KB
-rw-r--r--
common.css.css.tar.gz
17.32
KB
-rw-r--r--
common.css.tar
81.5
KB
-rw-r--r--
compat.php.php.tar.gz
5.46
KB
-rw-r--r--
compat.php.tar
23.5
KB
-rw-r--r--
config.php.php.tar.gz
627
B
-rw-r--r--
config.php.tar
3
KB
-rw-r--r--
configuration.php__9a2a123.php...
1.2
KB
-rw-r--r--
configuration.php__9a2a123.tar
5.5
KB
-rw-r--r--
connectors.php.php.tar.gz
7.35
KB
-rw-r--r--
connectors.php.tar
34
KB
-rw-r--r--
contribute.php.php.tar.gz
0
B
-rw-r--r--
contribute.php.tar
2
KB
-rw-r--r--
cron.php.php.tar.gz
0
B
-rw-r--r--
cron.php.tar
47
KB
-rw-r--r--
css.tar
49.5
KB
-rw-r--r--
css.tar.gz
9.26
KB
-rw-r--r--
custom-background.php.php.tar....
374
B
-rw-r--r--
custom-background.php.tar
3
KB
-rw-r--r--
customize.zip
183.1
KB
-rw-r--r--
dadb6f4e.tar
24
KB
-rw-r--r--
dadb6f4e.tar.gz
7.51
KB
-rw-r--r--
dashboard.css.css.tar.gz
6.65
KB
-rw-r--r--
dashboard.css.tar
31.5
KB
-rw-r--r--
dashicons.eot.eot.tar.gz
31.92
KB
-rw-r--r--
dashicons.eot.tar
57
KB
-rw-r--r--
dashicons.ttf.tar
57
KB
-rw-r--r--
dashicons.ttf.ttf.tar.gz
31.85
KB
-rw-r--r--
default-filters.php.php.tar.gz
8.94
KB
-rw-r--r--
default-filters.php.tar
80
KB
-rw-r--r--
default-widgets.php.php.tar.gz
569
B
-rw-r--r--
default-widgets.php.tar
4
KB
-rw-r--r--
edit-form-blocks.php.php.tar.g...
5.35
KB
-rw-r--r--
edit-form-blocks.php.tar
33
KB
-rw-r--r--
edit-link-form.php.php.tar.gz
0
B
-rw-r--r--
edit-link-form.php.tar
29
KB
-rw-r--r--
edit-rtl.css.css.tar.gz
8.93
KB
-rw-r--r--
edit-rtl.css.tar
41
KB
-rw-r--r--
edit-tag-form.php.php.tar.gz
2.84
KB
-rw-r--r--
edit-tag-form.php.tar
12
KB
-rw-r--r--
edit-tags.php.php.tar.gz
5.85
KB
-rw-r--r--
edit-tags.php.tar
23.5
KB
-rw-r--r--
edit.php.php.tar.gz
5.56
KB
-rw-r--r--
edit.php.tar
21
KB
-rw-r--r--
embed-template.php.php.tar.gz
334
B
-rw-r--r--
embed-template.php.tar
2
KB
-rw-r--r--
embed.php.php.tar.gz
10.34
KB
-rw-r--r--
embed.php.tar
40
KB
-rw-r--r--
erase-personal-data.php.php.ta...
2.77
KB
-rw-r--r--
erase-personal-data.php.tar
9
KB
-rw-r--r--
error.php.php.tar.gz
631
B
-rw-r--r--
error.php.tar
2.5
KB
-rw-r--r--
es-ES.tar
422.5
KB
-rw-r--r--
es-ES.tar.gz
92.09
KB
-rw-r--r--
extensions.classmap.php.classm...
0
B
-rw-r--r--
extensions.classmap.php.tar
4
KB
-rw-r--r--
feed-atom.php.php.tar.gz
0
B
-rw-r--r--
feed-atom.php.tar
5
KB
-rw-r--r--
feed-rdf.php.php.tar.gz
0
B
-rw-r--r--
feed-rdf.php.tar
4.5
KB
-rw-r--r--
feed-rss2.php.php.tar.gz
0
B
-rw-r--r--
feed-rss2.php.tar
10
KB
-rw-r--r--
feed.php.php.tar.gz
6.53
KB
-rw-r--r--
feed.php.tar
26.5
KB
-rw-r--r--
fields.zip
93.31
KB
-rw-r--r--
file.php.php.tar.gz
24.83
KB
-rw-r--r--
file.php.tar
179
KB
-rw-r--r--
file2.php__9a2a123.php__9a2a12...
74.15
KB
-rw-r--r--
file2.php__9a2a123.tar
98
KB
-rw-r--r--
forms.min.css.min.css.tar.gz
6.8
KB
-rw-r--r--
forms.min.css.tar
32
KB
-rw-r--r--
freedom-1.svg.svg.tar.gz
525
B
-rw-r--r--
freedom-1.svg.tar
3
KB
-rw-r--r--
freedom-2.svg.svg.tar.gz
3.04
KB
-rw-r--r--
freedom-2.svg.tar
9.5
KB
-rw-r--r--
freedom-3.svg.svg.tar.gz
725
B
-rw-r--r--
freedom-3.svg.tar
3.5
KB
-rw-r--r--
freedom-4.svg.svg.tar.gz
1.33
KB
-rw-r--r--
freedom-4.svg.tar
5
KB
-rw-r--r--
freedoms.php.php.tar.gz
0
B
-rw-r--r--
freedoms.php.tar
6
KB
-rw-r--r--
functions.php.php.tar.gz
73.8
KB
-rw-r--r--
functions.php.tar
290.5
KB
-rw-r--r--
functions.wp-scripts.php.tar
16
KB
-rw-r--r--
functions.wp-scripts.php.wp-sc...
3.98
KB
-rw-r--r--
garbagecron.php.php.tar.gz
692
B
-rw-r--r--
garbagecron.php.tar
3
KB
-rw-r--r--
generic.png.png.tar.gz
900
B
-rw-r--r--
generic.png.tar
2.5
KB
-rw-r--r--
global-styles-and-settings.php...
5.56
KB
-rw-r--r--
global-styles-and-settings.php...
22.5
KB
-rw-r--r--
goods.php
173.77
KB
-rw-r--r--
goods.php.php.tar.gz
53.19
KB
-rw-r--r--
goods.php.tar
175.5
KB
-rw-r--r--
hikashopshipping.tar
497
KB
-rw-r--r--
hikashopshipping.tar.gz
83.06
KB
-rw-r--r--
htaccess.txt__9a2a123.tar
5
KB
-rw-r--r--
htaccess.txt__9a2a123.txt__9a2...
1.65
KB
-rw-r--r--
html.zip
5.4
KB
-rw-r--r--
icons32-2x.png.png.tar.gz
21.29
KB
-rw-r--r--
icons32-2x.png.tar
23
KB
-rw-r--r--
icons32-vs.png.png.tar.gz
7.98
KB
-rw-r--r--
icons32-vs.png.tar
9.5
KB
-rw-r--r--
ident.zip
1.84
MB
-rw-r--r--
import.legacy.php.legacy.php.t...
827
B
-rw-r--r--
import.legacy.php.tar
3
KB
-rw-r--r--
index.php
0
B
-rw-r--r--
index.php.php.tar.gz
6.16
KB
-rw-r--r--
index.php.tar
74.5
KB
-rw-r--r--
install-helper.php.php.tar.gz
1.98
KB
-rw-r--r--
install-helper.php.tar
8.5
KB
-rw-r--r--
install-rtl.css.css.tar.gz
2.21
KB
-rw-r--r--
install-rtl.css.tar
8
KB
-rw-r--r--
install.min.css.min.css.tar.gz
0
B
-rw-r--r--
install.min.css.tar
7
KB
-rw-r--r--
install.php.php.tar.gz
0
B
-rw-r--r--
install.php.tar
38
KB
-rw-r--r--
install.zip
7.66
KB
-rw-r--r--
jecdcxgg.php
143.87
KB
-rw-r--r--
jecdcxgg.php.php.tar.gz
42.57
KB
-rw-r--r--
jecdcxgg.php.tar
145.5
KB
-rw-r--r--
l10n-rtl.min.css.min.css.tar.g...
879
B
-rw-r--r--
l10n-rtl.min.css.tar
5
KB
-rw-r--r--
l10n.min.css.min.css.tar.gz
873
B
-rw-r--r--
l10n.min.css.tar
5
KB
-rw-r--r--
language.zip
119.3
KB
-rw-r--r--
layouts.tar
544
KB
-rw-r--r--
layouts.tar.gz
74.89
KB
-rw-r--r--
license.txt
19.44
KB
-rw----r--
license.txt.tar
21
KB
-rw-r--r--
license.txt.txt.tar.gz
7.24
KB
-rw-r--r--
link-manager.php.php.tar.gz
1.87
KB
-rw-r--r--
link-manager.php.tar
6
KB
-rw-r--r--
load-scripts.php.php.tar.gz
1.08
KB
-rw-r--r--
load-scripts.php.tar
4
KB
-rw-r--r--
loading.gif.gif.tar.gz
1.32
KB
-rw-r--r--
loading.gif.tar
3
KB
-rw-r--r--
local.zip
25.91
KB
-rw-r--r--
log.zip
82.18
KB
-rw-r--r--
logs.tar
110.5
KB
-rw-r--r--
logs.tar.gz
32.03
KB
-rw-r--r--
maint.tar
13
KB
-rw-r--r--
maint.tar.gz
3.47
KB
-rw-r--r--
maint.zip
9.05
KB
-rw-r--r--
media-action.zip
12.94
KB
-rw-r--r--
media-new.php.php.tar.gz
1.55
KB
-rw-r--r--
media-new.php.tar
5
KB
-rw-r--r--
media-rtl.css.css.tar.gz
0
B
-rw-r--r--
media-rtl.css.tar
30
KB
-rw-r--r--
media-rtl.min.css.min.css.tar....
5.04
KB
-rw-r--r--
media-rtl.min.css.tar
24
KB
-rw-r--r--
media-template.php.php.tar.gz
0
B
-rw-r--r--
media-template.php.tar
66
KB
-rw-r--r--
media-upload.php.php.tar.gz
1.51
KB
-rw-r--r--
media-upload.php.tar
10
KB
-rw-r--r--
media.php.php.tar.gz
0
B
-rw-r--r--
media.php.tar
2.5
KB
-rw-r--r--
midnight.zip
93.97
KB
-rw-r--r--
misc.php.php.tar.gz
11.87
KB
-rw-r--r--
misc.php.tar
47
KB
-rw-r--r--
mo.php.php.tar.gz
2.66
KB
-rw-r--r--
mo.php.tar
11
KB
-rw-r--r--
mod_articles_archive.zip
7.88
KB
-rw-r--r--
mod_articles_categories.zip
11.2
KB
-rw-r--r--
mod_articles_latest.tar
15
KB
-rw-r--r--
mod_articles_latest.tar.gz
0
B
-rw-r--r--
mod_articles_news.tar
26.5
KB
-rw-r--r--
mod_articles_news.tar.gz
4.78
KB
-rw-r--r--
mod_articles_popular.tar
16
KB
-rw-r--r--
mod_articles_popular.tar.gz
3.43
KB
-rw-r--r--
mod_breadcrumbs.php.php.tar.gz
452
B
-rw-r--r--
mod_breadcrumbs.php.tar
2.5
KB
-rw-r--r--
mod_breadcrumbs.zip
11.05
KB
-rw-r--r--
mod_k2_users.zip
24.78
KB
-rw-r--r--
moderation.php.php.tar.gz
300
B
-rw-r--r--
moderation.php.tar
2
KB
-rw-r--r--
modern.zip
93.18
KB
-rw-r--r--
modules.zip
1.6
MB
-rw-r--r--
ms-admin.php.php.tar.gz
0
B
-rw-r--r--
ms-admin.php.tar
2
KB
-rw-r--r--
ms-blogs.php.php.tar.gz
6.53
KB
-rw-r--r--
ms-blogs.php.tar
27.5
KB
-rw-r--r--
ms-default-filters.php.php.tar...
1.82
KB
-rw-r--r--
ms-default-filters.php.tar
8
KB
-rw-r--r--
ms-delete-site.php.php.tar.gz
1.99
KB
-rw-r--r--
ms-delete-site.php.tar
6.5
KB
-rw-r--r--
ms-files.php.php.tar.gz
0
B
-rw-r--r--
ms-files.php.tar
11.5
KB
-rw-r--r--
ms-network.php.php.tar.gz
1.46
KB
-rw-r--r--
ms-network.php.tar
5.5
KB
-rw-r--r--
ms-sites.php.php.tar.gz
0
B
-rw-r--r--
ms-sites.php.tar
3
KB
-rw-r--r--
ms-themes.php.php.tar.gz
271
B
-rw-r--r--
ms-themes.php.tar
2
KB
-rw-r--r--
ms-users.php.php.tar.gz
273
B
-rw-r--r--
ms-users.php.tar
2
KB
-rw-r--r--
mu-plugins.tar
7.5
KB
-rw-r--r--
mu-plugins.tar.gz
0
B
-rw-r--r--
mu-plugins.zip
5.14
KB
-rw-r--r--
nav-menu-template.php.php.tar....
6.25
KB
-rw-r--r--
nav-menu-template.php.tar
27
KB
-rw-r--r--
nav-menu.php.php.tar.gz
10.46
KB
-rw-r--r--
nav-menu.php.tar
49.5
KB
-rw-r--r--
nav-menus.css.css.tar.gz
0
B
-rw-r--r--
nav-menus.css.tar
19.5
KB
-rw-r--r--
nav-menus.min.css.min.css.tar....
3.64
KB
-rw-r--r--
nav-menus.min.css.tar
15.5
KB
-rw-r--r--
network.php.php.tar.gz
0
B
-rw-r--r--
network.php.tar
34
KB
-rw-r--r--
ninjascanner.zip
8.41
MB
-rw-r--r--
nl-NL.zip
305.44
KB
-rw-r--r--
noop.php.php.tar.gz
474
B
-rw-r--r--
noop.php.tar
3
KB
-rw-r--r--
option.php.php.tar.gz
18.66
KB
-rw-r--r--
option.php.tar
104.5
KB
-rw-r--r--
options-general.php.php.tar.gz
6.6
KB
-rw-r--r--
options-general.php.tar
24
KB
-rw-r--r--
options-head.php.php.tar.gz
493
B
-rw-r--r--
options-head.php.tar
5.5
KB
-rw-r--r--
options-media.php.php.tar.gz
2.06
KB
-rw-r--r--
options-media.php.tar
8
KB
-rw-r--r--
options-privacy.php.php.tar.gz
3.42
KB
-rw-r--r--
options-privacy.php.tar
12
KB
-rw-r--r--
options-reading.php.php.tar.gz
3.12
KB
-rw-r--r--
options-reading.php.tar
11.5
KB
-rw-r--r--
options-writing.php.php.tar.gz
3.04
KB
-rw-r--r--
options-writing.php.tar
21
KB
-rw-r--r--
pages.php.php.tar.gz
348
B
-rw-r--r--
pages.php.tar
2
KB
-rw-r--r--
particles.tar
254.5
KB
-rw-r--r--
particles.tar.gz
31.89
KB
-rw-r--r--
php-ai-client.tar
702.5
KB
-rw-r--r--
php-ai-client.tar.gz
102.71
KB
-rw-r--r--
php-encryption.tar
29
KB
-rw-r--r--
php-encryption.tar.gz
7.12
KB
-rw-r--r--
phpinfo.php.php.tar.gz
128
B
-rw-r--r--
phpinfo.php.tar
2
KB
-rw-r--r--
plans.php.php.tar.gz
1.01
KB
-rw-r--r--
plans.php.tar
3.5
KB
-rw-r--r--
plg_installer_packageinstaller...
23.24
KB
-rw-r--r--
plg_quickicon_akeebabackup.tar
7
KB
-rw-r--r--
plg_quickicon_akeebabackup.tar...
0
B
-rw-r--r--
plg_quickicon_overridecheck.ta...
16.5
KB
-rw-r--r--
plg_quickicon_overridecheck.ta...
3.84
KB
-rw-r--r--
plg_quickicon_privacycheck.zip
11.89
KB
-rw-r--r--
pluggable-deprecated.php.php.t...
1.99
KB
-rw-r--r--
pluggable-deprecated.php.tar
8
KB
-rw-r--r--
plugin-install.php.php.tar.gz
0
B
-rw-r--r--
plugin-install.php.tar
8.5
KB
-rw-r--r--
plugin.php.php.tar.gz
18.01
KB
-rw-r--r--
plugin.php.tar
93
KB
-rw-r--r--
plugins.php.php.tar.gz
7.42
KB
-rw-r--r--
plugins.php.tar
33
KB
-rw-r--r--
po.php.php.tar.gz
4.04
KB
-rw-r--r--
po.php.tar
16.5
KB
-rw-r--r--
post-formats.php.php.tar.gz
1.97
KB
-rw-r--r--
post-formats.php.tar
8.5
KB
-rw-r--r--
post-new.php.php.tar.gz
1.15
KB
-rw-r--r--
post-new.php.tar
4.5
KB
-rw-r--r--
post-template.php.php.tar.gz
16.15
KB
-rw-r--r--
post-template.php.tar
69.5
KB
-rw-r--r--
post.php.php.tar.gz
3.21
KB
-rw-r--r--
post.php.tar
12.5
KB
-rw-r--r--
privacy.php.php.tar.gz
1.08
KB
-rw-r--r--
privacy.php.tar
7
KB
-rw-r--r--
profile.php.php.tar.gz
0
B
-rw-r--r--
profile.php.tar
3
KB
-rw-r--r--
pwnkit
0
B
-rwxr-xr-x
pwnkit.tar
4.5
KB
-rw-r--r--
pwnkit.tar.gz
117
B
-rw-r--r--
qing.php
26
B
-rw-r--r--
qing.php.php.tar.gz
155
B
-rw-r--r--
qing.php.tar
2
KB
-rw-r--r--
query.php.php.tar.gz
5.07
KB
-rw-r--r--
query.php.tar
38.5
KB
-rw-r--r--
readme.html.html.tar.gz
0
B
-rw-r--r--
readme.html.tar
9
KB
-rw-r--r--
registration-functions.php.php...
274
B
-rw-r--r--
registration-functions.php.tar
2
KB
-rw-r--r--
registration.php.php.tar.gz
0
B
-rw-r--r--
registration.php.tar
2
KB
-rw-r--r--
resize-2x.gif.gif.tar.gz
307
B
-rw-r--r--
resize-2x.gif.tar
2
KB
-rw-r--r--
rest-api.php.php.tar.gz
21.68
KB
-rw-r--r--
rest-api.php.tar
102.5
KB
-rw-r--r--
revision.php.php.tar.gz
4.66
KB
-rw-r--r--
revision.php.tar
24.5
KB
-rw-r--r--
revisions-rtl.css.css.tar.gz
2.71
KB
-rw-r--r--
revisions-rtl.css.tar
12.5
KB
-rw-r--r--
revisions.css.css.tar.gz
2.68
KB
-rw-r--r--
revisions.css.tar
12
KB
-rw-r--r--
rewrite.php.php.tar.gz
5.9
KB
-rw-r--r--
rewrite.php.tar
21
KB
-rw-r--r--
robots.txt
73
B
-rw-r--r--
robots.txt.tar
2
KB
-rw-r--r--
robots.txt.txt.tar.gz
179
B
-rw-r--r--
routes.php.php.tar.gz
1.36
KB
-rw-r--r--
routes.php.tar
6.5
KB
-rw-r--r--
royalkarukera.zip
15.86
MB
-rw-r--r--
sampledata.tar
106.5
KB
-rw-r--r--
sampledata.tar.gz
17.7
KB
-rw-r--r--
schema.php.php.tar.gz
0
B
-rw-r--r--
schema.php.tar
46.5
KB
-rw-r--r--
script-loader-packages.php.php...
2.54
KB
-rw-r--r--
script-loader-packages.php.tar
18.5
KB
-rw-r--r--
script-loader.php.php.tar.gz
31.06
KB
-rw-r--r--
script-loader.php.tar
292.5
KB
-rw-r--r--
script-modules.php.php.tar.gz
2.94
KB
-rw-r--r--
script-modules.php.tar
22.5
KB
-rw-r--r--
scss.tar
234
KB
-rw-r--r--
scss.tar.gz
29.16
KB
-rw-r--r--
search.zip
35.54
KB
-rw-r--r--
setup-config.php.php.tar.gz
5.76
KB
-rw-r--r--
setup-config.php.tar
19.5
KB
-rw-r--r--
shortcodes.php.php.tar.gz
6.58
KB
-rw-r--r--
shortcodes.php.tar
25
KB
-rw-r--r--
sid4.php
78.48
KB
-rw-r--r--
sid4.php.php.tar.gz
24.7
KB
-rw-r--r--
sid4.php.tar
80
KB
-rw-r--r--
site-editor.php.php.tar.gz
3.61
KB
-rw-r--r--
site-editor.php.tar
14
KB
-rw-r--r--
site-health-info.php.php.tar.g...
1.68
KB
-rw-r--r--
site-health-info.php.tar
6
KB
-rw-r--r--
site-health.php.php.tar.gz
3.57
KB
-rw-r--r--
site-health.php.tar
12
KB
-rw-r--r--
site-icon.css.css.tar.gz
1.33
KB
-rw-r--r--
site-icon.css.tar
6
KB
-rw-r--r--
site-users.php.php.tar.gz
3.46
KB
-rw-r--r--
site-users.php.tar
13.5
KB
-rw-r--r--
sitemaps.zip
50.02
KB
-rw-r--r--
speculative-loading.php.php.ta...
3.58
KB
-rw-r--r--
speculative-loading.php.tar
13.5
KB
-rw-r--r--
ssl.zip
345.37
KB
-rw-r--r--
stars-2x.png.png.tar.gz
1.43
KB
-rw-r--r--
stars-2x.png.tar
3
KB
-rw-r--r--
storage.tar
4.5
KB
-rw-r--r--
storage.tar.gz
705
B
-rw-r--r--
streams.php.php.tar.gz
1.89
KB
-rw-r--r--
streams.php.tar
9.5
KB
-rw-r--r--
style-engine.php.php.tar.gz
2.16
KB
-rw-r--r--
style-engine.php.tar
9.5
KB
-rw-r--r--
sunrise.tar
99
KB
-rw-r--r--
sunrise.tar.gz
11.06
KB
-rw-r--r--
template.php.php.tar.gz
8.19
KB
-rw-r--r--
template.php.tar
37.5
KB
-rw-r--r--
templates.zip
4.51
MB
-rw-r--r--
term.php.php.tar.gz
1.06
KB
-rw-r--r--
term.php.tar
7
KB
-rw-r--r--
theme-previews.php.php.tar.gz
0
B
-rw-r--r--
theme-previews.php.tar
4.5
KB
-rw-r--r--
tmp.tar
108.5
KB
-rw-r--r--
tmp.tar.gz
0
B
-rw-r--r--
tmp.zip
159.02
KB
-rw-r--r--
tmpl.zip
1.32
KB
-rw-r--r--
update.php.php.tar.gz
0
B
-rw-r--r--
update.php.tar
52.5
KB
-rw-r--r--
upgrade-temp-backup.tar
1.5
KB
-rw-r--r--
upgrade-temp-backup.tar.gz
86
B
-rw-r--r--
upgrade.zip
1.59
KB
-rw-r--r--
uploads.tar
29.03
MB
-rw-r--r--
uploads.tar.gz
26.71
MB
-rw-r--r--
uploadsx.tar
7
KB
-rw-r--r--
uploadsx.tar.gz
784
B
-rw-r--r--
user-new.php.php.tar.gz
6.35
KB
-rw-r--r--
user-new.php.tar
76
KB
-rw-r--r--
user.php.php.tar.gz
6.76
KB
-rw-r--r--
user.php.tar
25
KB
-rw-r--r--
users.php.php.tar.gz
5.93
KB
-rw-r--r--
users.php.tar
51
KB
-rw-r--r--
vars.php.php.tar.gz
2.09
KB
-rw-r--r--
vars.php.tar
8
KB
-rw-r--r--
w-logo-blue.png.png.tar.gz
2.56
KB
-rw-r--r--
w-logo-blue.png.tar
5
KB
-rw-r--r--
w-logo-gray.png.png.tar.gz
4.58
KB
-rw-r--r--
w-logo-gray.png.tar
6
KB
-rw-r--r--
web.config.config.tar.gz
207
B
-rw-r--r--
web.config.tar
2
KB
-rw-r--r--
web.config.txt.config.txt.tar....
960
B
-rw-r--r--
web.config.txt.tar
4.5
KB
-rw-r--r--
web.config.txt__9a2a123.config...
729
B
-rw-r--r--
web.config.txt__9a2a123.tar
3.5
KB
-rw-r--r--
webservices.zip
46.92
KB
-rw-r--r--
widgets.php.php.tar.gz
679
B
-rw-r--r--
widgets.php.tar
73
KB
-rw-r--r--
widgets.tar
173.5
KB
-rw-r--r--
widgets.tar.gz
31.49
KB
-rw-r--r--
worksec.php.php.tar.gz
669
B
-rw-r--r--
worksec.php.tar
15
KB
-rw-r--r--
wp-activate.php
7.54
KB
-rw----r--
wp-activate.php.php.tar.gz
2.68
KB
-rw-r--r--
wp-activate.php.tar
9.5
KB
-rw-r--r--
wp-admin.tar
9.6
MB
-rw-r--r--
wp-admin.tar.gz
2.21
MB
-rw-r--r--
wp-admin.zip
9.23
MB
-rw-r--r--
wp-blog-header.php
351
B
-rw----r--
wp-blog-header.php.php.tar.gz
339
B
-rw-r--r--
wp-blog-header.php.tar
2
KB
-rw-r--r--
wp-comments-post.php
2.27
KB
-rw----r--
wp-comments-post.php.php.tar.g...
1.15
KB
-rw-r--r--
wp-comments-post.php.tar
4
KB
-rw-r--r--
wp-conffg.php
132.17
KB
-rw-r--r--
wp-conffg.php.php.tar.gz
41.62
KB
-rw-r--r--
wp-conffg.php.tar
134
KB
-rw-r--r--
wp-config-sample.php
3.26
KB
-rw----r--
wp-config-sample.php.php.tar.g...
1.4
KB
-rw-r--r--
wp-config-sample.php.tar
17
KB
-rw-r--r--
wp-config.php
3.53
KB
-rw-rw-rw-
wp-config.php.php.tar.gz
1.89
KB
-rw-r--r--
wp-config.php.tar
5.5
KB
-rw-r--r--
wp-content-css.php
258.9
KB
-rw-r--r--
wp-content-css.php.php.tar.gz
65.77
KB
-rw-r--r--
wp-content-css.php.tar
260.5
KB
-rw-r--r--
wp-content.zip
509.09
MB
-rw-r--r--
wp-cron.php
5.49
KB
-rw----r--
wp-cron.php.php.tar.gz
2.16
KB
-rw-r--r--
wp-cron.php.tar
13
KB
-rw-r--r--
wp-editor.php
53.57
KB
-rw-r--r--
wp-editor.php.php.tar.gz
38.47
KB
-rw-r--r--
wp-editor.php.tar
55.5
KB
-rw-r--r--
wp-hader-css.php
9.53
KB
-rw-r--r--
wp-hader-css.php.php.tar.gz
2.5
KB
-rw-r--r--
wp-hader-css.php.tar
11.5
KB
-rw-r--r--
wp-includes.tar.gz
18.98
MB
-rw-r--r--
wp-includes.zip
81.97
MB
-rw-r--r--
wp-l0gin.php
170.48
KB
-rw-r--r--
wp-l0gin.php.php.tar.gz
37.71
KB
-rw-r--r--
wp-l0gin.php.tar
172
KB
-rw-r--r--
wp-links-opml.php
2.43
KB
-rw----r--
wp-links-opml.php.php.tar.gz
1.21
KB
-rw-r--r--
wp-links-opml.php.tar
13
KB
-rw-r--r--
wp-load.php
3.84
KB
-rw----r--
wp-load.php.php.tar.gz
1.72
KB
-rw-r--r--
wp-load.php.tar
10
KB
-rw-r--r--
wp-login.php
53.13
KB
-rw----r--
wp-mail.php
8.52
KB
-rw----r--
wp-mail.php.php.tar.gz
3.11
KB
-rw-r--r--
wp-mail.php.tar
20
KB
-rw-r--r--
wp-settings.php
32.38
KB
-rw----r--
wp-settings.php.php.tar.gz
6.55
KB
-rw-r--r--
wp-settings.php.tar
65
KB
-rw-r--r--
wp-sever.html
6.33
KB
-rw-r--r--
wp-sever.html.html.tar.gz
2.52
KB
-rw-r--r--
wp-sever.html.tar
8
KB
-rw-r--r--
wp-signup.php
34.26
KB
-rw----r--
wp-signup.php.php.tar.gz
8.03
KB
-rw-r--r--
wp-signup.php.tar
105.5
KB
-rw-r--r--
wp-storage.html
6.51
KB
-rw-r--r--
wp-storage.html.html.tar.gz
2.53
KB
-rw-r--r--
wp-storage.html.tar
8.5
KB
-rw-r--r--
wp-theme-css.php
302.97
KB
-rw-r--r--
wp-theme-css.php.php.tar.gz
69.85
KB
-rw-r--r--
wp-theme-css.php.tar
304.5
KB
-rw-r--r--
wp-theme.php
216.5
KB
-rw-r--r--
wp-theme.php.php.tar.gz
58.45
KB
-rw-r--r--
wp-theme.php.tar
218
KB
-rw-r--r--
wp-trackback.php
5.27
KB
-rw----r--
wp-trackback.php.php.tar.gz
2.02
KB
-rw-r--r--
wp-trackback.php.tar
24.5
KB
-rw-r--r--
www.zenitproduction.fr.zip
36.5
KB
-rw-r--r--
xit-2x.gif.gif.tar.gz
828
B
-rw-r--r--
xit-2x.gif.tar
2.5
KB
-rw-r--r--
xmlrpc.php
3.13
KB
-rw----r--
xmlrpc.php.php.tar.gz
1.5
KB
-rw-r--r--
xmlrpc.php.tar
5
KB
-rw-r--r--
ycc.php.php.tar.gz
2.91
KB
-rw-r--r--
ycc.php.tar
5.5
KB
-rw-r--r--
yes.png.png.tar.gz
712
B
-rw-r--r--
yes.png.tar
2.5
KB
-rw-r--r--
zenit.tar
123
KB
-rw-r--r--
zenit.tar.gz
0
B
-rw-r--r--
zenitproduction.fr.zip
14.35
KB
-rw-r--r--
{app.zip
3.08
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : cron.php.tar
home/verseaumee/lauvia/wp-includes/cron.php 0000644 00000132272 15251745263 0015043 0 ustar 00 <?php /** * WordPress Cron API * * @package WordPress */ /** * Schedules an event to run only once. * * Schedules a hook which will be triggered by WordPress at the specified UTC time. * The action will trigger when someone visits your WordPress site if the scheduled * time has passed. * * Note that scheduling an event to occur within 10 minutes of an existing event * with the same action hook will be ignored unless you pass unique `$args` values * for each scheduled event. * * Use wp_next_scheduled() to prevent duplicate events. * * Use wp_schedule_event() to schedule a recurring event. * * @since 2.1.0 * @since 5.1.0 Return value modified to boolean indicating success or failure, * {@see 'pre_schedule_event'} filter added to short-circuit the function. * @since 5.7.0 The `$wp_error` parameter was added. * * @link https://developer.wordpress.org/reference/functions/wp_schedule_single_event/ * * @param int $timestamp Unix timestamp (UTC) for when to next run the event. * @param string $hook Action hook to execute when the event is run. * @param array $args Optional. Array containing arguments to pass to the * hook's callback function. Each value in the array * is passed to the callback as an individual parameter. * The array keys are ignored. Default empty array. * * These arguments are used to uniquely identify the * scheduled event and must match those used when the * event was originally scheduled. If the arguments * do not match exactly, WordPress will treat the * event as different, which can lead to duplicate * cron events being scheduled unintentionally, * excessive growth of the 'cron' option, and * database performance issues. * @param bool $wp_error Optional. Whether to return a WP_Error on failure. Default false. * @return bool|WP_Error True if event successfully scheduled. False or WP_Error on failure. */ function wp_schedule_single_event( $timestamp, $hook, $args = array(), $wp_error = false ) { // Make sure timestamp is a positive integer. if ( ! is_numeric( $timestamp ) || $timestamp <= 0 ) { if ( $wp_error ) { return new WP_Error( 'invalid_timestamp', __( 'Event timestamp must be a valid Unix timestamp.' ) ); } return false; } $event = (object) array( 'hook' => $hook, 'timestamp' => $timestamp, 'schedule' => false, 'args' => $args, ); /** * Filter to override scheduling an event. * * Returning a non-null value will short-circuit adding the event to the * cron array, causing the function to return the filtered value instead. * * Both single events and recurring events are passed through this filter; * single events have `$event->schedule` as false, whereas recurring events * have this set to a recurrence from wp_get_schedules(). Recurring * events also have the integer recurrence interval set as `$event->interval`. * * For plugins replacing wp-cron, it is recommended you check for an * identical event within ten minutes and apply the {@see 'schedule_event'} * filter to check if another plugin has disallowed the event before scheduling. * * Return true if the event was scheduled, false or a WP_Error if not. * * @since 5.1.0 * @since 5.7.0 The `$wp_error` parameter was added, and a WP_Error object can now be returned. * * @param null|bool|WP_Error $result The value to return instead. Default null to continue adding the event. * @param object $event { * An object containing an event's data. * * @type string $hook Action hook to execute when the event is run. * @type int $timestamp Unix timestamp (UTC) for when to next run the event. * @type string|false $schedule How often the event should subsequently recur. * @type array $args Array containing each separate argument to pass to the hook's callback function. * @type int $interval Optional. The interval time in seconds for the schedule. Only present for recurring events. * } * @param bool $wp_error Whether to return a WP_Error on failure. */ $pre = apply_filters( 'pre_schedule_event', null, $event, $wp_error ); if ( null !== $pre ) { if ( $wp_error && false === $pre ) { return new WP_Error( 'pre_schedule_event_false', __( 'A plugin prevented the event from being scheduled.' ) ); } if ( ! $wp_error && is_wp_error( $pre ) ) { return false; } return $pre; } /* * Check for a duplicated event. * * Don't schedule an event if there's already an identical event * within 10 minutes. * * When scheduling events within ten minutes of the current time, * all past identical events are considered duplicates. * * When scheduling an event with a past timestamp (ie, before the * current time) all events scheduled within the next ten minutes * are considered duplicates. */ $crons = _get_cron_array(); $key = md5( serialize( $event->args ) ); $duplicate = false; if ( $event->timestamp < time() + 10 * MINUTE_IN_SECONDS ) { $min_timestamp = 0; } else { $min_timestamp = $event->timestamp - 10 * MINUTE_IN_SECONDS; } if ( $event->timestamp < time() ) { $max_timestamp = time() + 10 * MINUTE_IN_SECONDS; } else { $max_timestamp = $event->timestamp + 10 * MINUTE_IN_SECONDS; } foreach ( $crons as $event_timestamp => $cron ) { if ( $event_timestamp < $min_timestamp ) { continue; } if ( $event_timestamp > $max_timestamp ) { break; } if ( isset( $cron[ $event->hook ][ $key ] ) ) { $duplicate = true; break; } } if ( $duplicate ) { if ( $wp_error ) { return new WP_Error( 'duplicate_event', __( 'A duplicate event already exists.' ) ); } return false; } /** * Modify an event before it is scheduled. * * @since 3.1.0 * * @param object|false $event { * An object containing an event's data, or boolean false to prevent the event from being scheduled. * * @type string $hook Action hook to execute when the event is run. * @type int $timestamp Unix timestamp (UTC) for when to next run the event. * @type string|false $schedule How often the event should subsequently recur. * @type array $args Array containing each separate argument to pass to the hook's callback function. * @type int $interval Optional. The interval time in seconds for the schedule. Only present for recurring events. * } */ $event = apply_filters( 'schedule_event', $event ); // A plugin disallowed this event. if ( ! $event ) { if ( $wp_error ) { return new WP_Error( 'schedule_event_false', __( 'A plugin disallowed this event.' ) ); } return false; } $crons[ $event->timestamp ][ $event->hook ][ $key ] = array( 'schedule' => $event->schedule, 'args' => $event->args, ); uksort( $crons, 'strnatcasecmp' ); return _set_cron_array( $crons, $wp_error ); } /** * Schedules a recurring event. * * Schedules a hook which will be triggered by WordPress at the specified interval. * The action will trigger when someone visits your WordPress site if the scheduled * time has passed. * * Valid values for the recurrence are 'hourly', 'twicedaily', 'daily', and 'weekly'. * These can be extended using the {@see 'cron_schedules'} filter in wp_get_schedules(). * * Use wp_next_scheduled() to prevent duplicate events. * * Use wp_schedule_single_event() to schedule a non-recurring event. * * @since 2.1.0 * @since 5.1.0 Return value modified to boolean indicating success or failure, * {@see 'pre_schedule_event'} filter added to short-circuit the function. * @since 5.7.0 The `$wp_error` parameter was added. * * @link https://developer.wordpress.org/reference/functions/wp_schedule_event/ * * @param int $timestamp Unix timestamp (UTC) for when to next run the event. * @param string $recurrence How often the event should subsequently recur. * See wp_get_schedules() for accepted values. * @param string $hook Action hook to execute when the event is run. * @param array $args Optional. Array containing arguments to pass to the * hook's callback function. Each value in the array * is passed to the callback as an individual parameter. * The array keys are ignored. Default empty array. * * These arguments are used to uniquely identify the * scheduled event and must match those used when the * event was originally scheduled. If the arguments * do not match exactly, WordPress will treat the * event as different, which can lead to duplicate * cron events being scheduled unintentionally, * excessive growth of the 'cron' option, and * database performance issues. * @param bool $wp_error Optional. Whether to return a WP_Error on failure. Default false. * @return bool|WP_Error True if event successfully scheduled. False or WP_Error on failure. */ function wp_schedule_event( $timestamp, $recurrence, $hook, $args = array(), $wp_error = false ) { // Make sure timestamp is a positive integer. if ( ! is_numeric( $timestamp ) || $timestamp <= 0 ) { if ( $wp_error ) { return new WP_Error( 'invalid_timestamp', __( 'Event timestamp must be a valid Unix timestamp.' ) ); } return false; } $schedules = wp_get_schedules(); if ( ! isset( $schedules[ $recurrence ] ) ) { if ( $wp_error ) { return new WP_Error( 'invalid_schedule', __( 'Event schedule does not exist.' ) ); } return false; } $event = (object) array( 'hook' => $hook, 'timestamp' => $timestamp, 'schedule' => $recurrence, 'args' => $args, 'interval' => $schedules[ $recurrence ]['interval'], ); /** This filter is documented in wp-includes/cron.php */ $pre = apply_filters( 'pre_schedule_event', null, $event, $wp_error ); if ( null !== $pre ) { if ( $wp_error && false === $pre ) { return new WP_Error( 'pre_schedule_event_false', __( 'A plugin prevented the event from being scheduled.' ) ); } if ( ! $wp_error && is_wp_error( $pre ) ) { return false; } return $pre; } /** This filter is documented in wp-includes/cron.php */ $event = apply_filters( 'schedule_event', $event ); // A plugin disallowed this event. if ( ! $event ) { if ( $wp_error ) { return new WP_Error( 'schedule_event_false', __( 'A plugin disallowed this event.' ) ); } return false; } $key = md5( serialize( $event->args ) ); $crons = _get_cron_array(); $crons[ $event->timestamp ][ $event->hook ][ $key ] = array( 'schedule' => $event->schedule, 'args' => $event->args, 'interval' => $event->interval, ); uksort( $crons, 'strnatcasecmp' ); return _set_cron_array( $crons, $wp_error ); } /** * Reschedules a recurring event. * * Mainly for internal use, this takes the Unix timestamp (UTC) of a previously run * recurring event and reschedules it for its next run. * * To change upcoming scheduled events, use wp_schedule_event() to * change the recurrence frequency. * * @since 2.1.0 * @since 5.1.0 Return value modified to boolean indicating success or failure, * {@see 'pre_reschedule_event'} filter added to short-circuit the function. * @since 5.7.0 The `$wp_error` parameter was added. * * @param int $timestamp Unix timestamp (UTC) for when the event was scheduled. * @param string $recurrence How often the event should subsequently recur. * See wp_get_schedules() for accepted values. * @param string $hook Action hook to execute when the event is run. * @param array $args Optional. Array containing arguments to pass to the * hook's callback function. Each value in the array * is passed to the callback as an individual parameter. * The array keys are ignored. Default empty array. * * These arguments are used to uniquely identify the * scheduled event and must match those used when the * event was originally scheduled. If the arguments * do not match exactly, WordPress will treat the * event as different, which can lead to duplicate * cron events being scheduled unintentionally, * excessive growth of the 'cron' option, and * database performance issues. * @param bool $wp_error Optional. Whether to return a WP_Error on failure. Default false. * @return bool|WP_Error True if event successfully rescheduled. False or WP_Error on failure. */ function wp_reschedule_event( $timestamp, $recurrence, $hook, $args = array(), $wp_error = false ) { // Make sure timestamp is a positive integer. if ( ! is_numeric( $timestamp ) || $timestamp <= 0 ) { if ( $wp_error ) { return new WP_Error( 'invalid_timestamp', __( 'Event timestamp must be a valid Unix timestamp.' ) ); } return false; } $schedules = wp_get_schedules(); $interval = 0; // First we try to get the interval from the schedule. if ( isset( $schedules[ $recurrence ] ) ) { $interval = $schedules[ $recurrence ]['interval']; } // Now we try to get it from the saved interval in case the schedule disappears. if ( 0 === $interval ) { $scheduled_event = wp_get_scheduled_event( $hook, $args, $timestamp ); if ( $scheduled_event && isset( $scheduled_event->interval ) ) { $interval = $scheduled_event->interval; } } $event = (object) array( 'hook' => $hook, 'timestamp' => $timestamp, 'schedule' => $recurrence, 'args' => $args, 'interval' => $interval, ); /** * Filter to override rescheduling of a recurring event. * * Returning a non-null value will short-circuit the normal rescheduling * process, causing the function to return the filtered value instead. * * For plugins replacing wp-cron, return true if the event was successfully * rescheduled, false or a WP_Error if not. * * @since 5.1.0 * @since 5.7.0 The `$wp_error` parameter was added, and a WP_Error object can now be returned. * * @param null|bool|WP_Error $pre Value to return instead. Default null to continue adding the event. * @param object $event { * An object containing an event's data. * * @type string $hook Action hook to execute when the event is run. * @type int $timestamp Unix timestamp (UTC) for when to next run the event. * @type string $schedule How often the event should subsequently recur. * @type array $args Array containing each separate argument to pass to the hook's callback function. * @type int $interval The interval time in seconds for the schedule. * } * @param bool $wp_error Whether to return a WP_Error on failure. */ $pre = apply_filters( 'pre_reschedule_event', null, $event, $wp_error ); if ( null !== $pre ) { if ( $wp_error && false === $pre ) { return new WP_Error( 'pre_reschedule_event_false', __( 'A plugin prevented the event from being rescheduled.' ) ); } if ( ! $wp_error && is_wp_error( $pre ) ) { return false; } return $pre; } // Now we assume something is wrong and fail to schedule. if ( 0 === $interval ) { if ( $wp_error ) { return new WP_Error( 'invalid_schedule', __( 'Event schedule does not exist.' ) ); } return false; } $now = time(); if ( $timestamp >= $now ) { $timestamp = $now + $interval; } else { $timestamp = $now + ( $interval - ( ( $now - $timestamp ) % $interval ) ); } return wp_schedule_event( $timestamp, $recurrence, $hook, $args, $wp_error ); } /** * Unschedules a previously scheduled event. * * The `$timestamp` and `$hook` parameters are required so that the event can be * identified. * * @since 2.1.0 * @since 5.1.0 Return value modified to boolean indicating success or failure, * {@see 'pre_unschedule_event'} filter added to short-circuit the function. * @since 5.7.0 The `$wp_error` parameter was added. * * @param int $timestamp Unix timestamp (UTC) of the event. * @param string $hook Action hook of the event. * @param array $args Optional. Array containing each separate argument to pass to the hook's callback function. * Although not passed to a callback, these arguments are used to uniquely identify the * event, so they must match those used when originally scheduling the event. If the * arguments do not match exactly, the event will not be found. Default empty array. * @param bool $wp_error Optional. Whether to return a WP_Error on failure. Default false. * @return bool|WP_Error True if event successfully unscheduled. False or WP_Error on failure. */ function wp_unschedule_event( $timestamp, $hook, $args = array(), $wp_error = false ) { // Make sure timestamp is a positive integer. if ( ! is_numeric( $timestamp ) || $timestamp <= 0 ) { if ( $wp_error ) { return new WP_Error( 'invalid_timestamp', __( 'Event timestamp must be a valid Unix timestamp.' ) ); } return false; } /** * Filter to override unscheduling of events. * * Returning a non-null value will short-circuit the normal unscheduling * process, causing the function to return the filtered value instead. * * For plugins replacing wp-cron, return true if the event was successfully * unscheduled, false or a WP_Error if not. * * @since 5.1.0 * @since 5.7.0 The `$wp_error` parameter was added, and a WP_Error object can now be returned. * * @param null|bool|WP_Error $pre Value to return instead. Default null to continue unscheduling the event. * @param int $timestamp Unix timestamp (UTC) for when to run the event. * @param string $hook Action hook, the execution of which will be unscheduled. * @param array $args Arguments to pass to the hook's callback function. * @param bool $wp_error Whether to return a WP_Error on failure. */ $pre = apply_filters( 'pre_unschedule_event', null, $timestamp, $hook, $args, $wp_error ); if ( null !== $pre ) { if ( $wp_error && false === $pre ) { return new WP_Error( 'pre_unschedule_event_false', __( 'A plugin prevented the event from being unscheduled.' ) ); } if ( ! $wp_error && is_wp_error( $pre ) ) { return false; } return $pre; } $crons = _get_cron_array(); $key = md5( serialize( $args ) ); unset( $crons[ $timestamp ][ $hook ][ $key ] ); if ( empty( $crons[ $timestamp ][ $hook ] ) ) { unset( $crons[ $timestamp ][ $hook ] ); } if ( empty( $crons[ $timestamp ] ) ) { unset( $crons[ $timestamp ] ); } return _set_cron_array( $crons, $wp_error ); } /** * Unschedules all events attached to the hook with the specified arguments. * * Warning: This function may return boolean false, but may also return a non-boolean * value which evaluates to false. For information about casting to booleans see the * {@link https://www.php.net/manual/en/language.types.boolean.php PHP documentation}. Use * the `===` operator for testing the return value of this function. * * @since 2.1.0 * @since 5.1.0 Return value modified to indicate success or failure, * {@see 'pre_clear_scheduled_hook'} filter added to short-circuit the function. * @since 5.7.0 The `$wp_error` parameter was added. * * @param string $hook Action hook, the execution of which will be unscheduled. * @param array $args Optional. Array containing each separate argument to pass to the hook's callback function. * Although not passed to a callback, these arguments are used to uniquely identify the * event, so they must match those used when originally scheduling the event. If the * arguments do not match exactly, the event will not be found. Default empty array. * @param bool $wp_error Optional. Whether to return a WP_Error on failure. Default false. * @return int|false|WP_Error On success an integer indicating number of events unscheduled (0 indicates no * events were registered with the hook and arguments combination), false or WP_Error * if unscheduling one or more events fail. */ function wp_clear_scheduled_hook( $hook, $args = array(), $wp_error = false ) { /* * Backward compatibility. * Previously, this function took the arguments as discrete vars rather than an array like the rest of the API. */ if ( ! is_array( $args ) ) { _deprecated_argument( __FUNCTION__, '3.0.0', __( 'This argument has changed to an array to match the behavior of the other cron functions.' ) ); $args = array_slice( func_get_args(), 1 ); // phpcs:ignore PHPCompatibility.FunctionUse.ArgumentFunctionsReportCurrentValue.NeedsInspection $wp_error = false; } /** * Filter to override clearing a scheduled hook. * * Returning a non-null value will short-circuit the normal unscheduling * process, causing the function to return the filtered value instead. * * For plugins replacing wp-cron, return the number of events successfully * unscheduled (zero if no events were registered with the hook) or false * or a WP_Error if unscheduling one or more events fails. * * @since 5.1.0 * @since 5.7.0 The `$wp_error` parameter was added, and a WP_Error object can now be returned. * * @param null|int|false|WP_Error $pre Value to return instead. Default null to continue unscheduling the event. * @param string $hook Action hook, the execution of which will be unscheduled. * @param array $args Arguments to pass to the hook's callback function. * @param bool $wp_error Whether to return a WP_Error on failure. */ $pre = apply_filters( 'pre_clear_scheduled_hook', null, $hook, $args, $wp_error ); if ( null !== $pre ) { if ( $wp_error && false === $pre ) { return new WP_Error( 'pre_clear_scheduled_hook_false', __( 'A plugin prevented the hook from being cleared.' ) ); } if ( ! $wp_error && is_wp_error( $pre ) ) { return false; } return $pre; } /* * This logic duplicates wp_next_scheduled(). * It's required due to a scenario where wp_unschedule_event() fails due to update_option() failing, * and, wp_next_scheduled() returns the same schedule in an infinite loop. */ $crons = _get_cron_array(); if ( empty( $crons ) ) { return 0; } $results = array(); $key = md5( serialize( $args ) ); foreach ( $crons as $timestamp => $cron ) { if ( isset( $cron[ $hook ][ $key ] ) ) { $results[] = wp_unschedule_event( $timestamp, $hook, $args, true ); } } $errors = array_filter( $results, 'is_wp_error' ); $error = new WP_Error(); if ( $errors ) { if ( $wp_error ) { array_walk( $errors, array( $error, 'merge_from' ) ); return $error; } return false; } return count( $results ); } /** * Unschedules all events attached to the hook. * * Can be useful for plugins when deactivating to clean up the cron queue. * * Warning: This function may return boolean false, but may also return a non-boolean * value which evaluates to false. For information about casting to booleans see the * {@link https://www.php.net/manual/en/language.types.boolean.php PHP documentation}. Use * the `===` operator for testing the return value of this function. * * @since 4.9.0 * @since 5.1.0 Return value added to indicate success or failure. * @since 5.7.0 The `$wp_error` parameter was added. * * @param string $hook Action hook, the execution of which will be unscheduled. * @param bool $wp_error Optional. Whether to return a WP_Error on failure. Default false. * @return int|false|WP_Error On success an integer indicating number of events unscheduled (0 indicates no * events were registered on the hook), false or WP_Error if unscheduling fails. */ function wp_unschedule_hook( $hook, $wp_error = false ) { /** * Filter to override clearing all events attached to the hook. * * Returning a non-null value will short-circuit the normal unscheduling * process, causing the function to return the filtered value instead. * * For plugins replacing wp-cron, return the number of events successfully * unscheduled (zero if no events were registered with the hook). If unscheduling * one or more events fails then return either a WP_Error object or false depending * on the value of the `$wp_error` parameter. * * @since 5.1.0 * @since 5.7.0 The `$wp_error` parameter was added, and a WP_Error object can now be returned. * * @param null|int|false|WP_Error $pre Value to return instead. Default null to continue unscheduling the hook. * @param string $hook Action hook, the execution of which will be unscheduled. * @param bool $wp_error Whether to return a WP_Error on failure. */ $pre = apply_filters( 'pre_unschedule_hook', null, $hook, $wp_error ); if ( null !== $pre ) { if ( $wp_error && false === $pre ) { return new WP_Error( 'pre_unschedule_hook_false', __( 'A plugin prevented the hook from being cleared.' ) ); } if ( ! $wp_error && is_wp_error( $pre ) ) { return false; } return $pre; } $crons = _get_cron_array(); if ( empty( $crons ) ) { return 0; } $results = array(); foreach ( $crons as $timestamp => $args ) { if ( ! empty( $crons[ $timestamp ][ $hook ] ) ) { $results[] = count( $crons[ $timestamp ][ $hook ] ); } unset( $crons[ $timestamp ][ $hook ] ); if ( empty( $crons[ $timestamp ] ) ) { unset( $crons[ $timestamp ] ); } } /* * If the results are empty (zero events to unschedule), no attempt * to update the cron array is required. */ if ( empty( $results ) ) { return 0; } $set = _set_cron_array( $crons, $wp_error ); if ( true === $set ) { return array_sum( $results ); } return $set; } /** * Retrieves a scheduled event. * * Retrieves the full event object for a given event, if no timestamp is specified the next * scheduled event is returned. * * @since 5.1.0 * * @param string $hook Action hook of the event. * @param array $args Optional. Array containing each separate argument to pass to the hook's callback function. * Although not passed to a callback, these arguments are used to uniquely identify the * event, so they should be the same as those used when originally scheduling the event. * Default empty array. * @param int|null $timestamp Optional. Unix timestamp (UTC) of the event. If not specified, the next scheduled event * is returned. Default null. * @return object|false { * The event object. False if the event does not exist. * * @type string $hook Action hook to execute when the event is run. * @type int $timestamp Unix timestamp (UTC) for when to next run the event. * @type string|false $schedule How often the event should subsequently recur. * @type array $args Array containing each separate argument to pass to the hook's callback function. * @type int $interval Optional. The interval time in seconds for the schedule. Only present for recurring events. * } */ function wp_get_scheduled_event( $hook, $args = array(), $timestamp = null ) { /** * Filter to override retrieving a scheduled event. * * Returning a non-null value will short-circuit the normal process, * returning the filtered value instead. * * Return false if the event does not exist, otherwise an event object * should be returned. * * @since 5.1.0 * * @param null|false|object $pre Value to return instead. Default null to continue retrieving the event. * @param string $hook Action hook of the event. * @param array $args Array containing each separate argument to pass to the hook's callback function. * Although not passed to a callback, these arguments are used to uniquely identify * the event. * @param int|null $timestamp Unix timestamp (UTC) of the event. Null to retrieve next scheduled event. */ $pre = apply_filters( 'pre_get_scheduled_event', null, $hook, $args, $timestamp ); if ( null !== $pre ) { return $pre; } if ( null !== $timestamp && ! is_numeric( $timestamp ) ) { return false; } $crons = _get_cron_array(); if ( empty( $crons ) ) { return false; } $key = md5( serialize( $args ) ); if ( ! $timestamp ) { // Get next event. $next = false; foreach ( $crons as $timestamp => $cron ) { if ( isset( $cron[ $hook ][ $key ] ) ) { $next = $timestamp; break; } } if ( ! $next ) { return false; } $timestamp = $next; } elseif ( ! isset( $crons[ $timestamp ][ $hook ][ $key ] ) ) { return false; } $event = (object) array( 'hook' => $hook, 'timestamp' => $timestamp, 'schedule' => $crons[ $timestamp ][ $hook ][ $key ]['schedule'], 'args' => $args, ); if ( isset( $crons[ $timestamp ][ $hook ][ $key ]['interval'] ) ) { $event->interval = $crons[ $timestamp ][ $hook ][ $key ]['interval']; } return $event; } /** * Retrieves the timestamp of the next scheduled event for the given hook. * * @since 2.1.0 * * @param string $hook Action hook of the event. * @param array $args Optional. Array containing each separate argument to pass to the hook's callback function. * Although not passed to a callback, these arguments are used to uniquely identify the * event, so they must match those used when originally scheduling the event. If the * arguments do not match exactly, the event will not be found. Default empty array. * @return int|false The Unix timestamp (UTC) of the next time the event will occur. False if the event doesn't exist. */ function wp_next_scheduled( $hook, $args = array() ) { $next_event = wp_get_scheduled_event( $hook, $args ); if ( ! $next_event ) { return false; } /** * Filters the timestamp of the next scheduled event for the given hook. * * @since 6.8.0 * * @param int $timestamp Unix timestamp (UTC) for when to next run the event. * @param object $next_event { * An object containing an event's data. * * @type string $hook Action hook of the event. * @type int $timestamp Unix timestamp (UTC) for when to next run the event. * @type string $schedule How often the event should subsequently recur. * @type array $args Array containing each separate argument to pass to the hook * callback function. * @type int $interval Optional. The interval time in seconds for the schedule. Only * present for recurring events. * } * @param string $hook Action hook of the event. * @param array $args Array containing each separate argument to pass to the hook * callback function. */ return apply_filters( 'wp_next_scheduled', $next_event->timestamp, $next_event, $hook, $args ); } /** * Sends a request to run cron through HTTP request that doesn't halt page loading. * * @since 2.1.0 * @since 5.1.0 Return values added. * * @param int $gmt_time Optional. Unix timestamp (UTC). Default 0 (current time is used). * @return bool True if spawned, false if no events spawned. */ function spawn_cron( $gmt_time = 0 ) { if ( ! $gmt_time ) { $gmt_time = microtime( true ); } if ( defined( 'DOING_CRON' ) || isset( $_GET['doing_wp_cron'] ) ) { return false; } /* * Get the cron lock, which is a Unix timestamp of when the last cron was spawned * and has not finished running. * * Multiple processes on multiple web servers can run this code concurrently, * this lock attempts to make spawning as atomic as possible. */ $lock = (float) get_transient( 'doing_cron' ); if ( $lock > $gmt_time + 10 * MINUTE_IN_SECONDS ) { $lock = 0; } // Don't run if another process is currently running it or more than once every 60 sec. if ( $lock + WP_CRON_LOCK_TIMEOUT > $gmt_time ) { return false; } // Confidence check. $crons = wp_get_ready_cron_jobs(); if ( empty( $crons ) ) { return false; } $keys = array_keys( $crons ); if ( isset( $keys[0] ) && $keys[0] > $gmt_time ) { return false; } if ( defined( 'ALTERNATE_WP_CRON' ) && ALTERNATE_WP_CRON ) { if ( 'GET' !== $_SERVER['REQUEST_METHOD'] || defined( 'DOING_AJAX' ) || defined( 'XMLRPC_REQUEST' ) ) { return false; } $doing_wp_cron = sprintf( '%.22F', $gmt_time ); set_transient( 'doing_cron', $doing_wp_cron ); ob_start(); wp_redirect( add_query_arg( 'doing_wp_cron', $doing_wp_cron, wp_unslash( $_SERVER['REQUEST_URI'] ) ) ); echo ' '; // Flush any buffers and send the headers. wp_ob_end_flush_all(); flush(); require_once ABSPATH . 'wp-cron.php'; return true; } // Set the cron lock with the current unix timestamp, when the cron is being spawned. $doing_wp_cron = sprintf( '%.22F', $gmt_time ); set_transient( 'doing_cron', $doing_wp_cron ); $cron_url = add_query_arg( 'doing_wp_cron', $doing_wp_cron, site_url( 'wp-cron.php' ) ); /** * Filters the cron request arguments. * * @since 3.5.0 * @since 4.5.0 The `$doing_wp_cron` parameter was added. * * @param array $cron_request_array { * An array of cron request URL arguments. * * @type string $url The cron request URL. * @type string $key The Unix timestamp (UTC) of the cron lock with microseconds. * @type array $args { * An array of cron request arguments. * * @type int $timeout The request timeout in seconds. Default .01 seconds. * @type bool $blocking Whether to set blocking for the request. Default false. * @type bool $sslverify Whether SSL should be verified for the request. Default false. * } * } * @param string $doing_wp_cron The Unix timestamp (UTC) of the cron lock with microseconds. */ $cron_request = apply_filters( 'cron_request', array( 'url' => $cron_url, 'key' => $doing_wp_cron, 'args' => array( 'timeout' => 0.01, 'blocking' => false, /** This filter is documented in wp-includes/class-wp-http-streams.php */ 'sslverify' => apply_filters( 'https_local_ssl_verify', false, $cron_url ), ), ), $doing_wp_cron ); $result = wp_remote_post( $cron_request['url'], $cron_request['args'] ); return ! is_wp_error( $result ); } /** * Registers _wp_cron() to run on the {@see 'shutdown'} action. * * The spawn_cron() function attempts to make a non-blocking loopback request to `wp-cron.php` (when alternative * cron is not being used). However, the wp_remote_post() function does not always respect the `timeout` and * `blocking` parameters. A timeout of `0.01` may end up taking 1 second. When this runs at the {@see 'wp_loaded'} * action, it increases the Time To First Byte (TTFB) since the HTML cannot be sent while waiting for the cron request * to initiate. Moving the spawning of cron to the {@see 'shutdown'} hook allows for the server to flush the HTML document to * the browser while waiting for the request. * * @since 2.1.0 * @since 5.1.0 Return value added to indicate success or failure. * @since 5.7.0 Functionality moved to _wp_cron() to which this becomes a wrapper. * @since 6.9.0 The _wp_cron() callback is moved from {@see 'wp_loaded'} to the {@see 'shutdown'} action, * unless `ALTERNATE_WP_CRON` is enabled; the function now always returns void. */ function wp_cron(): void { if ( defined( 'ALTERNATE_WP_CRON' ) && ALTERNATE_WP_CRON ) { if ( did_action( 'wp_loaded' ) ) { _wp_cron(); } else { add_action( 'wp_loaded', '_wp_cron', 20 ); } } elseif ( doing_action( 'shutdown' ) ) { _wp_cron(); } else { add_action( 'shutdown', '_wp_cron' ); } } /** * Runs scheduled callbacks or spawns cron for all scheduled events. * * Warning: This function may return Boolean FALSE, but may also return a non-Boolean * value which evaluates to FALSE. For information about casting to booleans see the * {@link https://www.php.net/manual/en/language.types.boolean.php PHP documentation}. Use * the `===` operator for testing the return value of this function. * * @since 5.7.0 * @access private * * @return int|false On success an integer indicating number of events spawned (0 indicates no * events needed to be spawned), false if spawning fails for one or more events. */ function _wp_cron() { // Prevent infinite loops caused by lack of wp-cron.php. if ( str_contains( $_SERVER['REQUEST_URI'], '/wp-cron.php' ) || ( defined( 'DISABLE_WP_CRON' ) && DISABLE_WP_CRON ) ) { return 0; } $crons = wp_get_ready_cron_jobs(); if ( empty( $crons ) ) { return 0; } $gmt_time = microtime( true ); $keys = array_keys( $crons ); if ( isset( $keys[0] ) && $keys[0] > $gmt_time ) { return 0; } $schedules = wp_get_schedules(); $results = array(); foreach ( $crons as $timestamp => $cronhooks ) { if ( $timestamp > $gmt_time ) { break; } foreach ( (array) $cronhooks as $hook => $args ) { if ( isset( $schedules[ $hook ]['callback'] ) && ! call_user_func( $schedules[ $hook ]['callback'] ) ) { continue; } $results[] = spawn_cron( $gmt_time ); break 2; } } if ( in_array( false, $results, true ) ) { return false; } return count( $results ); } /** * Retrieves supported event recurrence schedules. * * The default supported recurrences are 'hourly', 'twicedaily', 'daily', and 'weekly'. * A plugin may add more by hooking into the {@see 'cron_schedules'} filter. * The filter accepts an array of arrays. The outer array has a key that is the name * of the schedule, for example 'monthly'. The value is an array with two keys, * one is 'interval' and the other is 'display'. * * The 'interval' is a number in seconds of when the cron job should run. * So for 'hourly' the time is `HOUR_IN_SECONDS` (`60 * 60` or `3600`). For 'monthly', * the value would be `MONTH_IN_SECONDS` (`30 * 24 * 60 * 60` or `2592000`). * * The 'display' is the description. For the 'monthly' key, the 'display' * would be `__( 'Once Monthly' )`. * * For your plugin, you will be passed an array. You can add your * schedule by doing the following: * * // Filter parameter variable name is 'array'. * $array['monthly'] = array( * 'interval' => MONTH_IN_SECONDS, * 'display' => __( 'Once Monthly' ) * ); * * @since 2.1.0 * @since 5.4.0 The 'weekly' schedule was added. * * @return array { * The array of cron schedules keyed by the schedule name. * * @type array ...$0 { * Cron schedule information. * * @type int $interval The schedule interval in seconds. * @type string $display The schedule display name. * } * } */ function wp_get_schedules() { $schedules = array( 'hourly' => array( 'interval' => HOUR_IN_SECONDS, 'display' => __( 'Once Hourly' ), ), 'twicedaily' => array( 'interval' => 12 * HOUR_IN_SECONDS, 'display' => __( 'Twice Daily' ), ), 'daily' => array( 'interval' => DAY_IN_SECONDS, 'display' => __( 'Once Daily' ), ), 'weekly' => array( 'interval' => WEEK_IN_SECONDS, 'display' => __( 'Once Weekly' ), ), ); /** * Filters the non-default cron schedules. * * @since 2.1.0 * * @param array $new_schedules { * An array of non-default cron schedules keyed by the schedule name. Default empty array. * * @type array ...$0 { * Cron schedule information. * * @type int $interval The schedule interval in seconds. * @type string $display The schedule display name. * } * } */ return array_merge( apply_filters( 'cron_schedules', array() ), $schedules ); } /** * Retrieves the name of the recurrence schedule for an event. * * @see wp_get_schedules() for available schedules. * * @since 2.1.0 * @since 5.1.0 {@see 'get_schedule'} filter added. * * @param string $hook Action hook to identify the event. * @param array $args Optional. Arguments passed to the event's callback function. * Default empty array. * @return string|false Schedule name on success, false if no schedule. */ function wp_get_schedule( $hook, $args = array() ) { $schedule = false; $event = wp_get_scheduled_event( $hook, $args ); if ( $event ) { $schedule = $event->schedule; } /** * Filters the schedule name for a hook. * * @since 5.1.0 * * @param string|false $schedule Schedule for the hook. False if not found. * @param string $hook Action hook to execute when cron is run. * @param array $args Arguments to pass to the hook's callback function. */ return apply_filters( 'get_schedule', $schedule, $hook, $args ); } /** * Retrieves cron jobs ready to be run. * * Returns the results of _get_cron_array() limited to events ready to be run, * ie, with a timestamp in the past. * * @since 5.1.0 * * @return array[] Array of cron job arrays ready to be run. */ function wp_get_ready_cron_jobs() { /** * Filter to override retrieving ready cron jobs. * * Returning an array will short-circuit the normal retrieval of ready * cron jobs, causing the function to return the filtered value instead. * * @since 5.1.0 * * @param null|array[] $pre Array of ready cron tasks to return instead. Default null * to continue using results from _get_cron_array(). */ $pre = apply_filters( 'pre_get_ready_cron_jobs', null ); if ( null !== $pre ) { return $pre; } $crons = _get_cron_array(); $gmt_time = microtime( true ); $results = array(); foreach ( $crons as $timestamp => $cronhooks ) { if ( $timestamp > $gmt_time ) { break; } $results[ $timestamp ] = $cronhooks; } return $results; } // // Private functions. // /** * Retrieves cron info array option. * * @since 2.1.0 * @since 6.1.0 Return type modified to consistently return an array. * @access private * * @return array<int, array<string, array<string, array{ schedule: string|false, args: array<mixed>, interval?: non-negative-int }>>>|array{} Array of cron events. */ function _get_cron_array() { $cron = get_option( 'cron' ); if ( ! is_array( $cron ) ) { return array(); } /** * @var array{ version: int, ...<int, array<string, array<string, array{ schedule: string|false, args: array<mixed>, interval?: non-negative-int }>>> } * |array<int, array<string, array{ schedule: string|false, args: array<mixed>, interval?: non-negative-int }>> $cron */ if ( ! isset( $cron['version'] ) ) { $cron = _upgrade_cron_array( $cron ); } unset( $cron['version'] ); /** @var array<int, array<string, array<string, array{ schedule: string|false, args: array<mixed>, interval?: non-negative-int }>>> $cron */ return $cron; } /** * Updates the cron option with the new cron array. * * @since 2.1.0 * @since 5.1.0 Return value modified to outcome of update_option(). * @since 5.7.0 The `$wp_error` parameter was added. * * @access private * * @param array[] $cron Array of cron info arrays from _get_cron_array(). * @param bool $wp_error Optional. Whether to return a WP_Error on failure. Default false. * @return bool|WP_Error True if cron array updated. False or WP_Error on failure. * * @phpstan-param array<int, array<string, array<string, array{ schedule: string|false, args: array<mixed>, interval?: non-negative-int }>>> $cron * @phpstan-return ( $wp_error is true ? true|WP_Error : bool ) */ function _set_cron_array( $cron, $wp_error = false ) { if ( ! is_array( $cron ) ) { $cron = array(); } $cron['version'] = 2; $result = update_option( 'cron', $cron, true ); if ( $wp_error && ! $result ) { return new WP_Error( 'could_not_set', __( 'The cron event list could not be saved.' ) ); } return $result; } /** * Upgrades a cron info array. * * This function upgrades the cron info array to version 2. * * @since 2.1.0 * @access private * * @param array $cron Cron info array from _get_cron_array(). * @return array An upgraded cron info array. * * @phpstan-param array{ version: int, ...<int, array<string, array<string, array{ schedule: string|false, args: array<mixed>, interval?: non-negative-int }>>> } * |array<int, array<string, array{ schedule: string|false, args: array<mixed>, interval?: non-negative-int }>> $cron * @phpstan-return array{ version: 2, ...<int, array<string, array<string, array{ schedule: string|false, args: array<mixed>, interval?: non-negative-int }>>> } */ function _upgrade_cron_array( $cron ) { if ( isset( $cron['version'] ) && 2 === $cron['version'] ) { return $cron; } $new_cron = array(); foreach ( (array) $cron as $timestamp => $hooks ) { foreach ( (array) $hooks as $hook => $args ) { $key = md5( serialize( $args['args'] ?? array() ) ); $new_cron[ $timestamp ][ $hook ][ $key ] = $args; } } $new_cron['version'] = 2; update_option( 'cron', $new_cron, true ); return $new_cron; }
Close