1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-07-30 21:40:43 +02:00

Merge branch '3.3.x'

This commit is contained in:
Marc Alexander
2019-10-03 11:07:03 +02:00
7 changed files with 84 additions and 13 deletions

View File

@@ -215,10 +215,8 @@ class acp_extensions
}
$extension = $this->ext_manager->get_extension($ext_name);
if (!$extension->is_enableable())
{
trigger_error($this->user->lang['EXTENSION_NOT_ENABLEABLE'] . adm_back_link($this->u_action), E_USER_WARNING);
}
$this->check_is_enableable($extension);
if ($this->ext_manager->is_enabled($ext_name))
{
@@ -252,10 +250,8 @@ class acp_extensions
}
$extension = $this->ext_manager->get_extension($ext_name);
if (!$extension->is_enableable())
{
trigger_error($this->user->lang['EXTENSION_NOT_ENABLEABLE'] . adm_back_link($this->u_action), E_USER_WARNING);
}
$this->check_is_enableable($extension);
try
{
@@ -1130,4 +1126,28 @@ class acp_extensions
));
}
}
/**
* Checks whether the extension can be enabled. Triggers error if not.
* Error message can be set by the extension.
*
* @param \phpbb\extension\extension_interface $extension Extension to check
*/
protected function check_is_enableable(\phpbb\extension\extension_interface $extension)
{
$message = $extension->is_enableable();
if ($message !== true)
{
if (empty($message))
{
$message = $this->user->lang('EXTENSION_NOT_ENABLEABLE');
}
else if (is_array($message))
{
$message = implode('<br>', $message);
}
trigger_error($message . adm_back_link($this->u_action), E_USER_WARNING);
}
}
}

View File

@@ -69,7 +69,10 @@ class enable extends command
}
else
{
$io->error($this->user->lang('CLI_EXTENSION_ENABLE_FAILURE', $name));
$enableable = $this->manager->get_extension($name)->is_enableable();
$message = !empty($enableable) ? $enableable : $this->user->lang('CLI_EXTENSION_ENABLE_FAILURE');
$message = is_array($message) ? implode(PHP_EOL, $message) : $message;
$io->error($message, $name);
return 1;
}
}

View File

@@ -22,7 +22,8 @@ interface extension_interface
/**
* Indicate whether or not the extension can be enabled.
*
* @return bool
* @return bool|array True if extension is enableable, array of reasons
* if not, false for generic reason.
*/
public function is_enableable();