File manager - Edit - /home/buyherba/purecannabishub.com/wp-content/plugins/booster-plus-for-woocommerce/includes/class-wcj-template-editor.php
Back
<?php /** * Booster for WooCommerce - Module - Template Editor * * @version 7.1.6 * @since 1.0.0 * @author Pluggabl LLC. * @package Booster_Plus_For_WooCommerce/includes */ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } if ( ! class_exists( 'WCJ_Template_Editor' ) ) : /** * WCJ_Template_Editor. * * @version 7.1.6 */ class WCJ_Template_Editor extends WCJ_Module { /** * The module templates_to_edit * * @var varchar $templates_to_edit Module templates_to_edit. */ public $templates_to_edit; /** * Constructor. * * @version 6.0.0 * @since 1.0.0 */ public function __construct() { $this->id = 'template_editor'; $this->short_desc = __( 'Template Editor', 'woocommerce-jetpack' ); $this->desc = __( 'WooCommerce template editor.', 'woocommerce-jetpack' ); $this->link_slug = 'woocommerce-template-editor'; parent::__construct(); add_action( 'woojetpack_after_settings_save', array( $this, 'create_templates' ), PHP_INT_MAX, 2 ); if ( $this->is_enabled() ) { $this->templates_to_edit = wcj_get_option( 'wcj_template_editor_templates_to_edit', array() ); add_filter( 'wc_get_template', array( $this, 'replace_template' ), PHP_INT_MAX, 5 ); } } /** * Create_templates. * * @version 6.0.0 * @since 1.0.0 * @todo [dev] also delete on "Reset settings" * @param string | array $sections defines the sections. * @param string | array $current_section defines the current_section. */ public function create_templates( $sections, $current_section ) { if ( $this->id === $current_section ) { require_once ABSPATH . '/wp-admin/includes/file.php'; global $wp_filesystem; WP_Filesystem(); $this->delete_dir( wcj_get_wcj_uploads_dir( 'templates' ) ); $templates_content = wcj_get_option( 'wcj_template_editor_templates_content', array() ); foreach ( wcj_get_option( 'wcj_template_editor_templates_to_edit', array() ) as $template ) { if ( isset( $templates_content[ $template ] ) ) { $_template = explode( '/', $template ); $_template_file = $_template[ count( $_template ) - 1 ]; $_template_dirs = str_replace( $_template_file, '', $template ); $_template_path = wcj_get_wcj_uploads_dir( 'templates' . DIRECTORY_SEPARATOR . $_template_dirs ) . DIRECTORY_SEPARATOR . $_template_file; if ( $templates_content[ $template ] ) { $wp_filesystem->put_contents( $_template_path, $templates_content[ $template ], FS_CHMOD_FILE ); } } } } } /** * Replace_template. * * @version 6.0.0 * @since 1.0.0 * @param string $located defines the located. * @param string $template_name defines the template_name. * @param array $args defines the args. * @param string $template_path defines the template_path. * @param string $default_path defines the default_path. */ public function replace_template( $located, $template_name, $args, $template_path, $default_path ) { if ( in_array( $template_name, $this->templates_to_edit, true ) ) { $modified_template = wcj_get_wcj_uploads_dir( 'templates', false ) . DIRECTORY_SEPARATOR . $template_name; return ( file_exists( $modified_template ) ? $modified_template : $located ); } return $located; } /** * Gets path by template. * * @version 6.0.0 * @since 1.0.0 * * @param string $template Get template. * * @return int|string */ public function get_path_by_template( $template ) { $templates_by_path = wcj_get_option( 'wcj_template_editor_templates_by_path', array() ); foreach ( $templates_by_path as $path => $templates ) { if ( in_array( $template, $templates, true ) ) { return $path; } } return ''; } /** * Gets paths from 'wcj_template_editor_paths' option * * @version 6.0.0 * @since 1.0.0 * * @return array */ public function get_paths() { $paths_arr = explode( "\n", str_replace( "\r", '', wcj_get_option( 'wcj_template_editor_paths', '/woocommerce/templates/' ) ) ); return array_map( function ( $path ) { return trailingslashit( str_replace( '\\', '/', WP_PLUGIN_DIR . $path ) ); }, $paths_arr ); } /** * Scan_templates. * * @version 6.0.0 * @since 1.0.0 * @todo [dev] (maybe) optimize * @param string $dir defines the dir. * @param string $original_path defines the original_path. * @param array $results defines the results. */ public function scan_templates( $dir, $original_path, &$results = array() ) { $files = scandir( $dir ); foreach ( $files as $key => $value ) { $path = realpath( $dir . DIRECTORY_SEPARATOR . $value ); if ( ! is_dir( $path ) ) { $template = str_replace( $original_path, '', str_replace( '\\', '/', $path ) ); $results[ $template ] = $template; } elseif ( '.' !== $value && '..' !== $value ) { $this->scan_templates( $path, $original_path, $results ); } } return $results; } /** * Delete_dir. * * @version 6.0.0 * @since 1.0.0 * @param string $dir_path defines the dir_path. */ public function delete_dir( $dir_path ) { if ( ! is_dir( $dir_path ) ) { return false; } if ( '/' !== substr( $dir_path, strlen( $dir_path ) - 1, 1 ) ) { $dir_path .= '/'; } $files = glob( $dir_path . '*', GLOB_MARK ); foreach ( $files as $file ) { if ( is_dir( $file ) ) { $this->delete_dir( $file ); } else { unlink( $file ); } } rmdir( $dir_path ); } } endif; return new WCJ_Template_Editor();
| ver. 1.4 |
Github
|
.
| PHP 8.1.34 | Generation time: 0.08 |
proxy
|
phpinfo
|
Settings