Repository navigation
Expand file tree
/
Copy pathpost-expirator.php
More file actions
172 lines (139 loc) · 5.92 KB
/
Copy pathpost-expirator.php
File metadata and controls
172 lines (139 loc) · 5.92 KB
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
<?php
/**
* Plugin Name: PublishPress Future Free
* Plugin URI: http://wordpress.org/extend/plugins/post-expirator/
* Description: PublishPress Future allows you to schedule automatic changes to posts, pages and other content types.
* Author: PublishPress
* Version: 4.10.6
* Author URI: http://publishpress.com
* Text Domain: post-expirator
* Domain Path: /languages
* Requires at least: 6.8
* Requires PHP: 7.4
*
*
* @package PublishPress\Future
* @author PublishPress
* @copyright Copyright (c) 2025, PublishPress
* @license GPLv2 or later
*/
namespace PublishPress\Future;
use PublishPress\Future\Core\Autoloader;
use PublishPress\Future\Core\DI\Container;
use PublishPress\Future\Core\DI\ServicesAbstract;
use PublishPress\Future\Framework\Logger\LoggerInterface;
use PublishPress\Future\Framework\WordPress\Facade\HooksFacade;
use PublishPress\BundledTranslations\BundledTranslations;
use Throwable;
if (! defined('ABSPATH')) {
exit('Direct access not allowed.');
}
// If the plugin is already loaded, terminate the plugin execution.
if (defined('PUBLISHPRESS_FUTURE_LOADED')) {
return;
}
const MINIMUM_PHP_VERSION = '7.4';
const MINIMUM_WP_VERSION = '6.8';
global $wp_version;
// Exit if PHP or WordPress version requirements are not met.
if (version_compare(PHP_VERSION, MINIMUM_PHP_VERSION, '<')) {
return;
}
if (version_compare($wp_version, MINIMUM_WP_VERSION, '<')) {
return;
}
define('PUBLISHPRESS_FUTURE_VERSION', '4.10.6');
define('PUBLISHPRESS_FUTURE_BASE_PATH', __DIR__);
define('PUBLISHPRESS_FUTURE_SRC_PATH', __DIR__ . '/src');
define('PUBLISHPRESS_FUTURE_PLUGIN_FILE', __FILE__);
define('PUBLISHPRESS_FUTURE_ASSETS_URL', plugins_url('assets', __FILE__));
define('PUBLISHPRESS_FUTURE_LOADED', true);
define('PUBLISHPRESS_FUTURE_LANGUAGES_PATH', __DIR__ . '/languages');
if (! defined('PUBLISHPRESS_FUTURE_WORKFLOW_EXPERIMENTAL')) {
define('PUBLISHPRESS_FUTURE_WORKFLOW_EXPERIMENTAL', false);
}
$vendorPath = PUBLISHPRESS_FUTURE_BASE_PATH . '/lib/vendor';
if (defined('PUBLISHPRESS_FUTURE_LOADED_BY_PRO') && constant('PUBLISHPRESS_FUTURE_LOADED_BY_PRO')) {
$vendorPath = constant('PUBLISHPRESS_FUTURE_PRO_VENDOR_DIR');
}
define('PUBLISHPRESS_FUTURE_LIB_VENDOR_PATH', $vendorPath);
/**
* @deprecated Since 3.1.0. Use PUBLISHPRESS_FUTURE_LIB_VENDOR_PATH instead.
*/
define('PUBLISHPRESS_FUTURE_VENDOR_PATH', PUBLISHPRESS_FUTURE_LIB_VENDOR_PATH);
require_once PUBLISHPRESS_FUTURE_SRC_PATH . '/catch-exception.php';
try {
$autoloadFilePath = PUBLISHPRESS_FUTURE_LIB_VENDOR_PATH . '/autoload.php';
if (
! class_exists('ComposerAutoloaderInitPublishPressFuture')
&& is_file($autoloadFilePath)
&& is_readable($autoloadFilePath)
) {
require_once $autoloadFilePath;
}
require_once PUBLISHPRESS_FUTURE_LIB_VENDOR_PATH . '/woocommerce/action-scheduler/action-scheduler.php';
require_once PUBLISHPRESS_FUTURE_LIB_VENDOR_PATH . '/publishpress/bundled-translations/core/include.php';
if (! class_exists('PublishPress\Future\Core\Autoloader')) {
require_once PUBLISHPRESS_FUTURE_SRC_PATH . '/Core/Autoloader.php';
}
Autoloader::register();
/**
* Bootstrap the DI container and legacy autoload. Safe to call multiple times.
*/
function loadPluginDependencies()
{
if (defined('PUBLISHPRESS_FUTURE_LOADED_DEPENDENCIES')) {
return;
}
require_once PUBLISHPRESS_FUTURE_LIB_VENDOR_PATH . '/publishpress/psr-container/lib/autoload.php';
require_once PUBLISHPRESS_FUTURE_LIB_VENDOR_PATH . '/publishpress/pimple-pimple/lib/autoload.php';
$services = require PUBLISHPRESS_FUTURE_BASE_PATH . '/services.php';
$container = new Container($services);
$pluginFile = PUBLISHPRESS_FUTURE_PLUGIN_FILE;
require_once PUBLISHPRESS_FUTURE_BASE_PATH . '/legacy/defines.php';
require_once PUBLISHPRESS_FUTURE_BASE_PATH . '/legacy/deprecated.php';
require_once PUBLISHPRESS_FUTURE_BASE_PATH . '/legacy/functions.php';
require_once PUBLISHPRESS_FUTURE_BASE_PATH . '/legacy/autoload.php';
define('PUBLISHPRESS_FUTURE_LOADED_DEPENDENCIES', true);
}
require_once PUBLISHPRESS_FUTURE_SRC_PATH . '/install.php';
require_once PUBLISHPRESS_FUTURE_SRC_PATH . '/uninstall.php';
HooksFacade::registerActivationHook(PUBLISHPRESS_FUTURE_PLUGIN_FILE, __NAMESPACE__ . '\\install');
HooksFacade::registerDeactivationHook(PUBLISHPRESS_FUTURE_PLUGIN_FILE, __NAMESPACE__ . '\\uninstall');
add_action('init', function () {
load_plugin_textdomain('post-expirator', false, PUBLISHPRESS_FUTURE_LANGUAGES_PATH);
});
add_action('plugins_loaded', function () {
if (! class_exists('PublishPress\\BundledTranslations\\BundledTranslations')) {
return;
}
$bundledTranslations = new BundledTranslations(
'post-expirator',
PUBLISHPRESS_FUTURE_LANGUAGES_PATH,
PUBLISHPRESS_FUTURE_PLUGIN_FILE
);
$bundledTranslations->init();
});
add_action('init', function () {
$container = null;
try {
loadPluginDependencies();
$container = Container::getInstance();
$container->get(ServicesAbstract::PLUGIN)->initialize();
} catch (Throwable $e) {
$isLogged = false;
if (is_object($container)) {
$logger = $container->get(ServicesAbstract::LOGGER);
if ($logger instanceof LoggerInterface) {
$logger->error('Caught ' . get_class($e) . ': ' . $e->getMessage() . ' on file ' . $e->getFile() . ', line ' . $e->getLine());
$isLogged = true;
}
}
if (! $isLogged) {
logError('PUBLISHPRESS FUTURE', $e);
}
}
}, 10, 0);
} catch (Throwable $e) {
logError('PUBLISHPRESS FUTURE - Error starting the plugin. File: ' . $e->getFile() . ', Line: ' . $e->getLine(), $e);
}