diff options
Diffstat (limited to 'phpBB')
| -rw-r--r-- | phpBB/language/en/common.php | 7 | ||||
| -rw-r--r-- | phpBB/phpbb/notification/type/post.php | 23 | 
2 files changed, 27 insertions, 3 deletions
| diff --git a/phpBB/language/en/common.php b/phpBB/language/en/common.php index 677b228cc6..956b593476 100644 --- a/phpBB/language/en/common.php +++ b/phpBB/language/en/common.php @@ -422,14 +422,16 @@ $lang = array_merge($lang, array(  	'NOT_WATCHING_FORUM'		=> 'You are no longer subscribed to updates on this forum.',  	'NOT_WATCHING_TOPIC'		=> 'You are no longer subscribed to this topic.',  	'NOTIFICATIONS'				=> 'Notifications', -	// This applies for NOTIFICATION_BOOKMARK, NOTIFICATION_POST, and NOTIFICATION_QUOTE. +	// This applies for NOTIFICATION_BOOKMARK and NOTIFICATION_POST.  	// %1$s will return a list of users that's concatenated using "," and "and" - see STRING_LIST  	// Once the user count reaches 5 users or more, the list is trimmed using NOTIFICATION_X_OTHERS +	// Once the user count reaches 20 users or more, the list is trimmed using NOTIFICATION_MANY_OTHERS  	// Examples:  	// A replied...  	// A and B replied...  	// A, B and C replied...  	// A, B, C and 2 others replied... +	// A, B, C and many others replied...  	'NOTIFICATION_BOOKMARK'				=> array(  		1	=> '%1$s replied to the topic ā%2$sā you have bookmarked.',  	), @@ -454,7 +456,8 @@ $lang = array_merge($lang, array(  	'NOTIFICATION_TOPIC_IN_QUEUE'		=> 'A new topic titled "%2$s" was posted by %1$s and needs approval.',  	'NOTIFICATION_TYPE_NOT_EXIST'		=> 'The notification type "%s" is missing from the file system.',  	'NOTIFICATION_ADMIN_ACTIVATE_USER'	=> 'The user ā%1$sā is newly registered and requires activation.', -	// Used in conjuction with NOTIFICATION_BOOKMARK, NOTIFICATION_POST, and NOTIFICATION_QUOTE. +	// Used in conjuction with NOTIFICATION_BOOKMARK and NOTIFICATION_POST. +	'NOTIFICATION_MANY_OTHERS'			=> 'many others',  	'NOTIFICATION_X_OTHERS'				=> array(  		2	=> '%d others',  	), diff --git a/phpBB/phpbb/notification/type/post.php b/phpBB/phpbb/notification/type/post.php index 987651887f..826be0c992 100644 --- a/phpBB/phpbb/notification/type/post.php +++ b/phpBB/phpbb/notification/type/post.php @@ -210,7 +210,11 @@ class post extends \phpbb\notification\type\base  			}  		} -		if ($trimmed_responders_cnt) +		if ($trimmed_responders_cnt > 20) +		{ +			$usernames[] = $this->user->lang('NOTIFICATION_MANY_OTHERS'); +		} +		else if ($trimmed_responders_cnt)  		{  			$usernames[] = $this->user->lang('NOTIFICATION_X_OTHERS', $trimmed_responders_cnt);  		} @@ -403,6 +407,14 @@ class post extends \phpbb\notification\type\base  		$responders = ($responders === null) ? array() : $responders; +		// Do not add more then 25 responder, +		// we trim the username list to "a, b, c and x others" anyway +		// so there is no use to add all of them anyway. +		if (sizeof($responders) > 25) +		{ +			return array(); +		} +  		foreach ($responders as $responder)  		{  			// Do not add them as a responder multiple times @@ -420,6 +432,15 @@ class post extends \phpbb\notification\type\base  		$this->set_data('responders', $responders);  		$serialized_data = serialize($this->get_data(false)); + +		// If the data is longer then 4000 characters, it would cause a SQL error +		// so we just don't add the username to the list, when this would be the +		// case. +		if (utf8_strlen($serialized_data) >= 4000) +		{ +			return array(); +		} +  		return array('notification_data' => $serialized_data);  	}  } | 
