';
$header .= $this->getBreadcrumb($breadcrumb);
$header .= '';
// Begin Tools
$header .= '
';
$header .= $this->getLicenseInfo();
// End Tools
$header .= '
';
$header = '';
return $this->getLastNews().$header;
}
private function getLastNews()
{
$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)) {
list($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 '';
$newsDisplay = '';
return $newsDisplay;
}
private function getBreadcrumb($breadcrumb)
{
$links = [];
foreach ($breadcrumb as $oneLevel => $link) {
if (!empty($link)) {
$oneLevel = ''.$oneLevel.'';
}
$links[] = ''.$oneLevel.'';
}
if (count($links) > 1) {
$links[count($links) - 1] = str_replace('', 'Current: ', $links[count($links) - 1]);
}
$header = '';
$header .= '';
return $header;
}
private function getLicenseInfo()
{
$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 th date format : "2022-10-25 15:41:02.000000,3,Europe/Paris" we only need the first part of it.
$endDateFomat = explode(',', $endDate)[0];
$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');
$return = '';
$link = ACYC_ACYCHECKER_WEBSITE.'pricing?utm_source=acychecker_plugin&utm_campaign=upgrade_plans&utm_medium=button_upgrade_plans_header';
if (strpos(strtolower($licenseName), 'agency') === false) {
$return .= ''.__('Upgrade plans', 'acychecker').'';
}
$return .= ''.__('Documentation', 'acychecker').'';
return $return;
}
}