OneBot: Leantime 改造版源码(BOM/Univer 表格/AI 接管/品牌替换等)

This commit is contained in:
wangruiguo
2026-09-03 18:49:20 +08:00
commit d647428529
3501 changed files with 1988906 additions and 0 deletions

120
app/Core/Application.php Normal file
View File

@@ -0,0 +1,120 @@
<?php
namespace Leantime\Core;
use Illuminate\Log\Context\ContextServiceProvider;
use Illuminate\Log\LogServiceProvider;
use Illuminate\Routing\RoutingServiceProvider;
use Leantime\Core\Configuration\Environment;
use Leantime\Core\Console\ConsoleKernel;
use Leantime\Core\Events\DispatchesEvents;
use Leantime\Core\Http\ApiRequest;
use Leantime\Core\Http\HttpKernel;
use Leantime\Core\Http\IncomingRequest;
/**
* Class Application
*
* Represents an application.
*/
class Application extends \Illuminate\Foundation\Application
{
use DispatchesEvents;
/**
* Constructor for the class.
*
* @param string $basePath The base path for the application.
* @return void
*/
public function __construct($basePath = null)
{
$this->namespace = 'Leantime\\';
if ($basePath) {
$this->setBasePath($basePath);
}
// Our folder structure is different and we shall not bow to the bourgeoisie
$this->useAppPath($this->basePath.'/app');
$this->useConfigPath($this->basePath.'/config');
$this->useEnvironmentPath($this->basePath.'/config');
$this->useBootstrapPath($this->basePath.'/bootstrap');
$this->usePublicPath($this->basePath.'/public');
$this->useStoragePath($this->basePath.'/storage');
$this->useLangPath($this->basePath.'/app/Language');
$this->useDatabasePath($this->basePath.'/database');
$this->registerBaseBindings();
$this->registerBaseServiceProviders();
$this->registerCoreContainerAliases();
// Overriding some of the aliases
$this->registerLeantimeAliases();
$this->registerLaravelCloudServices();
}
/**
* Register the base service providers.
*
* This method is used to register the base service providers required for the application.
*
* @return void
*/
protected function registerBaseServiceProviders()
{
// Loading some config vars so we can run events
// $this->register(new \Leantime\Core\Providers\Environment($this));
$this->register(new Events\EventsServiceProvider($this));
$this->register(new LogServiceProvider($this));
$this->register(new ContextServiceProvider($this));
$this->register(new RoutingServiceProvider($this));
// Todo: Add event and see if that works here.
}
public function registerLeantimeAliases()
{
foreach ([
'app' => [self::class, \Illuminate\Contracts\Container\Container::class, Application::class, \Illuminate\Contracts\Foundation\Application::class, \Psr\Container\ContainerInterface::class],
'config' => [Environment::class, \Illuminate\Config\Repository::class, \Illuminate\Contracts\Config\Repository::class],
'request' => [IncomingRequest::class, ApiRequest::class, \Leantime\Core\Console\CliRequest::class, \Illuminate\Http\Request::class, \Symfony\Component\HttpFoundation\Request::class],
] as $key => $aliases) {
foreach ($aliases as $alias) {
$this->alias($key, $alias);
}
}
$this->alias(HttpKernel::class, \Illuminate\Foundation\Http\Kernel::class);
$this->alias(ConsoleKernel::class, \Illuminate\Foundation\Console\Kernel::class);
}
// Boot with Leantime event dispatcher
/**
* Boot the application.
*
* @return void
*/
public function boot()
{
// We need to discover events a lot earlier than Laravel wants us to.
// So we're just doing it.
\Illuminate\Support\Facades\Event::discoverListeners();
// Calling the first event
self::dispatchEvent('beforeBootingServiceProviders');
parent::boot();
self::dispatchEvent('afterBootingServiceProviders');
}
}