';
}
private function displayLastNews(): void
{
$lastNewsCheck = $this->config->get('last_news_check', 0);
if ($lastNewsCheck < time() - 7200) {
$context = stream_context_create(['http' => ['timeout' => 1]]);
$news = @file_get_contents(ACYC_ACYMAILLING_WEBSITE.'acymnews.xml', false, $context);
$this->config->save(
[
'last_news_check' => time(),
'last_news' => base64_encode($news),
],
false
);
} else {
$news = $this->config->get('last_news', '');
if (!empty($news)) {
$news = base64_decode($news);
}
}
if (empty($news)) {
return;
}
$news = @simplexml_load_string($news);
if (empty($news->news)) {
return;
}
$currentLanguage = Language::getLanguageTag();
$latestNews = null;
$doNotRemind = json_decode($this->config->get('remindme', '[]'));
foreach ($news->news as $oneNews) {
// If we found a news more recent, it means we found the latest available one
if (!empty($latestNews) && strtotime($latestNews->date) > strtotime($oneNews->date)) {
break;
}
// If the news isn't published or that the language isn't correct, leave
$language = strtolower($oneNews->language);
if (empty($oneNews->published) || ($language != strtolower($currentLanguage) && ($language != 'default' || !empty($latestNews)))) {
continue;
}
// If the extension isn't correct, leave
if (!empty($oneNews->extension) && strtolower($oneNews->extension) != 'acychecker') {
continue;
}
// If the CMS isn't correct, leave
if (!empty($oneNews->cms) && strtolower($oneNews->cms) != strtolower('wordpress')) {
continue;
}
// If the level of the extension isn't correct, leave
if (!empty($oneNews->level) && strtolower($oneNews->level) != strtolower($this->config->get('level'))) {
continue;
}
// If the version of the extension isn't correct, leave
if (!empty($oneNews->version)) {
[$version, $operator] = explode('_', $oneNews->version);
if (!version_compare($this->config->get('version'), $version, $operator)) {
continue;
}
}
if (in_array($oneNews->name, $doNotRemind)) {
continue;
}
$latestNews = $oneNews;
}
if (empty($latestNews)) {
return;
}
echo '
';
}
private function displayLicenseInfo(): void
{
$licenseKey = $this->config->get('license_key', '');
if (empty($licenseKey)) {
return;
}
$apiService = new ApiService();
$apiService->refreshCreditsUsed();
$licenseName = $this->config->get('license_level', '');
$version = $this->config->get('version');
$creditsRemainingBatch = $this->config->get('remaining_credits_batch', 0);
$creditsRemainingSimple = $this->config->get('remaining_credits_simple', 0);
$endDate = $this->config->get('license_end_date');
// this is the date format : "2022-10-25 15:41:02.000000,3,Europe/Paris" we only need the first part of it.
$endDateFomat = explode(',', $endDate)[0];
/* translators: 1: number of remaining batch tests, 2: number of remaining simple tests */
$creditsRemaining = strpos(strtolower($licenseName), 'agency') === false ? sprintf(__('%1$s database tests remaining and %2$s registration tests remaining', 'acychecker'),
$creditsRemainingBatch,
$creditsRemainingSimple
) : __('Unlimited remaining tests', 'acychecker');
echo '