Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions lib/Horde/Core/Factory/Twitter.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@
* @author Michael J. Rubinsky <mrubinsk@horde.org>
* @category Horde
* @package Core
*
* @deprecated Creates V1 API client using OAuth 1.0a and Horde_Controller_Request.
* A replacement based on Horde\Service\Twitter\V2 (PSR-18) and
* Horde OAuth2 is needed.
*/
class Horde_Core_Factory_Twitter extends Horde_Core_Factory_Injector
{
Expand Down
7 changes: 5 additions & 2 deletions src/DefaultInjectorBindings.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
use Horde\Core\Factory\DbAdapterFactory;
use Horde\Core\Factory\DbServiceFactory;
use Horde\Core\Factory\DriverRepositoryFactory;
use Horde\Core\Factory\ErrorFilterFactory;
use Horde\Core\Factory\EventDispatcherFactory;
use Horde\Core\Factory\GroupServiceFactory;
use Horde\Core\Factory\HashTableFactory;
Expand Down Expand Up @@ -80,6 +81,7 @@
use Horde\Core\Factory\TinymcePageBinderFactory;
use Horde\Core\Factory\VersionServiceFactory;
use Horde\Core\Middleware\AuthIsGlobalAdmin;
use Horde\Core\Middleware\ErrorFilter;
use Horde\Core\Middleware\OAuthConsentMiddleware;
use Horde\Core\Service\ApplicationService;
use Horde\Core\Service\GroupService;
Expand Down Expand Up @@ -142,7 +144,7 @@
use Horde\Http\ResponseFactory;
use Horde\Http\StreamFactory;
use Horde\Util\Variables;
use Horde_Injector;
use Horde\Injector\Injector;
use Psr\EventDispatcher\EventDispatcherInterface;
use Psr\EventDispatcher\ListenerProviderInterface;
use Psr\Http\Client\ClientInterface as PsrHttpClientInterface;
Expand All @@ -154,7 +156,7 @@

class DefaultInjectorBindings implements InjectorBindings
{
public function register(Horde_Injector $injector): void
public function register(Injector $injector): void
{
$factories = [
'Horde_ActiveSyncBackend' => 'Horde_Core_Factory_ActiveSyncBackend',
Expand Down Expand Up @@ -236,6 +238,7 @@ public function register(Horde_Injector $injector): void
IdTokenBuilder::class => OAuthIdTokenBuilderFactory::class,
OAuthConsentMiddleware::class => OAuthConsentMiddlewareFactory::class,
AuthIsGlobalAdmin::class => AuthIsGlobalAdminFactory::class,
ErrorFilter::class => ErrorFilterFactory::class,
'Horde_Service_Facebook' => 'Horde_Core_Factory_Facebook',
'Horde_Service_Twitter' => 'Horde_Core_Factory_Twitter',
'Horde_Service_UrlShortener' => 'Horde_Core_Factory_UrlShortener',
Expand Down
4 changes: 2 additions & 2 deletions src/Factory/ApiRegistryFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
use Horde\Core\Config\RegistryConfigLoader;
use Horde\Rpc\Dispatch\ApiProvider;
use Horde\Rpc\Dispatch\MethodInvoker;
use Horde_Injector;
use Horde\Injector\Injector;
use Throwable;

/**
Expand All @@ -20,7 +20,7 @@
*/
class ApiRegistryFactory
{
public function create(Horde_Injector $injector): ApiRegistry
public function create(Injector $injector): ApiRegistry
{
$registry = new ApiRegistry();
$registryLoader = $injector->getInstance(RegistryConfigLoader::class);
Expand Down
4 changes: 2 additions & 2 deletions src/Factory/ApplicationServiceFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

use Horde\Core\Config\RegistryConfigLoader;
use Horde\Core\Service\ApplicationService;
use Horde_Injector;
use Horde\Injector\Injector;

/**
* Factory for ApplicationService
Expand All @@ -30,7 +30,7 @@
*/
class ApplicationServiceFactory
{
public function create(Horde_Injector $injector): ApplicationService
public function create(Injector $injector): ApplicationService
{
$registryLoader = $injector->getInstance(RegistryConfigLoader::class);
return new ApplicationService($registryLoader);
Expand Down
4 changes: 2 additions & 2 deletions src/Factory/AuthBaseFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@

use Horde_Auth_Base;
use Horde_Core_Factory_Injector;
use Horde_Injector;
use Horde\Injector\Injector;

class AuthBaseFactory extends Horde_Core_Factory_Injector
{
public function create(Horde_Injector $injector): Horde_Auth_Base
public function create(Injector $injector): Horde_Auth_Base
{
return $injector->getInstance('Horde_Core_Factory_Auth')->create();
}
Expand Down
4 changes: 2 additions & 2 deletions src/Factory/AuthIsGlobalAdminFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@

use Horde\Core\Config\ConfigLoader;
use Horde\Core\Middleware\AuthIsGlobalAdmin;
use Horde_Injector;
use Horde\Injector\Injector;

class AuthIsGlobalAdminFactory
{
public function create(Horde_Injector $injector): AuthIsGlobalAdmin
public function create(Injector $injector): AuthIsGlobalAdmin
{
$loader = $injector->getInstance(ConfigLoader::class);
$state = $loader->load('horde');
Expand Down
4 changes: 2 additions & 2 deletions src/Factory/AuthLinkRepositoryFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
use Horde\Db\Adapter;
use Horde\Horde\Service\AuthLinkRepository;
use Horde\Horde\Service\SqlAuthLinkRepository;
use Horde_Injector;
use Horde\Injector\Injector;
use Throwable;

/**
Expand All @@ -30,7 +30,7 @@
*/
class AuthLinkRepositoryFactory
{
public function create(Horde_Injector $injector): AuthLinkRepository
public function create(Injector $injector): AuthLinkRepository
{
try {
$db = $injector->getInstance(Adapter::class);
Expand Down
16 changes: 8 additions & 8 deletions src/Factory/AuthServiceFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
use Horde\Core\Service\HordeDbService;
use Horde\Imap\Client\ConnectionConfig;
use Horde\Imap\Client\SecureMode;
use Horde_Injector;
use Horde\Injector\Injector;
use Horde_Ldap;
use RuntimeException;

Expand All @@ -39,7 +39,7 @@
*/
class AuthServiceFactory
{
public function create(Horde_Injector $injector): AuthService
public function create(Injector $injector): AuthService
{
$loader = $injector->getInstance(ConfigLoader::class);
$state = $loader->load('horde');
Expand All @@ -54,7 +54,7 @@ public function create(Horde_Injector $injector): AuthService
return new AuthService($provider, $policy, $identityBridge);
}

private function buildProvider(string $driver, array $params, Horde_Injector $injector): CredentialProvider
private function buildProvider(string $driver, array $params, Injector $injector): CredentialProvider
{
return match ($driver) {
'sql', 'auto' => $this->createSqlProvider($params, $injector),
Expand All @@ -65,7 +65,7 @@ private function buildProvider(string $driver, array $params, Horde_Injector $in
};
}

private function buildPolicy(array $params, Horde_Injector $injector): AccessPolicy
private function buildPolicy(array $params, Injector $injector): AccessPolicy
{
$loginBlock = $params['login_block'] ?? false;

Expand All @@ -85,7 +85,7 @@ private function buildPolicy(array $params, Horde_Injector $injector): AccessPol
return new CompoundPolicy($lockout);
}

private function createSqlProvider(array $params, Horde_Injector $injector): Sql
private function createSqlProvider(array $params, Injector $injector): Sql
{
$dbService = $injector->getInstance(HordeDbService::class);

Expand All @@ -99,7 +99,7 @@ private function createSqlProvider(array $params, Horde_Injector $injector): Sql
);
}

private function createLdapProvider(array $params, Horde_Injector $injector): Ldap
private function createLdapProvider(array $params, Injector $injector): Ldap
{
$ldap = $injector->getInstance(Horde_Ldap::class);

Expand All @@ -113,7 +113,7 @@ private function createLdapProvider(array $params, Horde_Injector $injector): Ld
);
}

private function createImapProvider(array $params, Horde_Injector $injector): Imap
private function createImapProvider(array $params, Injector $injector): Imap
{
$hostspec = $params['hostspec'] ?? 'localhost';
$port = isset($params['port']) ? (int) $params['port'] : null;
Expand All @@ -133,7 +133,7 @@ private function createImapProvider(array $params, Horde_Injector $injector): Im
);
}

private function createCompositeProvider(array $params, Horde_Injector $injector): CredentialProviderRegistry
private function createCompositeProvider(array $params, Injector $injector): CredentialProviderRegistry
{
$providers = [];

Expand Down
6 changes: 3 additions & 3 deletions src/Factory/AuthStorageFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,22 @@
use Horde\Core\Auth\Storage\HistoryAttemptTracker;
use Horde\Core\Auth\Storage\HordeLockAdapter;
use Horde_History;
use Horde_Injector;
use Horde\Injector\Injector;
use Horde_Lock;

/**
* Factory for auth-related storage adapters.
*/
class AuthStorageFactory
{
public function createLockManager(Horde_Injector $injector): LockManager
public function createLockManager(Injector $injector): LockManager
{
$lock = $injector->getInstance(Horde_Lock::class);

return new HordeLockAdapter($lock);
}

public function createAttemptTracker(Horde_Injector $injector): LoginAttemptTracker
public function createAttemptTracker(Injector $injector): LoginAttemptTracker
{
$history = $injector->getInstance(Horde_History::class);

Expand Down
4 changes: 2 additions & 2 deletions src/Factory/CheckCredentialsFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@

use Horde\Core\Auth\AuthService;
use Horde\Core\Middleware\CheckCredentials;
use Horde_Injector;
use Horde\Injector\Injector;

class CheckCredentialsFactory
{
public function create(Horde_Injector $injector): CheckCredentials
public function create(Injector $injector): CheckCredentials
{
$authService = $injector->getInstance(AuthService::class);

Expand Down
6 changes: 3 additions & 3 deletions src/Factory/ConfigLoaderFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
use Horde\Core\Config\ConfigLoader;
use Horde\Core\Config\ConfigMetadataProvider;
use Horde\Core\Config\Vhost;
use Horde_Injector;
use Horde\Injector\Injector;
use Exception;

/**
Expand All @@ -37,10 +37,10 @@ class ConfigLoaderFactory
/**
* Create ConfigLoader instance
*
* @param Horde_Injector $injector Dependency injector
* @param Injector $injector Dependency injector
* @return ConfigLoader Global config loader for all apps
*/
public function create(Horde_Injector $injector): ConfigLoader
public function create(Injector $injector): ConfigLoader
{
// Try to get metadata provider if available
$metadataProvider = null;
Expand Down
4 changes: 2 additions & 2 deletions src/Factory/ConfigMetadataProviderFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

use Horde\Core\Config\ConfigMetadataProvider;
use Horde\Core\Config\Driver\DriverRepository;
use Horde_Injector;
use Horde\Injector\Injector;

/**
* Factory for ConfigMetadataProvider.
Expand All @@ -35,7 +35,7 @@
class ConfigMetadataProviderFactory
{
public function __construct(
private readonly Horde_Injector $injector,
private readonly Injector $injector,
) {}

/**
Expand Down
4 changes: 2 additions & 2 deletions src/Factory/DbAdapterFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
use Horde\Db\Adapter\Pdo\Pgsql as PdoPgsql;
use Horde\Db\Adapter\Pdo\Sqlite as PdoSqlite;
use Horde\Db\Adapter\Oci8 as ModernOci8;
use Horde_Injector;
use Horde\Injector\Injector;
use Horde_String;
use Horde_Exception;
use Throwable;
Expand All @@ -38,7 +38,7 @@ class DbAdapterFactory
'oci8' => ModernOci8::class,
];

public function create(Horde_Injector $injector): Adapter
public function create(Injector $injector): Adapter
{
$config = Horde::getDriverConfig('', 'sql');

Expand Down
6 changes: 3 additions & 3 deletions src/Factory/DbServiceFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
use Horde\Db\Adapter\Pdo\Mysql as PdoMysql;
use Horde\Db\Adapter\Pdo\Pgsql as PdoPgsql;
use Horde\Db\Adapter\Pdo\Sqlite as PdoSqlite;
use Horde_Injector;
use Horde\Injector\Injector;
use InvalidArgumentException;

/**
Expand Down Expand Up @@ -52,12 +52,12 @@ class DbServiceFactory
/**
* Create database service from configuration
*
* @param Horde_Injector $injector Dependency injector
* @param Injector $injector Dependency injector
* @param string $serviceId Service identifier ('horde', 'horde:perms', etc.)
* @return StandardHordeDbService Database service instance
* @throws InvalidArgumentException If phptype unsupported
*/
public function create(Horde_Injector $injector, string $serviceId = 'horde'): StandardHordeDbService
public function create(Injector $injector, string $serviceId = 'horde'): StandardHordeDbService
{
$loader = $injector->getInstance(ConfigLoader::class);
$state = $loader->load('horde');
Expand Down
4 changes: 2 additions & 2 deletions src/Factory/DriverRepositoryFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
use Horde\Core\Config\Driver\Sql\OracleDriver;
use Horde\Core\Config\Driver\Sql\PostgreSQLDriver;
use Horde\Core\Config\Driver\Sql\SQLiteDriver;
use Horde_Injector;
use Horde\Injector\Injector;

/**
* Factory for DriverRepository.
Expand All @@ -66,7 +66,7 @@
class DriverRepositoryFactory
{
public function __construct(
private readonly Horde_Injector $injector,
private readonly Injector $injector,
) {}

/**
Expand Down
48 changes: 48 additions & 0 deletions src/Factory/ErrorFilterFactory.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
<?php

declare(strict_types=1);

/**
* Copyright 2026 The Horde Project (http://www.horde.org/)
*
* See the enclosed file LICENSE for license information (LGPL). If you
* did not receive this file, see http://www.horde.org/licenses/lgpl21.
*
* @category Horde
* @copyright 2026 The Horde Project
* @license http://www.horde.org/licenses/lgpl21 LGPL 2.1
* @package Core
*/

namespace Horde\Core\Factory;

use Horde\Core\Config\ConfigLoader;
use Horde\Core\Middleware\ErrorFilter;
use Horde\Http\ResponseFactory;
use Horde\Http\StreamFactory;
use Horde\Injector\Injector;
use Exception;

class ErrorFilterFactory
{
public function create(Injector $injector): ErrorFilter
{
$admins = [];
try {
$configLoader = $injector->getInstance(ConfigLoader::class);
$conf = $configLoader->load('horde', 'conf.php');
$admins = $conf->get('auth.admins', []);
if (!is_array($admins)) {
$admins = [];
}
} catch (Exception $e) {
// Config not available — no admins list, safe error display only
}

return new ErrorFilter(
$admins,
new ResponseFactory(),
new StreamFactory(),
);
}
}
Loading
Loading