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

[feature/avatars] Get list of enabled drivers from avatar manager

This shouldn't be done in the avatar drivers. We need to force the
display all avatar drivers in the ACP or it won't be possible to enable
avatars after they have been disabled.

PHPBB3-10018
This commit is contained in:
Marc Alexander 2012-11-29 23:50:17 +01:00
parent 81a1a21185
commit f4ad60e2cf
8 changed files with 90 additions and 98 deletions

View File

@ -108,7 +108,7 @@ class acp_board
case 'avatar':
$phpbb_avatar_manager = $phpbb_container->get('avatar.manager');
$avatar_drivers = $phpbb_avatar_manager->get_valid_drivers();
$avatar_drivers = $phpbb_avatar_manager->get_valid_drivers(true);
sort($avatar_drivers);
$avatar_vars = array();
foreach ($avatar_drivers as $driver)

View File

@ -528,27 +528,24 @@ class acp_groups
{
$avatar = $phpbb_avatar_manager->get_driver($driver);
if ($avatar->is_enabled())
$avatars_enabled = true;
$config_name = preg_replace('#^avatar\.driver.#', '', $driver);
$template->set_filenames(array(
'avatar' => "acp_avatar_options_$config_name.html",
));
if ($avatar->prepare_form($template, $avatar_data, $avatar_error))
{
$avatars_enabled = true;
$config_name = preg_replace('#^avatar\.driver.#', '', $driver);
$template->set_filenames(array(
'avatar' => "acp_avatar_options_$config_name.html",
$driver_name = $phpbb_avatar_manager->prepare_driver_name($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 == $focused_driver,
'OUTPUT' => $template->assign_display('avatar'),
));
if ($avatar->prepare_form($template, $avatar_data, $avatar_error))
{
$driver_name = $phpbb_avatar_manager->prepare_driver_name($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 == $focused_driver,
'OUTPUT' => $template->assign_display('avatar'),
));
}
}
}
}

View File

@ -1809,28 +1809,25 @@ class acp_users
{
$avatar = $phpbb_avatar_manager->get_driver($driver);
if ($avatar->is_enabled())
$avatars_enabled = true;
$config_name = preg_replace('#^avatar\.driver.#', '', $driver);
$template->set_filenames(array(
'avatar' => "acp_avatar_options_$config_name.html",
));
if ($avatar->prepare_form($template, $avatar_data, $error))
{
$avatars_enabled = true;
$config_name = preg_replace('#^avatar\.driver.#', '', $driver);
$template->set_filenames(array(
'avatar' => "acp_avatar_options_$config_name.html",
$driver_name = $phpbb_avatar_manager->prepare_driver_name($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 == $focused_driver,
'OUTPUT' => $template->assign_display('avatar'),
));
if ($avatar->prepare_form($template, $avatar_data, $error))
{
$driver_name = $phpbb_avatar_manager->prepare_driver_name($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 == $focused_driver,
'OUTPUT' => $template->assign_display('avatar'),
));
}
}
}
}

View File

@ -127,16 +127,6 @@ abstract class phpbb_avatar_driver implements phpbb_avatar_driver_interface
return true;
}
/**
* @inheritdoc
*/
public function is_enabled()
{
$driver = preg_replace('#^phpbb_avatar_driver_#', '', get_class($this));
return $this->config["allow_avatar_$driver"];
}
/**
* @inheritdoc
*/

View File

@ -91,13 +91,6 @@ interface phpbb_avatar_driver_interface
*/
public function delete($row);
/**
* Check if avatar is enabled
*
* @return bool True if avatar is enabled, false if it's disabled
*/
public function is_enabled();
/**
* Get the avatars template name
*

View File

@ -101,15 +101,20 @@ 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()
protected function load_valid_drivers($force_all = false)
{
if (!empty($this->avatar_drivers))
{
self::$valid_drivers = array();
foreach ($this->avatar_drivers as $driver)
{
self::$valid_drivers[$driver->get_name()] = $driver->get_name();
if ($force_all || $this->is_enabled($driver))
{
self::$valid_drivers[$driver->get_name()] = $driver->get_name();
}
}
}
}
@ -117,13 +122,15 @@ class phpbb_avatar_manager
/**
* Get a list of valid avatar drivers
*
* @param bool $force_all Force showing all avatar drivers
*
* @return array Array containing a list of the valid avatar drivers
*/
public function get_valid_drivers()
public function get_valid_drivers($force_all = false)
{
if (self::$valid_drivers === false)
{
$this->load_valid_drivers();
$this->load_valid_drivers($force_all);
}
return self::$valid_drivers;
@ -178,4 +185,18 @@ class phpbb_avatar_manager
{
return str_replace('.', '_', $name);
}
/**
* Check if avatar is enabled
*
* @param object $driver Avatar driver object
*
* @return bool True if avatar is enabled, false if it's disabled
*/
public function is_enabled($driver)
{
$config_name = preg_replace('#^phpbb_avatar_driver_#', '', get_class($driver));
return $this->config["allow_avatar_{$config_name}"];
}
}

View File

@ -653,26 +653,23 @@ class ucp_groups
{
$avatar = $phpbb_avatar_manager->get_driver($driver);
if ($avatar->is_enabled())
$avatars_enabled = true;
$template->set_filenames(array(
'avatar' => $avatar->get_template_name(),
));
if ($avatar->prepare_form($template, $avatar_data, $avatar_error))
{
$avatars_enabled = true;
$template->set_filenames(array(
'avatar' => $avatar->get_template_name(),
$driver_name = $phpbb_avatar_manager->prepare_driver_name($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 == $focused_driver,
'OUTPUT' => $template->assign_display('avatar'),
));
if ($avatar->prepare_form($template, $avatar_data, $avatar_error))
{
$driver_name = $phpbb_avatar_manager->prepare_driver_name($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 == $focused_driver,
'OUTPUT' => $template->assign_display('avatar'),
));
}
}
}
}

View File

@ -633,27 +633,24 @@ class ucp_profile
{
$avatar = $phpbb_avatar_manager->get_driver($driver);
if ($avatar->is_enabled())
$avatars_enabled = true;
$template->set_filenames(array(
'avatar' => $avatar->get_template_name(),
));
if ($avatar->prepare_form($template, $avatar_data, $error))
{
$avatars_enabled = true;
$template->set_filenames(array(
'avatar' => $avatar->get_template_name(),
$driver_name = $phpbb_avatar_manager->prepare_driver_name($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 == $focused_driver,
'OUTPUT' => $template->assign_display('avatar'),
));
if ($avatar->prepare_form($template, $avatar_data, $error))
{
$driver_name = $phpbb_avatar_manager->prepare_driver_name($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 == $focused_driver,
'OUTPUT' => $template->assign_display('avatar'),
));
}
}
}
}