Server IP : 162.0.217.223 / Your IP : 216.73.216.150 Web Server : LiteSpeed System : Linux premium269.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : mypckeys ( 1539) PHP Version : 8.1.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/mypckeys/backup/msckey.com/wp-content/plugins/wp-table-builder/inc/libraries/ |
Upload File : |
<?php /** * Dynamically loads the class attempting to be instantiated elsewhere in the * plugin by looking at the $class_name parameter being passed as an argument. * * The argument should be in the form: WP_Table_Builder\Namespace. The * function will then break the fully-qualified class name into its pieces and * will then build a file to the path based on the namespace. * * The namespaces in this plugin map to the paths in the directory structure. * * @param string $class_name The fully-qualified name of the class to load. * * @since 1.0.0 */ /* * Thanks to Tom McFarlin * https://code.tutsplus.com/tutorials/using-namespaces-and-autoloading-in-wordpress-plugins-4--cms-27342 */ spl_autoload_register( function( $class_name ) { // If the specified $class_name does not include our namespace, duck out. if ( false === strpos( $class_name, 'WP_Table_Builder' ) ) { return; } // Split the class name into an array to read the namespace and class. $file_parts = explode( '\\', $class_name ); if( $file_parts[0] !== 'WP_Table_Builder' ) { return; } // Do a reverse loop through $file_parts to build the path to the file. $namespace = ''; $file_name = ''; for ( $i = count( $file_parts ) - 1; $i > 0; $i-- ) { // Read the current component of the file part. $current = strtolower( $file_parts[ $i ] ); $current = str_ireplace( '_', '-', $current ); // If we're at the first entry, then we're at the filename. if ( count( $file_parts ) - 1 === $i ) { /** * If 'interface' is contained in the parts of the file name, then * define the $file_name differently so that it's properly loaded. * Otherwise, just set the $file_name equal to that of the class * filename structure. */ if ( strpos( strtolower( $file_parts[ count( $file_parts ) - 1 ] ), 'interface' ) ) { // Grab the name of the interface from its qualified name. $interface_name = explode( '_', $file_parts[ count( $file_parts ) - 1 ] ); $interface_name = $interface_name[0]; $file_name = "interface-$interface_name.php"; } elseif( strpos( strtolower( $class_name ), 'wp_table_builder\inc\admin\element_classes' ) !== false || strpos( strtolower( $class_name ), 'wp_table_builder\inc\admin\base' ) !== false || strpos( strtolower( $class_name ), 'wp_table_builder\inc\admin\controls' ) !== false || strpos( strtolower( $class_name ), 'wp_table_builder\inc\admin\managers' ) !== false || strpos( strtolower( $class_name ), 'wp_table_builder\inc\admin\views\builder' ) !== false ) { $file_name = "$current.php"; } else { $file_name = "class-$current.php"; } } else { $namespace = '/' . $current . $namespace; } } // Now build a path to the file using mapping to the file location. $filepath = trailingslashit( untrailingslashit( plugin_dir_path( dirname( __DIR__ ) ) ) . $namespace ); $filepath .= $file_name; // If the file exists in the specified path, then include it. if ( file_exists( $filepath ) ) { include_once( $filepath ); } else { wp_die( esc_html( 'The file attempting to be loaded at ' . $filepath . ' does not exist.' ) ); } } );