mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-08 12:28:52 +00: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:
parent
8aaa3e055f
commit
fb139a8820
4 changed files with 21 additions and 18 deletions
|
@ -113,7 +113,7 @@ class acp_board
|
||||||
$avatar_vars = array();
|
$avatar_vars = array();
|
||||||
foreach ($avatar_drivers as $current_driver)
|
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
|
* First grab the settings for enabling/disabling the avatar
|
||||||
|
|
|
@ -522,26 +522,26 @@ class acp_groups
|
||||||
$avatars_enabled = false;
|
$avatars_enabled = false;
|
||||||
$selected_driver = $phpbb_avatar_manager->clean_driver_name($request->variable('avatar_driver', $avatar_data['avatar_type']));
|
$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;
|
$avatars_enabled = true;
|
||||||
$config_name = preg_replace('#^avatar\.driver.#', '', $driver);
|
$config_name = $phpbb_avatar_manager->get_driver_config_name($driver);
|
||||||
$template->set_filenames(array(
|
$template->set_filenames(array(
|
||||||
'avatar' => "acp_avatar_options_$config_name.html",
|
'avatar' => "acp_avatar_options_$config_name.html",
|
||||||
));
|
));
|
||||||
|
|
||||||
if ($driver->prepare_form($template, $avatar_data, $avatar_error))
|
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);
|
$driver_upper = strtoupper($driver_name);
|
||||||
$template->assign_block_vars('avatar_drivers', array(
|
$template->assign_block_vars('avatar_drivers', array(
|
||||||
'L_TITLE' => $user->lang($driver_upper . '_TITLE'),
|
'L_TITLE' => $user->lang($driver_upper . '_TITLE'),
|
||||||
'L_EXPLAIN' => $user->lang($driver_upper . '_EXPLAIN'),
|
'L_EXPLAIN' => $user->lang($driver_upper . '_EXPLAIN'),
|
||||||
|
|
||||||
'DRIVER' => $driver_name,
|
'DRIVER' => $driver_name,
|
||||||
'SELECTED' => $driver == $selected_driver,
|
'SELECTED' => $current_driver == $selected_driver,
|
||||||
'OUTPUT' => $template->assign_display('avatar'),
|
'OUTPUT' => $template->assign_display('avatar'),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,17 +47,19 @@ class phpbb_avatar_manager
|
||||||
* Get the driver object specified by the avatar type
|
* Get the driver object specified by the avatar type
|
||||||
*
|
*
|
||||||
* @param string $avatar_type Avatar type; by default an avatar's service container name
|
* @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
|
* @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...
|
// Legacy stuff...
|
||||||
switch ($avatar_type)
|
switch ($avatar_type)
|
||||||
{
|
{
|
||||||
|
@ -72,7 +74,7 @@ class phpbb_avatar_manager
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isset(self::$valid_drivers[$avatar_type]))
|
if (!isset($avatar_drivers[$avatar_type]))
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -89,17 +91,15 @@ class phpbb_avatar_manager
|
||||||
/**
|
/**
|
||||||
* Load the list of valid drivers
|
* Load the list of valid drivers
|
||||||
* This is executed once and fills self::$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))
|
if (!empty($this->avatar_drivers))
|
||||||
{
|
{
|
||||||
self::$valid_drivers = array();
|
self::$valid_drivers = array();
|
||||||
foreach ($this->avatar_drivers as $driver)
|
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();
|
self::$valid_drivers[$driver->get_name()] = $driver->get_name();
|
||||||
}
|
}
|
||||||
|
@ -138,7 +138,7 @@ class phpbb_avatar_manager
|
||||||
{
|
{
|
||||||
if (self::$valid_drivers === false)
|
if (self::$valid_drivers === false)
|
||||||
{
|
{
|
||||||
$this->load_valid_drivers($force_all);
|
$this->load_valid_drivers();
|
||||||
}
|
}
|
||||||
|
|
||||||
return self::$valid_drivers;
|
return self::$valid_drivers;
|
||||||
|
|
|
@ -38,10 +38,13 @@ class phpbb_avatar_manager_test extends PHPUnit_Framework_TestCase
|
||||||
|
|
||||||
public function test_get_driver()
|
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);
|
$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);
|
$this->assertNull($driver);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue