switch to namespaced classes for Joomla 5 Native mode.

This commit is contained in:
Denis Ryabov 2023-08-13 13:22:27 +04:00
parent 336d2c87d5
commit 82e6a3f1a6
22 changed files with 280 additions and 229 deletions

View File

@ -12,11 +12,13 @@
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\MVC\Controller\BaseController;
/**
* Class JedcheckerController
*
* @since 1.0
*/
class JedcheckerController extends JControllerLegacy
class JedcheckerController extends BaseController
{
}

View File

@ -11,17 +11,18 @@
defined('_JEXEC') or die('Restricted access');
jimport('joomla.filesystem');
jimport('joomla.filesystem.folder');
jimport('joomla.filesystem.archive');
use Joomla\CMS\Factory;
use Joomla\CMS\Filesystem\File;
use Joomla\CMS\Filesystem\Folder;
use Joomla\CMS\Filesystem\Path;
use Joomla\CMS\MVC\Controller\BaseController;
/**
* Class jedcheckerControllerPolice
*
* @since 1.0
*/
class JedcheckerControllerPolice extends JControllerLegacy
class JedcheckerControllerPolice extends BaseController
{
/**
* Runs all the rules on the given directory
@ -30,11 +31,11 @@ class JedcheckerControllerPolice extends JControllerLegacy
*/
public function check()
{
$rule = JFactory::getApplication()->input->get('rule');
$rule = Factory::getApplication()->input->get('rule');
JLoader::discover('jedcheckerRules', JPATH_COMPONENT_ADMINISTRATOR . '/libraries/rules/');
$path = JFactory::getConfig()->get('tmp_path') . '/jed_checker/unzipped';
$path = Factory::getConfig()->get('tmp_path') . '/jed_checker/unzipped';
$class = 'jedcheckerRules' . ucfirst($rule);
// Stop if the class does not exist
@ -65,7 +66,7 @@ class JedcheckerControllerPolice extends JControllerLegacy
protected function police($class, $folder)
{
// Prepare rule properties
$properties = array('basedir' => JPath::clean($folder));
$properties = array('basedir' => Path::clean($folder));
// Create instance of the rule
$police = new $class($properties);
@ -89,8 +90,8 @@ class JedcheckerControllerPolice extends JControllerLegacy
$folders = array();
// Add the folders in the "jed_checked/unzipped" folder
$path = JFactory::getConfig()->get('tmp_path') . '/jed_checker/unzipped';
$tmp_folders = JFolder::folders($path);
$path = Factory::getConfig()->get('tmp_path') . '/jed_checker/unzipped';
$tmp_folders = Folder::folders($path);
if (!empty($tmp_folders))
{
@ -101,9 +102,9 @@ class JedcheckerControllerPolice extends JControllerLegacy
}
// Parse the local.txt file and parse it
$local = JFactory::getConfig()->get('tmp_path') . '/jed_checker/local.txt';
$local = Factory::getConfig()->get('tmp_path') . '/jed_checker/local.txt';
if (JFile::exists($local))
if (File::exists($local))
{
$content = file_get_contents($local);
@ -119,11 +120,11 @@ class JedcheckerControllerPolice extends JControllerLegacy
if (!empty($line))
{
if (JFolder::exists(JPATH_ROOT . '/' . $line))
if (Folder::exists(JPATH_ROOT . '/' . $line))
{
$folders[] = JPATH_ROOT . '/' . $line;
}
elseif (JFolder::exists($line))
elseif (Folder::exists($line))
{
$folders[] = $line;
}

View File

@ -12,18 +12,20 @@
defined('_JEXEC') or die('Restricted access');
jimport('joomla.filesystem');
jimport('joomla.filesystem.folder');
jimport('joomla.filesystem.archive');
use Joomla\Archive\Archive;
use Joomla\CMS\Factory;
use Joomla\CMS\Filesystem\File;
use Joomla\CMS\Filesystem\Folder;
use Joomla\CMS\Language\Text;
use Joomla\CMS\MVC\Controller\BaseController;
use Joomla\CMS\Session\Session;
/**
* Class JedcheckerControllerUploads
*
* @since 1.0
*/
class JedcheckerControllerUploads extends JControllerLegacy
class JedcheckerControllerUploads extends BaseController
{
/** @var string */
public $path;
@ -40,7 +42,7 @@ class JedcheckerControllerUploads extends JControllerLegacy
*/
public function __construct()
{
$this->path = JFactory::getConfig()->get('tmp_path') . '/jed_checker';
$this->path = Factory::getConfig()->get('tmp_path') . '/jed_checker';
$this->pathArchive = $this->path . '/archives';
$this->pathUnzipped = $this->path . '/unzipped';
parent::__construct();
@ -53,11 +55,11 @@ class JedcheckerControllerUploads extends JControllerLegacy
*/
public function upload()
{
$appl = JFactory::getApplication();
$appl = Factory::getApplication();
$input = $appl->input;
// Check the sent token by the form
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
// Gets the uploaded file from the sent form
$file = $input->files->get('extension', null, 'raw');
@ -67,18 +69,18 @@ class JedcheckerControllerUploads extends JControllerLegacy
$path = $this->pathArchive;
// If the archive folder doesn't exist - create it!
if (!JFolder::exists($path))
if (!Folder::exists($path))
{
JFolder::create($path);
Folder::create($path);
}
else
{
// Let us remove all previous uploads
$archiveFiles = JFolder::files($path);
$archiveFiles = Folder::files($path);
foreach ($archiveFiles as $archive)
{
if (!JFile::delete($this->pathArchive . '/' . $archive))
if (!File::delete($this->pathArchive . '/' . $archive))
{
echo 'could not delete' . $archive;
}
@ -88,10 +90,10 @@ class JedcheckerControllerUploads extends JControllerLegacy
$file['filepath'] = $path . '/' . strtolower($file['name']);
// Let us try to upload
if (!JFile::upload($file['tmp_name'], $file['filepath'], false, true))
if (!File::upload($file['tmp_name'], $file['filepath'], false, true))
{
// Error in upload - redirect back with an error notice
$appl->enqueueMessage(JText::_('COM_JEDCHECKER_ERROR_UNABLE_TO_UPLOAD_FILE'), 'error');
$appl->enqueueMessage(Text::_('COM_JEDCHECKER_ERROR_UNABLE_TO_UPLOAD_FILE'), 'error');
$appl->redirect('index.php?option=com_jedchecker&view=uploads');
return false;
@ -119,28 +121,28 @@ class JedcheckerControllerUploads extends JControllerLegacy
*/
public function unzip()
{
$appl = JFactory::getApplication();
$appl = Factory::getApplication();
// Form check token
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
Session::checkToken() or jexit(Text::_('JINVALID_TOKEN'));
// If folder doesn't exist - create it!
if (!JFolder::exists($this->pathUnzipped))
if (!Folder::exists($this->pathUnzipped))
{
JFolder::create($this->pathUnzipped);
Folder::create($this->pathUnzipped);
}
else
{
// Let us remove all previous unzipped files
$folders = JFolder::folders($this->pathUnzipped);
$folders = Folder::folders($this->pathUnzipped);
foreach ($folders as $folder)
{
JFolder::delete($this->pathUnzipped . '/' . $folder);
Folder::delete($this->pathUnzipped . '/' . $folder);
}
}
$file = JFolder::files($this->pathArchive);
$file = Folder::files($this->pathArchive);
$origin = $this->pathArchive . DIRECTORY_SEPARATOR . $file[0];
$destination = $this->pathUnzipped . DIRECTORY_SEPARATOR . $file[0];
@ -150,7 +152,7 @@ class JedcheckerControllerUploads extends JControllerLegacy
$archive = new Archive;
$result = $archive->extract($origin, $destination);
}
catch (\Exception $e)
catch (Exception $e)
{
$result = false;
}
@ -160,14 +162,14 @@ class JedcheckerControllerUploads extends JControllerLegacy
// Scan unzipped folders if we find zip file -> unzip them as well
$this->unzipAll($this->pathUnzipped . '/' . $file[0]);
$message = 'COM_JEDCHECKER_UNZIP_SUCCESS';
$appl->enqueueMessage(JText::_($message));
$appl->enqueueMessage(Text::_($message));
}
else
{
$message = 'COM_JEDCHECKER_UNZIP_FAILED';
}
// $appl->redirect('index.php?option=com_jedchecker&view=uploads', JText::_($message));
// $appl->redirect('index.php?option=com_jedchecker&view=uploads', Text::_($message));
$message = 'COM_JEDCHECKER_UNZIP_FAILED';
return $message;
@ -197,7 +199,7 @@ class JedcheckerControllerUploads extends JControllerLegacy
$archive = new Archive;
$result = $archive->extract($file->getPathname(), $unzip);
}
catch (\Exception $e)
catch (Exception $e)
{
$result = false;
}
@ -205,7 +207,7 @@ class JedcheckerControllerUploads extends JControllerLegacy
// Delete the archive once we extract it
if ($result)
{
JFile::delete($file->getPathname());
File::delete($file->getPathname());
// Now check the new extracted folder for archive files
$this->unzipAll($unzip);
@ -228,7 +230,7 @@ class JedcheckerControllerUploads extends JControllerLegacy
{
if (file_exists($this->path))
{
$result = JFolder::delete($this->path);
$result = Folder::delete($this->path);
if (!$result)
{
@ -238,7 +240,7 @@ class JedcheckerControllerUploads extends JControllerLegacy
$message = 'COM_JEDCHECKER_DELETE_SUCCESS';
// JFactory::getApplication()->redirect('index.php?option=com_jedchecker&view=uploads', JText::_($message));
// Factory::getApplication()->redirect('index.php?option=com_jedchecker&view=uploads', Text::_($message));
$this->setRedirect('index.php?option=com_jedchecker&view=uploads');
}
}

View File

@ -11,18 +11,17 @@
*/
defined('_JEXEC') or die('Restricted access');
jimport('joomla.application.component.controllerlegacy');
if (!JFactory::getUser()->authorise('core.manage', 'com_jedchecker'))
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\MVC\Controller\BaseController;
if (!Factory::getUser()->authorise('core.manage', 'com_jedchecker'))
{
throw new Exception(JText::_('JERROR_ALERTNOAUTHOR'));
throw new Exception(Text::_('JERROR_ALERTNOAUTHOR'));
}
// We'll need JFile and JFolder all through the component so let us load them here
jimport('joomla.filesystem.folder');
jimport('joomla.filesystem.file');
$input = JFactory::getApplication()->input;
$input = Factory::getApplication()->input;
$view = $input->getCmd('view', '');
if ($view === '' && $input->getCmd('task', '') === '')
@ -30,6 +29,6 @@ if ($view === '' && $input->getCmd('task', '') === '')
$input->set('view', 'uploads');
}
$controller = JControllerLegacy::getInstance('jedchecker');
$controller = BaseController::getInstance('jedchecker');
$controller->execute($input->getCmd('task', ''));
$controller->redirect();

View File

@ -9,6 +9,8 @@
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Filesystem\Folder;
use Joomla\CMS\Filter\InputFilter;
/**
* class JedcheckerHelper
@ -34,7 +36,7 @@ abstract class JEDCheckerHelper
public static function findManifests($basedir)
{
// Find all XML files of the extension
$files = JFolder::files($basedir, '\.xml$', true, true);
$files = Folder::files($basedir, '\.xml$', true, true);
$excludeList = array();
@ -134,7 +136,7 @@ abstract class JEDCheckerHelper
}
}
$extension = strtolower(JFilterInput::getInstance()->clean($extension, 'cmd'));
$extension = strtolower(InputFilter::getInstance()->clean($extension, 'cmd'));
if ($type === 'component' && strpos($extension, 'com_') !== 0)
{

View File

@ -12,6 +12,9 @@
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Filesystem\Folder;
use Joomla\CMS\Language\Text;
// Include the rule base class
require_once JPATH_COMPONENT_ADMINISTRATOR . '/models/rule.php';
@ -81,7 +84,7 @@ class JedcheckerRulesEncoding extends JEDcheckerRule
$this->encodingsRegex = '/' . implode('|', $encodings) . '/i';
// Find all php files of the extension
$files = JFolder::files($this->basedir, '\.php$', true, true);
$files = Folder::files($this->basedir, '\.php$', true, true);
// Iterate through all files
foreach ($files as $file)
@ -121,7 +124,7 @@ class JedcheckerRulesEncoding extends JEDcheckerRule
if (preg_match($this->encodingsRegex, $line))
{
$found = true;
$this->report->addWarning($file, JText::_('COM_JEDCHECKER_ERROR_ENCODING'), $i + 1, $origContent[$i]);
$this->report->addWarning($file, Text::_('COM_JEDCHECKER_ERROR_ENCODING'), $i + 1, $origContent[$i]);
}
}

View File

@ -11,6 +11,9 @@
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Filesystem\Folder;
use Joomla\CMS\Language\Text;
// Include the rule base class
require_once JPATH_COMPONENT_ADMINISTRATOR . '/models/rule.php';
@ -82,7 +85,7 @@ class JedcheckerRulesErrorreporting extends JEDcheckerRule
$this->errorreportingRegex = '/' . implode('|', $codes) . '/i';
// Find all php files of the extension
$files = JFolder::files($this->basedir, '\.php$', true, true);
$files = Folder::files($this->basedir, '\.php$', true, true);
// Iterate through all files
foreach ($files as $file)
@ -122,7 +125,7 @@ class JedcheckerRulesErrorreporting extends JEDcheckerRule
if (preg_match($this->errorreportingRegex, $line))
{
$found = true;
$this->report->addWarning($file, JText::_('COM_JEDCHECKER_ERROR_ERRORREPORTING'), $i + 1, $origContent[$i]);
$this->report->addWarning($file, Text::_('COM_JEDCHECKER_ERROR_ERRORREPORTING'), $i + 1, $origContent[$i]);
}
}

View File

@ -11,6 +11,9 @@
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Filesystem\Folder;
use Joomla\CMS\Language\Text;
// Include the rule base class
require_once JPATH_COMPONENT_ADMINISTRATOR . '/models/rule.php';
@ -83,15 +86,15 @@ class JedcheckerRulesFramework extends JEDcheckerRule
$regexLeftoverFolders = '^' . $this->regexLeftoverFolders . '$';
// Get matched files and folder (w/o default exclusion list)
$folders = JFolder::folders($this->basedir, $regexLeftoverFolders, true, true, array(), array());
$files = JFolder::files($this->basedir, $regexLeftoverFolders, true, true, array(), array());
$folders = Folder::folders($this->basedir, $regexLeftoverFolders, true, true, array(), array());
$files = Folder::files($this->basedir, $regexLeftoverFolders, true, true, array(), array());
if ($folders !== false)
{
// Warn on leftover folders found
foreach ($folders as $folder)
{
$this->report->addWarning($folder, JText::_("COM_JEDCHECKER_ERROR_FRAMEWORK_LEFTOVER_FOLDER"));
$this->report->addWarning($folder, Text::_("COM_JEDCHECKER_ERROR_FRAMEWORK_LEFTOVER_FOLDER"));
}
}
@ -100,11 +103,11 @@ class JedcheckerRulesFramework extends JEDcheckerRule
// Warn on leftover files found
foreach ($files as $file)
{
$this->report->addWarning($file, JText::_("COM_JEDCHECKER_ERROR_FRAMEWORK_LEFTOVER_FILE"));
$this->report->addWarning($file, Text::_("COM_JEDCHECKER_ERROR_FRAMEWORK_LEFTOVER_FILE"));
}
}
$files = JFolder::files($this->basedir, '\.php$', true, true);
$files = Folder::files($this->basedir, '\.php$', true, true);
foreach ($files as $file)
{
@ -154,14 +157,14 @@ class JedcheckerRulesFramework extends JEDcheckerRule
// Check BOM
if (strncmp($content, "\xEF\xBB\xBF", 3) === 0)
{
$this->report->addError($file, JText::_('COM_JEDCHECKER_ERROR_FRAMEWORK_BOM_FOUND'));
$this->report->addError($file, Text::_('COM_JEDCHECKER_ERROR_FRAMEWORK_BOM_FOUND'));
$result = true;
}
// Report spaces/tabs/EOLs at the beginning of file
if (strpos(" \t\n\r\v\f", $content[0]) !== false)
{
$this->report->addNotice($file, JText::_('COM_JEDCHECKER_ERROR_FRAMEWORK_LEADING_SPACES'));
$this->report->addNotice($file, Text::_('COM_JEDCHECKER_ERROR_FRAMEWORK_LEADING_SPACES'));
$result = true;
}
@ -176,7 +179,7 @@ class JedcheckerRulesFramework extends JEDcheckerRule
if (preg_match('/<\?\s/', $content, $match, PREG_OFFSET_CAPTURE))
{
$lineno = substr_count($content, "\n", 0, $match[0][1]);
$this->report->addError($file, JText::_('COM_JEDCHECKER_ERROR_FRAMEWORK_SHORT_PHP_TAG'), $lineno + 1, $origContent[$lineno]);
$this->report->addError($file, Text::_('COM_JEDCHECKER_ERROR_FRAMEWORK_SHORT_PHP_TAG'), $lineno + 1, $origContent[$lineno]);
$result = true;
}
@ -230,7 +233,7 @@ class JedcheckerRulesFramework extends JEDcheckerRule
if (preg_match('/' . $regex . '/i', $line))
{
$origLine = str_ireplace($singleTest, '<b>' . $singleTest . '</b>', htmlspecialchars($origLine));
$error_message = JText::_('COM_JEDCHECKER_ERROR_FRAMEWORK_' . strtoupper($testObject->group)) . ':<pre>' . $origLine . '</pre>';
$error_message = Text::_('COM_JEDCHECKER_ERROR_FRAMEWORK_' . strtoupper($testObject->group)) . ':<pre>' . $origLine . '</pre>';
switch ($testObject->kind)
{

View File

@ -11,6 +11,8 @@
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Filesystem\Folder;
use Joomla\CMS\Language\Text;
// Include the rule base class
require_once JPATH_COMPONENT_ADMINISTRATOR . '/models/rule.php';
@ -80,7 +82,7 @@ class JedcheckerRulesGpl extends JEDcheckerRule
$this->init();
// Find all php files of the extension
$files = JFolder::files($this->basedir, '\.php$', true, true);
$files = Folder::files($this->basedir, '\.php$', true, true);
// Iterate through all files
foreach ($files as $file)
@ -89,7 +91,7 @@ class JedcheckerRulesGpl extends JEDcheckerRule
if (!$this->find($file))
{
// Add as error to the report if it was not found
$this->report->addError($file, JText::_('COM_JEDCHECKER_ERROR_GPL_NOT_FOUND'));
$this->report->addError($file, Text::_('COM_JEDCHECKER_ERROR_GPL_NOT_FOUND'));
}
}
}
@ -214,7 +216,7 @@ class JedcheckerRulesGpl extends JEDcheckerRule
$lineno = substr_count($content, "\n", 0, $match[0][1]) + 1;
$this->report->addPassed(
$file,
JText::_('COM_JEDCHECKER_PH1_LICENSE_FOUND'),
Text::_('COM_JEDCHECKER_PH1_LICENSE_FOUND'),
$lineno,
$match[0][0]
);
@ -227,7 +229,7 @@ class JedcheckerRulesGpl extends JEDcheckerRule
$lineno = substr_count($content, "\n", 0, $match[0][1]) + 1;
$this->report->addWarning(
$file,
JText::_('COM_JEDCHECKER_GPL_COMPATIBLE_LICENSE_WAS_FOUND'),
Text::_('COM_JEDCHECKER_GPL_COMPATIBLE_LICENSE_WAS_FOUND'),
$lineno,
$match[0][0]
);

View File

@ -12,6 +12,9 @@
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Filesystem\Folder;
use Joomla\CMS\Language\Text;
// Include the rule base class
require_once JPATH_COMPONENT_ADMINISTRATOR . '/models/rule.php';
@ -67,7 +70,7 @@ class JedcheckerRulesJamss extends JEDcheckerRule
*/
public function check()
{
$files = JFolder::files($this->basedir, '', true, true);
$files = Folder::files($this->basedir, '', true, true);
$this->init_jamss();
@ -328,12 +331,12 @@ class JedcheckerRulesJamss extends JEDcheckerRule
{
if ($malic_file_descr = array_search(pathinfo($path, PATHINFO_BASENAME), $jamssFileNames))
{
$this->jamssWarning($path, JText::_('COM_JEDCHECKER_ERROR_JAMSS_SUSPICIOUS_FILENAME'), $malic_file_descr, '', 0);
$this->jamssWarning($path, Text::_('COM_JEDCHECKER_ERROR_JAMSS_SUSPICIOUS_FILENAME'), $malic_file_descr, '', 0);
}
if (!($content = file_get_contents($path)))
{
$this->report->addError($path, JText::_('COM_JEDCHECKER_ERROR_JAMSS_CANNOT_OPEN') . $malic_file_descr, 0);
$this->report->addError($path, Text::_('COM_JEDCHECKER_ERROR_JAMSS_CANNOT_OPEN') . $malic_file_descr, 0);
return true;
}
@ -413,7 +416,7 @@ class JedcheckerRulesJamss extends JEDcheckerRule
// Then it has some additional comments
$this->jamssWarning(
$path,
JText::_('COM_JEDCHECKER_ERROR_JAMSS_PATTERN') . "#$pattern[2] - $pattern[1]",
Text::_('COM_JEDCHECKER_ERROR_JAMSS_PATTERN') . "#$pattern[2] - $pattern[1]",
$pattern[3],
$first_code,
$first_line
@ -424,7 +427,7 @@ class JedcheckerRulesJamss extends JEDcheckerRule
// It's a string, no comments available
$this->jamssWarning(
$path,
JText::_('COM_JEDCHECKER_ERROR_JAMSS_STRING') . $pattern,
Text::_('COM_JEDCHECKER_ERROR_JAMSS_STRING') . $pattern,
'',
$first_code,
$first_line

View File

@ -12,6 +12,8 @@
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Language\Text;
// Include the rule base class
require_once JPATH_COMPONENT_ADMINISTRATOR . '/models/rule.php';
@ -95,7 +97,7 @@ class JedcheckerRulesJexec extends JEDcheckerRule
if (!$this->find($file))
{
// Add as error to the report if it was not found
$this->report->addError($file, JText::_('COM_JEDCHECKER_ERROR_JEXEC_NOT_FOUND'));
$this->report->addError($file, Text::_('COM_JEDCHECKER_ERROR_JEXEC_NOT_FOUND'));
}
}
}

View File

@ -9,6 +9,8 @@
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Filesystem\Folder;
use Joomla\CMS\Language\Text;
// Include the rule base class
require_once JPATH_COMPONENT_ADMINISTRATOR . '/models/rule.php';
@ -66,7 +68,7 @@ class JedcheckerRulesLanguage extends JEDcheckerRule
public function check()
{
// Find all INI files of the extension
$files = JFolder::files($this->basedir, '\.ini$', true, true);
$files = Folder::files($this->basedir, '\.ini$', true, true);
// Iterate through all the ini files
foreach ($files as $file)
@ -99,7 +101,7 @@ class JedcheckerRulesLanguage extends JEDcheckerRule
}
// Check JText usage
$files = JFolder::files($this->basedir, '\.php$', true, true);
$files = Folder::files($this->basedir, '\.php$', true, true);
foreach ($files as $file)
{
@ -127,7 +129,7 @@ class JedcheckerRulesLanguage extends JEDcheckerRule
// Check EOL format is \n (not \r or \n\r)
if (strpos($content, "\r") !== false)
{
$this->report->addNotice($file, JText::_('COM_JEDCHECKER_LANG_INCORRECT_EOL', false, false));
$this->report->addNotice($file, Text::_('COM_JEDCHECKER_LANG_INCORRECT_EOL', false, false));
}
$lines = file($file);
@ -151,7 +153,7 @@ class JedcheckerRulesLanguage extends JEDcheckerRule
// Check for BOM sequence
if ($lineno === 0 && strncmp($line, "\xEF\xBB\xBF", 3) === 0)
{
$this->report->addWarning($file, JText::_('COM_JEDCHECKER_LANG_BOM_FOUND'), $startLineno);
$this->report->addWarning($file, Text::_('COM_JEDCHECKER_LANG_BOM_FOUND'), $startLineno);
// Remove BOM for further checks
$line = substr($line, 3);
@ -166,14 +168,14 @@ class JedcheckerRulesLanguage extends JEDcheckerRule
// Report incorrect comment character
if ($line[0] === '#')
{
$this->report->addError($file, JText::_('COM_JEDCHECKER_LANG_INCORRECT_COMMENT'), $startLineno, $line);
$this->report->addError($file, Text::_('COM_JEDCHECKER_LANG_INCORRECT_COMMENT'), $startLineno, $line);
continue;
}
// Check for "=" character in the line
if (strpos($line, '=') === false)
{
$this->report->addError($file, JText::_('COM_JEDCHECKER_LANG_WRONG_LINE'), $startLineno, $line);
$this->report->addError($file, Text::_('COM_JEDCHECKER_LANG_WRONG_LINE'), $startLineno, $line);
continue;
}
@ -186,47 +188,47 @@ class JedcheckerRulesLanguage extends JEDcheckerRule
// Check for empty key
if ($key === '')
{
$this->report->addError($file, JText::_('COM_JEDCHECKER_LANG_KEY_EMPTY'), $startLineno, $line);
$this->report->addError($file, Text::_('COM_JEDCHECKER_LANG_KEY_EMPTY'), $startLineno, $line);
continue;
}
// Check for spaces in the key name
if (preg_match('/\s/', $key))
{
$this->report->addError($file, JText::_('COM_JEDCHECKER_LANG_KEY_WHITESPACE'), $startLineno, $line);
$this->report->addError($file, Text::_('COM_JEDCHECKER_LANG_KEY_WHITESPACE'), $startLineno, $line);
continue;
}
// Check for invalid characters (see https://www.php.net/manual/en/function.parse-ini-file.php)
if (strpbrk($key, '{}|&~![()^"') !== false)
{
$this->report->addError($file, JText::_('COM_JEDCHECKER_LANG_KEY_INVALID_CHARACTER'), $startLineno, $line);
$this->report->addError($file, Text::_('COM_JEDCHECKER_LANG_KEY_INVALID_CHARACTER'), $startLineno, $line);
continue;
}
// Check for invalid key names (see https://www.php.net/manual/en/function.parse-ini-file.php)
if (in_array($key, array('null', 'yes', 'no', 'true', 'false', 'on', 'off', 'none'), true))
{
$this->report->addError($file, JText::_('COM_JEDCHECKER_LANG_KEY_RESERVED'), $startLineno, $line);
$this->report->addError($file, Text::_('COM_JEDCHECKER_LANG_KEY_RESERVED'), $startLineno, $line);
continue;
}
// Check key contains ASCII characters only
if (preg_match('/[\x00-\x1F\x80-\xFF]/', $key))
{
$this->report->addWarning($file, JText::_('COM_JEDCHECKER_LANG_KEY_NOT_ASCII'), $startLineno, $line);
$this->report->addWarning($file, Text::_('COM_JEDCHECKER_LANG_KEY_NOT_ASCII'), $startLineno, $line);
}
// Check key is uppercase
if ($key !== strtoupper($key))
{
$this->report->addWarning($file, JText::_('COM_JEDCHECKER_LANG_KEY_NOT_UPPERCASE'), $startLineno, $line);
$this->report->addWarning($file, Text::_('COM_JEDCHECKER_LANG_KEY_NOT_UPPERCASE'), $startLineno, $line);
}
// Check for duplicated keys
if (isset($keys[$key]))
{
$this->report->addWarning($file, JText::sprintf('COM_JEDCHECKER_LANG_KEY_DUPLICATED', $keys[$key]), $startLineno, $line);
$this->report->addWarning($file, Text::sprintf('COM_JEDCHECKER_LANG_KEY_DUPLICATED', $keys[$key]), $startLineno, $line);
}
else
{
@ -253,7 +255,7 @@ class JedcheckerRulesLanguage extends JEDcheckerRule
// The value doesn't match INI format
if (!isset($matches[0]))
{
$this->report->addWarning($file, JText::_('COM_JEDCHECKER_LANG_TRANSLATION_ERROR'), $startLineno, $line);
$this->report->addWarning($file, Text::_('COM_JEDCHECKER_LANG_TRANSLATION_ERROR'), $startLineno, $line);
continue;
}
@ -263,7 +265,7 @@ class JedcheckerRulesLanguage extends JEDcheckerRule
// Check for empty value
if ($value === '""')
{
$this->report->addNotice($file, JText::_('COM_JEDCHECKER_LANG_TRANSLATION_EMPTY'), $startLineno, $line);
$this->report->addNotice($file, Text::_('COM_JEDCHECKER_LANG_TRANSLATION_EMPTY'), $startLineno, $line);
continue;
}
@ -272,26 +274,26 @@ class JedcheckerRulesLanguage extends JEDcheckerRule
if (!$validUTF8)
{
$this->report->addWarning($file, JText::_('COM_JEDCHECKER_LANG_INVALID_UTF8'), $startLineno, $line);
$this->report->addWarning($file, Text::_('COM_JEDCHECKER_LANG_INVALID_UTF8'), $startLineno, $line);
}
// Check for unquoted values
if (strlen($value) < 2 || ($value[0] !== '"' && substr($value, -1) !== '"'))
{
$this->report->addWarning($file, JText::_('COM_JEDCHECKER_LANG_TRANSLATION_QUOTES'), $startLineno, $line);
$this->report->addWarning($file, Text::_('COM_JEDCHECKER_LANG_TRANSLATION_QUOTES'), $startLineno, $line);
continue;
}
if ($value[0] !== '"')
{
$msg = JText::_('COM_JEDCHECKER_LANG_TRANSLATION_QUOTES') . ' ' . JText::_('COM_JEDCHECKER_LANG_TRANSLATION_MISSED_LEFT_QUOTE');
$msg = Text::_('COM_JEDCHECKER_LANG_TRANSLATION_QUOTES') . ' ' . Text::_('COM_JEDCHECKER_LANG_TRANSLATION_MISSED_LEFT_QUOTE');
$this->report->addWarning($file, $msg, $startLineno, $line);
continue;
}
if (substr($value, -1) !== '"')
{
$msg = JText::_('COM_JEDCHECKER_LANG_TRANSLATION_QUOTES') . ' ' . JText::_('COM_JEDCHECKER_LANG_TRANSLATION_MISSED_RIGHT_QUOTE');
$msg = Text::_('COM_JEDCHECKER_LANG_TRANSLATION_QUOTES') . ' ' . Text::_('COM_JEDCHECKER_LANG_TRANSLATION_MISSED_RIGHT_QUOTE');
$this->report->addWarning($file, $msg, $startLineno, $line);
continue;
}
@ -302,7 +304,7 @@ class JedcheckerRulesLanguage extends JEDcheckerRule
// Check for legacy "_QQ_" code (deprecated since Joomla! 3.9 in favour of escaped double quote \"; removed in Joomla! 4)
if (strpos($value, '"_QQ_"') !== false)
{
$this->report->addCompat($file, JText::sprintf('COM_JEDCHECKER_LANG_QQDEPRECATED', '<code>"_QQ_"</code>', '<code>\\"</code>'), $startLineno, $line);
$this->report->addCompat($file, Text::sprintf('COM_JEDCHECKER_LANG_QQDEPRECATED', '<code>"_QQ_"</code>', '<code>\\"</code>'), $startLineno, $line);
}
// Convert "_QQ_" to escaped quotes for further analysis
@ -311,13 +313,13 @@ class JedcheckerRulesLanguage extends JEDcheckerRule
// Check for unescaped quote
if (preg_match('/[^\\\\]"/', $value))
{
$this->report->addWarning($file, JText::_('COM_JEDCHECKER_LANG_UNESCAPED_QUOTE'), $startLineno, $line);
$this->report->addWarning($file, Text::_('COM_JEDCHECKER_LANG_UNESCAPED_QUOTE'), $startLineno, $line);
}
// Check for value interpolation (see https://www.php.net/manual/en/function.parse-ini-file.php for details)
if (strpos($value, '${') !== false)
{
$this->report->addWarning($file, JText::_('COM_JEDCHECKER_LANG_VARIABLE_REF'), $startLineno, $line);
$this->report->addWarning($file, Text::_('COM_JEDCHECKER_LANG_VARIABLE_REF'), $startLineno, $line);
}
// The code below detects incorrect format of numbered placeholders (e.g. "%1s" instead of "%1$s")
@ -340,7 +342,7 @@ class JedcheckerRulesLanguage extends JEDcheckerRule
// If placeholder numbers form a sequence, the maximal value is equal to the number of elements
if ($maxNumber === $count)
{
$this->report->addWarning($file, JText::_('COM_JEDCHECKER_LANG_INCORRECT_ARGNUM'), $startLineno, $line);
$this->report->addWarning($file, Text::_('COM_JEDCHECKER_LANG_INCORRECT_ARGNUM'), $startLineno, $line);
}
}
@ -350,7 +352,7 @@ class JedcheckerRulesLanguage extends JEDcheckerRule
// Check spaces around (but allow trailing space after colon)
if (preg_match('/^\s|[^:]\s+$/', $value))
{
$this->report->addNotice($file, JText::_('COM_JEDCHECKER_LANG_SPACES_AROUND'), $startLineno, $line);
$this->report->addNotice($file, Text::_('COM_JEDCHECKER_LANG_SPACES_AROUND'), $startLineno, $line);
}
}
}
@ -406,7 +408,7 @@ class JedcheckerRulesLanguage extends JEDcheckerRule
if (!isset($this->langKeys[$key]))
{
$lineno = substr_count($content, "\n", 0, $match[1]);
$this->report->addNotice($file, JText::sprintf('COM_JEDCHECKER_LANG_UNKNOWN_KEY_IN_CODE', htmlspecialchars($key)), $lineno + 1, $lines[$lineno]);
$this->report->addNotice($file, Text::sprintf('COM_JEDCHECKER_LANG_UNKNOWN_KEY_IN_CODE', htmlspecialchars($key)), $lineno + 1, $lines[$lineno]);
}
}

View File

@ -9,6 +9,7 @@
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Language\Text;
// Include the rule base class
require_once JPATH_COMPONENT_ADMINISTRATOR . '/models/rule.php';
@ -304,7 +305,7 @@ class JedcheckerRulesXMLFiles extends JEDcheckerRule
if (!is_dir($folder))
{
$this->errors[] = JText::sprintf('COM_JEDCHECKER_XML_FILES_FOLDER_NOT_FOUND', $attrPath);
$this->errors[] = Text::sprintf('COM_JEDCHECKER_XML_FILES_FOLDER_NOT_FOUND', $attrPath);
}
}
}
@ -319,7 +320,7 @@ class JedcheckerRulesXMLFiles extends JEDcheckerRule
if (!is_dir($this->basedir . $admindir . $folder) && !is_dir($this->basedir . $sitedir . $folder))
{
$this->errors[] = JText::sprintf('COM_JEDCHECKER_XML_FILES_FOLDER_NOT_FOUND', $folder);
$this->errors[] = Text::sprintf('COM_JEDCHECKER_XML_FILES_FOLDER_NOT_FOUND', $folder);
}
}
@ -358,7 +359,7 @@ class JedcheckerRulesXMLFiles extends JEDcheckerRule
return $folder . '/';
}
$this->warnings[] = JText::sprintf('COM_JEDCHECKER_XML_FILES_FOLDER_NOT_FOUND', $folder);
$this->warnings[] = Text::sprintf('COM_JEDCHECKER_XML_FILES_FOLDER_NOT_FOUND', $folder);
return '';
}
@ -380,7 +381,7 @@ class JedcheckerRulesXMLFiles extends JEDcheckerRule
$path[] = $p->getName();
}
$this->warnings[] = JText::sprintf('COM_JEDCHECKER_XML_FILES_EMPTY_LIST', implode('/', $path));
$this->warnings[] = Text::sprintf('COM_JEDCHECKER_XML_FILES_EMPTY_LIST', implode('/', $path));
}
}
@ -409,7 +410,7 @@ class JedcheckerRulesXMLFiles extends JEDcheckerRule
continue;
}
$this->errors[] = JText::sprintf('COM_JEDCHECKER_XML_FILES_FILE_NOT_FOUND', $dir . $file);
$this->errors[] = Text::sprintf('COM_JEDCHECKER_XML_FILES_FILE_NOT_FOUND', $dir . $file);
}
}
@ -427,7 +428,7 @@ class JedcheckerRulesXMLFiles extends JEDcheckerRule
{
if (!is_dir($this->basedir . $dir . $folder))
{
$this->errors[] = JText::sprintf('COM_JEDCHECKER_XML_FILES_FOLDER_NOT_FOUND', $dir . $folder);
$this->errors[] = Text::sprintf('COM_JEDCHECKER_XML_FILES_FOLDER_NOT_FOUND', $dir . $folder);
}
}
}

View File

@ -12,6 +12,8 @@
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
// Include the rule base class
require_once JPATH_COMPONENT_ADMINISTRATOR . '/models/rule.php';
@ -109,7 +111,7 @@ class JedcheckerRulesXMLinfo extends JEDcheckerRule
if (!$manifestFound)
{
$this->report->addError('', JText::_('COM_JEDCHECKER_INFO_XML_NO_MANIFEST'));
$this->report->addError('', Text::_('COM_JEDCHECKER_INFO_XML_NO_MANIFEST'));
}
}
@ -136,7 +138,7 @@ class JedcheckerRulesXMLinfo extends JEDcheckerRule
// 1.5 uses 'install', 1.6+ uses 'extension'
if ($xml->getName() === 'install')
{
$this->report->addWarning($file, JText::sprintf('COM_JEDCHECKER_INFO_XML_MANIFEST_OUTDATED'));
$this->report->addWarning($file, Text::sprintf('COM_JEDCHECKER_INFO_XML_MANIFEST_OUTDATED'));
}
if ($xml->getName() !== 'extension')
@ -151,12 +153,12 @@ class JedcheckerRulesXMLinfo extends JEDcheckerRule
$this->loadExtensionLanguage($xml, dirname($file));
// Get the real extension's name now that the language has been loaded
$lang = JFactory::getLanguage();
$lang = Factory::getLanguage();
$extensionName = $lang->_((string) $xml->name);
$info[] = JText::sprintf('COM_JEDCHECKER_INFO_XML_NAME_XML', $extensionName);
$info[] = JText::sprintf('COM_JEDCHECKER_INFO_XML_VERSION_XML', (string) $xml->version);
$info[] = JText::sprintf('COM_JEDCHECKER_INFO_XML_CREATIONDATE_XML', (string) $xml->creationDate);
$info[] = Text::sprintf('COM_JEDCHECKER_INFO_XML_NAME_XML', $extensionName);
$info[] = Text::sprintf('COM_JEDCHECKER_INFO_XML_VERSION_XML', (string) $xml->version);
$info[] = Text::sprintf('COM_JEDCHECKER_INFO_XML_CREATIONDATE_XML', (string) $xml->creationDate);
$this->report->addInfo($file, implode('<br />', $info));
@ -165,7 +167,7 @@ class JedcheckerRulesXMLinfo extends JEDcheckerRule
// JED allows components, modules, plugins, and packages (as a container) only
if (!in_array($type, $this->jedTypes, true))
{
$this->report->addError($file, JText::sprintf('COM_JEDCHECKER_MANIFEST_TYPE_NOT_ACCEPTED', $type));
$this->report->addError($file, Text::sprintf('COM_JEDCHECKER_MANIFEST_TYPE_NOT_ACCEPTED', $type));
}
// NM3 - Listing name contains “module” or “plugin”
@ -173,20 +175,20 @@ class JedcheckerRulesXMLinfo extends JEDcheckerRule
if (preg_match('/\b(?:module|plugin|component|template|extension|free)\b/i', $extensionName, $match))
{
$this->report->addIssue(JEDcheckerReport::LEVEL_ERROR, 'NM3', $file,
JText::sprintf('COM_JEDCHECKER_INFO_XML_NAME_RESERVED_KEYWORDS', $extensionName, strtolower($match[0])));
Text::sprintf('COM_JEDCHECKER_INFO_XML_NAME_RESERVED_KEYWORDS', $extensionName, strtolower($match[0])));
}
// Extension name shouldn't start with extension type prefix
if (preg_match('/^\s*(?:mod|com|plg|tpl|pkg)_/i', $extensionName))
{
$this->report->addError($file, JText::sprintf('COM_JEDCHECKER_INFO_XML_NAME_PREFIXED', $extensionName));
$this->report->addError($file, Text::sprintf('COM_JEDCHECKER_INFO_XML_NAME_PREFIXED', $extensionName));
}
// NM5 - Version in name/title
if (preg_match('/(?:\bversion\b|\d\.\d)/i', $extensionName))
{
$this->report->addIssue(JEDcheckerReport::LEVEL_ERROR, 'NM5', $file,
JText::sprintf('COM_JEDCHECKER_INFO_XML_NAME_VERSION', $extensionName));
Text::sprintf('COM_JEDCHECKER_INFO_XML_NAME_VERSION', $extensionName));
}
// Check for "Joomla" in the name
@ -194,7 +196,7 @@ class JedcheckerRulesXMLinfo extends JEDcheckerRule
{
// An extension name can't start with the word "Joomla"
$this->report->addIssue(JEDcheckerReport::LEVEL_ERROR, 'TM2', $file,
JText::sprintf('COM_JEDCHECKER_INFO_XML_NAME_JOOMLA', $extensionName));
Text::sprintf('COM_JEDCHECKER_INFO_XML_NAME_JOOMLA', $extensionName));
}
else
{
@ -204,14 +206,14 @@ class JedcheckerRulesXMLinfo extends JEDcheckerRule
{
// Extensions that use "Joomla" or a derivative of Joomla in the extension name need to be licensed by OSM
$this->report->addIssue(JEDcheckerReport::LEVEL_WARNING, 'TM2', $file,
JText::sprintf('COM_JEDCHECKER_INFO_XML_NAME_JOOMLA_DERIVATIVE', $extensionName, 'https://tm.joomla.org/approved-domains.html'));
Text::sprintf('COM_JEDCHECKER_INFO_XML_NAME_JOOMLA_DERIVATIVE', $extensionName, 'https://tm.joomla.org/approved-domains.html'));
}
}
// Check extension name consists of ASCII characters only
if (preg_match('/[^\x20-\x7E]/', $extensionName))
{
$this->report->addError($file, JText::sprintf('COM_JEDCHECKER_INFO_XML_NAME_NON_ASCII', $extensionName));
$this->report->addError($file, Text::sprintf('COM_JEDCHECKER_INFO_XML_NAME_NON_ASCII', $extensionName));
}
// Extension name shouldn't be too long
@ -219,11 +221,11 @@ class JedcheckerRulesXMLinfo extends JEDcheckerRule
if ($nameLen > 80)
{
$this->report->addError($file, JText::sprintf('COM_JEDCHECKER_INFO_XML_NAME_TOO_LONG', $extensionName));
$this->report->addError($file, Text::sprintf('COM_JEDCHECKER_INFO_XML_NAME_TOO_LONG', $extensionName));
}
elseif ($nameLen > 40)
{
$this->report->addWarning($file, JText::sprintf('COM_JEDCHECKER_INFO_XML_NAME_TOO_LONG', $extensionName));
$this->report->addWarning($file, Text::sprintf('COM_JEDCHECKER_INFO_XML_NAME_TOO_LONG', $extensionName));
}
}
@ -241,7 +243,7 @@ class JedcheckerRulesXMLinfo extends JEDcheckerRule
// Do name the Component's admin menu the same as the extension name
if ($extensionName !== $menuName)
{
$this->report->addWarning($file, JText::sprintf('COM_JEDCHECKER_INFO_XML_NAME_ADMIN_MENU', $menuName, $extensionName));
$this->report->addWarning($file, Text::sprintf('COM_JEDCHECKER_INFO_XML_NAME_ADMIN_MENU', $menuName, $extensionName));
}
}
@ -256,7 +258,7 @@ class JedcheckerRulesXMLinfo extends JEDcheckerRule
&& !(isset($this->pluginsGroupMap[$extensionNameGroup]) && $this->pluginsGroupMap[$extensionNameGroup] === $group)
)
{
$this->report->addWarning($file, JText::sprintf('COM_JEDCHECKER_INFO_XML_NAME_PLUGIN_FORMAT', $extensionName));
$this->report->addWarning($file, Text::sprintf('COM_JEDCHECKER_INFO_XML_NAME_PLUGIN_FORMAT', $extensionName));
}
}
@ -287,7 +289,7 @@ class JedcheckerRulesXMLinfo extends JEDcheckerRule
}
// Load the language of the extension (if any)
$lang = JFactory::getLanguage();
$lang = Factory::getLanguage();
// Populate list of directories to look for
$lookupLangDirs = array();
@ -373,7 +375,7 @@ class JedcheckerRulesXMLinfo extends JEDcheckerRule
{
// Extensions that use "Joomla" or a derivative of Joomla in the domain name need to be licensed by OSM
$this->report->addIssue(JEDcheckerReport::LEVEL_ERROR, 'TM1', $file,
JText::sprintf('COM_JEDCHECKER_INFO_XML_URL_JOOMLA_DERIVATIVE', $url, 'https://tm.joomla.org/approved-domains.html'));
Text::sprintf('COM_JEDCHECKER_INFO_XML_URL_JOOMLA_DERIVATIVE', $url, 'https://tm.joomla.org/approved-domains.html'));
}
}
}

View File

@ -12,6 +12,8 @@
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Language\Text;
// Include the rule base class
require_once JPATH_COMPONENT_ADMINISTRATOR . '/models/rule.php';
@ -96,7 +98,7 @@ class JedcheckerRulesXMLlicense extends JEDcheckerRule
// Check if there's a license tag
if (!isset($xml->license))
{
$this->report->addError($file, JText::_('COM_JEDCHECKER_ERROR_XML_LICENSE_NOT_FOUND'));
$this->report->addError($file, Text::_('COM_JEDCHECKER_ERROR_XML_LICENSE_NOT_FOUND'));
return false;
}
@ -105,7 +107,7 @@ class JedcheckerRulesXMLlicense extends JEDcheckerRule
if (stripos($xml->license, 'gpl') === false
&& stripos($xml->license, 'general public license') === false)
{
$this->report->addCompat($file, JText::_('COM_JEDCHECKER_ERROR_XML_LICENSE_NOT_GPL'));
$this->report->addCompat($file, Text::_('COM_JEDCHECKER_ERROR_XML_LICENSE_NOT_GPL'));
return false;
}

View File

@ -9,6 +9,7 @@
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Language\Text;
// Include the rule base class
require_once JPATH_COMPONENT_ADMINISTRATOR . '/models/rule.php';
@ -143,7 +144,7 @@ class JedcheckerRulesXMLManifest extends JEDcheckerRule
if (!in_array($type, $this->joomlaTypes, true))
{
$this->report->addError($file, JText::sprintf('COM_JEDCHECKER_MANIFEST_UNKNOWN_TYPE', $type));
$this->report->addError($file, Text::sprintf('COM_JEDCHECKER_MANIFEST_UNKNOWN_TYPE', $type));
return true;
}
@ -159,7 +160,7 @@ class JedcheckerRulesXMLManifest extends JEDcheckerRule
// Warn if method="upgrade" attribute is not found
if ((string) $xml['method'] !== 'upgrade')
{
$this->report->addWarning($file, JText::_('COM_JEDCHECKER_MANIFEST_MISSED_METHOD_UPGRADE'));
$this->report->addWarning($file, Text::_('COM_JEDCHECKER_MANIFEST_MISSED_METHOD_UPGRADE'));
}
switch ($type)
@ -172,11 +173,11 @@ class JedcheckerRulesXMLManifest extends JEDcheckerRule
if (!isset($xml['client']))
{
$this->report->addError($file, JText::sprintf('COM_JEDCHECKER_MANIFEST_MISSED_ATTRIBUTE', $xml->getName(), 'client'));
$this->report->addError($file, Text::sprintf('COM_JEDCHECKER_MANIFEST_MISSED_ATTRIBUTE', $xml->getName(), 'client'));
}
elseif ($client !== 'site' && $client !== 'administrator')
{
$this->report->addError($file, JText::sprintf('COM_JEDCHECKER_MANIFEST_UNKNOWN_ATTRIBUTE_VALUE', $xml->getName(), 'client', $client));
$this->report->addError($file, Text::sprintf('COM_JEDCHECKER_MANIFEST_UNKNOWN_ATTRIBUTE_VALUE', $xml->getName(), 'client', $client));
}
if ($type === 'module')
@ -186,7 +187,7 @@ class JedcheckerRulesXMLManifest extends JEDcheckerRule
if (count($elements) >= 2)
{
$this->report->addWarning($file, JText::sprintf('COM_JEDCHECKER_MANIFEST_MULTIPLE_ATTRIBUTES', 'module'));
$this->report->addWarning($file, Text::sprintf('COM_JEDCHECKER_MANIFEST_MULTIPLE_ATTRIBUTES', 'module'));
}
if (isset($xml->element))
@ -195,14 +196,14 @@ class JedcheckerRulesXMLManifest extends JEDcheckerRule
if (count($elements) && $elements[0] !== $element)
{
$this->report->addWarning($file, JText::_('COM_JEDCHECKER_MANIFEST_MODULE_ELEMENT_MISMATCH'));
$this->report->addWarning($file, Text::_('COM_JEDCHECKER_MANIFEST_MODULE_ELEMENT_MISMATCH'));
}
}
else
{
if (count($elements) === 0)
{
$this->report->addError($file, JText::sprintf('COM_JEDCHECKER_MANIFEST_MISSED_ELEMENT_ATTRIBUTE', 'module'));
$this->report->addError($file, Text::sprintf('COM_JEDCHECKER_MANIFEST_MISSED_ELEMENT_ATTRIBUTE', 'module'));
}
}
}
@ -215,12 +216,12 @@ class JedcheckerRulesXMLManifest extends JEDcheckerRule
if (count($elements) >= 2)
{
$this->report->addWarning($file, JText::sprintf('COM_JEDCHECKER_MANIFEST_MULTIPLE_ATTRIBUTES', 'plugin'));
$this->report->addWarning($file, Text::sprintf('COM_JEDCHECKER_MANIFEST_MULTIPLE_ATTRIBUTES', 'plugin'));
}
if (count($elements) === 0)
{
$this->report->addError($file, JText::sprintf('COM_JEDCHECKER_MANIFEST_MISSED_ELEMENT_ATTRIBUTE', 'plugin'));
$this->report->addError($file, Text::sprintf('COM_JEDCHECKER_MANIFEST_MISSED_ELEMENT_ATTRIBUTE', 'plugin'));
}
break;
@ -231,12 +232,12 @@ class JedcheckerRulesXMLManifest extends JEDcheckerRule
{
if (!isset($item['type']))
{
$this->report->addError($file, JText::sprintf('COM_JEDCHECKER_MANIFEST_MISSED_ATTRIBUTE', $item->getName(), 'type'));
$this->report->addError($file, Text::sprintf('COM_JEDCHECKER_MANIFEST_MISSED_ATTRIBUTE', $item->getName(), 'type'));
}
if (!isset($item['id']))
{
$this->report->addError($file, JText::sprintf('COM_JEDCHECKER_MANIFEST_MISSED_ATTRIBUTE', $item->getName(), 'id'));
$this->report->addError($file, Text::sprintf('COM_JEDCHECKER_MANIFEST_MISSED_ATTRIBUTE', $item->getName(), 'id'));
}
switch ((string) $item['type'])
@ -244,7 +245,7 @@ class JedcheckerRulesXMLManifest extends JEDcheckerRule
case 'plugin':
if (!isset($item['group']))
{
$this->report->addError($file, JText::sprintf('COM_JEDCHECKER_MANIFEST_MISSED_ATTRIBUTE', $item->getName(), 'group'));
$this->report->addError($file, Text::sprintf('COM_JEDCHECKER_MANIFEST_MISSED_ATTRIBUTE', $item->getName(), 'group'));
}
break;
@ -255,11 +256,11 @@ class JedcheckerRulesXMLManifest extends JEDcheckerRule
if (!isset($item['client']))
{
$this->report->addError($file, JText::sprintf('COM_JEDCHECKER_MANIFEST_MISSED_ATTRIBUTE', $item->getName(), 'client'));
$this->report->addError($file, Text::sprintf('COM_JEDCHECKER_MANIFEST_MISSED_ATTRIBUTE', $item->getName(), 'client'));
}
elseif ($client !== 'site' && $client !== 'administrator')
{
$this->report->addError($file, JText::sprintf('COM_JEDCHECKER_MANIFEST_UNKNOWN_ATTRIBUTE_VALUE', $item->getName(), 'client', $client));
$this->report->addError($file, Text::sprintf('COM_JEDCHECKER_MANIFEST_UNKNOWN_ATTRIBUTE_VALUE', $item->getName(), 'client', $client));
}
break;
@ -269,7 +270,7 @@ class JedcheckerRulesXMLManifest extends JEDcheckerRule
break;
default:
$this->report->addError($file, JText::sprintf('COM_JEDCHECKER_MANIFEST_UNKNOWN_TYPE', $item['type']));
$this->report->addError($file, Text::sprintf('COM_JEDCHECKER_MANIFEST_UNKNOWN_TYPE', $item['type']));
}
}
}
@ -322,7 +323,7 @@ class JedcheckerRulesXMLManifest extends JEDcheckerRule
// No known attributes for this node
foreach ($node->attributes() as $attr)
{
$this->notices[] = JText::sprintf('COM_JEDCHECKER_MANIFEST_UNKNOWN_ATTRIBUTE', $name, (string) $attr->getName());
$this->notices[] = Text::sprintf('COM_JEDCHECKER_MANIFEST_UNKNOWN_ATTRIBUTE', $name, (string) $attr->getName());
}
}
elseif ($DTDattributes[0] !== '*') // Skip node with arbitrary attributes (e.g. "field")
@ -334,7 +335,7 @@ class JedcheckerRulesXMLManifest extends JEDcheckerRule
if (!in_array($attrName, $DTDattributes, true))
{
// The node has unknown attribute
$this->notices[] = JText::sprintf('COM_JEDCHECKER_MANIFEST_UNKNOWN_ATTRIBUTE', $name, $attrName);
$this->notices[] = Text::sprintf('COM_JEDCHECKER_MANIFEST_UNKNOWN_ATTRIBUTE', $name, $attrName);
}
}
}
@ -350,7 +351,7 @@ class JedcheckerRulesXMLManifest extends JEDcheckerRule
// No known children for this node
if ($node->count() > 0)
{
$this->notices[] = JText::sprintf('COM_JEDCHECKER_MANIFEST_UNKNOWN_CHILDREN', $name);
$this->notices[] = Text::sprintf('COM_JEDCHECKER_MANIFEST_UNKNOWN_CHILDREN', $name);
}
}
elseif (!isset($DTDchildRules['*'])) // Skip node with arbitrary children
@ -377,12 +378,12 @@ class JedcheckerRulesXMLManifest extends JEDcheckerRule
if ($count === 0)
{
// The node doesn't contain required child element
$this->errors[] = JText::sprintf('COM_JEDCHECKER_MANIFEST_MISSED_REQUIRED', $name, $child);
$this->errors[] = Text::sprintf('COM_JEDCHECKER_MANIFEST_MISSED_REQUIRED', $name, $child);
}
elseif ($count > 1)
{
// The node contains multiple child elements when single only is expected
$this->errors[] = JText::sprintf('COM_JEDCHECKER_MANIFEST_MULTIPLE_FOUND', $name, $child);
$this->errors[] = Text::sprintf('COM_JEDCHECKER_MANIFEST_MULTIPLE_FOUND', $name, $child);
}
break;
@ -391,12 +392,12 @@ class JedcheckerRulesXMLManifest extends JEDcheckerRule
if ($count === 0)
{
// The node doesn't contain optional child element
$this->notices[] = JText::sprintf('COM_JEDCHECKER_MANIFEST_MISSED_OPTIONAL', $name, $child);
$this->notices[] = Text::sprintf('COM_JEDCHECKER_MANIFEST_MISSED_OPTIONAL', $name, $child);
}
elseif ($count > 1)
{
// The node contains multiple child elements when single only is expected
$this->warnings[] = JText::sprintf('COM_JEDCHECKER_MANIFEST_MULTIPLE_FOUND', $name, $child);
$this->warnings[] = Text::sprintf('COM_JEDCHECKER_MANIFEST_MULTIPLE_FOUND', $name, $child);
}
break;
@ -420,14 +421,14 @@ class JedcheckerRulesXMLManifest extends JEDcheckerRule
if (!isset($DTDchildToRule[$child]))
{
// The node contains unknown child element
$this->notices[] = JText::sprintf('COM_JEDCHECKER_MANIFEST_UNKNOWN_CHILD', $name, $child);
$this->notices[] = Text::sprintf('COM_JEDCHECKER_MANIFEST_UNKNOWN_CHILD', $name, $child);
}
else
{
if ($DTDchildRules[$DTDchildToRule[$child]] === '?' && $node->$child->count() > 1)
{
// The node contains multiple child elements when single only is expected
$this->errors[] = JText::sprintf('COM_JEDCHECKER_MANIFEST_MULTIPLE_FOUND', $name, $child);
$this->errors[] = Text::sprintf('COM_JEDCHECKER_MANIFEST_MULTIPLE_FOUND', $name, $child);
}
}
}
@ -437,7 +438,7 @@ class JedcheckerRulesXMLManifest extends JEDcheckerRule
{
if ($child->count() === 0 && $child->attributes()->count() === 0 && (string) $child === '')
{
$this->notices[] = JText::sprintf('COM_JEDCHECKER_MANIFEST_EMPTY_CHILD', $child->getName());
$this->notices[] = Text::sprintf('COM_JEDCHECKER_MANIFEST_EMPTY_CHILD', $child->getName());
}
}
}
@ -481,7 +482,7 @@ class JedcheckerRulesXMLManifest extends JEDcheckerRule
if (in_array($attrName, $skipAttrs, true))
{
$this->warnings[] = JText::sprintf('COM_JEDCHECKER_MANIFEST_MENU_UNUSED_ATTRIBUTE', $attrName);
$this->warnings[] = Text::sprintf('COM_JEDCHECKER_MANIFEST_MENU_UNUSED_ATTRIBUTE', $attrName);
}
}
}

View File

@ -12,6 +12,8 @@
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Language\Text;
// Include the rule base class
require_once JPATH_COMPONENT_ADMINISTRATOR . '/models/rule.php';
@ -193,7 +195,7 @@ class JedcheckerRulesXMLUpdateServer extends JEDcheckerRule
// Check if there is an updateservers tag
if (!isset($xml->updateservers))
{
$this->report->addError($file, JText::_('COM_JEDCHECKER_ERROR_XML_UPDATE_SERVER_NOT_FOUND'));
$this->report->addError($file, Text::_('COM_JEDCHECKER_ERROR_XML_UPDATE_SERVER_NOT_FOUND'));
return false;
}
@ -201,7 +203,7 @@ class JedcheckerRulesXMLUpdateServer extends JEDcheckerRule
// Check if server tag(s) exist
if (!isset($xml->updateservers->server))
{
$this->report->addError($file, JText::_('COM_JEDCHECKER_ERROR_XML_UPDATE_SERVER_NOT_FOUND'));
$this->report->addError($file, Text::_('COM_JEDCHECKER_ERROR_XML_UPDATE_SERVER_NOT_FOUND'));
return false;
@ -212,13 +214,13 @@ class JedcheckerRulesXMLUpdateServer extends JEDcheckerRule
{
if (stripos($server, 'http') === false)
{
$this->report->addError($file, JText::_('COM_JEDCHECKER_ERROR_XML_UPDATE_SERVER_LINK_NOT_FOUND'));
$this->report->addError($file, Text::_('COM_JEDCHECKER_ERROR_XML_UPDATE_SERVER_LINK_NOT_FOUND'));
return false;
}
else
{
$this->report->addPassed($file, JText::sprintf('COM_JEDCHECKER_INFO_XML_UPDATE_SERVER_LINK', (string) $server));
$this->report->addPassed($file, Text::sprintf('COM_JEDCHECKER_INFO_XML_UPDATE_SERVER_LINK', (string) $server));
}
}

View File

@ -12,6 +12,9 @@
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Language\Text;
use Joomla\CMS\Object\CMSObject;
/**
* Class JEDcheckerReport
*
@ -20,7 +23,7 @@ defined('_JEXEC') or die('Restricted access');
*
* @since 1.0
*/
class JEDcheckerReport extends JObject
class JEDcheckerReport extends CMSObject
{
/**
* Rule's issue levels
@ -107,12 +110,12 @@ class JEDcheckerReport extends JObject
{
// Initialize language strings
$this->issueLangTitles = array(
self::LEVEL_ERROR => JText::_('COM_JEDCHECKER_LEVEL_ERROR'),
self::LEVEL_WARNING => JText::_('COM_JEDCHECKER_LEVEL_WARNING'),
self::LEVEL_COMPAT => JText::_('COM_JEDCHECKER_LEVEL_COMPATIBILITY'),
self::LEVEL_NOTICE => JText::_('COM_JEDCHECKER_LEVEL_NOTICE'),
self::LEVEL_INFO => JText::_('COM_JEDCHECKER_LEVEL_INFO'),
self::LEVEL_PASSED => JText::_('COM_JEDCHECKER_LEVEL_PASSED'),
self::LEVEL_ERROR => Text::_('COM_JEDCHECKER_LEVEL_ERROR'),
self::LEVEL_WARNING => Text::_('COM_JEDCHECKER_LEVEL_WARNING'),
self::LEVEL_COMPAT => Text::_('COM_JEDCHECKER_LEVEL_COMPATIBILITY'),
self::LEVEL_NOTICE => Text::_('COM_JEDCHECKER_LEVEL_NOTICE'),
self::LEVEL_INFO => Text::_('COM_JEDCHECKER_LEVEL_INFO'),
self::LEVEL_PASSED => Text::_('COM_JEDCHECKER_LEVEL_PASSED'),
);
$this->data = array();
@ -269,7 +272,7 @@ class JEDcheckerReport extends JObject
{
// No errors or compatibility issues found
$html[] = '<div class="alert alert-success">';
$html[] = JText::_('COM_JEDCHECKER_EVERYTHING_SEEMS_TO_BE_FINE_WITH_THAT_RULE');
$html[] = Text::_('COM_JEDCHECKER_EVERYTHING_SEEMS_TO_BE_FINE_WITH_THAT_RULE');
$html[] = '</div>';
}
else
@ -343,7 +346,7 @@ class JEDcheckerReport extends JObject
// Add line information if given
if ($item->line !== null)
{
$html[] = ' ' . JText::_('COM_JEDCHECKER_IN_LINE') . ': <strong>' . $item->line . '</strong>';
$html[] = ' ' . Text::_('COM_JEDCHECKER_IN_LINE') . ': <strong>' . $item->line . '</strong>';
}
$html[] = '<br />';

View File

@ -13,7 +13,7 @@
defined('_JEXEC') or die('Restricted access');
use Joomla\Registry\Registry;
use Joomla\CMS\Object\CMSObject;
/**
* class JEDcheckerRule
@ -22,7 +22,7 @@ use Joomla\Registry\Registry;
*
* @since 1.0
*/
class JEDcheckerRule extends JObject
class JEDcheckerRule extends CMSObject
{
/**
* The formal ID of this rule. For example: SE1.

View File

@ -11,24 +11,28 @@
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;
// Load Bootstrap
if (version_compare(JVERSION, '4.0', '>='))
{
JHtml::_('bootstrap.collapse');
JHtml::_('bootstrap.tab');
HTMLHelper::_('bootstrap.collapse');
HTMLHelper::_('bootstrap.tab');
// Tooltips are used by JAMSS reports
JHtml::_('bootstrap.tooltip');
HTMLHelper::_('bootstrap.tooltip');
}
else
{
JHtml::_('behavior.core');
JHtml::_('stylesheet', 'com_jedchecker/j4-style.css', array('version' => 'auto', 'relative' => true));
JHtml::_('script', 'com_jedchecker/bootstrap.bundle.min.js', array('version' => 'auto', 'relative' => true), array('defer' => true));
HTMLHelper::_('behavior.core');
HTMLHelper::_('stylesheet', 'com_jedchecker/j4-style.css', array('version' => 'auto', 'relative' => true));
HTMLHelper::_('script', 'com_jedchecker/bootstrap.bundle.min.js', array('version' => 'auto', 'relative' => true), array('defer' => true));
}
JHtml::_('stylesheet', 'com_jedchecker/style.css', array('version' => 'auto', 'relative' => true));
JHtml::_('script', 'com_jedchecker/script.js', array('version' => 'auto', 'relative' => true), array('defer' => true));
HTMLHelper::_('stylesheet', 'com_jedchecker/style.css', array('version' => 'auto', 'relative' => true));
HTMLHelper::_('script', 'com_jedchecker/script.js', array('version' => 'auto', 'relative' => true), array('defer' => true));
?>
<script id="jed-rules-json" type="application/json"><?php echo json_encode($this->jsOptions); ?></script>
<div id="jedchecker">
@ -36,36 +40,36 @@ JHtml::_('script', 'com_jedchecker/script.js', array('version' => 'auto', 'relat
<div class="col-12 col-md-8">
<div class="card bg-light">
<div class="card-header" data-bs-toggle="collapse" data-bs-target="#jedchecker-welcome" role="button">
<?php echo JText::_('COM_JEDCHECKER'); ?>
<?php echo Text::_('COM_JEDCHECKER'); ?>
</div>
<div class="card-body show" id="jedchecker-welcome">
<p class="card-text">
<?php echo JText::sprintf('COM_JEDCHECKER_CONGRATS', 'https://extensions.joomla.org/community/terms-of-service/'); ?>
<?php echo Text::sprintf('COM_JEDCHECKER_CONGRATS', 'https://extensions.joomla.org/community/terms-of-service/'); ?>
</p>
<p class="card-text">
<?php echo JText::sprintf('COM_JEDCHECKER_CODE_STANDARDS', 'https://developer.joomla.org/coding-standards.html'); ?>
<?php echo Text::sprintf('COM_JEDCHECKER_CODE_STANDARDS', 'https://developer.joomla.org/coding-standards.html'); ?>
</p>
<p class="card-text">
<?php echo JText::_('COM_JEDCHECKER_HOW_TO_USE'); ?>
<?php echo Text::_('COM_JEDCHECKER_HOW_TO_USE'); ?>
</p>
<ol class="card-text">
<li><?php echo JText::_('COM_JEDCHECKER_STEP1'); ?></li>
<li><?php echo JText::_('COM_JEDCHECKER_STEP2'); ?></li>
<li><?php echo Text::_('COM_JEDCHECKER_STEP1'); ?></li>
<li><?php echo Text::_('COM_JEDCHECKER_STEP2'); ?></li>
</ol>
<form action="<?php echo JRoute::_('index.php?option=com_jedchecker&view=uploads'); ?>"
<form action="<?php echo Route::_('index.php?option=com_jedchecker&view=uploads'); ?>"
method="post" class="needs-validation" name="adminForm" id="adminForm" enctype="multipart/form-data">
<div class="input-group">
<input type="file" class="form-control" name="extension" id="extension" required
accept=".bz2,.bzip2,.gz,.gzip,.tar,.tbz2,.tgz,.zip"
aria-describedby="extension-upload" aria-label="<?php echo JText::_('COM_JEDCHECKER_UPLOAD_FILE'); ?>">
aria-describedby="extension-upload" aria-label="<?php echo Text::_('COM_JEDCHECKER_UPLOAD_FILE'); ?>">
<button class="btn btn-success" type="button" id="extension-upload">
<span class="icon-upload "></span> <?php echo JText::_('JSUBMIT'); ?>
<span class="icon-upload "></span> <?php echo Text::_('JSUBMIT'); ?>
</button>
<div class="invalid-feedback"><?php echo JText::_('COM_JEDCHECKER_EMPTY_UPLOAD_FIELD'); ?></div>
<div class="invalid-feedback"><?php echo Text::_('COM_JEDCHECKER_EMPTY_UPLOAD_FIELD'); ?></div>
</div>
<div id="jed_uploading_spinner" class="text-center text-info mt-3 hidden"><span class="spinner spinner-border"></span></div>
<input type="hidden" name="task" value=""/>
<?php echo JHtml::_('form.token'); ?>
<?php echo HTMLHelper::_('form.token'); ?>
</form>
</div>
</div>
@ -74,13 +78,13 @@ JHtml::_('script', 'com_jedchecker/script.js', array('version' => 'auto', 'relat
<div class="col-6 col-md-4">
<div class="card bg-info">
<div class="card-header text-white bg-info" data-bs-toggle="collapse" data-bs-target="#jedchecker-contributors" role="button">
<?php echo JText::_('COM_JEDCHECKER_WALL_OF_HONOR'); ?>
<?php echo Text::_('COM_JEDCHECKER_WALL_OF_HONOR'); ?>
</div>
<div class="card-body show" id="jedchecker-contributors">
<h5 class="card-title text-white"><?php echo JText::_('COM_JEDCHECKER_PEOPLE_THAT_HAVE_HELPED_WITH_THE_DEVELOPMENT'); ?></h5>
<h5 class="card-title text-white"><?php echo Text::_('COM_JEDCHECKER_PEOPLE_THAT_HAVE_HELPED_WITH_THE_DEVELOPMENT'); ?></h5>
<p class="card-text">
<a href="https://github.com/joomla-extensions/jedchecker/graphs/contributors" target="_blank" class="btn btn-light">
<?php echo JText::_('COM_JEDCHECKER_CONTRIBUTORS'); ?></a>
<?php echo Text::_('COM_JEDCHECKER_CONTRIBUTORS'); ?></a>
</p>
</div>
</div>
@ -88,7 +92,7 @@ JHtml::_('script', 'com_jedchecker/script.js', array('version' => 'auto', 'relat
<div class="col-12 col-md-3 jedchecker-results hidden">
<div class="card bg-light">
<div class="card-header"><?php echo JText::_('COM_JEDCHECKER_RESULTS'); ?></div>
<div class="card-header"><?php echo Text::_('COM_JEDCHECKER_RESULTS'); ?></div>
<div role="tablist" class="list-group list-group-flush">
<?php
foreach ($this->jsOptions['rules'] as $i => $rulename)
@ -98,7 +102,7 @@ JHtml::_('script', 'com_jedchecker/script.js', array('version' => 'auto', 'relat
?>
<a role="tab" id="jed-<?php echo $rulename; ?>" data-bs-toggle="tab" href="#jedtab-<?php echo $rulename; ?>"
class="list-group-item list-group-item-action d-flex justify-content-between<?php echo $i === 0 ? ' active' : ''; ?>">
<?php echo JText::_($rule->get('title')); ?>
<?php echo Text::_($rule->get('title')); ?>
<span class="text-nowrap ps-1">
<span class="badge bg-danger rounded-pill border-error"></span>
<span class="badge bg-warning rounded-pill"></span>
@ -115,8 +119,8 @@ JHtml::_('script', 'com_jedchecker/script.js', array('version' => 'auto', 'relat
<div class="card-text" id="police-check-result"></div>
<div class="card-footer">
<small class="text-muted">
<?php echo JText::sprintf('COM_JEDCHECKER_LEAVE_A_REVIEW_JED', 'https://extensions.joomla.org/extensions/tools/development-tools/21336'); ?>
<?php echo JText::sprintf('COM_JEDCHECKER_DEVELOPED_BY', 'https://github.com/joomla-extensions/jedchecker'); ?> :)
<?php echo Text::sprintf('COM_JEDCHECKER_LEAVE_A_REVIEW_JED', 'https://extensions.joomla.org/extensions/tools/development-tools/21336'); ?>
<?php echo Text::sprintf('COM_JEDCHECKER_DEVELOPED_BY', 'https://github.com/joomla-extensions/jedchecker'); ?> :)
</small>
</div>
</div>
@ -133,11 +137,11 @@ JHtml::_('script', 'com_jedchecker/script.js', array('version' => 'auto', 'relat
<div role="tabpanel" class="tab-pane fade<?php echo $i === 0 ? ' show active' : ''; ?>" id="jedtab-<?php echo $rulename; ?>">
<div class="card bg-light">
<div class="card-header" id="heading<?php echo $rule->get('id'); ?>">
<?php echo JText::_($rule->get('title')); ?>
<?php echo Text::_($rule->get('title')); ?>
</div>
<div class="card-body">
<p class="card-text">
<?php echo JText::_($rule->get('description')); ?>
<?php echo Text::_($rule->get('description')); ?>
</p>
<div class="card-text police-check-result" id="police-check-result-<?php echo $rulename; ?>">
<div class="text-center text-info"><span class="spinner-border"></span></div>

View File

@ -11,14 +11,20 @@
defined('_JEXEC') or die('Restricted access');
jimport('joomla.application.component.viewlegacy');
use Joomla\CMS\Factory;
use Joomla\CMS\Filesystem\File;
use Joomla\CMS\Filesystem\Folder;
use Joomla\CMS\Language\Text;
use Joomla\CMS\MVC\View\HtmlView;
use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\CMS\Uri\Uri;
/**
* Class JedcheckerViewUploads
*
* @since 1.0
*/
class JedcheckerViewUploads extends JViewLegacy
class JedcheckerViewUploads extends HtmlView
{
/** @var string */
protected $path;
@ -35,13 +41,13 @@ class JedcheckerViewUploads extends JViewLegacy
*/
public function display($tpl = null)
{
$this->path = JFactory::getConfig()->get('tmp_path') . '/jed_checker';
$this->path = Factory::getConfig()->get('tmp_path') . '/jed_checker';
// Load translation for "JED Checker" title from sys.ini file
JFactory::getLanguage()->load('com_jedchecker.sys', JPATH_ADMINISTRATOR);
Factory::getLanguage()->load('com_jedchecker.sys', JPATH_ADMINISTRATOR);
$this->setToolbar();
$this->jsOptions['url'] = JUri::base();
$this->jsOptions['url'] = Uri::base();
$this->jsOptions['rules'] = $this->getRules();
parent::display($tpl);
}
@ -54,7 +60,7 @@ class JedcheckerViewUploads extends JViewLegacy
public function getRules()
{
$rules = array();
$files = JFolder::files(JPATH_COMPONENT_ADMINISTRATOR . '/libraries/rules', '\.php$', false, false);
$files = Folder::files(JPATH_COMPONENT_ADMINISTRATOR . '/libraries/rules', '\.php$', false, false);
JLoader::discover('jedcheckerRules', JPATH_COMPONENT_ADMINISTRATOR . '/libraries/rules/');
@ -84,19 +90,19 @@ class JedcheckerViewUploads extends JViewLegacy
{
if ($this->filesExist('unzipped'))
{
JToolbarHelper::custom('check', 'search', 'search', JText::_('COM_JEDCHECKER_TOOLBAR_CHECK'), false);
ToolbarHelper::custom('check', 'search', 'search', Text::_('COM_JEDCHECKER_TOOLBAR_CHECK'), false);
}
JToolbarHelper::title(JText::_('COM_JEDCHECKER'));
ToolbarHelper::title(Text::_('COM_JEDCHECKER'));
if (file_exists($this->path))
{
JToolbarHelper::custom('uploads.clear', 'delete', 'delete', JText::_('COM_JEDCHECKER_TOOLBAR_CLEAR'), false);
ToolbarHelper::custom('uploads.clear', 'delete', 'delete', Text::_('COM_JEDCHECKER_TOOLBAR_CLEAR'), false);
}
if (JFactory::getUser()->authorise('core.admin', 'com_jedchecker'))
if (Factory::getUser()->authorise('core.admin', 'com_jedchecker'))
{
JToolbarHelper::preferences('com_jedchecker');
ToolbarHelper::preferences('com_jedchecker');
}
}
@ -109,20 +115,20 @@ class JedcheckerViewUploads extends JViewLegacy
*/
private function filesExist($type)
{
$path = JFactory::getConfig()->get('tmp_path') . '/jed_checker/' . $type;
$path = Factory::getConfig()->get('tmp_path') . '/jed_checker/' . $type;
if (JFolder::exists($path))
if (Folder::exists($path))
{
if (JFolder::folders($path) || JFolder::files($path))
if (Folder::folders($path) || Folder::files($path))
{
return true;
}
}
else
{
$local = JFactory::getConfig()->get('tmp_path') . '/jed_checker/local.txt';
$local = Factory::getConfig()->get('tmp_path') . '/jed_checker/local.txt';
if ($type === 'unzipped' && JFile::exists($local))
if ($type === 'unzipped' && File::exists($local))
{
return true;
}

View File

@ -11,6 +11,12 @@
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Factory;
use Joomla\CMS\Filesystem\File;
use Joomla\CMS\Installer\Adapter\ComponentAdapter;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Log\Log;
/**
* Class Com_JedcheckerInstallerScript
*
@ -20,14 +26,14 @@ class Com_JedcheckerInstallerScript
{
protected $extension = 'com_jedchecker';
protected $min_php = '5.6.0';
protected $min_joomla = '3.7.0';
protected $min_joomla = '3.8.0';
protected $parent;
/**
* Function executed before the the installation
*
* @param string $type - the installation type
* @param JInstallerComponent $parent - the parent class
* @param string $type - the installation type
* @param ComponentAdapter $parent - the parent class
*/
public function preflight($type, $parent)
{
@ -37,8 +43,8 @@ class Com_JedcheckerInstallerScript
{
$this->loadLanguage();
$msg = JText::sprintf('COM_JEDCHECKER_PHP_VERSION_INCOMPATIBLE', PHP_VERSION, $this->min_php);
JLog::add($msg, JLog::WARNING, 'jerror');
$msg = Text::sprintf('COM_JEDCHECKER_PHP_VERSION_INCOMPATIBLE', PHP_VERSION, $this->min_php);
Log::add($msg, Log::WARNING, 'jerror');
return false;
}
@ -47,8 +53,8 @@ class Com_JedcheckerInstallerScript
{
$this->loadLanguage();
$msg = JText::sprintf('COM_JEDCHECKER_JOOMLA_VERSION_INCOMPATIBLE', JVERSION, $this->min_joomla);
JLog::add($msg, JLog::WARNING, 'jerror');
$msg = Text::sprintf('COM_JEDCHECKER_JOOMLA_VERSION_INCOMPATIBLE', JVERSION, $this->min_joomla);
Log::add($msg, Log::WARNING, 'jerror');
return false;
}
@ -57,7 +63,7 @@ class Com_JedcheckerInstallerScript
/**
* Update cleans out any old rules.
*
* @param JInstallerComponent $parent Is the class calling this method.
* @param ComponentAdapter $parent Is the class calling this method.
*
* @return bool|null If this returns false, Joomla will abort the update and undo everything already done.
*/
@ -76,13 +82,13 @@ class Com_JedcheckerInstallerScript
// Remove the rule's php file
if (file_exists($rulePhpFile))
{
if (JFile::delete($rulePhpFile))
if (File::delete($rulePhpFile))
{
$msg = JText::sprintf('COM_JEDCHECKER_OLD_RULE_X_PHP_FILE_REMOVED', $rule);
$msg = Text::sprintf('COM_JEDCHECKER_OLD_RULE_X_PHP_FILE_REMOVED', $rule);
}
else
{
$msg = JText::sprintf('COM_JEDCHECKER_OLD_RULE_X_PHP_FILE_NOT_REMOVED', $rule);
$msg = Text::sprintf('COM_JEDCHECKER_OLD_RULE_X_PHP_FILE_NOT_REMOVED', $rule);
}
echo "<p>$msg</p>";
@ -91,13 +97,13 @@ class Com_JedcheckerInstallerScript
// Remove the rule's ini file
if (file_exists($ruleIniFile))
{
if (JFile::delete($ruleIniFile))
if (File::delete($ruleIniFile))
{
$msg = JText::sprintf('COM_JEDCHECKER_OLD_RULE_X_INI_FILE_REMOVED', $rule);
$msg = Text::sprintf('COM_JEDCHECKER_OLD_RULE_X_INI_FILE_REMOVED', $rule);
}
else
{
$msg = JText::sprintf('COM_JEDCHECKER_OLD_RULE_X_INI_FILE_NOT_REMOVED', $rule);
$msg = Text::sprintf('COM_JEDCHECKER_OLD_RULE_X_INI_FILE_NOT_REMOVED', $rule);
}
echo "<p>$msg</p>";
@ -113,7 +119,7 @@ class Com_JedcheckerInstallerScript
public function loadLanguage()
{
$extension = $this->extension;
$jlang = JFactory::getLanguage();
$jlang = Factory::getLanguage();
$path = $this->parent->getParent()->getPath('source') . '/administrator/components/' . $extension;
$jlang->load($extension, $path, 'en-GB', true);
$jlang->load($extension, $path, $jlang->getDefault(), true);