Server IP : 15.235.198.142 / Your IP : 216.73.216.24 Web Server : Apache/2.4.58 (Ubuntu) System : Linux ballsack 6.8.0-45-generic #45-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 30 12:02:04 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 8.3.6 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/yme/wp-content/plugins/simply-static/src/ |
Upload File : |
<?php namespace Simply_Static; // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Simply Static view class */ class View { /** * Base directory for views * @var string */ const DIRECTORY = 'views'; /** * View script extension * @var string */ const EXTENSION = '.php'; /** * View variables array * @var array */ protected $variables = array(); /** * Absolute path for view * @var string */ protected $path = null; /** * Template file name to render * @var string */ protected $template = null; /** * Flashes are quick status messages displayed at the top of the page * @var array */ protected $flashes = array(); /** * Contructor - Performs initialization of the absolute path for views */ public function __construct() { // Looking for a basic directory where plugin resides list($plugin_dir) = explode( '/', plugin_basename( __FILE__ ) ); // create an absolute path to views directory $path_array = array( WP_PLUGIN_DIR, $plugin_dir, self::DIRECTORY ); $this->path = implode( '/', $path_array ); } /** * Sets a layout that will be used later in render() method * @param string $template The template filename, without extension * @return Simply_Static\View */ public function set_layout( $layout ) { $this->layout = trailingslashit( $this->path ) . 'layouts/' . $layout . self::EXTENSION; return $this; } /** * Sets a template that will be used later in render() method * @param string $template The template filename, without extension * @return Simply_Static\View */ public function set_template( $template ) { $this->template = trailingslashit( $this->path ) . $template . self::EXTENSION; return $this; } /** * Returns a value of the option identified by $name * @param string $name The option name * @return mixed|null */ public function __get( $name ) { $value = array_key_exists( $name, $this->variables ) ? $this->variables[ $name ] : null; return $value; } /** * Updates the view variable identified by $name with the value provided in $value * @param string $name The variable name * @param mixed $value The variable value * @return Simply_Static\View */ public function __set( $name, $value ) { $this->variables[ $name ] = $value; return $this; } /** * Updates the view variable identified by $name with the value provided in $value * @param string $name The variable name * @param mixed $value The variable value * @return Simply_Static\View */ public function assign( $name, $value ) { return $this->__set( $name, $value ); } /** * Add a flash message to be displayed at the top of the page * * Available types: 'updated' (green), 'error' (red), 'notice' (no color) * * @param string $type The type of message to be displayed * @param string $message The message to be displayed * @return void */ public function add_flash( $type, $message ) { array_push( $this->flashes, array( 'type' => $type, 'message' => $message ) ); } /** * Returns the layout (if available) or template * * Checks to make sure that the file exists and is readable. * * @return string|\WP_Error */ private function get_renderable_file() { // must include a template if ( ! is_readable( $this->template ) ) { return new \WP_Error( 'invalid_template', sprintf( __( "Can't find view template: %s", 'simply-static' ), $this->template ) ); } // layouts are optional. if no layout provided, use the template by itself. if ( $this->layout ) { if ( ! is_readable( $this->layout ) ) { return new \WP_Error( 'invalid_layout', sprintf( __( "Can't find view layout: %s", 'simply-static' ), $this->layout ) ); } else { // the layout should include the template return $this->layout; } } else { return $this->template; } } /** * Renders the view script. * * @return Simply_Static\View|\WP_Error */ public function render() { $file = $this->get_renderable_file(); if ( is_wp_error( $file ) ) { return $file; } else { include $file; return $this; } } /** * Returns the view as a string. * * @return string|\WP_Error */ public function render_to_string() { $file = $this->get_renderable_file(); if ( is_wp_error( $file ) ) { return $file; } else { ob_start(); include $file; return ob_get_clean(); } } }