aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/phpbb')
-rw-r--r--phpBB/phpbb/console/command/extension/enable.php9
-rw-r--r--phpBB/phpbb/install/module/install_finish/task/install_extensions.php8
-rw-r--r--phpBB/phpbb/log/log.php2
-rw-r--r--phpBB/phpbb/notification/manager.php8
-rw-r--r--phpBB/phpbb/notification/method/email.php10
-rw-r--r--phpBB/phpbb/notification/method/jabber.php10
-rw-r--r--phpBB/phpbb/notification/method/messenger_base.php15
-rw-r--r--phpBB/phpbb/textformatter/s9e/factory.php3
8 files changed, 56 insertions, 9 deletions
diff --git a/phpBB/phpbb/console/command/extension/enable.php b/phpBB/phpbb/console/command/extension/enable.php
index a8312d5c15..f92de0069c 100644
--- a/phpBB/phpbb/console/command/extension/enable.php
+++ b/phpBB/phpbb/console/command/extension/enable.php
@@ -37,11 +37,18 @@ class enable extends command
$io = new SymfonyStyle($input, $output);
$name = $input->getArgument('extension-name');
+ $extension = $this->manager->get_extension($name);
+
+ if (!$extension->is_enableable())
+ {
+ $io->error($this->user->lang('CLI_EXTENSION_NOT_ENABLEABLE', $name));
+ return 1;
+ }
if ($this->manager->is_enabled($name))
{
$io->error($this->user->lang('CLI_EXTENSION_ENABLED', $name));
- return 2;
+ return 1;
}
$this->manager->enable($name);
diff --git a/phpBB/phpbb/install/module/install_finish/task/install_extensions.php b/phpBB/phpbb/install/module/install_finish/task/install_extensions.php
index 553a30ea28..eee13a6581 100644
--- a/phpBB/phpbb/install/module/install_finish/task/install_extensions.php
+++ b/phpBB/phpbb/install/module/install_finish/task/install_extensions.php
@@ -118,6 +118,14 @@ class install_extensions extends \phpbb\install\task_base
try
{
+ $extension = $this->extension_manager->get_extension($ext_name);
+
+ if (!$extension->is_enableable())
+ {
+ $this->iohandler->add_log_message(array('CLI_EXTENSION_NOT_ENABLEABLE', $ext_name));
+ continue;
+ }
+
$this->extension_manager->enable($ext_name);
$extensions = $this->get_extensions();
diff --git a/phpBB/phpbb/log/log.php b/phpBB/phpbb/log/log.php
index cf3db365a4..5aad7ee326 100644
--- a/phpBB/phpbb/log/log.php
+++ b/phpBB/phpbb/log/log.php
@@ -747,7 +747,7 @@ class log implements \phpbb\log\log_interface
foreach ($log as $key => $row)
{
$log[$key]['viewtopic'] = (isset($topic_auth['f_read'][$row['topic_id']])) ? append_sid("{$this->phpbb_root_path}viewtopic.{$this->php_ext}", 'f=' . $topic_auth['f_read'][$row['topic_id']] . '&t=' . $row['topic_id']) : false;
- $log[$key]['viewpost'] = (isset($topic_auth['f_read'][$row['topic_id']]) && $row['post_id']) ? append_sid("{$this->phpbb_root_path}viewtopic.{$this->php_ext}", 'f=' . $topic_auth['f_read'][$row['topic_id']] . '&t=' . $row['topic_id'] . '&p=' . $row['post_id']) : false;
+ $log[$key]['viewpost'] = (isset($topic_auth['f_read'][$row['topic_id']]) && $row['post_id']) ? append_sid("{$this->phpbb_root_path}viewtopic.{$this->php_ext}", 'f=' . $topic_auth['f_read'][$row['topic_id']] . '&t=' . $row['topic_id'] . '&p=' . $row['post_id'] . '#p' . $row['post_id']) : false;
$log[$key]['viewlogs'] = (isset($topic_auth['m_'][$row['topic_id']])) ? append_sid("{$this->phpbb_root_path}mcp.{$this->php_ext}", 'i=logs&mode=topic_logs&t=' . $row['topic_id'], true, $this->user->session_id) : false;
}
}
diff --git a/phpBB/phpbb/notification/manager.php b/phpBB/phpbb/notification/manager.php
index 6923d96392..1cd7e5bc9a 100644
--- a/phpBB/phpbb/notification/manager.php
+++ b/phpBB/phpbb/notification/manager.php
@@ -475,9 +475,10 @@ class manager
if ($type instanceof \phpbb\notification\type\type_interface && $type->is_available())
{
$options = array_merge(array(
- 'id' => $type->get_type(),
- 'lang' => 'NOTIFICATION_TYPE_' . strtoupper($type->get_type()),
- 'group' => 'NOTIFICATION_GROUP_MISCELLANEOUS',
+ 'type' => $type,
+ 'id' => $type->get_type(),
+ 'lang' => 'NOTIFICATION_TYPE_' . strtoupper($type->get_type()),
+ 'group' => 'NOTIFICATION_GROUP_MISCELLANEOUS',
), (($type::$notification_option !== false) ? $type::$notification_option : array()));
$this->subscription_types[$options['group']][$options['id']] = $options;
@@ -509,6 +510,7 @@ class manager
foreach ($this->get_available_subscription_methods() as $method_name => $method)
{
$subscription_methods[$method_name] = array(
+ 'method' => $method,
'id' => $method->get_type(),
'lang' => str_replace('.', '_', strtoupper($method->get_type())),
);
diff --git a/phpBB/phpbb/notification/method/email.php b/phpBB/phpbb/notification/method/email.php
index 21a6559012..56dd1e9367 100644
--- a/phpBB/phpbb/notification/method/email.php
+++ b/phpBB/phpbb/notification/method/email.php
@@ -13,6 +13,8 @@
namespace phpbb\notification\method;
+use phpbb\notification\type\type_interface;
+
/**
* Email notification method class
* This class handles sending emails for notifications
@@ -56,10 +58,14 @@ class email extends \phpbb\notification\method\messenger_base
/**
* Is this method available for the user?
* This is checked on the notifications options
+ *
+ * @param type_interface $notification_type An optional instance of a notification type. If provided, this
+ * method additionally checks if the type provides an email template.
+ * @return bool
*/
- public function is_available()
+ public function is_available(type_interface $notification_type = null)
{
- return $this->config['email_enable'] && $this->user->data['user_email'];
+ return parent::is_available($notification_type) && $this->config['email_enable'] && $this->user->data['user_email'];
}
/**
diff --git a/phpBB/phpbb/notification/method/jabber.php b/phpBB/phpbb/notification/method/jabber.php
index 509c6b432c..81fdb378e2 100644
--- a/phpBB/phpbb/notification/method/jabber.php
+++ b/phpBB/phpbb/notification/method/jabber.php
@@ -13,6 +13,8 @@
namespace phpbb\notification\method;
+use phpbb\notification\type\type_interface;
+
/**
* Jabber notification method class
* This class handles sending Jabber messages for notifications
@@ -56,10 +58,14 @@ class jabber extends \phpbb\notification\method\messenger_base
/**
* Is this method available for the user?
* This is checked on the notifications options
+ *
+ * @param type_interface $notification_type An optional instance of a notification type. If provided, this
+ * method additionally checks if the type provides an email template.
+ * @return bool
*/
- public function is_available()
+ public function is_available(type_interface $notification_type = null)
{
- return ($this->global_available() && $this->user->data['user_jabber']);
+ return parent::is_available($notification_type) && $this->global_available() && $this->user->data['user_jabber'];
}
/**
diff --git a/phpBB/phpbb/notification/method/messenger_base.php b/phpBB/phpbb/notification/method/messenger_base.php
index 1f5525accc..32e79aa936 100644
--- a/phpBB/phpbb/notification/method/messenger_base.php
+++ b/phpBB/phpbb/notification/method/messenger_base.php
@@ -13,6 +13,8 @@
namespace phpbb\notification\method;
+use phpbb\notification\type\type_interface;
+
/**
* Abstract notification method handling email and jabber notifications
* using the phpBB messenger.
@@ -43,6 +45,19 @@ abstract class messenger_base extends \phpbb\notification\method\base
}
/**
+ * Is this method available for the user?
+ * This is checked on the notifications options
+ *
+ * @param type_interface $notification_type An optional instance of a notification type. This method returns false
+ * only if the type is provided and if it doesn't provide an email template.
+ * @return bool
+ */
+ public function is_available(type_interface $notification_type = null)
+ {
+ return $notification_type === null || $notification_type->get_email_template() !== false;
+ }
+
+ /**
* Notify using phpBB messenger
*
* @param int $notify_method Notify method for messenger (e.g. NOTIFY_IM)
diff --git a/phpBB/phpbb/textformatter/s9e/factory.php b/phpBB/phpbb/textformatter/s9e/factory.php
index 7719ce5afa..3f2e0ab8cb 100644
--- a/phpBB/phpbb/textformatter/s9e/factory.php
+++ b/phpBB/phpbb/textformatter/s9e/factory.php
@@ -323,6 +323,9 @@ class factory implements \phpbb\textformatter\cache_interface
// Only parse emoticons at the beginning of the text or if they're preceded by any
// one of: a new line, a space, a dot, or a right square bracket
$configurator->Emoticons->notAfter = '[^\\n .\\]]';
+
+ // Ignore emoticons that are immediately followed by a "word" character
+ $configurator->Emoticons->notBefore = '\\w';
}
// Load the censored words