From c470ebe38606bea3f7f73d2a6edd15bb75e4b235 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Thu, 27 Nov 2014 13:13:51 +0100 Subject: [PATCH] [ticket/416] Use modules manager in acp and tests B3P-416 --- acp/portal_module.php | 553 ++-------------------------- tests/unit/acp/move_module_test.php | 61 +-- 2 files changed, 62 insertions(+), 552 deletions(-) diff --git a/acp/portal_module.php b/acp/portal_module.php index f262ec81..60460a02 100644 --- a/acp/portal_module.php +++ b/acp/portal_module.php @@ -13,10 +13,15 @@ class portal_module { public $u_action; public $new_config = array(); + + /** @var \board3\portal\modules\module_interface */ 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, $modules_helper, $log, $portal_columns; - public $module_column = array(); + + /** @var \board3\portal\portal\modules\manager */ + protected $modules_manager; public function __construct() { @@ -44,6 +49,7 @@ class portal_module $this->modules_helper = $this->phpbb_container->get('board3.portal.modules_helper'); $this->log = $phpbb_log; $this->portal_columns = $this->phpbb_container->get('board3.portal.columns'); + $this->modules_manager = $this->phpbb_container->get('board3.portal.modules.manager'); define('PORTAL_MODULES_TABLE', $this->phpbb_container->getParameter('board3.portal.modules.table')); define('PORTAL_CONFIG_TABLE', $this->phpbb_container->getParameter('board3.portal.config.table')); @@ -60,6 +66,10 @@ class portal_module $form_key = 'acp_portal'; add_form_key($form_key); + // Setup modules manager class + $this->modules_manager->set_u_action($this->u_action) + ->set_acp_class(__CLASS__); + /** * Validation types are: * string, int, bool, @@ -152,7 +162,7 @@ class portal_module $cfg_array = ($this->request->is_set('config')) ? $this->request->variable('config', array('' => ''), true) : $this->new_config; $error = array(); - // We validate the complete config if whished + // We validate the complete config if wished validate_config_vars($display_vars['vars'], $cfg_array, $error); if ($submit && !check_form_key($form_key)) { @@ -170,7 +180,7 @@ class portal_module if($reset_module && !empty($module_data)) { - $this->reset_module($id, $mode, $module_id, $module_data); + $this->modules_manager->reset_module($id, $mode, $module_id, $module_data); } // We go through the display_vars to make sure no one is trying to set variables he/she is not allowed to... @@ -305,7 +315,7 @@ class portal_module 'S_ERROR' => (sizeof($error)) ? true : false, 'ERROR_MSG' => implode('
', $error), - 'B3P_U_ACTION' => $this->get_module_link('config', $module_id), + 'B3P_U_ACTION' => $this->modules_manager->get_module_link('config', $module_id), 'B3P_ACP_ROOT' => $this->root_path, )); @@ -388,28 +398,28 @@ class portal_module { $installed_modules[] = $cur_module['module_classname']; // Create an array with the columns the module is in - $this->module_column[$cur_module['module_classname']][] = $this->portal_columns->number_to_string($cur_module['module_column']); + $this->modules_manager->module_column[$cur_module['module_classname']][] = $this->portal_columns->number_to_string($cur_module['module_column']); } if ($action == 'move_up') { - $this->move_module_up($module_id); + $this->modules_manager->move_module_up($module_id); } else if ($action == 'move_down') { - $this->move_module_down($module_id); + $this->modules_manager->move_module_down($module_id); } else if($action == 'move_right') { - $this->move_module_right($module_id); + $this->modules_manager->move_module_right($module_id); } else if($action == 'move_left') { - $this->move_module_left($module_id); + $this->modules_manager->move_module_left($module_id); } else if ($action == 'delete') { - $this->module_delete($id, $mode, $action, $module_id); + $this->modules_manager->module_delete($id, $mode, $action, $module_id); } $add_list = $this->request->variable('add', array('' => '')); @@ -477,7 +487,7 @@ class portal_module trigger_error($error_output . adm_back_link($this->u_action)); } - meta_refresh(3, $this->get_module_link('config', $module_id)); + meta_refresh(3, $this->modules_manager->get_module_link('config', $module_id)); trigger_error($this->user->lang['SUCCESS_ADD'] . adm_back_link($this->u_action)); } @@ -527,7 +537,7 @@ class portal_module { $this->template->assign_vars(array( 'S_AJAX_REQUEST' => true, - 'U_ACTION' => str_replace('&', '&', $this->get_module_link('modules', $module_id)), + 'U_ACTION' => str_replace('&', '&', $this->modules_manager->get_module_link('modules', $module_id)), )); $this->template->set_filenames(array( 'body' => 'portal/acp_portal_modules.html') @@ -539,7 +549,7 @@ class portal_module 'MESSAGE_TEXT' => $this->user->lang['ADD_MODULE'], 'YES_VALUE' => $this->user->lang['SUBMIT'], - 'S_CONFIRM_ACTION' => str_replace('&', '&', $this->get_module_link('modules', $module_id)), //inefficient, rewrite whole function + 'S_CONFIRM_ACTION' => str_replace('&', '&', $this->modules_manager->get_module_link('modules', $module_id)), //inefficient, rewrite whole function 'S_HIDDEN_FIELDS' => $s_hidden_fields )); } @@ -573,7 +583,7 @@ class portal_module { $column_string = $this->portal_columns->number_to_string($row['module_column'] + 1); // move 1 right - if ($column_string == 'right' && !$this->can_move_module(array('left', 'right'), $row['module_classname'])) + if ($column_string == 'right' && !$this->modules_manager->can_move_module(array('left', 'right'), $row['module_classname'])) { $move_right = false; } @@ -603,7 +613,7 @@ class portal_module { $column_string = $this->portal_columns->number_to_string($row['module_column'] - 1); // move 1 left - if ($column_string == 'left' && !$this->can_move_module(array('left', 'right'), $row['module_classname'])) + if ($column_string == 'left' && !$this->modules_manager->can_move_module(array('left', 'right'), $row['module_classname'])) { $move_left = false; } @@ -627,8 +637,8 @@ class portal_module 'MODULE_IMAGE' => ($row['module_image_src']) ? '' . $row['module_name'] . '' : '', 'MODULE_ENABLED' => ($row['module_status']) ? true : false, - 'U_DELETE' => $this->get_module_link('modules', $row['module_id']) . '&action=delete&module_classname=' . $row['module_classname'], - 'U_EDIT' => $this->get_module_link('config', $row['module_id']), + 'U_DELETE' => $this->modules_manager->get_module_link('modules', $row['module_id']) . '&action=delete&module_classname=' . $row['module_classname'], + 'U_EDIT' => $this->modules_manager->get_module_link('config', $row['module_id']), 'U_MOVE_UP' => $this->u_action . '&module_id=' . $row['module_id'] . '&action=move_up', 'U_MOVE_DOWN' => $this->u_action . '&module_id=' . $row['module_id'] . '&action=move_down', 'U_MOVE_RIGHT' => ($move_right) ? $this->u_action . '&module_id=' . $row['module_id'] . '&action=move_right' : '', @@ -653,513 +663,4 @@ class portal_module break; } } - - /** - * Reset module settings to default options - * - * @param int $id ID of the acp_portal module - * @param string|int $mode Mode of the acp_portal module - * @param int $module_id ID of the module that should be reset - * @param array $module_data Array containing the module's database row - */ - protected function reset_module($id, $mode, $module_id, $module_data) - { - if (confirm_box(true)) - { - $module_data = $this->get_move_module_data($module_id); - - if (!($this->c_class = $this->portal_helper->get_module($module_data['module_classname']))) - { - trigger_error('CLASS_NOT_FOUND', E_USER_ERROR); - } - - $sql_ary = array( - 'module_name' => $this->c_class->get_name(), - 'module_image_src' => $this->c_class->get_image(), - 'module_group_ids' => '', - 'module_image_height' => 16, - 'module_image_width' => 16, - 'module_status' => B3_MODULE_ENABLED, - ); - $sql = 'UPDATE ' . PORTAL_MODULES_TABLE . ' - SET ' . $this->db->sql_build_array('UPDATE', $sql_ary) . ' - WHERE module_id = ' . (int) $module_id; - $this->db->sql_query($sql); - $affected_rows = $this->db->sql_affectedrows(); - - if (empty($affected_rows)) - { - // We need to return to the module config - meta_refresh(3, $this->get_module_link('config', $module_id)); - trigger_error($this->user->lang['MODULE_NOT_EXISTS'] . adm_back_link($this->u_action . "&module_id=$module_id"), E_USER_WARNING); - } - - $this->cache->destroy('config'); - $this->cache->destroy('portal_config'); - obtain_portal_config(); // we need to prevent duplicate entry errors - $this->c_class->install($module_id); - $this->cache->purge(); - - // We need to return to the module config - meta_refresh(3, $this->get_module_link('config', $module_id)); - - trigger_error($this->user->lang['MODULE_RESET_SUCCESS'] . adm_back_link($this->u_action . "&module_id=$module_id")); - } - else - { - $confirm_text = (isset($this->user->lang[$module_data['module_name']])) ? sprintf($this->user->lang['MODULE_RESET_CONFIRM'], $this->user->lang[$module_data['module_name']]) : sprintf($this->user->lang['DELETE_MODULE_CONFIRM'], utf8_normalize_nfc($module_data['module_name'])); - confirm_box(false, $confirm_text, build_hidden_fields(array( - 'i' => $id, - 'mode' => $mode, - 'module_reset' => true, - 'module_id' => $module_id, - ))); - } - } - - /** - * Get module_data required for moving it - * - * @param int $module_id ID of the module that should be moved - * @return array|null Module_data or empty if not successful - */ - public function get_move_module_data($module_id) - { - $sql = 'SELECT * - FROM ' . PORTAL_MODULES_TABLE . ' - WHERE module_id = ' . (int) $module_id; - $result = $this->db->sql_query_limit($sql, 1); - $module_data = $this->db->sql_fetchrow($result); - $this->db->sql_freeresult($result); - - return $module_data; - } - - /** - * Handle output after moving module - * - * @param bool $success Whether moving module was successful - * @param bool $is_row Whether the module move was inside a row - * @return void - */ - public function handle_after_move($success = true, $is_row = false) - { - if (!$success) - { - trigger_error($this->user->lang['UNABLE_TO_MOVE' . (($is_row) ? '_ROW' : '')] . adm_back_link($this->u_action)); - } - - $this->cache->destroy('portal_modules'); - - if ($this->request->is_ajax()) - { - $json_response = new \phpbb\json_response; - $json_response->send(array('success' => true)); - } - redirect($this->u_action); // redirect in order to get rid of excessive URL parameters - } - - /** - * Get the module order to the last module in the column - * - * @param int $module_column Module column to check - * @return int Module order of the last module in the column - */ - public function get_last_module_order($module_column) - { - $modules = obtain_portal_modules(); - $last_order = 1; - foreach ($modules as $cur_module) - { - if ($cur_module['module_column'] != $module_column) - { - continue; - } - - $last_order = max($last_order, $cur_module['module_order']); - } - - return $last_order; - } - - /** - * Move module up one row - * - * @param int $module_id ID of the module that should be moved - */ - public function move_module_up($module_id) - { - $updated = false; - $module_data = $this->get_move_module_data($module_id); - - if (($module_data !== false) && ($module_data['module_order'] > 1)) - { - $sql = 'UPDATE ' . PORTAL_MODULES_TABLE . ' - SET module_order = module_order + 1 - WHERE module_order = ' . (int) ($module_data['module_order'] - 1) . ' - AND module_column = ' . (int) $module_data['module_column']; - - $this->db->sql_query($sql); - $updated = $this->db->sql_affectedrows(); - if ($updated) - { - $sql = 'UPDATE ' . PORTAL_MODULES_TABLE . ' - SET module_order = module_order - 1 - WHERE module_id = ' . (int) $module_id; - $this->db->sql_query($sql); - } - } - - $this->handle_after_move($updated, true); - } - - /** - * Move module down one row - * - * @param int $module_id ID of the module that should be moved - */ - public function move_module_down($module_id) - { - $updated = false; - $module_data = $this->get_move_module_data($module_id); - - if ($module_data !== false && $this->get_last_module_order($module_data['module_column']) != $module_data['module_order']) - { - $sql = 'UPDATE ' . PORTAL_MODULES_TABLE . ' - SET module_order = module_order - 1 - WHERE module_order = ' . (int) ($module_data['module_order'] + 1) . ' - AND module_column = ' . (int) $module_data['module_column']; - $this->db->sql_query($sql); - $updated = $this->db->sql_affectedrows(); - if ($updated) - { - $sql = 'UPDATE ' . PORTAL_MODULES_TABLE . ' - SET module_order = module_order + 1 - WHERE module_id = ' . (int) $module_id; - $this->db->sql_query($sql); - } - } - - $this->handle_after_move($updated, true); - } - - /** - * Move module left one column - * - * @param int $module_id ID of the module that should be moved - */ - public function move_module_left($module_id) - { - $module_data = $this->get_move_module_data($module_id); - - if (!($this->c_class = $this->portal_helper->get_module($module_data['module_classname']))) - { - trigger_error('CLASS_NOT_FOUND', E_USER_ERROR); - } - - $move_action = 0; - - if ($module_data !== false && $module_data['module_column'] > $this->portal_columns->string_to_number('left')) - { - if($this->c_class->columns & $this->portal_columns->string_to_constant($this->portal_columns->number_to_string($module_data['module_column'] - 1))) - { - $move_action = 1; // we move 1 column to the left - } - else if($this->c_class->columns & $this->portal_columns->string_to_constant($this->portal_columns->number_to_string($module_data['module_column'] - 2)) && $module_data['module_column'] != 2) - { - $move_action = 2; // we move 2 columns to the left - } - else - { - $this->handle_after_move(false); - } - - /** - * moving only 1 column to the left means we will either end up in the left column - * or in the center column. this is not possible when moving 2 columns to the left. - * therefore we only need to check if we won't end up with a duplicate module in the - * new column (side columns (left & right) or center columns (top, center, bottom)). - * of course this does not apply to custom modules. - */ - if ($module_data['module_classname'] != '\board3\portal\modules\custom' && $move_action == 1) - { - $column_string = $this->portal_columns->number_to_string($module_data['module_column'] - $move_action); - // we can only move left to the left & center column - if ($column_string == 'left' && !$this->can_move_module(array('right', 'left'), $module_data['module_classname'])) - { - trigger_error($this->user->lang['UNABLE_TO_MOVE'] . adm_back_link($this->u_action)); - } - else if ($column_string == 'center' && !$this->can_move_module(array('top', 'center', 'bottom'), $module_data['module_classname'])) - { - // we are moving from the right to the center column so we should move to the left column instead - $move_action = 2; - } - } - - $sql = 'UPDATE ' . PORTAL_MODULES_TABLE . ' - SET module_order = module_order + 1 - WHERE module_order >= ' . $module_data['module_order'] . ' - AND module_column = ' . ($module_data['module_column'] - $move_action); - $this->db->sql_query($sql); - $updated = $this->db->sql_affectedrows(); - - $sql = 'UPDATE ' . PORTAL_MODULES_TABLE . ' - SET module_column = module_column - ' . $move_action . ' - WHERE module_id = ' . (int) $module_id; - $this->db->sql_query($sql); - - $sql = 'UPDATE ' . PORTAL_MODULES_TABLE . ' - SET module_order = module_order - 1 - WHERE module_order >= ' . $module_data['module_order'] . ' - AND module_column = ' . $module_data['module_column']; - $this->db->sql_query($sql); - - // the module that needs to moved is in the last row - if(!$updated) - { - $sql = 'SELECT MAX(module_order) as new_order - FROM ' . PORTAL_MODULES_TABLE . ' - WHERE module_order < ' . $module_data['module_order'] . ' - AND module_column = ' . (int) ($module_data['module_column'] - $move_action); - $this->db->sql_query($sql); - $new_order = $this->db->sql_fetchfield('new_order') + 1; - - $sql = 'UPDATE ' . PORTAL_MODULES_TABLE . ' - SET module_order = ' . $new_order . ' - WHERE module_id = ' . (int) $module_id; - $this->db->sql_query($sql); - } - } - else - { - $this->handle_after_move(false); - } - - $this->handle_after_move(true); - } - - /** - * Move module right one column - * - * @param int $module_id ID of the module that should be moved - */ - public function move_module_right($module_id) - { - $module_data = $this->get_move_module_data($module_id); - - if (!($this->c_class = $this->portal_helper->get_module($module_data['module_classname']))) - { - trigger_error('CLASS_NOT_FOUND', E_USER_ERROR); - } - - $move_action = 0; - - if ($module_data !== false && $module_data['module_column'] < $this->portal_columns->string_to_number('right')) - { - if($this->c_class->columns & $this->portal_columns->string_to_constant($this->portal_columns->number_to_string($module_data['module_column'] + 1))) - { - $move_action = 1; // we move 1 column to the right - } - else if($this->c_class->columns & $this->portal_columns->string_to_constant($this->portal_columns->number_to_string($module_data['module_column'] + 2)) && $module_data['module_column'] != 2) - { - $move_action = 2; // we move 2 columns to the right - } - else - { - $this->handle_after_move(false); - } - - /** - * moving only 1 column to the right means we will either end up in the right column - * or in the center column. this is not possible when moving 2 columns to the right. - * therefore we only need to check if we won't end up with a duplicate module in the - * new column (side columns (left & right) or center columns (top, center, bottom)). - * of course this does not apply to custom modules. - */ - if ($module_data['module_classname'] != '\board3\portal\modules\custom' && $move_action == 1) - { - $column_string = $this->portal_columns->number_to_string($module_data['module_column'] + $move_action); - // we can only move right to the right & center column - if ($column_string == 'right' && !$this->can_move_module(array('right', 'left'), $module_data['module_classname'])) - { - trigger_error($this->user->lang['UNABLE_TO_MOVE'] . adm_back_link($this->u_action)); - } - else if ($column_string == 'center' && !$this->can_move_module(array('top', 'center', 'bottom'), $module_data['module_classname'])) - { - // we are moving from the left to the center column so we should move to the right column instead - $move_action = 2; - } - } - - $sql = 'UPDATE ' . PORTAL_MODULES_TABLE . ' - SET module_order = module_order + 1 - WHERE module_order >= ' . (int) $module_data['module_order'] . ' - AND module_column = ' . (int) ($module_data['module_column'] + $move_action); - $this->db->sql_query($sql); - $updated = $this->db->sql_affectedrows(); - - $sql = 'UPDATE ' . PORTAL_MODULES_TABLE . ' - SET module_column = module_column + ' . $move_action . ' - WHERE module_id = ' . (int) $module_id; - $this->db->sql_query($sql); - - $sql = 'UPDATE ' . PORTAL_MODULES_TABLE . ' - SET module_order = module_order - 1 - WHERE module_order >= ' . (int) $module_data['module_order'] . ' - AND module_column = ' . (int) $module_data['module_column']; - $this->db->sql_query($sql); - - // the module that needs to moved is in the last row - if(!$updated) - { - $sql = 'SELECT MAX(module_order) as new_order - FROM ' . PORTAL_MODULES_TABLE . ' - WHERE module_order < ' . (int) $module_data['module_order'] . ' - AND module_column = ' . (int) ($module_data['module_column'] + $move_action); - $this->db->sql_query($sql); - $new_order = $this->db->sql_fetchfield('new_order') + 1; - - $sql = 'UPDATE ' . PORTAL_MODULES_TABLE . ' - SET module_order = ' . (int) $new_order . ' - WHERE module_id = ' . (int) $module_id; - $this->db->sql_query($sql); - } - } - else - { - $this->handle_after_move(false); - } - - $this->handle_after_move(true); - } - - /** - * Delete module - * - * @param int|string $id Module ID of the acp_portal module - * @param string $mode Mode of the acp_portal module - * @param string $action Current action of the acp_portal module - * @param int $module_id ID of the module that should be deleted - */ - protected function module_delete($id, $mode, $action, $module_id) - { - $module_data = $this->get_move_module_data($module_id); - - if ($module_data !== false) - { - $module_classname = $this->request->variable('module_classname', ''); - - if (!($this->c_class = $this->portal_helper->get_module($module_classname))) - { - trigger_error('CLASS_NOT_FOUND', E_USER_ERROR); - } - - if (confirm_box(true)) - { - $this->c_class->uninstall($module_data['module_id'], $this->db); - - $sql = 'DELETE FROM ' . PORTAL_MODULES_TABLE . ' - WHERE module_id = ' . (int) $module_id; - $this->db->sql_query($sql); - - $sql = 'UPDATE ' . PORTAL_MODULES_TABLE . ' - SET module_order = module_order - 1 - WHERE module_column = ' . $module_data['module_column'] . ' - AND module_order > ' . $module_data['module_order']; - $this->db->sql_query($sql); - - $this->cache->purge(); // make sure we don't get errors after re-adding a module - - if ($this->request->is_ajax()) - { - $json_response = new \phpbb\json_response; - $json_response->send(array( - 'success' => true, - 'MESSAGE_TITLE' => $this->user->lang['INFORMATION'], - 'MESSAGE_TEXT' => $this->user->lang['SUCCESS_DELETE'], - )); - } - trigger_error($this->user->lang['SUCCESS_DELETE'] . adm_back_link($this->u_action)); - } - else - { - if ($this->c_class->get_language()) - { - $this->user->add_lang_ext('board3/portal', 'modules/' . $this->c_class->get_language()); - } - $confirm_text = (isset($this->user->lang[$module_data['module_name']])) ? sprintf($this->user->lang['DELETE_MODULE_CONFIRM'], $this->user->lang[$module_data['module_name']]) : sprintf($this->user->lang['DELETE_MODULE_CONFIRM'], utf8_normalize_nfc($module_data['module_name'])); - confirm_box(false, $confirm_text, build_hidden_fields(array( - 'i' => $id, - 'mode' => $mode, - 'action' => $action, - 'module_id' => $module_id, - 'module_classname' => $module_classname, - ))); - } - } - - $this->cache->destroy('portal_modules'); - } - - /** - * Get link to module settings with specified ID and portal_module mode - * - * @param string $mode portal_module mode - * @param int $module_id Module ID - * - * @return string Link to module settings - */ - protected function get_module_link($mode, $module_id) - { - return preg_replace(array('/i=[0-9]+/', '/mode=[a-zA-Z0-9_]+/'), array('i=%5C' . str_replace('\\', '%5C', __CLASS__), 'mode=' . $mode), $this->u_action) . (($module_id) ? '&module_id=' . $module_id : ''); - } - - /** - * Check if module can be moved to desired column(s) - * - * @param array|int $target_column Column(s) the module should be - * moved to - * @param string $module_class Class of the module - * @return bool True if module can be moved to desired column, - * false if not - */ - public function can_move_module($target_column, $module_class) - { - $submit = true; - - if (is_array($target_column)) - { - foreach ($target_column as $column) - { - if (!$this->can_move_module($column, $module_class)) - { - $submit = false; - } - } - } - - // do we want to add the module to the side columns or to the center columns? - if (in_array($target_column, array('left', 'right'))) - { - // does the module already exist in the side columns? - if (isset($this->module_column[$module_class]) && - (in_array('left', $this->module_column[$module_class]) || in_array('right', $this->module_column[$module_class]))) - { - $submit = false; - } - } - else if (in_array($target_column, array('center', 'top', 'bottom'))) - { - // does the module already exist in the center columns? - if (isset($this->module_column[$module_class]) && - (in_array('center', $this->module_column[$module_class]) || - in_array('top', $this->module_column[$module_class]) || - in_array('bottom', $this->module_column[$module_class]))) - { - $submit = false; - } - } - - return $submit; - } } diff --git a/tests/unit/acp/move_module_test.php b/tests/unit/acp/move_module_test.php index ef3a9312..cdda6afd 100644 --- a/tests/unit/acp/move_module_test.php +++ b/tests/unit/acp/move_module_test.php @@ -7,7 +7,7 @@ * */ -namespace board3\portal\acp; +namespace board3\portal\portal\modules; require_once(dirname(__FILE__) . '/../../../includes/functions.php'); require_once(dirname(__FILE__) . '/../../../acp/portal_module.php'); @@ -18,6 +18,12 @@ class phpbb_acp_move_module_test extends \board3\portal\tests\testframework\data static public $error = false; static public $override_trigger_error = false; + /** @var \board3\portal\portal\modules\manager */ + protected $modules_manager; + + /** @var \board3\portal\portal\columns */ + protected $portal_columns; + public function setUp() { parent::setUp(); @@ -39,7 +45,8 @@ class phpbb_acp_move_module_test extends \board3\portal\tests\testframework\data new \board3\portal\modules\welcome($config, new \phpbb_mock_request, $this->db, $user, $phpbb_root_path, $phpEx), new \board3\portal\modules\donation($config, $template, $user), )); - $phpbb_container->set('board3.portal.helper', new \board3\portal\includes\helper($phpbb_container->get('board3.portal.module_collection'))); + $portal_helper = new \board3\portal\includes\helper($phpbb_container->get('board3.portal.module_collection')); + $phpbb_container->set('board3.portal.helper', $portal_helper); $phpbb_container->set('board3.portal.modules_helper', new \board3\portal\includes\modules_helper(new \phpbb\auth\auth(), $config, $request)); $phpbb_container->setParameter('board3.portal.modules.table', $table_prefix . 'portal_modules'); $phpbb_container->setParameter('board3.portal.config.table', $table_prefix . 'portal_config'); @@ -64,17 +71,19 @@ 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', )); + $this->modules_manager = new \board3\portal\portal\modules\manager($cache, $db, $this->portal_columns, $portal_helper, $request, $user); + $phpbb_container->set('board3.portal.modules.manager', $this->modules_manager); $this->portal_module = new \board3\portal\acp\portal_module(); $this->update_portal_modules(); } protected function update_portal_modules() { - $this->portal_module->module_column = array(); + $this->modules_manager->module_column = array(); $portal_modules = obtain_portal_modules(); foreach($portal_modules as $cur_module) { - $this->portal_module->module_column[$cur_module['module_classname']][] = $this->portal_columns->number_to_string($cur_module['module_column']); + $this->modules_manager->module_column[$cur_module['module_classname']][] = $this->portal_columns->number_to_string($cur_module['module_column']); } } @@ -85,7 +94,7 @@ class phpbb_acp_move_module_test extends \board3\portal\tests\testframework\data public function test_get_move_module_data() { - $module_data = $this->portal_module->get_move_module_data(1); + $module_data = $this->modules_manager->get_move_module_data(1); $this->assertEquals(array( 'module_order' => '1', 'module_column' => '1', @@ -115,30 +124,30 @@ class phpbb_acp_move_module_test extends \board3\portal\tests\testframework\data */ public function test_get_last_module_order($expected, $column) { - $this->assertEquals($expected, $this->portal_module->get_last_module_order($column)); + $this->assertEquals($expected, $this->modules_manager->get_last_module_order($column)); } public function test_move_module_up() { self::$redirected = false; - $this->portal_module->move_module_up(2); + $this->modules_manager->move_module_up(2); $this->assertTrue(self::$redirected); $this->setExpectedTriggerError(E_USER_NOTICE, 'UNABLE_TO_MOVE_ROW'); self::$redirected = false; - $this->portal_module->move_module_up(2); + $this->modules_manager->move_module_up(2); $this->assertFalse(self::$redirected); } public function test_move_module_down() { self::$redirected = false; - $this->portal_module->move_module_down(3); + $this->modules_manager->move_module_down(3); $this->assertTrue(self::$redirected); $this->setExpectedTriggerError(E_USER_NOTICE, 'UNABLE_TO_MOVE_ROW'); self::$redirected = false; - $this->portal_module->move_module_down(3); + $this->modules_manager->move_module_down(3); $this->assertFalse(self::$redirected); } @@ -165,7 +174,7 @@ class phpbb_acp_move_module_test extends \board3\portal\tests\testframework\data self::$redirected = false; } - $this->portal_module->handle_after_move($success, $is_row); + $this->modules_manager->handle_after_move($success, $is_row); if (!$error) { @@ -193,26 +202,26 @@ class phpbb_acp_move_module_test extends \board3\portal\tests\testframework\data if ($column_start > 3) { $this->setExpectedTriggerError(E_USER_ERROR, 'CLASS_NOT_FOUND'); - $this->portal_module->move_module_right($module_id); + $this->modules_manager->move_module_right($module_id); return; } if ($add_to_column) { - $module_data = $this->portal_module->get_move_module_data($module_id); - $this->portal_module->module_column[$module_data['module_classname']][] = $this->portal_columns->number_to_string($add_to_column); + $module_data = $this->modules_manager->get_move_module_data($module_id); + $this->modules_manager->module_column[$module_data['module_classname']][] = $this->portal_columns->number_to_string($add_to_column); } for ($i = 1; $i <= $move_right; $i++) { - $data = $this->portal_module->get_move_module_data($module_id); + $data = $this->modules_manager->get_move_module_data($module_id); $this->assertEquals($column_start, $data['module_column']); - $this->portal_module->move_module_right($module_id); + $this->modules_manager->move_module_right($module_id); $column_start++; $this->update_portal_modules(); } $this->setExpectedTriggerError(E_USER_NOTICE, 'UNABLE_TO_MOVE'); - $this->portal_module->move_module_right($module_id); + $this->modules_manager->move_module_right($module_id); } public function data_move_module_left() @@ -235,37 +244,37 @@ class phpbb_acp_move_module_test extends \board3\portal\tests\testframework\data if ($column_start > 3) { $this->setExpectedTriggerError(E_USER_ERROR, 'CLASS_NOT_FOUND'); - $this->portal_module->move_module_left($module_id); + $this->modules_manager->move_module_left($module_id); return; } for ($i = 1; $i <= $move_right; $i++) { - $data = $this->portal_module->get_move_module_data($module_id); + $data = $this->modules_manager->get_move_module_data($module_id); $this->assertEquals($column_start, $data['module_column']); - $this->portal_module->move_module_right($module_id); + $this->modules_manager->move_module_right($module_id); $this->update_portal_modules(); $column_start++; } if ($add_to_column) { - $module_data = $this->portal_module->get_move_module_data($module_id); - $this->portal_module->module_column[$module_data['module_classname']][] = $this->portal_columns->number_to_string($add_to_column); + $module_data = $this->modules_manager->get_move_module_data($module_id); + $this->modules_manager->module_column[$module_data['module_classname']][] = $this->portal_columns->number_to_string($add_to_column); } // We always start in the right column = 3 $column_start = 3; for ($i = 1; $i <= $move_left; $i++) { - $data = $this->portal_module->get_move_module_data($module_id); + $data = $this->modules_manager->get_move_module_data($module_id); $this->assertEquals($column_start, $data['module_column']); - $this->portal_module->move_module_left($module_id); + $this->modules_manager->move_module_left($module_id); $this->update_portal_modules(); $column_start--; } $this->setExpectedTriggerError(E_USER_NOTICE, 'UNABLE_TO_MOVE'); - $this->portal_module->move_module_left($module_id); + $this->modules_manager->move_module_left($module_id); } public function data_can_move_module() @@ -286,7 +295,7 @@ class phpbb_acp_move_module_test extends \board3\portal\tests\testframework\data public function test_can_move_module($expected, $target_column, $module_class) { $this->update_portal_modules(); - $this->assertEquals($expected, $this->portal_module->can_move_module($target_column, $module_class)); + $this->assertEquals($expected, $this->modules_manager->can_move_module($target_column, $module_class)); } }