As the sun rises and the forest mist clears, and the clouds return and the caves darken, these changes of light and shadow are the morning and evening in the mountains. Wildflowers bloom with their subtle fragrance, fine trees flourish with their dense shade, the wind and frost are pure and clean, and the water recedes to reveal the rocks—these are the four seasons in the mountains. Going out in the morning and returning in the evening, the scenery of the four seasons is different, and the joy is endless.至于负者歌于途,行者休于树,前者呼,后者应,伛偻提携,往来而不绝者,滁人游也。临溪而渔,溪深而鱼肥,酿泉为酒,泉香而酒洌,山肴野蔌,杂然而前陈者,太守宴也。宴酣之乐,非丝非竹,射者中,弈者胜,觥筹交错,起坐而喧哗者,众宾欢也。苍颜白发,颓然乎其间者,太守醉也。 HEX
HEX
Server: Apache
System: Linux webd003.cluster106.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64
User: labeautef (51223)
PHP: 8.0.30
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/labeautef/forcess-securit.fr/wp-content/plugins/bulk-delete/include/BulkDeleteAutoloader.php
<?php namespace BulkWP\BulkDelete;

/**
 * Autoloader for Bulk Delete, based on the PSR-4 general purpose implementation.
 *
 * @see http://www.php-fig.org/psr/psr-4/
 *
 * This differs from WordPress coding standard in the following ways.
 *
 * - Class name and directory names use Snake case.
 * - Use of namespaces.
 *
 * Given a foo-bar package of classes in the file system at the following
 * paths ...
 *
 *     /path/to/packages/foo-bar/
 *         src/
 *             Baz.php             # Foo\Bar\Baz
 *             Qux/
 *                 Quux.php        # Foo\Bar\Qux\Quux
 *         tests/
 *             BazTest.php         # Foo\Bar\BazTest
 *             Qux/
 *                 QuuxTest.php    # Foo\Bar\Qux\QuuxTest
 *
 * ... add the path to the class files for the \Foo\Bar\ namespace prefix
 * as follows:
 *
 *      <?php
 *      // instantiate the loader
 *      $loader = new \BulkWP\BulkDelete\BulkDeleteAutoloader;
 *
 *      // register the autoloader
 *      $loader->register();
 *
 *      // register the base directories for the namespace prefix
 *      $loader->addNamespace('Foo\Bar', '/path/to/packages/foo-bar/src');
 *      $loader->addNamespace('Foo\Bar', '/path/to/packages/foo-bar/tests');
 *
 * The following line would cause the autoloader to attempt to load the
 * \Foo\Bar\Qux\Quux class from /path/to/packages/foo-bar/src/Qux/Quux.php:
 *
 *      <?php
 *      new \Foo\Bar\Qux\Quux;
 *
 * The following line would cause the autoloader to attempt to load the
 * \Foo\Bar\Qux\QuuxTest class from /path/to/packages/foo-bar/tests/Qux/QuuxTest.php:
 *
 *      <?php
 *      new \Foo\Bar\Qux\QuuxTest;
 * @since 6.0.0
 */
class BulkDeleteAutoloader {
	/**
	 * An associative array where the key is a namespace prefix and the value
	 * is an array of base directories for classes in that namespace.
	 *
	 * @var array
	 */
	protected $prefixes = array();

	/**
	 * An associative array containing the list files that needs to be autoloaded.
	 *
	 * @var array
	 */
	protected $files = array();

	protected $custom_class_map = array();

	/**
	 * Register loader with SPL autoloader stack.
	 *
	 * @return void
	 */
	public function register() {
		spl_autoload_register( array( $this, 'load_class' ) );

		// file exists check is already done in `add_file`.
		foreach ( $this->files as $file ) {
			$this->require_file( $file );
		}
	}

	/**
	 * Adds a base directory for a namespace prefix.
	 *
	 * @param string $prefix   The namespace prefix.
	 * @param string $base_dir A base directory for class files in the
	 *                         namespace.
	 * @param bool   $prepend  If true, prepend the base directory to the stack
	 *                         instead of appending it; this causes it to be searched first rather
	 *                         than last.
	 *
	 * @return void
	 */
	public function add_namespace( $prefix, $base_dir, $prepend = false ) {
		// normalize namespace prefix.
		$prefix = trim( $prefix, '\\' ) . '\\';

		// normalize the base directory with a trailing separator.
		$base_dir = rtrim( $base_dir, DIRECTORY_SEPARATOR ) . '/';

		// initialize the namespace prefix array.
		if ( false === isset( $this->prefixes[ $prefix ] ) ) {
			$this->prefixes[ $prefix ] = array();
		}

		// retain the base directory for the namespace prefix.
		if ( $prepend ) {
			array_unshift( $this->prefixes[ $prefix ], $base_dir );
		} else {
			array_push( $this->prefixes[ $prefix ], $base_dir );
		}
	}

	/**
	 * Add a file to be autoloaded.
	 *
	 * @param string $filename File to be autoloaded.
	 */
	public function add_file( $filename ) {
		if ( ! in_array( $filename, $this->files, true ) ) {
			$this->files[] = $filename;
		}
	}

	/**
	 * Loads the class file for a given class name.
	 *
	 * @param string $class The fully-qualified class name.
	 *
	 * @return false|string The mapped file name on success, or boolean false on
	 *                      failure.
	 */
	public function load_class( $class ) {
		if ( array_key_exists( $class, $this->custom_class_map ) ) {
			$file_loaded = $this->require_file( $this->custom_class_map[ $class ] );

			if ( $file_loaded ) {
				return true;
			}
		}

		// the current namespace prefix.
		$prefix = $class;

		// work backwards through the namespace names of the fully-qualified class name to find a mapped file name.
		while ( false !== $pos = strrpos( $prefix, '\\' ) ) {
			// retain the trailing namespace separator in the prefix.
			$prefix = substr( $class, 0, $pos + 1 );

			// the rest is the relative class name.
			$relative_class = substr( $class, $pos + 1 );

			// try to load a mapped file for the prefix and relative class.
			$mapped_file = $this->load_mapped_file( $prefix, $relative_class );
			if ( $mapped_file !== false ) {
				return $mapped_file;
			}

			// remove the trailing namespace separator for the next iteration
			// of strrpos().
			$prefix = rtrim( $prefix, '\\' );
		}

		// never found a mapped file.
		return false;
	}

	/**
	 * Load the mapped file for a namespace prefix and relative class.
	 *
	 * @param string $prefix         The namespace prefix.
	 * @param string $relative_class The relative class name.
	 *
	 * @return false|string Boolean false if no mapped file can be loaded, or the
	 *                      name of the mapped file that was loaded.
	 */
	protected function load_mapped_file( $prefix, $relative_class ) {
		// are there any base directories for this namespace prefix?
		if ( false === isset( $this->prefixes[ $prefix ] ) ) {
			return false;
		}

		// look through base directories for this namespace prefix.
		foreach ( $this->prefixes[ $prefix ] as $base_dir ) {
			// replace the namespace prefix with the base directory,
			// replace namespace separators with directory separators
			// in the relative class name, append with .php.
			$file = $base_dir . str_replace( '\\', '/', $relative_class ) . '.php';

			// if the mapped file exists, require it.
			if ( $this->require_file( $file ) ) {
				// yes, we're done.
				return $file;
			}
		}

		// never found it.
		return false;
	}

	/**
	 * If a file exists, require it from the file system.
	 *
	 * @param string $file The file to require.
	 *
	 * @return bool True if the file exists, false if not.
	 */
	protected function require_file( $file ) {
		if ( file_exists( $file ) ) {
			require_once $file;

			return true;
		}

		return false;
	}

	public function set_custom_mapping( $custom_class_map ) {
		$this->custom_class_map = $custom_class_map;
	}
}