From 0eece8222babd9ea87fbb39ea1a594a7ae979b73 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Sat, 30 Apr 2016 01:56:09 -0400
Subject: [PATCH] Fix autoloading of 'html' class and improve autoloader performance
---
program/lib/Roundcube/bootstrap.php | 36 +++++++++++++++++-------------------
1 files changed, 17 insertions(+), 19 deletions(-)
diff --git a/program/lib/Roundcube/bootstrap.php b/program/lib/Roundcube/bootstrap.php
index 94e628b..f9d9b69 100644
--- a/program/lib/Roundcube/bootstrap.php
+++ b/program/lib/Roundcube/bootstrap.php
@@ -428,27 +428,25 @@
*/
function rcube_autoload($classname)
{
- $filename = preg_replace(
- array(
- '/Mail_(.+)/',
- '/Net_(.+)/',
- '/Auth_(.+)/',
- '/^html_.+/',
- '/^rcube(.*)/'
- ),
- array(
- 'Mail/\\1',
- 'Net/\\1',
- 'Auth/\\1',
- 'Roundcube/html',
- 'Roundcube/rcube\\1'
- ),
- $classname
- );
+ if (strpos($classname, 'rcube') === 0) {
+ $classname = 'Roundcube/' . $classname;
+ }
+ else if (strpos($classname, 'html_') === 0 || $classname === 'html') {
+ $classname = 'Roundcube/html';
+ }
+ else if (strpos($classname, 'Mail_') === 0) {
+ $classname = 'Mail/' . substr($classname, 5);
+ }
+ else if (strpos($classname, 'Net_') === 0) {
+ $classname = 'Net/' . substr($classname, 4);
+ }
+ else if (strpos($classname, 'Auth_') === 0) {
+ $classname = 'Auth/' . substr($classname, 5);
+ }
- if ($fp = @fopen("$filename.php", 'r', true)) {
+ if ($fp = @fopen("$classname.php", 'r', true)) {
fclose($fp);
- include_once "$filename.php";
+ include_once "$classname.php";
return true;
}
--
Gitblit v1.9.1