1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-08-12 19:54:12 +02:00

Merge remote-tracking branch 'github-phpbb/develop' into ticket/11700

* github-phpbb/develop: (586 commits)
  [ticket/11735] Display disabled checkbox in subsilver for read notifications
  [ticket/11735] Display disabled checkbox when notification is already read
  [ticket/11844] update acp/authentication language var
  [ticket/11795] Remove PM popup
  [ticket/11795] Remove outdated comment from forum_fn.js
  [ticket/11795] Move find user JS to forum_fn
  [ticket/11795] Replace TWIG with phpBB syntax in ACP
  [ticket/11795] Move MSN scripts to forum_fn.js
  [ticket/11795] Use phpBB template syntax instead of TWIG
  [ticket/11795] Move PM popup JS to forum_fn.js
  [ticket/11795] Get rid of pagination JS variables
  [ticket/11795] Get rid of onload_functions
  [ticket/11795] Use data-reset-on-edit attr to reset elements
  [ticket/11795] Redo form elements auto-focus
  [ticket/11811] Remove outline on :focus
  [ticket/11836] Fix subsilver fatal error
  [ticket/11837] Replace escaped single quote with utf-8 single quote
  [ticket/11836] Fix fatal error on unsupported provider for auth link
  [ticket/11837] Translate UCP_AUTH_LINK_NOT_SUPPORTED
  [ticket/11809] Ensure code.js is first script included after jQuery
  ...

Conflicts:
	phpBB/config/services.yml
	phpBB/develop/create_schema_files.php
	phpBB/develop/mysql_upgrader.php
	phpBB/download/file.php
	phpBB/includes/bbcode.php
	phpBB/includes/functions_container.php
	phpBB/install/database_update.php
	phpBB/install/index.php
	phpBB/phpbb/controller/helper.php
	phpBB/phpbb/controller/resolver.php
	phpBB/phpbb/request/request_interface.php
	phpBB/phpbb/session.php
	phpBB/phpbb/style/extension_path_provider.php
	phpBB/phpbb/style/path_provider.php
	phpBB/phpbb/style/path_provider_interface.php
	phpBB/phpbb/style/resource_locator.php
	phpBB/phpbb/style/style.php
	phpBB/phpbb/template/locator.php
	phpBB/phpbb/template/template.php
	phpBB/phpbb/template/twig/node/includeasset.php
	phpBB/phpbb/template/twig/node/includecss.php
	phpBB/phpbb/template/twig/node/includejs.php
	phpBB/phpbb/template/twig/twig.php
	tests/controller/helper_url_test.php
	tests/di/create_container_test.php
	tests/extension/style_path_provider_test.php
	tests/notification/notification_test.php
	tests/session/continue_test.php
	tests/session/creation_test.php
	tests/template/template_events_test.php
	tests/template/template_test_case.php
	tests/template/template_test_case_with_tree.php
	tests/test_framework/phpbb_functional_test_case.php
This commit is contained in:
Nils Adermann
2013-09-16 01:24:05 +02:00
330 changed files with 10287 additions and 6367 deletions

View File

@@ -61,7 +61,7 @@ class manager
/**
* Notification Constructor
*
*
* @param array $notification_types
* @param array $notification_methods
* @param ContainerBuilder $phpbb_container
@@ -492,15 +492,15 @@ class manager
*
* @param string|array $notification_type_name Type identifier or array of item types (only acceptable if the $item_id is identical for the specified types)
* @param int|array $item_id Identifier within the type (or array of ids)
* @param array $data Data specific for this type that will be updated
* @param mixed $parent_id Parent identifier within the type (or array of ids), used in combination with item_id if specified (Default: false; not checked)
*/
public function delete_notifications($notification_type_name, $item_id)
public function delete_notifications($notification_type_name, $item_id, $parent_id = false)
{
if (is_array($notification_type_name))
{
foreach ($notification_type_name as $type)
{
$this->delete_notifications($type, $item_id);
$this->delete_notifications($type, $item_id, $parent_id);
}
return;
@@ -510,7 +510,8 @@ class manager
$sql = 'DELETE FROM ' . $this->notifications_table . '
WHERE notification_type_id = ' . (int) $notification_type_id . '
AND ' . (is_array($item_id) ? $this->db->sql_in_set('item_id', $item_id) : 'item_id = ' . (int) $item_id);
AND ' . (is_array($item_id) ? $this->db->sql_in_set('item_id', $item_id) : 'item_id = ' . (int) $item_id) .
(($parent_id !== false) ? ' AND ' . ((is_array($parent_id) ? $this->db->sql_in_set('item_parent_id', $parent_id) : 'item_parent_id = ' . (int) $parent_id)) : '');
$this->db->sql_query($sql);
}
@@ -798,11 +799,13 @@ class manager
* Delete all notifications older than a certain time
*
* @param int $timestamp Unix timestamp to delete all notifications that were created before
* @param bool $only_unread True (default) to only prune read notifications
*/
public function prune_notifications($timestamp)
public function prune_notifications($timestamp, $only_read = true)
{
$sql = 'DELETE FROM ' . $this->notifications_table . '
WHERE notification_time < ' . (int) $timestamp;
WHERE notification_time < ' . (int) $timestamp .
(($only_read) ? ' AND notification_read = 1' : '');
$this->db->sql_query($sql);
}
@@ -836,12 +839,12 @@ class manager
protected function load_object($object_name)
{
$object = $this->phpbb_container->get($object_name);
if (method_exists($object, 'set_notification_manager'))
{
$object->set_notification_manager($this);
}
return $object;
}

View File

@@ -0,0 +1,163 @@
<?php
/**
*
* @package notifications
* @copyright (c) 2013 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/
/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
exit;
}
class phpbb_notification_type_group_request extends phpbb_notification_type_base
{
/**
* {@inheritdoc}
*/
public function get_type()
{
return 'group_request';
}
/**
* {@inheritdoc}
*/
public static $notification_option = array(
'lang' => 'NOTIFICATION_TYPE_GROUP_REQUEST',
);
/**
* {@inheritdoc}
*/
public function is_available()
{
// Leader of any groups?
$sql = 'SELECT group_id
FROM ' . USER_GROUP_TABLE . '
WHERE user_id = ' . (int) $this->user->data['user_id'] . '
AND group_leader = 1';
$result = $this->db->sql_query_limit($sql, 1);
$row = $this->db->sql_fetchrow($result);
$this->db->sql_freeresult($result);
return (!empty($row)) ? true : false;
}
/**
* {@inheritdoc}
*/
public static function get_item_id($group)
{
return (int) $group['user_id'];
}
/**
* {@inheritdoc}
*/
public static function get_item_parent_id($group)
{
// Group id is the parent
return (int) $group['group_id'];
}
/**
* {@inheritdoc}
*/
public function find_users_for_notification($group, $options = array())
{
$options = array_merge(array(
'ignore_users' => array(),
), $options);
$sql = 'SELECT user_id
FROM ' . USER_GROUP_TABLE . '
WHERE group_leader = 1
AND group_id = ' . (int) $group['group_id'];
$result = $this->db->sql_query($sql);
$user_ids = array();
while ($row = $this->db->sql_fetchrow($result))
{
$user_ids[] = (int) $row['user_id'];
}
$this->db->sql_freeresult($result);
$this->user_loader->load_users($user_ids);
return $this->check_user_notification_options($user_ids, $options);
}
/**
* {@inheritdoc}
*/
public function get_avatar()
{
return $this->user_loader->get_avatar($this->item_id);
}
/**
* {@inheritdoc}
*/
public function get_title()
{
$username = $this->user_loader->get_username($this->item_id, 'no_profile');
return $this->user->lang('NOTIFICATION_GROUP_REQUEST', $username, $this->get_data('group_name'));
}
/**
* {@inheritdoc}
*/
public function get_email_template()
{
return 'group_request';
}
/**
* {@inheritdoc}
*/
public function get_email_template_variables()
{
$user_data = $this->user_loader->get_user($this->item_id);
return array(
'GROUP_NAME' => htmlspecialchars_decode($this->get_data('group_name')),
'REQUEST_USERNAME' => htmlspecialchars_decode($user_data['username']),
'U_PENDING' => generate_board_url() . "/ucp.{$this->php_ext}?i=groups&mode=manage&action=list&g={$this->item_parent_id}",
'U_GROUP' => generate_board_url() . "/memberlist.{$this->php_ext}?mode=group&g={$this->item_parent_id}",
);
}
/**
* {@inheritdoc}
*/
public function get_url()
{
return append_sid($this->phpbb_root_path . 'ucp.' . $this->php_ext, "i=groups&mode=manage&action=list&g={$this->item_parent_id}");
}
/**
* {@inheritdoc}
*/
public function users_to_query()
{
return array($this->item_id);
}
/**
* {@inheritdoc}
*/
public function create_insert_array($group, $pre_create_data = array())
{
$this->set_data('group_name', $group['group_name']);
return parent::create_insert_array($group, $pre_create_data);
}
}

View File

@@ -0,0 +1,118 @@
<?php
/**
*
* @package notifications
* @copyright (c) 2013 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/
/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
exit;
}
class phpbb_notification_type_group_request_approved extends phpbb_notification_type_base
{
/**
* {@inheritdoc}
*/
public function get_type()
{
return 'group_request_approved';
}
/**
* {@inheritdoc}
*/
public function is_available()
{
return false;
}
/**
* {@inheritdoc}
*/
public static function get_item_id($group)
{
return (int) $group['group_id'];
}
/**
* {@inheritdoc}
*/
public static function get_item_parent_id($group)
{
return 0;
}
/**
* {@inheritdoc}
*/
public function find_users_for_notification($group, $options = array())
{
$users = array();
$group['user_ids'] = (!is_array($group['user_ids'])) ? array($group['user_ids']) : $group['user_ids'];
foreach ($group['user_ids'] as $user_id)
{
$users[$user_id] = array('');
}
return $users;
}
/**
* {@inheritdoc}
*/
public function get_title()
{
return $this->user->lang('NOTIFICATION_GROUP_REQUEST_APPROVED', $this->get_data('group_name'));
}
/**
* {@inheritdoc}
*/
public function get_url()
{
return append_sid($this->phpbb_root_path . 'memberlist.' . $this->php_ext, "mode=group&g={$this->item_id}");
}
/**
* {@inheritdoc}
*/
public function create_insert_array($group, $pre_create_data = array())
{
$this->set_data('group_name', $group['group_name']);
return parent::create_insert_array($group, $pre_create_data);
}
/**
* {@inheritdoc}
*/
public function users_to_query()
{
return array();
}
/**
* {@inheritdoc}
*/
public function get_email_template()
{
return false;
}
/**
* {@inheritdoc}
*/
public function get_email_template_variables()
{
return array();
}
}