grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026
* @link http://www.regularlabs.com
* @copyright Copyright © 2018 Regular Labs All Rights Reserved
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
*/
namespace RegularLabs\Library;
defined('_JEXEC') or die;
use Joomla\CMS\Component\ComponentHelper as JComponentHelper;
use Joomla\CMS\Factory as JFactory;
use Joomla\CMS\HTML\HTMLHelper as JHtml;
use Joomla\CMS\Language\Text as JText;
use Joomla\CMS\Router\Route as JRoute;
use Joomla\CMS\Session\Session as JSession;
use Joomla\CMS\Uri\Uri as JUri;
jimport('joomla.filesystem.file');
/**
* Class Version
* @package RegularLabs\Library
*/
class Version
{
/**
* Get the version of the given extension
*
* @param $alias
* @param string $type
* @param string $folder
*
* @return string
*/
public static function get($alias, $type = 'component', $folder = 'system')
{
return trim(Extension::getXmlValue('version', $alias, $type, $folder));
}
/**
* Get the version of the given plugin
*
* @param $alias
* @param string $folder
*
* @return string
*/
public static function getPluginVersion($alias, $folder = 'system')
{
return self::get($alias, 'plugin', $folder);
}
/**
* Get the version of the given component
*
* @param $alias
*
* @return string
*/
public static function getComponentVersion($alias)
{
return self::get($alias, 'component');
}
/**
* Get the version of the given module
*
* @param $alias
*
* @return string
*/
public static function getModuleVersion($alias)
{
return self::get($alias, 'module');
}
/**
* Get the version message
*
* @param $alias
*
* @return string
*/
public static function getMessage($alias)
{
if ( ! $alias)
{
return '';
}
$name = Extension::getNameByAlias($alias);
$alias = Extension::getAliasByName($alias);
if ( ! $version = self::get($alias))
{
return '';
}
Document::loadMainDependencies();
$url = 'download.regularlabs.com/extensions.xml?j=3&e=' . $alias;
$script = "
jQuery(document).ready(function() {
RegularLabsScripts.loadajax(
'" . $url . "',
'RegularLabsScripts.displayVersion( data, \"" . $alias . "\", \"" . str_replace(['FREE', 'PRO'], '', $version) . "\" )',
'RegularLabsScripts.displayVersion( \"\" )',
null, null, null, (60 * 60)
);
});
";
JFactory::getDocument()->addScriptDeclaration($script);
return '
' . self::getMessageText($alias, $name, $version) . '
';
}
/**
* Get the full footer
*
* @param $name
* @param int $copyright
*
* @return string
*/
public static function getFooter($name, $copyright = true)
{
Document::loadMainDependencies();
$html = [];
$html[] = '';
if ($copyright)
{
$html[] = '';
$html[] = '';
$html[] = '';
}
return '';
}
/**
* Get the version message text
*
* @param $alias
* @param $name
* @param $version
*
* @return array|string
*/
private static function getMessageText($alias, $name, $version)
{
list($url, $onclick) = self::getUpdateLink($alias, $version);
$href = $onclick ? '' : 'href="' . $url . '" target="_blank" ';
$onclick = $onclick ? 'onclick="' . $onclick . '" ' : '';
$is_pro = strpos($version, 'PRO') !== false;
$version = str_replace(['FREE', 'PRO'], ['', ' [PRO]'], $version);
$msg = ''
. '
'
. JText::sprintf('RL_NEW_VERSION_OF_AVAILABLE', JText::_($name))
. ''
. '
'
. '
'
. ' '
. StringHelper::html_entity_decoder(JText::sprintf('RL_UPDATE_TO', ''))
. '';
if ( ! $is_pro)
{
$msg .= '
'
. ' '
. JText::_('RL_GO_PRO')
. '';
}
$msg .= '
'
. '
'
. '[ '
. JText::_('RL_CHANGELOG')
. ' ]'
. '
'
. JText::sprintf('RL_CURRENT_VERSION', $version)
. ''
. '
';
return StringHelper::html_entity_decoder($msg);
}
/**
* Get the url and onclick function for the update link
*
* @param $alias
* @param $version
*
* @return array
*/
private static function getUpdateLink($alias, $version)
{
$is_pro = strpos($version, 'PRO') !== false;
if (
! file_exists(JPATH_ADMINISTRATOR . '/components/com_regularlabsmanager/regularlabsmanager.xml')
|| ! JComponentHelper::isInstalled('com_regularlabsmanager')
|| ! JComponentHelper::isEnabled('com_regularlabsmanager')
)
{
$url = $is_pro
? 'https://www.regularlabs.com/' . $alias . '/features'
: JRoute::_('index.php?option=com_installer&view=update');
return [$url, ''];
}
$config = JComponentHelper::getParams('com_regularlabsmanager');
$key = trim($config->get('key'));
if ($is_pro && ! $key)
{
return ['index.php?option=com_regularlabsmanager', ''];
}
jimport('joomla.filesystem.file');
Document::loadMainDependencies();
JHtml::_('behavior.modal');
JFactory::getDocument()->addScriptDeclaration(
"
var RLEM_TIMEOUT = " . (int) $config->get('timeout', 5) . ";
var RLEM_TOKEN = '" . JSession::getFormToken() . "';
"
);
Document::script('regularlabsmanager/script.min.js', '18.12.19593');
$url = 'https://download.regularlabs.com?ext=' . $alias . '&j=3';
if ($is_pro)
{
$url .= '&k=' . strtolower(substr($key, 0, 8) . md5(substr($key, 8)));
}
return ['', 'RegularLabsManager.openModal(\'update\', [\'' . $alias . '\'], [\'' . $url . '\'], true);'];
}
/**
* Get the extension name and version for the footer
*
* @param $name
*
* @return string
*/
private static function getFooterName($name)
{
$name = JText::_($name);
if ( ! $version = self::get($name))
{
return $name;
}
if (strpos($version, 'PRO') !== false)
{
return $name . ' v' . str_replace('PRO', '', $version) . ' [PRO]';
}
if (strpos($version, 'FREE') !== false)
{
return $name . ' v' . str_replace('FREE', '', $version) . ' [FREE]';
}
return $name . ' v' . $version;
}
/**
* Get the review text for the footer
*
* @param $name
*
* @return string
*/
private static function getFooterReview($name)
{
$alias = Extension::getAliasByName($name);
$jed_url = 'http://regl.io/jed-' . $alias . '#reviews';
return StringHelper::html_entity_decoder(
JText::sprintf(
'RL_JED_REVIEW',
'',
''
. ' '
. str_repeat('', 5)
. ''
)
);
}
/**
* Get the Regular Labs logo for the footer
*
* @return string
*/
private static function getFooterLogo()
{
return JText::sprintf(
'RL_POWERED_BY',
''
. '
'
. ''
);
}
/**
* Get the copyright text for the footer
*
* @return string
*/
private static function getFooterCopyright()
{
return JText::_('RL_COPYRIGHT') . ' © ' . date('Y') . ' Regular Labs - ' . JText::_('RL_ALL_RIGHTS_RESERVED');
}
}