1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-02-23 03:19:01 +01:00

[feature/avatars] Fix behavior of avatar manager and variables

The $force_all variable was only partially removed and the behavior was
not consistent in all files.

PHPBB3-10018
This commit is contained in:
Marc Alexander 2012-12-04 15:12:04 +01:00
parent 8aaa3e055f
commit fb139a8820
4 changed files with 21 additions and 18 deletions

View File

@ -113,7 +113,7 @@ class acp_board
$avatar_vars = array();
foreach ($avatar_drivers as $current_driver)
{
$driver = $phpbb_avatar_manager->get_driver($current_driver);
$driver = $phpbb_avatar_manager->get_driver($current_driver, false);
/*
* First grab the settings for enabling/disabling the avatar

View File

@ -522,26 +522,26 @@ class acp_groups
$avatars_enabled = false;
$selected_driver = $phpbb_avatar_manager->clean_driver_name($request->variable('avatar_driver', $avatar_data['avatar_type']));
foreach ($avatar_drivers as $driver)
foreach ($avatar_drivers as $current_driver)
{
$driver = $phpbb_avatar_manager->get_driver($driver);
$driver = $phpbb_avatar_manager->get_driver($current_driver);
$avatars_enabled = true;
$config_name = preg_replace('#^avatar\.driver.#', '', $driver);
$config_name = $phpbb_avatar_manager->get_driver_config_name($driver);
$template->set_filenames(array(
'avatar' => "acp_avatar_options_$config_name.html",
));
if ($driver->prepare_form($template, $avatar_data, $avatar_error))
{
$driver_name = $phpbb_avatar_manager->prepare_driver_name($driver);
$driver_name = $phpbb_avatar_manager->prepare_driver_name($current_driver);
$driver_upper = strtoupper($driver_name);
$template->assign_block_vars('avatar_drivers', array(
'L_TITLE' => $user->lang($driver_upper . '_TITLE'),
'L_EXPLAIN' => $user->lang($driver_upper . '_EXPLAIN'),
'DRIVER' => $driver_name,
'SELECTED' => $driver == $selected_driver,
'SELECTED' => $current_driver == $selected_driver,
'OUTPUT' => $template->assign_display('avatar'),
));
}

View File

@ -47,17 +47,19 @@ class phpbb_avatar_manager
* Get the driver object specified by the avatar type
*
* @param string $avatar_type Avatar type; by default an avatar's service container name
* @param bool $force_all Grab all avatar drivers, no matter if enabled or not
* @param bool $load_valid Load only valid avatars
*
* @return object Avatar driver object
*/
public function get_driver($avatar_type, $force_all = false)
public function get_driver($avatar_type, $load_valid = true)
{
if (self::$valid_drivers === false || $force_all)
if (self::$valid_drivers === false)
{
$this->load_valid_drivers($force_all);
$this->load_valid_drivers();
}
$avatar_drivers = ($load_valid) ? self::$valid_drivers : $this->get_all_drivers();
// Legacy stuff...
switch ($avatar_type)
{
@ -72,7 +74,7 @@ class phpbb_avatar_manager
break;
}
if (!isset(self::$valid_drivers[$avatar_type]))
if (!isset($avatar_drivers[$avatar_type]))
{
return null;
}
@ -89,17 +91,15 @@ class phpbb_avatar_manager
/**
* Load the list of valid drivers
* This is executed once and fills self::$valid_drivers
*
* @param bool $force_all Force showing all avatar drivers
*/
protected function load_valid_drivers($force_all = false)
protected function load_valid_drivers()
{
if (!empty($this->avatar_drivers))
{
self::$valid_drivers = array();
foreach ($this->avatar_drivers as $driver)
{
if ($force_all || $this->is_enabled($driver))
if ($this->is_enabled($driver))
{
self::$valid_drivers[$driver->get_name()] = $driver->get_name();
}
@ -138,7 +138,7 @@ class phpbb_avatar_manager
{
if (self::$valid_drivers === false)
{
$this->load_valid_drivers($force_all);
$this->load_valid_drivers();
}
return self::$valid_drivers;

View File

@ -38,10 +38,13 @@ class phpbb_avatar_manager_test extends PHPUnit_Framework_TestCase
public function test_get_driver()
{
$driver = $this->manager->get_driver('avatar.driver.foobar', true);
$driver = $this->manager->get_driver('avatar.driver.foobar', false);
$this->assertEquals('avatar.driver.foobar', $driver);
$driver = $this->manager->get_driver('avatar.driver.foo_wrong', true);
$driver = $this->manager->get_driver('avatar.driver.foo_wrong', false);
$this->assertNull($driver);
$driver = $this->manager->get_driver('avatar.driver.foobar');
$this->assertNull($driver);
}