mirror of
https://github.com/10h30/genesis-simple-sidebars.git
synced 2026-07-20 06:53:26 +09:00
Introducing coding standards validation.
This commit is contained in:
committed by
Nathan Rice
parent
6e40c921ab
commit
fd504d41ac
+108
@@ -0,0 +1,108 @@
|
||||
<?php
|
||||
/**
|
||||
* WordPress Coding Standard.
|
||||
*
|
||||
* @package WPCS\WordPressCodingStandards
|
||||
* @link https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards
|
||||
* @license https://opensource.org/licenses/MIT MIT
|
||||
*/
|
||||
|
||||
namespace WordPress\Sniffs\WP;
|
||||
|
||||
use WordPress\AbstractClassRestrictionsSniff;
|
||||
|
||||
/**
|
||||
* Restricts the use of deprecated WordPress classes and suggests alternatives.
|
||||
*
|
||||
* This sniff will throw an error when usage of a deprecated class is detected
|
||||
* if the class was deprecated before the minimum supported WP version;
|
||||
* a warning otherwise.
|
||||
* By default, it is set to presume that a project will support the current
|
||||
* WP version and up to three releases before.
|
||||
*
|
||||
* @package WPCS\WordPressCodingStandards
|
||||
*
|
||||
* @since 0.12.0
|
||||
* @since 0.13.0 Class name changed: this class is now namespaced.
|
||||
* @since 0.14.0 Now has the ability to handle minimum supported WP version
|
||||
* being provided via the command-line or as as <config> value
|
||||
* in a custom ruleset.
|
||||
*
|
||||
* @uses \WordPress\Sniff::$minimum_supported_version
|
||||
*/
|
||||
class DeprecatedClassesSniff extends AbstractClassRestrictionsSniff {
|
||||
|
||||
/**
|
||||
* List of deprecated classes with alternative when available.
|
||||
*
|
||||
* To be updated after every major release.
|
||||
*
|
||||
* Version numbers should be fully qualified.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private $deprecated_classes = array(
|
||||
|
||||
// WP 3.1.0.
|
||||
'WP_User_Search' => array(
|
||||
'alt' => 'WP_User_Query',
|
||||
'version' => '3.1.0',
|
||||
),
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
* Groups of classes to restrict.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getGroups() {
|
||||
// Make sure all array keys are lowercase.
|
||||
$keys = array_keys( $this->deprecated_classes );
|
||||
$keys = array_map( 'strtolower', $keys );
|
||||
$this->deprecated_classes = array_combine( $keys, $this->deprecated_classes );
|
||||
|
||||
return array(
|
||||
'deprecated_classes' => array(
|
||||
'classes' => $keys,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Process a matched token.
|
||||
*
|
||||
* @param int $stackPtr The position of the current token in the stack.
|
||||
* @param array $group_name The name of the group which was matched. Will
|
||||
* always be 'deprecated_functions'.
|
||||
* @param string $matched_content The token content (class name) which was matched.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function process_matched_token( $stackPtr, $group_name, $matched_content ) {
|
||||
|
||||
$this->get_wp_version_from_cl();
|
||||
|
||||
$class_name = ltrim( strtolower( $matched_content ), '\\' );
|
||||
|
||||
$message = 'The %s class has been deprecated since WordPress version %s.';
|
||||
$data = array(
|
||||
ltrim( $matched_content, '\\' ),
|
||||
$this->deprecated_classes[ $class_name ]['version'],
|
||||
);
|
||||
|
||||
if ( ! empty( $this->deprecated_classes[ $class_name ]['alt'] ) ) {
|
||||
$message .= ' Use %s instead.';
|
||||
$data[] = $this->deprecated_classes[ $class_name ]['alt'];
|
||||
}
|
||||
|
||||
$this->addMessage(
|
||||
$message,
|
||||
$stackPtr,
|
||||
( version_compare( $this->deprecated_classes[ $class_name ]['version'], $this->minimum_supported_version, '<' ) ),
|
||||
$this->string_to_errorcode( $class_name . 'Found' ),
|
||||
$data
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user