diff --git a/acp/portal_module.php b/acp/portal_module.php index 474ad0cf..8309bb9c 100644 --- a/acp/portal_module.php +++ b/acp/portal_module.php @@ -15,7 +15,7 @@ class portal_module public $new_config = array(); protected $c_class; protected $db, $user, $cache, $template, $display_vars, $config, $phpbb_root_path, $phpbb_admin_path, $phpEx, $phpbb_container; - protected $root_path, $version_check, $request, $php_ext, $portal_helper; + protected $root_path, $version_check, $request, $php_ext, $portal_helper, $modules_helper; public $module_column = array(); public function __construct() @@ -41,6 +41,7 @@ class portal_module $this->phpbb_container = $phpbb_container; $this->version_check = $this->phpbb_container->get('board3.version.check'); $this->portal_helper = $this->phpbb_container->get('board3.portal.helper'); + $this->modules_helper = $this->phpbb_container->get('board3.portal.modules_helper'); define('PORTAL_MODULES_TABLE', $this->phpbb_container->getParameter('board3.modules.table')); define('PORTAL_CONFIG_TABLE', $this->phpbb_container->getParameter('board3.config.table')); @@ -181,18 +182,26 @@ class portal_module { if ($submit && ((isset($null['type']) && $null['type'] == 'custom') || (isset($null['submit_type']) && $null['submit_type'] == 'custom'))) { - $func = array($this->c_class, $null['submit']); - - if(method_exists($this->c_class, $null['submit'])) + if (!is_array($null['submit'])) { + $func = array($this->c_class, $null['submit']); $args = ($module_id != 0) ? array($config_name, $module_id) : $config_name; - call_user_func_array($func, $args); } else { - $args = ($module_id != 0) ? array($cfg_array[$config_name], $config_name, $module_id) : $config_name; - call_user_func_array($null['submit'], $args); + if ($null['submit'][0] == 'board3.portal.modules_helper') + { + $func = array($this->modules_helper, $null['submit'][1]); + $args = ($module_id != 0) ? array($config_name, $module_id) : $config_name; + } + else + { + $args = ($module_id != 0) ? array($cfg_array[$config_name], $config_name, $module_id) : $config_name; + $func = $null['submit']; + } } + + call_user_func_array($func, $args); } if (!isset($cfg_array[$config_name]) || strpos($config_name, 'legend') !== false) @@ -331,7 +340,14 @@ class portal_module } else { - $func = $vars['method']; + if ($vars['method'][0] == 'board3.portal.modules_helper') + { + $func = array($this->modules_helper, $vars['method'][1]); + } + else + { + $func = $vars['method']; + } } $content = call_user_func_array($func, $args); } diff --git a/config/modules.yml b/config/modules.yml index 0d80dafc..ece83c20 100644 --- a/config/modules.yml +++ b/config/modules.yml @@ -22,6 +22,7 @@ services: arguments: - @auth - @config + - @board3.portal.modules_helper - @template - @dbal.conn - @request diff --git a/config/services.yml b/config/services.yml index c4dc603b..597aefe6 100644 --- a/config/services.yml +++ b/config/services.yml @@ -55,6 +55,8 @@ services: class: board3\portal\includes\modules_helper arguments: - @auth + - @config + - @request board3.portal.fetch_posts: class: board3\portal\portal\fetch_posts diff --git a/includes/modules_helper.php b/includes/modules_helper.php index 73e5bef7..71094100 100644 --- a/includes/modules_helper.php +++ b/includes/modules_helper.php @@ -17,15 +17,31 @@ class modules_helper */ protected $auth; + /** + * phpBB config + * @var \phpbb\config\config + */ + protected $config; + + /** + * phpBB request + * @var \phpbb\request\request + */ + protected $request; + /** * Constructor * NOTE: The parameters of this method must match in order and type with * the dependencies defined in the services.yml file for this service. * @param \phpbb\auth\auth $auth Auth object + * @param \phpbb\config\config $config phpBB config + * @param \phpbb\request\request $request phpBB request */ - public function __construct($auth) + public function __construct($auth, $config, $request) { $this->auth = $auth; + $this->config = $config; + $this->request = $request; } /** @@ -47,4 +63,76 @@ class modules_helper return $disallow_access; } + + /** + * Generate select box + * + * @param string $key Key of select box + * @param array $select_ary Array of select box options + * @param array $selected_options Array of selected options + * + * @return string HTML code of select box + * @access public + */ + public function generate_select_box($key, $select_ary, $selected_options) + { + // Build options + $options = ''; + + return $options; + } + + /** + * Generate forum select box + * + * @param string $value Value of select box + * @param string $key Key of select box + * + * @return string HTML code of select box + * @access public + */ + public function generate_forum_select($value, $key) + { + $forum_list = make_forum_select(false, false, true, true, true, false, true); + + $selected_options = $select_ary = array(); + if(isset($this->config[$key]) && strlen($this->config[$key]) > 0) + { + $selected_options = explode(',', $this->config[$key]); + } + + // Build forum options + foreach ($forum_list as $f_id => $f_row) + { + $select_ary[] = array( + 'value' => $f_id, + 'title' => $f_row['padding'] . $f_row['forum_name'], + 'disabled' => $f_row['disabled'], + ); + } + + return $this->generate_select_box($key, $select_ary, $selected_options); + } + + /** + * Store selected forums + * + * @param string $key Key name + * @param int $module_id Module ID + * + * @return null + * @access public + */ + public function store_selected_forums($key) + { + // Get selected extensions + $values = $this->request->variable($key, array(0 => '')); + $news = implode(',', $values); + $this->config->set($key, $news); + } } diff --git a/modules/announcements.php b/modules/announcements.php index 556c301b..3edb1169 100644 --- a/modules/announcements.php +++ b/modules/announcements.php @@ -457,7 +457,7 @@ class announcements extends module_base 'board3_number_of_announcements_' . $module_id => array('lang' => 'PORTAL_NUMBER_OF_ANNOUNCEMENTS' , 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true), 'board3_announcements_day_' . $module_id => array('lang' => 'PORTAL_ANNOUNCEMENTS_DAY' , 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true), 'board3_announcements_length_' . $module_id => array('lang' => 'PORTAL_ANNOUNCEMENTS_LENGTH' , 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true), - 'board3_global_announcements_forum_' . $module_id => array('lang' => 'PORTAL_GLOBAL_ANNOUNCEMENTS_FORUM' , 'validate' => 'string', 'type' => 'custom', 'explain' => true, 'method' => 'select_forums', 'submit' => 'store_selected_forums'), + 'board3_global_announcements_forum_' . $module_id => array('lang' => 'PORTAL_GLOBAL_ANNOUNCEMENTS_FORUM' , 'validate' => 'string', 'type' => 'custom', 'explain' => true, 'method' => array('board3.portal.modules_helper', 'generate_forum_select'), 'submit' => array('board3.portal.modules_helper', 'store_selected_forums')), 'board3_announcements_forum_exclude_' . $module_id => array('lang' => 'PORTAL_ANNOUNCEMENTS_FORUM_EXCLUDE', 'validate' => 'string', 'type' => 'radio:yes_no', 'explain' => true), 'board3_announcements_archive_' . $module_id => array('lang' => 'PORTAL_ANNOUNCEMENTS_ARCHIVE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 'board3_announcements_permissions_' . $module_id => array('lang' => 'PORTAL_ANNOUNCEMENTS_PERMISSIONS' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), @@ -504,50 +504,4 @@ class announcements extends module_base WHERE ' . $db->sql_in_set('config_name', $del_config); return $db->sql_query($sql); } - - /** - * Create forum select box - * - * @param mixed $value Value of input - * @param string $key Key name - * @param int $module_id Module ID - * - * @return string Forum select box HTML - */ - public function select_forums($value, $key, $module_id) - { - $forum_list = make_forum_select(false, false, true, true, true, false, true); - - $selected = array(); - if(isset($this->config[$key]) && strlen($this->config[$key]) > 0) - { - $selected = explode(',', $this->config[$key]); - } - // Build forum options - $s_forum_options = ''; - - return $s_forum_options; - - } - - /** - * Store selected forums - * - * @param string $key Key name - * @param int $module_id Module ID - * - * @return null - */ - public function store_selected_forums($key, $module_id) - { - // Get selected forums - $values = $this->request->variable($key, array(0 => '')); - $news = implode(',', $values); - set_config($key, $news); - } } diff --git a/modules/attachments.php b/modules/attachments.php index a315d9ee..e7a0acf1 100644 --- a/modules/attachments.php +++ b/modules/attachments.php @@ -47,6 +47,9 @@ class attachments extends module_base /** @var \phpbb\config\config */ protected $config; + /** @var \board3\portal\includes\modules_helper */ + protected $helper; + /** @var \phpbb\request\request */ protected $request; @@ -70,6 +73,7 @@ class attachments extends module_base * * @param \phpbb\auth\auth $auth phpBB auth service * @param \phpbb\config\config $config phpBB config + * @param \board3\portal\includes\modules_helper $helper Modules helper * @param \phpbb\template $template phpBB template * @param \phpbb\db\driver $db Database driver * @param \phpbb\request\request $request phpBB request @@ -77,10 +81,11 @@ class attachments extends module_base * @param string $phpbb_root_path phpBB root path * @param \phpbb\user $user phpBB user object */ - public function __construct($auth, $config, $template, $db, $request, $phpEx, $phpbb_root_path, $user) + public function __construct($auth, $config, $helper, $template, $db, $request, $phpEx, $phpbb_root_path, $user) { $this->auth = $auth; $this->config = $config; + $this->helper = $helper; $this->template = $template; $this->db = $db; $this->request = $request; @@ -116,7 +121,7 @@ class attachments extends module_base 'legend1' => 'ACP_PORTAL_ATTACHMENTS_NUMBER_SETTINGS', 'board3_attachments_number_' . $module_id => array('lang' => 'PORTAL_ATTACHMENTS_NUMBER' , 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true), 'board3_attach_max_length_' . $module_id => array('lang' => 'PORTAL_ATTACHMENTS_MAX_LENGTH' , 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true), - 'board3_attachments_forum_ids_' . $module_id => array('lang' => 'PORTAL_ATTACHMENTS_FORUM_IDS', 'validate' => 'string', 'type' => 'custom', 'explain' => true, 'method' => 'select_forums', 'submit' => 'store_selected_forums'), + 'board3_attachments_forum_ids_' . $module_id => array('lang' => 'PORTAL_ATTACHMENTS_FORUM_IDS', 'validate' => 'string', 'type' => 'custom', 'explain' => true, 'method' => array('board3.portal.modules_helper', 'generate_forum_select'), 'submit' => array('board3.portal.modules_helper', 'store_selected_forums')), 'board3_attachments_forum_exclude_' . $module_id => array('lang' => 'PORTAL_ATTACHMENTS_FORUM_EXCLUDE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 'board3_attachments_filetype_' . $module_id => array('lang' => 'PORTAL_ATTACHMENTS_FILETYPE', 'validate' => 'string', 'type' => 'custom', 'explain' => true, 'method' => 'select_filetype', 'submit' => 'store_filetypes'), 'board3_attachments_exclude_' . $module_id => array('lang' => 'PORTAL_ATTACHMENTS_EXCLUDE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), @@ -167,6 +172,8 @@ class attachments extends module_base */ public function select_filetype($value, $key, $module_id) { + $extensions = array(); + // Get extensions $sql = 'SELECT * FROM ' . EXTENSIONS_TABLE . ' @@ -175,24 +182,15 @@ class attachments extends module_base while ($row = $this->db->sql_fetchrow($result)) { - $extensions[] = $row; + $extensions[] = array( + 'value' => $row['extension'], + 'title' => $row['extension'], + ); } - $selected = array(); - if(isset($this->config['board3_attachments_filetype_' . $module_id]) && strlen($this->config['board3_attachments_filetype_' . $module_id]) > 0) - { - $selected = explode(',', $this->config['board3_attachments_filetype_' . $module_id]); - } + $selected = $this->get_selected_filetypes($module_id); - // Build options - $ext_options = ''; - - return $ext_options; + return $this->helper->generate_select_box($key, $extensions, $selected); } /** @@ -214,52 +212,6 @@ class attachments extends module_base } - /** - * Create forum select box - * - * @param mixed $value Value of input - * @param string $key Key name - * @param int $module_id Module ID - * - * @return string Forum select box HTML - */ - public function select_forums($value, $key) - { - $forum_list = make_forum_select(false, false, true, true, true, false, true); - - $selected = array(); - if(isset($this->config[$key]) && strlen($this->config[$key]) > 0) - { - $selected = explode(',', $this->config[$key]); - } - // Build forum options - $s_forum_options = ''; - - return $s_forum_options; - - } - - /** - * Store selected forums - * - * @param string $key Key name - * @param int $module_id Module ID - * - * @return null - */ - public function store_selected_forums($key) - { - // Get selected extensions - $values = $this->request->variable($key, array(0 => '')); - $news = implode(',', $values); - set_config($key, $news); - } - /** * Parse template variables for module * @@ -273,13 +225,9 @@ class attachments extends module_base { $attach_forums = false; $where = ''; - $filetypes = array(); // Get filetypes and put them into an array - if(isset($this->config['board3_attachments_filetype_' . $module_id]) && strlen($this->config['board3_attachments_filetype_' . $module_id]) > 0) - { - $filetypes = explode(',', $this->config['board3_attachments_filetype_' . $module_id]); - } + $filetypes = $this->get_selected_filetypes($module_id); if($this->config['board3_attachments_forum_ids_' . $module_id] !== '') { @@ -368,4 +316,22 @@ class attachments extends module_base return 'attachments_' . $type . '.html'; } + + /** + * Get the filetypes that were selected in the ACP + * + * @param int $module_id Module ID + * + * @return array An array with the selected filetypes + */ + protected function get_selected_filetypes($module_id) + { + $selected = array(); + if(isset($this->config['board3_attachments_filetype_' . $module_id]) && strlen($this->config['board3_attachments_filetype_' . $module_id]) > 0) + { + $selected = explode(',', $this->config['board3_attachments_filetype_' . $module_id]); + } + + return $selected; + } } diff --git a/modules/news.php b/modules/news.php index 47a81fc2..8e12e536 100644 --- a/modules/news.php +++ b/modules/news.php @@ -436,7 +436,7 @@ class news extends module_base 'board3_show_all_news_' . $module_id => array('lang' => 'PORTAL_SHOW_ALL_NEWS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 'board3_number_of_news_' . $module_id => array('lang' => 'PORTAL_NUMBER_OF_NEWS', 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true), 'board3_news_length_' . $module_id => array('lang' => 'PORTAL_NEWS_LENGTH', 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true), - 'board3_news_forum_' . $module_id => array('lang' => 'PORTAL_NEWS_FORUM', 'validate' => 'string', 'type' => 'custom', 'explain' => true, 'method' => 'select_forums', 'submit' => 'store_selected_forums'), + 'board3_news_forum_' . $module_id => array('lang' => 'PORTAL_NEWS_FORUM', 'validate' => 'string', 'type' => 'custom', 'explain' => true, 'method' => array('board3.portal.modules_helper', 'generate_forum_select'), 'submit' => array('board3.portal.modules_helper', 'store_selected_forums')), 'board3_news_exclude_' . $module_id => array('lang' => 'PORTAL_NEWS_EXCLUDE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 'board3_news_show_last_' . $module_id => array('lang' => 'PORTAL_NEWS_SHOW_LAST', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 'board3_news_archive_' . $module_id => array('lang' => 'PORTAL_NEWS_ARCHIVE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), @@ -485,53 +485,4 @@ class news extends module_base WHERE ' . $db->sql_in_set('config_name', $del_config); return $db->sql_query($sql); } - - /** - * Create forum select box - * - * @param mixed $value Value of input - * @param string $key Key name - * @param int $module_id Module ID - * - * @return null - */ - public function select_forums($value, $key, $module_id) - { - $forum_list = make_forum_select(false, false, true, true, true, false, true); - - $selected = array(); - if(isset($this->config[$key]) && strlen($this->config[$key]) > 0) - { - $selected = explode(',', $this->config[$key]); - } - // Build forum options - $s_forum_options = ''; - - return $s_forum_options; - - } - - /** - * Store selected forums - * - * @param string $key Key name - * @param int $module_id Module ID - * - * @return null - */ - public function store_selected_forums($key, $module_id) - { - // Get selected extensions - $values = $this->request->variable($key, array(0 => '')); - - $news = implode(',', $values); - - set_config($key, $news); - - } } diff --git a/modules/poll.php b/modules/poll.php index e6534a8a..c4fe9d0b 100644 --- a/modules/poll.php +++ b/modules/poll.php @@ -120,7 +120,7 @@ class poll extends module_base 'title' => 'ACP_PORTAL_POLLS_SETTINGS', 'vars' => array( 'legend1' => 'ACP_PORTAL_POLLS_SETTINGS', - 'board3_poll_topic_id_' . $module_id => array('lang' => 'PORTAL_POLL_TOPIC_ID' , 'validate' => 'string', 'type' => 'custom', 'explain' => true, 'method' => 'select_forums', 'submit' => 'store_selected_forums'), + 'board3_poll_topic_id_' . $module_id => array('lang' => 'PORTAL_POLL_TOPIC_ID' , 'validate' => 'string', 'type' => 'custom', 'explain' => true, 'method' => array('board3.portal.modules_helper', 'generate_forum_select'), 'submit' => array('board3.portal.modules_helper', 'store_selected_forums')), 'board3_poll_exclude_id_' . $module_id => array('lang' => 'PORTAL_POLL_EXCLUDE_ID' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 'board3_poll_limit_' . $module_id => array('lang' => 'PORTAL_POLL_LIMIT' , 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true), 'board3_poll_allow_vote_' . $module_id => array('lang' => 'PORTAL_POLL_ALLOW_VOTE' , 'validate' => 'ibool', 'type' => 'radio:yes_no', 'explain' => true), @@ -159,54 +159,6 @@ class poll extends module_base return $db->sql_query($sql); } - /** - * Create forum select box - * - * @param mixed $value Value of input - * @param string $key Key name - * @param int $module_id Module ID - * - * @return null - */ - public function select_forums($value, $key, $module_id) - { - $forum_list = make_forum_select(false, false, true, true, true, false, true); - - $selected = array(); - if(isset($this->config[$key]) && strlen($this->config[$key]) > 0) - { - $selected = explode(',', $this->config[$key]); - } - // Build forum options - $s_forum_options = ''; - - return $s_forum_options; - } - - /** - * Store selected forums - * - * @param string $key Key name - * @param int $module_id Module ID - * - * @return null - */ - public function store_selected_forums($key, $module_id) - { - // Get selected forums - $values = $this->request->variable($key, array(0 => '')); - - $news = implode(',', $values); - - set_config($key, $news); - - } - /** * Parse template variables for module * diff --git a/modules/recent.php b/modules/recent.php index 81d7f379..2ff0f7d4 100644 --- a/modules/recent.php +++ b/modules/recent.php @@ -219,7 +219,7 @@ class recent extends module_base 'legend1' => 'ACP_PORTAL_RECENT_SETTINGS', 'board3_max_topics_' . $module_id => array('lang' => 'PORTAL_MAX_TOPIC', 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true), 'board3_recent_title_limit_' . $module_id => array('lang' => 'PORTAL_RECENT_TITLE_LIMIT', 'validate' => 'int', 'type' => 'text:3:3', 'explain' => true), - 'board3_recent_forum_' . $module_id => array('lang' => 'PORTAL_RECENT_FORUM', 'validate' => 'string', 'type' => 'custom', 'explain' => true, 'method' => 'select_forums', 'submit' => 'store_selected_forums'), + 'board3_recent_forum_' . $module_id => array('lang' => 'PORTAL_RECENT_FORUM', 'validate' => 'string', 'type' => 'custom', 'explain' => true, 'method' => array('board3.portal.modules_helper', 'generate_forum_select'), 'submit' => array('board3.portal.modules_helper', 'store_selected_forums')), 'board3_recent_exclude_forums_' . $module_id => array('lang' => 'PORTAL_EXCLUDE_FORUM', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), ) ); @@ -252,52 +252,4 @@ class recent extends module_base WHERE ' . $db->sql_in_set('config_name', $del_config); return $db->sql_query($sql); } - - /** - * Create forum select box - * - * @param mixed $value Value of input - * @param string $key Key name - * @param int $module_id Module ID - * - * @return null - */ - public function select_forums($value, $key, $module_id) - { - $forum_list = make_forum_select(false, false, true, true, true, false, true); - - $selected = array(); - if(isset($this->config[$key]) && strlen($this->config[$key]) > 0) - { - $selected = explode(',', $this->config[$key]); - } - // Build forum options - $s_forum_options = ''; - - return $s_forum_options; - - } - - /** - * Store selected forums - * - * @param string $key Key name - * @param int $module_id Module ID - * - * @return null - */ - public function store_selected_forums($key, $module_id) - { - // Get selected extensions - $values = $this->request->variable($key, array(0 => '')); - - $news = implode(',', $values); - - set_config($key, $news); - } } diff --git a/tests/unit/acp/move_module_test.php b/tests/unit/acp/move_module_test.php index 5d1aaea1..060b40bf 100644 --- a/tests/unit/acp/move_module_test.php +++ b/tests/unit/acp/move_module_test.php @@ -23,6 +23,7 @@ class phpbb_acp_move_module_test extends \board3\portal\tests\testframework\data parent::setUp(); global $db, $cache, $phpbb_root_path, $phpEx, $user, $phpbb_container, $request, $template, $table_prefix; $user = new \board3\portal\tests\mock\user(); + $request = new \phpbb_mock_request; $phpbb_container = new \phpbb_mock_container_builder(); // Mock version check $phpbb_container->set('board3.version.check', @@ -39,6 +40,7 @@ class phpbb_acp_move_module_test extends \board3\portal\tests\testframework\data new \board3\portal\modules\donation($config, $template, $user), )); $phpbb_container->set('board3.portal.helper', new \board3\portal\includes\helper($phpbb_container->get('board3.module_collection'))); + $phpbb_container->set('board3.portal.modules_helper', new \board3\portal\includes\modules_helper(new \phpbb\auth\auth(), $config, $request)); $phpbb_container->setParameter('board3.modules.table', $table_prefix . 'portal_modules'); $phpbb_container->setParameter('board3.config.table', $table_prefix . 'portal_config'); $cache = $this->getMock('\phpbb\cache\cache', array('destroy', 'sql_exists', 'get', 'put')); @@ -60,7 +62,6 @@ class phpbb_acp_move_module_test extends \board3\portal\tests\testframework\data 'UNABLE_TO_MOVE' => 'UNABLE_TO_MOVE', 'UNABLE_TO_MOVE_ROW' => 'UNABLE_TO_MOVE_ROW', )); - $request = new \phpbb_mock_request; $this->portal_module = new \board3\portal\acp\portal_module(); $this->update_portal_modules(); } diff --git a/tests/unit/functions/fetch_news_test.php b/tests/unit/functions/fetch_news_test.php index 07b834a9..6ce4f81f 100644 --- a/tests/unit/functions/fetch_news_test.php +++ b/tests/unit/functions/fetch_news_test.php @@ -27,6 +27,7 @@ class phpbb_functions_fetch_news_test extends \board3\portal\tests\testframework $user->timezone = new \DateTimeZone('UTC'); $user->add_lang('common'); $user->add_lang('../../ext/board3/portal/language/en/portal'); + $request = new \phpbb_mock_request; $phpbb_dispatcher = new phpbb_mock_event_dispatcher(); $cache = $this->getMock('\phpbb\cache\cache', array('obtain_word_list', 'get', 'sql_exists', 'put', 'obtain_attach_extensions')); $cache->expects($this->any()) @@ -51,7 +52,7 @@ class phpbb_functions_fetch_news_test extends \board3\portal\tests\testframework $this->auth = $auth; $this->user = $user; $phpbb_container = new \phpbb_mock_container_builder(); - $this->modules_helper = new \board3\portal\includes\modules_helper($auth); + $this->modules_helper = new \board3\portal\includes\modules_helper($auth, $this->config, $request); $phpbb_container->set('board3.portal.modules_helper', $this->modules_helper); $phpbb_container->set('board3.portal.fetch_posts', new \board3\portal\portal\fetch_posts($auth, $cache, $this->config, $this->db, $this->modules_helper, $user)); $template = $this->getMock('\phpbb\template', array('set_filenames', 'destroy_block_vars', 'assign_block_vars', 'assign_display')); diff --git a/tests/unit/includes/fixtures/auth.xml b/tests/unit/includes/fixtures/auth.xml index 03bcb3f5..84a5d919 100644 --- a/tests/unit/includes/fixtures/auth.xml +++ b/tests/unit/includes/fixtures/auth.xml @@ -17,12 +17,14 @@ forum_idparent_id + forum_nameforum_parentsforum_descforum_rules 1 0 + forum_one @@ -30,6 +32,7 @@ 2 1 + forum_two diff --git a/tests/unit/includes/modules_helper_test.php b/tests/unit/includes/modules_helper_test.php index 307f0f06..03b05134 100644 --- a/tests/unit/includes/modules_helper_test.php +++ b/tests/unit/includes/modules_helper_test.php @@ -14,6 +14,8 @@ class board3_includes_modules_helper_test extends \board3\portal\tests\testframe protected $modules; + protected $config; + public function getDataSet() { return $this->createXMLDataSet(dirname(__FILE__) . '/fixtures/auth.xml'); @@ -24,8 +26,10 @@ class board3_includes_modules_helper_test extends \board3\portal\tests\testframe parent::setUp(); $auth = new \phpbb\auth\auth(); + $this->config = new \phpbb\config\config(array()); + $request = new \phpbb_mock_request(array('foo' => array('bar'))); - $this->modules_helper = new \board3\portal\includes\modules_helper($auth); + $this->modules_helper = new \board3\portal\includes\modules_helper($auth, $this->config, $request); } public function data_get_disallowed_forums() @@ -43,4 +47,59 @@ class board3_includes_modules_helper_test extends \board3\portal\tests\testframe { $this->assertEquals($expected, $this->modules_helper->get_disallowed_forums($input)); } + + public function data_generate_select_box() + { + return array( + array('', + 'foobar', + array( + '1' => array( + 'value' => 'one', + 'title' => 'one', + ), + '2' => array( + 'value' => 'two', + 'title' => 'two', + ), + ), + array('two')), + array('', + 'foobar', + array( + '1' => array( + 'value' => 'one', + 'title' => 'two', + ), + '2' => array( + 'value' => 'two', + 'title' => 'three', + ), + ), + array('one')), + ); + } + + /** + * @dataProvider data_generate_select_box + */ + public function test_generate_select_box($expected, $key, $select_ary, $selected_options) + { + $this->assertEquals($expected, $this->modules_helper->generate_select_box($key, $select_ary, $selected_options)); + } + + public function test_generate_forum_select() + { + $this->assertEquals( + '', + $this->modules_helper->generate_forum_select('foo', 'bar') + ); + } + + public function test_store_selected_forums() + { + $this->assertEmpty($this->config['foo']); + $this->modules_helper->store_selected_forums('foo'); + $this->assertEquals('bar', $this->config['foo']); + } } diff --git a/tests/unit/portal/fetch_posts_test.php b/tests/unit/portal/fetch_posts_test.php index da42eaf5..45c988ca 100644 --- a/tests/unit/portal/fetch_posts_test.php +++ b/tests/unit/portal/fetch_posts_test.php @@ -50,7 +50,8 @@ class phpbb_portal_fetch_posts_test extends \board3\portal\tests\testframework\d // Pretend to allow downloads in forum 1 $auth->acl[1][0] = true; $this->auth = $auth; - $this->modules_helper = new \board3\portal\includes\modules_helper($auth); + $request = new \phpbb_mock_request; + $this->modules_helper = new \board3\portal\includes\modules_helper($auth, $this->config, $request); $this->user = $user; $template = $this->getMock('\phpbb\template', array('set_filenames', 'destroy_block_vars', 'assign_block_vars', 'assign_display')); $this->fetch_posts = new \board3\portal\portal\fetch_posts($auth, $cache, $this->config, $this->db, $this->modules_helper, $user);