Add PSR HTTP Message Interfaces and Dependencies

- Implemented StreamInterface, UploadedFileInterface, and UriInterface as per PSR standards.
- Added getallheaders function to retrieve HTTP headers in a compatible manner.
- Included LICENSE files for ralouphie/getallheaders and symfony/deprecation-contracts.
- Introduced function for triggering deprecation notices in Symfony.
This commit is contained in:
2025-12-28 12:44:00 +01:00
parent cf600ae727
commit cd264483f8
410 changed files with 60841 additions and 16 deletions

View File

@@ -0,0 +1,119 @@
<?php
if (!defined('ABSPATH')) {
exit();
}
if (!class_exists('ATFPP_cronjob')) {
class ATFPP_cronjob
{
public function __construct()
{
}
public function atfpp_cron_init_hooks()
{
//initialize Cron Jobs
add_filter('cron_schedules', array($this, 'atfpp_cron_schedules'));
add_action('atfpp_extra_data_update', array($this, 'atfpp_cron_extra_data_autoupdater'));
}
/*
|--------------------------------------------------------------------------
| cron custom schedules
|--------------------------------------------------------------------------
*/
public function atfpp_cron_schedules($schedules)
{
if (!isset($schedules['every_30_days'])) {
$schedules['every_30_days'] = array(
'interval' => 30 * 24 * 60 * 60, // 2,592,000 seconds
'display' => __('Once every 30 days'),
);
}
return $schedules;
}
/*
|--------------------------------------------------------------------------
| cron extra data autoupdater
|--------------------------------------------------------------------------
*/
function atfpp_cron_extra_data_autoupdater() {
$opt_in = get_option('atfp_feedback_opt_in');
$opt_in = is_string($opt_in) ? strtolower($opt_in) : 'no';
if ($opt_in === 'yes' || $opt_in === true || $opt_in === '1') {
if (class_exists('ATFPP_cronjob')) {
ATFPP_cronjob::atfpp_send_data();
}
}
}
/*
|--------------------------------------------------------------------------
| cron send data
|--------------------------------------------------------------------------
*/
static public function atfpp_send_data() {
$feedback_url = ATFPP_FEEDBACK_API.'wp-json/coolplugins-feedback/v1/site';
$extra_data_details = AutoPolyPro::atfpp_get_user_info();
$server_info = $extra_data_details['server_info'];
$extra_details = $extra_data_details['extra_details'];
$site_url = get_site_url();
$install_date = get_option('atfpp-install-date');
$unique_key = '42'; // Ensure this key is unique per plugin to prevent collisions when site URL and install date are the same across plugins
$site_id = $site_url . '-' . $install_date . '-' . $unique_key;
$initial_version = get_option('atfpp_initial_save_version');
$initial_version = is_string($initial_version) ? sanitize_text_field($initial_version) : 'N/A';
$plugin_version = ATFPP_V;
$admin_email = sanitize_email(get_option('admin_email') ?: 'N/A');
$post_data = array(
'site_id' => md5($site_id),
'plugin_version' => $plugin_version,
'plugin_name' => 'AutoPoly - AI Translation For Polylang (Pro)',
'plugin_initial' => $initial_version,
'email' => $admin_email,
'site_url' => esc_url_raw($site_url),
'server_info' => $server_info,
'extra_details' => $extra_details,
);
$response = wp_remote_post($feedback_url, array(
'method' => 'POST',
'timeout' => 30,
'headers' => array(
'Content-Type' => 'application/json',
),
'body' => wp_json_encode($post_data),
));
if (is_wp_error($response)) {
defined('WP_DEBUG') && WP_DEBUG && error_log('ATFPP Feedback Send Failed: ' . sanitize_text_field($response->get_error_message()));
return;
}
$response_body = wp_remote_retrieve_body($response);
$decoded = json_decode($response_body, true);
if (!wp_next_scheduled('atfpp_extra_data_update')) {
wp_schedule_event(time(), 'every_30_days', 'atfpp_extra_data_update');
}
}
}
}