<?php /** * Autoloader file for plugin. * * @package responsive-menu */ namespace RMP\Features\Inc\Helpers; /** * Auto loader function. * * @param string $resource Source namespace. * * @return void */ function autoloader( $resource = '' ) { $resource_path = false; $namespace_root = 'RMP\Features\\'; $resource = trim( $resource, '\\' ); if ( empty( $resource ) || strpos( $resource, '\\' ) === false || strpos( $resource, $namespace_root ) !== 0 ) { // Not our namespace, bail out. return; } // Remove our root namespace. $resource = str_replace( $namespace_root, '', $resource ); $path = explode( '\\', str_replace( '_', '-', strtolower( $resource ) ) ); /** * Time to determine which type of resource path it is, * so that we can deduce the correct file path for it. */ if ( empty( $path[0] ) || empty( $path[1] ) ) { return; } $directory = ''; $file_name = ''; if ( 'inc' === $path[0] ) { switch ( $path[1] ) { case 'traits': $directory = 'traits'; $file_name = sprintf( 'trait-%s', trim( strtolower( $path[2] ) ) ); break; case 'post-types': case 'taxonomies': case 'blocks': case 'meta-boxes': case 'elementor': case 'widgets': case 'plugin-configs': /** * If there is class name provided for specific directory then load that. * otherwise find in inc/ directory. */ if ( ! empty( $path[2] ) ) { $directory = sprintf( 'classes/%s', $path[1] ); $file_name = sprintf( 'class-%s', trim( strtolower( $path[2] ) ) ); break; } // no break default: $directory = 'classes'; $file_name = sprintf( 'class-%s', trim( strtolower( $path[1] ) ) ); break; } $resource_path = sprintf( '%s/inc/%s/%s.php', untrailingslashit( RMP_PLUGIN_PATH_V4 ), $directory, $file_name ); } /** * If $is_valid_file has 0 means valid path or 2 means the file path contains a Windows drive path. */ $is_valid_file = validate_file( $resource_path ); if ( ! empty( $resource_path ) && file_exists( $resource_path ) && ( 0 === $is_valid_file || 2 === $is_valid_file ) ) { // We already making sure that file is exists and valid. require_once $resource_path; } } spl_autoload_register( '\RMP\Features\Inc\Helpers\autoloader' );