%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /www/klubovnaostrava/test/wp-content/plugins/pretix-widget/includes/
Upload File :
Create Path :
Current File : //www/klubovnaostrava/test/wp-content/plugins/pretix-widget/includes/base.php

<?php
/**
 * Class Base
 *
 * This class serves as the base class for the Pretix_Widget plugin, containing common methods and properties.
 *
 * @package Pretix_Widget
 * @version 1.0.00
 */

namespace Pretix_Widget;

class Base {
    public $debug = false;
    private $path;
    private $url;
    private $errors = [];

    /**
     * Get the plugin name in snake_case.
     *
     * @return string The plugin name in snake_case.
     * @since 1.0.00
     */
    public function get_name_snake() {
        return str_replace('-', '_', $this->get_name());
    }

    /**
     * Get the name of the plugin.
     *
     * @return string The plugin name.
     * @since 1.0.00
     */
    public function get_name() {
        $plugin_basename = plugin_basename(__FILE__);

        return explode('/', $plugin_basename)[0];
    }

    /**
     * Get the path of the plugin.
     *
     * @param string $sub The subdirectory or file path within the plugin.
     *
     * @return string The full path of the plugin or the path to the subdirectory/file if specified.
     * @since 1.0.00
     */
    public function get_path(string $sub = '') {
        // Base path of the plugin
        $base_path = $this->path ? $this->path : plugin_dir_path(__DIR__);

        // Sanitize the sub-path: remove dangerous characters
        $sub = str_replace(['..', '\\', chr(0)], '', $sub);
        $sub = trim($sub, '/');

        // If a sub-path is provided, construct the full path
        if ($sub !== '') {
            $full_path = $base_path . $sub;

            // Use realpath to validate path security, but check if the file exists separately
            $real_base_path = realpath($base_path); // Resolve base path first

            // Make sure that the base path exists and is resolved correctly
            if ($real_base_path === false) {
                throw new \Exception('Invalid base path');
            }

            // Build a safe absolute path (even if the target doesn't exist)
            $safe_path = $real_base_path . DIRECTORY_SEPARATOR . $sub;

            // Check if the resolved safe path starts with the base directory to avoid traversal
            if (strpos($safe_path, $real_base_path) !== 0) {
                throw new \Exception('Invalid path access');
            }

            return $safe_path; // Return the safe path, even if the file doesn't exist
        }

        // Return the base path if no sub-path is provided
        return $base_path;
    }

    /**
     * Get the URL of the plugin.
     *
     * @param string $sub The subdirectory or file path within the plugin.
     *
     * @return string The full URL of the plugin or the URL to the subdirectory/file if specified.
     * @since 1.0.00
     */
    public function get_url(string $sub = '') {
        $url = $this->url ? $this->url : plugin_dir_url(__DIR__);
        $sub = trim($sub, '/');

        return $sub !== '' ? $url . $sub : $url;
    }

    /**
     * Get the short locale code.
     *
     * @param string $locale The full locale code.
     *
     * @return string The short locale code (first two characters).
     * @since 1.0.00
     */
    public function get_short_locale(string $locale) {
        return substr($locale, 0, 2);
    }

    /**
     * Set an error encountered during plugin execution.
     *
     * @param mixed $error The error message or error data to be logged.
     *
     * @since 1.0.00
     */
    public function set_error($error) {
        if (is_array($error) || is_object($error)) {
            error_log(print_r($error, true));
            $this->errors[] = array_merge($this->errors, $error);
        } else {
            error_log($error);
            $this->errors[] = $error;
        }
    }

    /**
     * Get the HTML representation of the errors encountered during plugin execution.
     *
     * @return string The HTML string containing the error messages.
     * @since 1.0.00
     */
    public function get_error_html() {
        $html = '';
        foreach ($this->get_errors() as $error) {
            $html .= '<p>' . $error . '</p>';
        }

        return $html;
    }

    /**
     * Get the errors encountered during plugin execution.
     *
     * @return array An array containing the encountered errors.
     * @since 1.0.00
     */
    public function get_errors() {
        return $this->errors;
    }

    /**
     * POST / GET escaping wrapper function.
     *
     * @param mixed $value The value to escape.
     *
     * @return mixed The escaped value.
     * @since 1.0.4
     */
    public function _escape_request(mixed $value) {
        return sanitize_text_field( wp_unslash ( $value ) );
    }

    /**
     * Wrapper with escaping for wp_verify_nonce().
     *
     * @param string $nonce The nonce to verify.
     * @param mixed $action Should give context to what is taking place and be the same when nonce was created.
     *
     * @return string The escaped value.
     * @since 1.0.4
     */
    public function _verify_nonce(string $nonce, mixed $action = -1) {
        return wp_verify_nonce( $this->_escape_request ( $nonce ) , $action );
    }
}

Zerion Mini Shell 1.0