public static function readDir($resource) { if (self::$readDir) { return self::$readDir; } $resource = str_replace("\\", "/", $resource); $dirs = scandir($resource); unset($dirs[0], $dirs[1]); $new = array(); $ajax = ajax(); foreach ($dirs as $k => $v) { $name = preg_replace("/\\..+\$/", '', $v); if (isset($new[$name])) { continue; } $obj = new ext($v); $obj->file = "{$v}.js"; $obj->method = $v; if (is_dir($resource . $v)) { self::$_dirs[$name] = $resource . $v . '/'; $dir = self::$_dirs[$name]; if (file_exists($f = "{$dir}{$v}.php")) { require_once $f; $class = $v; $parent = get_parent_class($class); if (!class_exists($class)) { $class = 'plugin_' . $v; } else { if ($parent != 'plugin') { $class = 'plugin_' . $v; } } if (class_exists($class)) { $vars = get_class_vars($class); if (isset($vars['file'])) { $obj->file = $vars['file']; $obj->method = preg_replace(array("/\\..+\$/", "/\\.js\$/"), '', $obj->file); } self::$_instances_exist[$v] = $class; if (method_exists($class, 'autoload')) { call_user_func(array($class, 'autoload')); } if (!$ajax->isAjaxRequest()) { if (method_exists($class, 'PageAutoload')) { call_user_func(array($class, 'PageAutoload')); } } else { if (method_exists($class, 'AjaxAutoload')) { call_user_func(array($class, 'AjaxAutoload')); } } } } $obj->file = "{$v}/{$obj->file}"; $new[$name] = $obj; } else { self::$_dirs[$name] = $resource; $new[$name] = $obj; $dir = $resource; } } return self::$readDir = $new; }