mirror of
https://github.com/joomla-extensions/jedchecker.git
synced 2024-12-28 12:30:44 +00:00
Code cleaned
This commit is contained in:
parent
5c0bfb0644
commit
56863b7d03
@ -48,4 +48,15 @@ COM_JEDCHECKER_WARNING="Warning"
|
||||
COM_JEDCHECKER_OLD_RULE_X_INI_FILE_NOT_REMOVED="'ini' file for '%s' rule could not be removed, manual removal recommended."
|
||||
COM_JEDCHECKER_OLD_RULE_X_PHP_FILE_NOT_REMOVED="PHP file for '%s' rule could not be removed, manual removal recommended."
|
||||
COM_JEDCHECKER_OLD_RULE_X_PHP_FILE_REMOVED="Removed PHP file for '%s' rule."
|
||||
COM_JEDCHECKER_OLD_RULE_X_INI_FILE_REMOVED="Removed 'ini' file for '%s' rule."
|
||||
COM_JEDCHECKER_OLD_RULE_X_INI_FILE_REMOVED="Removed 'ini' file for '%s' rule."
|
||||
COM_JEDCHECKER_RULE_FRAMEWORK="Joomla framework deprecated and unsafe"
|
||||
COM_JEDCHECKER_RULE_FRAMEWORK_DESC="Warns about <ul><li>superglobals<li>commonly used but deprecated functions<li>highly unsafe functions</ul>Find more info <a href='http://docs.joomla.org/Potential_backward_compatibility_issues_in_Joomla_3.0_and_Joomla_Platform_12.1' target='_blank'>on Joomla backward compatibility for Joomla 3</a>"
|
||||
COM_JEDCHECKER_ERROR_FRAMEWORK_SUPERGLOBALS="You shouldn't use superglobals"
|
||||
COM_JEDCHECKER_ERROR_FRAMEWORK_DIRECTDB="You are using direct db access"
|
||||
COM_JEDCHECKER_RULE_FRAMEWORK_NOTINJ3="Functions removed from Joomla 3"
|
||||
COM_JEDCHECKER_ERROR_FRAMEWORK_NOTINJ3="n/a in Joomla 3"
|
||||
COM_JEDCHECKER_ERROR_FRAMEWORK_DS="DS n/a in Joomla 3"
|
||||
COM_JEDCHECKER_ERROR_FRAMEWORK_JERR="JError is deprecated, you should use application->enqueueMessages()"
|
||||
COM_JEDCHECKER_ERROR_FRAMEWORK_ERRORLOG="error_log and var_dump"
|
||||
COM_JEDCHECKER_ERROR_FRAMEWORK_DEPRECATED="JRequest is deprecated and behaves funny with cache"
|
||||
COM_JEDCHECKER_ERROR_FRAMEWORK_TODO="Are we procrastinating?"
|
||||
|
37
source/administrator/components/com_jedchecker/libraries/rules/framework.ini
Executable file
37
source/administrator/components/com_jedchecker/libraries/rules/framework.ini
Executable file
@ -0,0 +1,37 @@
|
||||
; This is the configuration file of the noframework rule.
|
||||
;
|
||||
; @author Riccardo Zorn
|
||||
; @date 2014-02-22
|
||||
; @copyright Copyright (C) 2008 - 2014 fasterjoomla.com . All rights reserved.
|
||||
; @license GNU General Public License version 2 or later; see LICENSE
|
||||
; @site fasterjoomla.com
|
||||
|
||||
; A different format for this rule's params. In order to provide accurate messages, we have four main keys
|
||||
; - error_groups
|
||||
; - warning_groups
|
||||
; - notice_groups
|
||||
; - compatibility_groups
|
||||
; each MUST contain the names of the sub-keys that should trigger a warning or a notice.
|
||||
; In case an offending string is found in the file, a warning/notice will be raised with an error message named
|
||||
; COM_JEDCHECKER_ERROR_NOFRAMEWORK_ followed by the offending key in uppercase e.g. COM_JEDCHECKER_ERROR_NOFRAMEWORK_SUPERGLOBALS
|
||||
;
|
||||
; ref: docs.joomla.org/Potential_backward_compatibility_issues_in_Joomla_3.0_and_Joomla_Platform_12.1
|
||||
|
||||
|
||||
|
||||
error_groups="directdb"
|
||||
directdb="mysql_connect,mysql_query,mysql_close,mysql_escape_string"
|
||||
|
||||
warning_groups="superglobals"
|
||||
superglobals="$_GET,$_POST,$_SESSION,$_COOKIE,$_FILES"
|
||||
|
||||
notice_groups="errorlog,todo"
|
||||
errorlog="error_log,var_export,var_dump"
|
||||
todo="@TODO"
|
||||
|
||||
compatibility_groups="notinj3,deprecated,jerr,DS,strict"
|
||||
notinj3="JUtility::isWinOS,JFTP,JLDAP,JWebClient,JloadResultArray,nameQuote,JRequest::checkToken,JParameter,JElement,JFormFieldEditors,JHtmlImage,JRules,JSimpleXML,JPane,$db->getEscaped,JDate::toMysql,JUtility::sendMail,JUtility::sendAdminMail,JUtility::getToken,JFactory::getDate,JFactory::getXMLParser,JDate::toMysql"
|
||||
deprecated="JHtmlBehavior::mootools,JRequest,::assignRef"
|
||||
jerr="JError"
|
||||
DS=" DS ,.DS., DS.,.DS "
|
||||
strict="&JFactory,&JModuleHelper"
|
168
source/administrator/components/com_jedchecker/libraries/rules/framework.php
Executable file
168
source/administrator/components/com_jedchecker/libraries/rules/framework.php
Executable file
@ -0,0 +1,168 @@
|
||||
<?php
|
||||
/**
|
||||
* @author Riccardo Zorn <support@fasterjoomla.com>
|
||||
* @date 23.02.2014
|
||||
* @copyright Copyright (C) 2008 - 2014 fasterjoomla.com . All rights reserved.
|
||||
* @license GNU General Public License version 2 or later; see LICENSE
|
||||
*/
|
||||
|
||||
defined('_JEXEC') or die('Restricted access');
|
||||
|
||||
// Include the rule base class
|
||||
require_once JPATH_COMPONENT_ADMINISTRATOR . '/models/rule.php';
|
||||
|
||||
/**
|
||||
* JedcheckerRulesFramework
|
||||
*
|
||||
* @since 2014-02-23
|
||||
* Attempts to identify deprecated code, unsafe code, leftover stuff
|
||||
*/
|
||||
class JedcheckerRulesFramework extends JEDcheckerRule
|
||||
{
|
||||
/**
|
||||
* The formal ID of this rule. For example: SE1.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $id = 'Framework';
|
||||
|
||||
/**
|
||||
* The title or caption of this rule.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $title = 'COM_JEDCHECKER_RULE_FRAMEWORK';
|
||||
|
||||
/**
|
||||
* The description of this rule.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'COM_JEDCHECKER_RULE_FRAMEWORK_DESC';
|
||||
|
||||
protected $tests = false;
|
||||
|
||||
/**
|
||||
* Initiates the file search and check
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function check()
|
||||
{
|
||||
$files = JFolder::files($this->basedir, '.php$', true, true);
|
||||
|
||||
foreach ($files as $file)
|
||||
{
|
||||
// Process the file
|
||||
if ($this->find($file))
|
||||
{
|
||||
// Error messages are set by find() based on the errors found.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* reads a file and searches for any function defined in the params
|
||||
*
|
||||
* @param unknown_type $file The file object
|
||||
*
|
||||
* @return boolean True if the statement was found, otherwise False.
|
||||
*/
|
||||
protected function find($file)
|
||||
{
|
||||
$content = (array) file($file);
|
||||
$result = false;
|
||||
|
||||
foreach ($this->getTests() as $testObject)
|
||||
{
|
||||
if ($this->runTest($file, $content, $testObject))
|
||||
{
|
||||
$result = true;
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* runs tests and reports to the appropriate function if strings match.
|
||||
*
|
||||
* @param unknown_type $file The file object
|
||||
* @param unknown_type $content The file content
|
||||
* @param unknown_type $testObject The test object generated by getTests()
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
private function runTest($file, $content, $testObject)
|
||||
{
|
||||
$error_count = 0;
|
||||
|
||||
foreach ($content as $line_number => $line)
|
||||
{
|
||||
foreach ($testObject->tests AS $singleTest)
|
||||
{
|
||||
if (stripos($line, $singleTest) !== false)
|
||||
{
|
||||
$line = str_ireplace($singleTest, '<b>' . $singleTest . '</b>', $line);
|
||||
$error_message = JText::_('COM_JEDCHECKER_ERROR_FRAMEWORK_' . strtoupper($testObject->group)) . ':<pre>' . $line . '</pre>';
|
||||
|
||||
switch ($testObject->kind)
|
||||
{
|
||||
case 'error':$this->report->addError($file, $error_message, $line_number);
|
||||
break;
|
||||
case 'warning':$this->report->addWarning($file, $error_message, $line_number);
|
||||
break;
|
||||
case 'compatibility':$this->report->addCompat($file, $error_message, $line_number);
|
||||
break;
|
||||
default:
|
||||
// Case 'notice':
|
||||
$this->report->addInfo($file, $error_message, $line_number);
|
||||
break;
|
||||
}
|
||||
}
|
||||
// If you scored 10 errors on a single file, that's enough for now.
|
||||
if ($error_count > 10)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $error_count > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Lazyloads the tests from the framework.ini params.
|
||||
* The whole structure depends on the file. The vars
|
||||
* error_groups, warning_groups, notice_groups, compatibility_groups
|
||||
* serve as lists of other rules, which are grouped and show a different error message per rule.
|
||||
* Please note: if you want to add more rules, simply do so in the .ini file
|
||||
* BUT MAKE SURE that you add the relevant key to the translation files:
|
||||
* COM_JEDCHECKER_ERROR_NOFRAMEWOR_SOMEKEY
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
private function getTests()
|
||||
{
|
||||
if (!$this->tests)
|
||||
{
|
||||
// Build the test array. Please read the comments in the framework.ini file
|
||||
$this->tests = array();
|
||||
$testNames = array('error','warning','notice','compatibility');
|
||||
|
||||
foreach ($testNames as $test)
|
||||
{
|
||||
foreach ( explode(",", $this->params->get($test . '_groups')) as $group)
|
||||
{
|
||||
$newTest = new stdClass;
|
||||
$newTest->group = $group;
|
||||
$newTest->kind = $test;
|
||||
$newTest->tests = explode(",", $this->params->get($group));
|
||||
$this->tests[] = $newTest;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $this->tests;
|
||||
}
|
||||
}
|
@ -211,7 +211,7 @@ class JEDcheckerReport extends JObject
|
||||
// Go through the compat list
|
||||
if ($compat_count > 0)
|
||||
{
|
||||
$html[] = '<strong>' . $error_count . ' ' . JText::_('COM_JEDCHECKER_COMPAT_ISSUES') . '</strong>';
|
||||
$html[] = '<strong>' . $compat_count . ' ' . JText::_('COM_JEDCHECKER_COMPAT_ISSUES') . '</strong>';
|
||||
$html[] = '<ul class="jedchecker-rule-compat">';
|
||||
|
||||
foreach ($this->data['compat'] AS $i => $item)
|
||||
@ -219,7 +219,7 @@ class JEDcheckerReport extends JObject
|
||||
$num = $i + 1;
|
||||
|
||||
// Add the error count number
|
||||
$html[] = '<li><p><strong>#' . str_pad($num, 3, '0', STR_PAD_LEFT) . '</strong> ';
|
||||
$html[] = '<li><strong>#' . str_pad($num, 3, '0', STR_PAD_LEFT) . '</strong> ';
|
||||
$html[] = $item->location;
|
||||
|
||||
// Add line information if given
|
||||
@ -228,7 +228,7 @@ class JEDcheckerReport extends JObject
|
||||
$html[] = ' ' . JText::_('COM_JEDCHECKER_IN_LINE') . ': <strong>' . $item->line . '</strong>';
|
||||
}
|
||||
|
||||
$html[] = '</p>';
|
||||
$html[] = '<br />';
|
||||
|
||||
// Add text if given
|
||||
if (!empty($item->text))
|
||||
@ -253,7 +253,7 @@ class JEDcheckerReport extends JObject
|
||||
$num = $i + 1;
|
||||
|
||||
// Add the error count number
|
||||
$html[] = '<li><p><strong>#' . str_pad($num, 3, '0', STR_PAD_LEFT) . '</strong> ';
|
||||
$html[] = '<li><strong>#' . str_pad($num, 3, '0', STR_PAD_LEFT) . '</strong> ';
|
||||
$html[] = $item->location;
|
||||
|
||||
// Add line information if given
|
||||
@ -262,7 +262,7 @@ class JEDcheckerReport extends JObject
|
||||
$html[] = ' ' . JText::_('COM_JEDCHECKER_IN_LINE') . ': <strong>' . $item->line . '</strong>';
|
||||
}
|
||||
|
||||
$html[] = '</p>';
|
||||
$html[] = '<br />';
|
||||
|
||||
// Add text if given
|
||||
if (!empty($item->text))
|
||||
@ -287,7 +287,7 @@ class JEDcheckerReport extends JObject
|
||||
$num = $i + 1;
|
||||
|
||||
// Add the warning count number
|
||||
$html[] = '<li><p><strong>#' . str_pad($num, 3, '0', STR_PAD_LEFT) . '</strong> ';
|
||||
$html[] = '<li><strong>#' . str_pad($num, 3, '0', STR_PAD_LEFT) . '</strong> ';
|
||||
$html[] = $item->location;
|
||||
|
||||
// Add line information if given
|
||||
@ -296,7 +296,7 @@ class JEDcheckerReport extends JObject
|
||||
$html[] = ' ' . JText::_('COM_JEDCHECKER_IN_LINE') . ': <strong>' . $item->line . '</strong>';
|
||||
}
|
||||
|
||||
$html[] = '</p>';
|
||||
$html[] = '<br />';
|
||||
|
||||
// Add text if given
|
||||
if (!empty($item->text))
|
||||
|
@ -69,6 +69,7 @@ JHtml::script('media/com_jedchecker/js/police.js');
|
||||
<li>Peter van Westen (<a href="http://www.nonumber.nl" target="_blank">NoNumber</a>)</li>
|
||||
<li>Alain Rivest (<a href="http://aldra.ca" target="_blank">Aldra.ca</a>)</li>
|
||||
<li>OpenTranslators (<a href="http://opentranslators.org" target="_blank">opentranslators.org</a>)</li>
|
||||
<li>Riccardo Zorn (<a href="http://fasterjoomla.com" target="_blank">fasterjoomla.com</a>)</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,68 +1,97 @@
|
||||
.icon-32-unzip {
|
||||
background-image: url(../icons/unzip.png);
|
||||
}
|
||||
.icon-32-police-check {
|
||||
background-image: url(../icons/inspect.png);
|
||||
}
|
||||
|
||||
#adminForm {
|
||||
background: #FFF;
|
||||
}
|
||||
#police-check-result {
|
||||
background: #F6F6F6;
|
||||
border: 1px solid #CCC;
|
||||
}
|
||||
|
||||
#police-check-result div:nth-child(odd){
|
||||
border-bottom: 1px solid #CCCCCC;
|
||||
}
|
||||
|
||||
#police-check-result div:nth-child(even){
|
||||
background: #EBF1F2;
|
||||
}
|
||||
|
||||
#police-check-result div {
|
||||
padding: 5px 10px 5px;
|
||||
}
|
||||
|
||||
.help {
|
||||
padding: 5px;
|
||||
border: 1px solid #CCCCCC;
|
||||
background: #FFF;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.copyright {
|
||||
line-height: 160%;
|
||||
margin: 10px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.rule {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.success {
|
||||
color: green;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.jedchecker-info-message {
|
||||
background-color: #D9EDF7;
|
||||
border: 1px solid #BCE8F1;
|
||||
color: #3A87AD;
|
||||
margin: 5px;
|
||||
padding: 5px;
|
||||
list-style:none;
|
||||
}
|
||||
|
||||
.jedchecker-warning-message {
|
||||
background-color: #FCF8E3;
|
||||
border: 1px solid #FBEED5;
|
||||
border-radius: 4px;
|
||||
color: #C09853;
|
||||
margin: 5px;
|
||||
padding: 5px;
|
||||
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
|
||||
list-style:none;
|
||||
}
|
||||
.icon-32-unzip {
|
||||
background-image: url(../icons/unzip.png);
|
||||
}
|
||||
.icon-32-police-check {
|
||||
background-image: url(../icons/inspect.png);
|
||||
}
|
||||
|
||||
#adminForm {
|
||||
background: #FFF;
|
||||
}
|
||||
#police-check-result {
|
||||
background: #F6F6F6;
|
||||
border: 1px solid #CCC;
|
||||
}
|
||||
|
||||
#police-check-result div
|
||||
{
|
||||
border-bottom: 1px solid #CCCCCC;
|
||||
}
|
||||
|
||||
#police-check-result div:nth-child(even){
|
||||
background: #EBF1F2;
|
||||
}
|
||||
|
||||
#police-check-result div {
|
||||
padding: 5px 10px 5px;
|
||||
}
|
||||
|
||||
.help {
|
||||
padding: 5px;
|
||||
border: 1px solid #CCCCCC;
|
||||
background: #FFF;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.copyright {
|
||||
line-height: 160%;
|
||||
margin: 10px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.rule {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.success {
|
||||
color: green;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.jedchecker-info-message,
|
||||
.jedchecker-warning-message,
|
||||
.jedchecker-rule-compat,
|
||||
.jedchecker-rule-errors {
|
||||
background: #ebf1f6;
|
||||
background: linear-gradient(120deg, #EBF1F6 0%,#ABD3EE 50%,#89C3EB 51%,#D5EBFB 100%);
|
||||
border: 1px solid #BCE8F1;
|
||||
color: #1A678D;
|
||||
margin: 5px;
|
||||
padding: 5px;
|
||||
list-style:none;
|
||||
}
|
||||
.jedchecker-rule-errors {
|
||||
background: #FFFFFF;
|
||||
background: linear-gradient(to right, #FFFFFF 0%,#FFFFFF 94%,#C72200 99%);
|
||||
color:#BC0000;
|
||||
}
|
||||
.jedchecker-warning-message {
|
||||
background: #FFB76B;
|
||||
background: linear-gradient(120deg, #FFC77B 0%, #FFC75D 44%, #FF8930 55%, #FFBC40 68%, #FF9F24 100%);
|
||||
color:black;
|
||||
}
|
||||
.jedchecker-rule-compat {
|
||||
background: #FCECFC;
|
||||
background: linear-gradient(120deg, #FCECFC 0%, #FFB6F1 50%, #FFA9F7 54%, #FFDCFF 100%);
|
||||
}
|
||||
|
||||
small {
|
||||
font-size: 110%;
|
||||
padding: 0 0 0 30px;
|
||||
white-space: nowrap;
|
||||
|
||||
}
|
||||
#police-check-result li {
|
||||
margin-bottom:0.7em;
|
||||
overflow:hidden;
|
||||
}
|
||||
#police-check-result ul li pre {
|
||||
display:inline-block;
|
||||
padding-left:2em;
|
||||
font-size: 110%;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
vertical-align: middle;
|
||||
white-space: nowrap;
|
||||
margin:0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user