Skip to content

Commit

Permalink
Merge branch 'master' into release-1.2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
iMattPro committed Apr 20, 2023
2 parents 80871c1 + 9384908 commit c204fe8
Show file tree
Hide file tree
Showing 11 changed files with 72 additions and 33 deletions.
11 changes: 5 additions & 6 deletions controller/acp_controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -230,12 +230,11 @@ protected function action_add()
}

// Prepare announcement text for storage
$uid = $bitfield = $options = '';
generate_text_for_storage(
$data['announcement_text'],
$uid,
$bitfield,
$options,
$data['announcement_uid'],
$data['announcement_bitfield'],
$data['announcement_flags'],
!$this->request->variable('disable_bbcode', false),
!$this->request->variable('disable_magic_url', false),
!$this->request->variable('disable_smilies', false)
Expand All @@ -261,10 +260,10 @@ protected function action_add()
}

// Prepare a fresh announcement preview
$announcement_text_preview = $id || $preview ? generate_text_for_display($data['announcement_text'], '', '', ext::FLAGS) : '';
$announcement_text_preview = $id || $preview ? generate_text_for_display($data['announcement_text'], $data['announcement_uid'], $data['announcement_bitfield'], $data['announcement_flags']) : '';

// Prepare the announcement text for editing inside the text box
$announcement_text_edit = generate_text_for_edit($data['announcement_text'], '', ext::FLAGS);
$announcement_text_edit = generate_text_for_edit($data['announcement_text'], $data['announcement_uid'], $data['announcement_flags']);

// Output data to the template
$this->template->assign_vars([
Expand Down
17 changes: 8 additions & 9 deletions event/listener.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@

namespace phpbb\boardannouncements\event;

use phpbb\boardannouncements\ext;
use phpbb\boardannouncements\manager\manager;
use phpbb\config\config;
use phpbb\controller\helper;
Expand Down Expand Up @@ -107,28 +106,28 @@ public function display_board_announcements()

$board_announcements_data = $this->manager->get_visible_announcements($this->user->data['user_id']);

foreach ($board_announcements_data as $board_announcement_data)
foreach ($board_announcements_data as $data)
{
// Do not continue if announcements are only displayed on the board index, and the user is not currently viewing the board index
if ($board_announcement_data['announcement_indexonly'] && $this->user->page['page_name'] !== "index.$this->php_ext")
if ($data['announcement_indexonly'] && $this->user->page['page_name'] !== "index.$this->php_ext")
{
continue;
}

// Do not continue if announcement has been dismissed
if ($this->request->variable($this->config['cookie_name'] . '_ba_' . $board_announcement_data['announcement_id'], '', true, \phpbb\request\request_interface::COOKIE) == $board_announcement_data['announcement_timestamp'])
if ($this->request->variable($this->config['cookie_name'] . '_ba_' . $data['announcement_id'], '', true, \phpbb\request\request_interface::COOKIE) == $data['announcement_timestamp'])
{
continue;
}

// Output board announcement to the template
$this->template->assign_block_vars('board_announcements', [
'BOARD_ANNOUNCEMENT_ID' => $board_announcement_data['announcement_id'],
'S_BOARD_ANNOUNCEMENT_DISMISS' => (bool) $board_announcement_data['announcement_dismissable'],
'BOARD_ANNOUNCEMENT' => generate_text_for_display($board_announcement_data['announcement_text'], '', '', ext::FLAGS),
'BOARD_ANNOUNCEMENT_BGCOLOR' => $board_announcement_data['announcement_bgcolor'],
'BOARD_ANNOUNCEMENT_ID' => $data['announcement_id'],
'S_BOARD_ANNOUNCEMENT_DISMISS' => (bool) $data['announcement_dismissable'],
'BOARD_ANNOUNCEMENT' => generate_text_for_display($data['announcement_text'], $data['announcement_uid'], $data['announcement_bitfield'], $data['announcement_flags']),
'BOARD_ANNOUNCEMENT_BGCOLOR' => $data['announcement_bgcolor'],
'U_BOARD_ANNOUNCEMENT_CLOSE' => $this->controller_helper->route('phpbb_boardannouncements_controller', [
'id' => (int) $board_announcement_data['announcement_id'],
'id' => (int) $data['announcement_id'],
'hash' => generate_link_hash('close_boardannouncement')
]),
]);
Expand Down
1 change: 0 additions & 1 deletion ext.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ class ext extends \phpbb\extension\base
public const MEMBERS = 1;
public const GUESTS = 2;
public const DATE_FORMAT = 'd M Y, H:i';
public const FLAGS = OPTION_FLAG_BBCODE + OPTION_FLAG_SMILIES + OPTION_FLAG_LINKS;

/**
* Enable extension if phpBB minimum version requirement is met
Expand Down
9 changes: 6 additions & 3 deletions manager/manager.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public function get_announcement($id)
{
$data = $this->nestedset->get_subtree_data($id);

return count($data) ? $data[$id] : [];
return $data[$id] ?? [];
}

/**
Expand Down Expand Up @@ -248,8 +248,11 @@ public function announcement_columns()
'announcement_indexonly' => false,
'announcement_dismissable' => true,
'announcement_users' => \phpbb\boardannouncements\ext::ALL,
'announcement_timestamp' => '',
'announcement_expiry' => '',
'announcement_timestamp' => 0,
'announcement_expiry' => 0,
'announcement_uid' => '',
'announcement_bitfield' => '',
'announcement_flags' => OPTION_FLAG_BBCODE + OPTION_FLAG_SMILIES + OPTION_FLAG_LINKS,
];
}
}
3 changes: 3 additions & 0 deletions migrations/v10x/m10_update_data.php
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,9 @@ public function convert_board_announcements()
'announcement_description' => '',
'announcement_text' => $config_text->get('announcement_text'),
'announcement_bgcolor' => $config_text->get('announcement_bgcolor'),
'announcement_uid' => $config_text->get('announcement_uid'),
'announcement_bitfield' => $config_text->get('announcement_bitfield'),
'announcement_flags' => (int) $config_text->get('announcement_options'),
'announcement_timestamp' => (int) $config_text->get('announcement_timestamp'),
'announcement_enabled' => (int) $this->config->offsetGet('board_announcements_enable'),
'announcement_indexonly' => (int) $this->config->offsetGet('board_announcements_index_only'),
Expand Down
3 changes: 3 additions & 0 deletions migrations/v10x/m9_schema_update.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,9 @@ public function update_schema()
'announcement_users' => ['UINT', 0],
'announcement_timestamp' => ['TIMESTAMP', 0],
'announcement_expiry' => ['TIMESTAMP', 0],
'announcement_uid' => ['VCHAR:8', ''],
'announcement_bitfield' => ['VCHAR:255', ''],
'announcement_flags' => ['UINT:11', 7],
'announcement_parent_id' => ['UINT', 0],
'announcement_left_id' => ['UINT', 0],
'announcement_right_id' => ['UINT', 0],
Expand Down
14 changes: 12 additions & 2 deletions tests/controller/acp_controller_test.php
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,9 @@ public function action_add_data()
'announcement_users' => \phpbb\boardannouncements\ext::ALL,
'announcement_timestamp' => '',
'announcement_expiry' => '',
'announcement_uid' => '',
'announcement_bitfield' => '',
'announcement_flags' => 7,
]],
[0, [
'announcement_id' => 2,
Expand All @@ -279,6 +282,9 @@ public function action_add_data()
'announcement_users' => \phpbb\boardannouncements\ext::ALL,
'announcement_timestamp' => '',
'announcement_expiry' => '',
'announcement_uid' => '',
'announcement_bitfield' => '',
'announcement_flags' => 7,
]],
];
}
Expand Down Expand Up @@ -318,8 +324,12 @@ public function test_action_add($id, $data)
'announcement_indexonly' => false,
'announcement_dismissable' => true,
'announcement_users' => \phpbb\boardannouncements\ext::ALL,
'announcement_timestamp' => '',
'announcement_expiry' => '',
'announcement_timestamp' => 0,
'announcement_expiry' => 0,
'announcement_uid' => '',
'announcement_bitfield' => '',
'announcement_flags' => 7,

]);

$this->manager->expects($id ? self::once() : self::never())
Expand Down
18 changes: 18 additions & 0 deletions tests/fixtures/board_announcements.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@
<column>announcement_users</column>
<column>announcement_timestamp</column>
<column>announcement_expiry</column>
<column>announcement_uid</column>
<column>announcement_bitfield</column>
<column>announcement_flags</column>
<column>announcement_parent_id</column>
<column>announcement_left_id</column>
<column>announcement_right_id</column>
Expand All @@ -26,6 +29,9 @@
<value>0</value>
<value>1586466410</value>
<value>0</value>
<value></value>
<value></value>
<value>7</value>
<value>0</value>
<value>1</value>
<value>2</value>
Expand All @@ -42,6 +48,9 @@
<value>1</value>
<value>1586466510</value>
<value>0</value>
<value></value>
<value></value>
<value>7</value>
<value>0</value>
<value>3</value>
<value>4</value>
Expand All @@ -58,6 +67,9 @@
<value>2</value>
<value>1586466610</value>
<value>0</value>
<value></value>
<value></value>
<value>7</value>
<value>0</value>
<value>5</value>
<value>6</value>
Expand All @@ -74,6 +86,9 @@
<value>0</value>
<value>1586466710</value>
<value>1586466810</value>
<value></value>
<value></value>
<value>7</value>
<value>0</value>
<value>7</value>
<value>8</value>
Expand All @@ -90,6 +105,9 @@
<value>0</value>
<value>1586466810</value>
<value>0</value>
<value></value>
<value></value>
<value>7</value>
<value>0</value>
<value>9</value>
<value>10</value>
Expand Down
3 changes: 3 additions & 0 deletions tests/manager/manager_get_expired_announcements_test.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ public function data_get_expired_announcements()
'announcement_users' => \phpbb\boardannouncements\ext::ALL,
'announcement_timestamp' => 1586466710,
'announcement_expiry' => 1586466810,
'announcement_uid' => '',
'announcement_bitfield' => '',
'announcement_flags' => 7,
'announcement_parent_id' => 0,
'announcement_left_id' => 7,
'announcement_right_id' => 8,
Expand Down
23 changes: 11 additions & 12 deletions tests/manager/manager_save_announcement_test.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ public function data_save_announcement()
'announcement_users' => 0,
'announcement_timestamp' => time(),
'announcement_expiry' => 0,
'announcement_uid' => '',
'announcement_bitfield' => '',
'announcement_flags' => 7,

]],
];
}
Expand All @@ -38,22 +42,17 @@ public function data_save_announcement()
* Test the save_announcement() method
*
* @dataProvider data_save_announcement
* @param int $expected_id
* @param int $id
* @param array $data
*/
public function test_save_announcement($expected_id, $data)
public function test_save_announcement($id, $data)
{
$this->manager->save_announcement($data);

self::assertEquals($expected_id, $this->manager->get_announcement_data($expected_id, 'announcement_id'));
self::assertEquals($data['announcement_text'], $this->manager->get_announcement_data($expected_id, 'announcement_text'));
self::assertEquals($data['announcement_description'], $this->manager->get_announcement_data($expected_id, 'announcement_description'));
self::assertEquals($data['announcement_bgcolor'], $this->manager->get_announcement_data($expected_id, 'announcement_bgcolor'));
self::assertEquals($data['announcement_enabled'], $this->manager->get_announcement_data($expected_id, 'announcement_enabled'));
self::assertEquals($data['announcement_indexonly'], $this->manager->get_announcement_data($expected_id, 'announcement_indexonly'));
self::assertEquals($data['announcement_dismissable'], $this->manager->get_announcement_data($expected_id, 'announcement_dismissable'));
self::assertEquals($data['announcement_users'], $this->manager->get_announcement_data($expected_id, 'announcement_users'));
self::assertEquals($data['announcement_timestamp'], $this->manager->get_announcement_data($expected_id, 'announcement_timestamp'));
self::assertEquals($data['announcement_expiry'], $this->manager->get_announcement_data($expected_id, 'announcement_expiry'));
self::assertEquals($id, $this->manager->get_announcement_data($id, 'announcement_id'));
foreach ($data as $key => $expected)
{
self::assertEquals($expected, $this->manager->get_announcement_data($id, $key));
}
}
}
3 changes: 3 additions & 0 deletions tests/manager/manager_update_announcement_test.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ public function data_update_announcement()
'announcement_users' => 1,
'announcement_timestamp' => time(),
'announcement_expiry' => 1,
'announcement_uid' => '',
'announcement_bitfield' => '',
'announcement_flags' => 7,
]],
[9, []],
];
Expand Down

0 comments on commit c204fe8

Please sign in to comment.