public static function load_extension_class($name) { $parts = explode('\\', $name); $class_name = strtolower(array_pop($parts)) . '.php'; $extension = reset($parts); if (Application::extension_exists($extension)) { $parts = array_map([StringHelper::class, 'camelcase_to_dash'], $parts); $parts = array_map('strtolower', $parts); $file = 'pfmextension://' . implode(DS, $parts) . DS . $class_name; if (is_file($file)) { require_once $file; return true; } else { return false; } } else { return false; } }
public static function load_extension($name) { $name = basename($name); if (!Application::extension_exists($name)) { return false; } $extension_class = $name; $name = strtolower($name); $extension_file_gz = ROOT_PATH . DS . 'extensions' . DS . "{$name}.tar.gz"; $extension_build_dir = ROOT_PATH . DS . 'build' . DS . $name; if (file_exists($extension_build_dir)) { $check_is_changed = Application::is_dev() || defined('TESTS_ENV'); if ($check_is_changed) { $is_extension_changed = self::is_extension_changed($name) || !self::is_extension_built($name); if ($is_extension_changed) { self::build_extension($name); } } } if (!class_exists($extension_class, false)) { require_once "phar://{$extension_file_gz}/{$name}.php"; } return true; }
/** * @covers common\classes\Application::extension_exists */ public function test_extension_exists() { self::assertTrue(Application::extension_exists('system')); self::assertFalse(Application::extension_exists('smarty')); }