88
99namespace WordPressVIPMinimum \Sniffs \Security ;
1010
11+ use PHP_CodeSniffer \Util \Tokens ;
1112use WordPressVIPMinimum \Sniffs \Sniff ;
1213
1314/**
@@ -28,12 +29,10 @@ class MustacheSniff extends Sniff {
2829 * @return array<int|string>
2930 */
3031 public function register () {
31- return [
32- T_CONSTANT_ENCAPSED_STRING ,
33- T_STRING ,
34- T_INLINE_HTML ,
35- T_HEREDOC ,
36- ];
32+ $ targets = Tokens::$ textStringTokens ;
33+ $ targets [ T_STRING ] = T_STRING ;
34+
35+ return $ targets ;
3736 }
3837
3938 /**
@@ -57,15 +56,22 @@ public function process_token( $stackPtr ) {
5756 $ this ->phpcsFile ->addWarning ( $ message , $ stackPtr , 'VariableNotation ' );
5857 }
5958
60- if ( strpos ( $ this ->tokens [ $ stackPtr ]['content ' ], '{{= ' ) !== false ) {
59+ $ start_delimiter_change = strpos ( $ this ->tokens [ $ stackPtr ]['content ' ], '{{= ' );
60+ if ( $ start_delimiter_change !== false ) {
6161 // Mustache delimiter change.
62- $ new_delimiter = trim ( str_replace ( [ '{{= ' , '=}} ' ], '' , substr ( $ this ->tokens [ $ stackPtr ]['content ' ], 0 , strpos ( $ this ->tokens [ $ stackPtr ]['content ' ], '=}} ' ) + 3 ) ) );
63- $ message = 'Found Mustache delimiter change notation. New delimiter is: %s. ' ;
64- $ data = [ $ new_delimiter ];
65- $ this ->phpcsFile ->addWarning ( $ message , $ stackPtr , 'DelimiterChange ' , $ data );
62+ $ end_delimiter_change = strpos ( $ this ->tokens [ $ stackPtr ]['content ' ], '=}} ' );
63+ if ( $ end_delimiter_change !== false && $ start_delimiter_change < $ end_delimiter_change ) {
64+ $ start_new_delimiter = $ start_delimiter_change + 3 ;
65+ $ new_delimiter_length = $ end_delimiter_change - ( $ start_delimiter_change + 3 );
66+ $ new_delimiter = substr ( $ this ->tokens [ $ stackPtr ]['content ' ], $ start_new_delimiter , $ new_delimiter_length );
67+
68+ $ message = 'Found Mustache delimiter change notation. New delimiter is: %s. ' ;
69+ $ data = [ $ new_delimiter ];
70+ $ this ->phpcsFile ->addWarning ( $ message , $ stackPtr , 'DelimiterChange ' , $ data );
71+ }
6672 }
6773
68- if ( strpos ( $ this ->tokens [ $ stackPtr ]['content ' ], 'SafeString ' ) !== false ) {
74+ if ( strpos ( $ this ->tokens [ $ stackPtr ]['content ' ], '. SafeString ' ) !== false ) {
6975 // Handlebars.js Handlebars.SafeString does not get escaped.
7076 $ message = 'Found Handlebars.SafeString call which does not get escaped. ' ;
7177 $ this ->phpcsFile ->addWarning ( $ message , $ stackPtr , 'SafeString ' );
0 commit comments