[ticket/416] Use modules manager in acp and tests
B3P-416
This commit is contained in:
@@ -13,10 +13,15 @@ class portal_module
|
|||||||
{
|
{
|
||||||
public $u_action;
|
public $u_action;
|
||||||
public $new_config = array();
|
public $new_config = array();
|
||||||
|
|
||||||
|
/** @var \board3\portal\modules\module_interface */
|
||||||
protected $c_class;
|
protected $c_class;
|
||||||
|
|
||||||
protected $db, $user, $cache, $template, $display_vars, $config, $phpbb_root_path, $phpbb_admin_path, $phpEx, $phpbb_container;
|
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;
|
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()
|
public function __construct()
|
||||||
{
|
{
|
||||||
@@ -44,6 +49,7 @@ class portal_module
|
|||||||
$this->modules_helper = $this->phpbb_container->get('board3.portal.modules_helper');
|
$this->modules_helper = $this->phpbb_container->get('board3.portal.modules_helper');
|
||||||
$this->log = $phpbb_log;
|
$this->log = $phpbb_log;
|
||||||
$this->portal_columns = $this->phpbb_container->get('board3.portal.columns');
|
$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_MODULES_TABLE', $this->phpbb_container->getParameter('board3.portal.modules.table'));
|
||||||
define('PORTAL_CONFIG_TABLE', $this->phpbb_container->getParameter('board3.portal.config.table'));
|
define('PORTAL_CONFIG_TABLE', $this->phpbb_container->getParameter('board3.portal.config.table'));
|
||||||
|
|
||||||
@@ -60,6 +66,10 @@ class portal_module
|
|||||||
$form_key = 'acp_portal';
|
$form_key = 'acp_portal';
|
||||||
add_form_key($form_key);
|
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:
|
* Validation types are:
|
||||||
* string, int, bool,
|
* 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;
|
$cfg_array = ($this->request->is_set('config')) ? $this->request->variable('config', array('' => ''), true) : $this->new_config;
|
||||||
$error = array();
|
$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);
|
validate_config_vars($display_vars['vars'], $cfg_array, $error);
|
||||||
if ($submit && !check_form_key($form_key))
|
if ($submit && !check_form_key($form_key))
|
||||||
{
|
{
|
||||||
@@ -170,7 +180,7 @@ class portal_module
|
|||||||
|
|
||||||
if($reset_module && !empty($module_data))
|
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...
|
// 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,
|
'S_ERROR' => (sizeof($error)) ? true : false,
|
||||||
'ERROR_MSG' => implode('<br />', $error),
|
'ERROR_MSG' => implode('<br />', $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,
|
'B3P_ACP_ROOT' => $this->root_path,
|
||||||
));
|
));
|
||||||
|
|
||||||
@@ -388,28 +398,28 @@ class portal_module
|
|||||||
{
|
{
|
||||||
$installed_modules[] = $cur_module['module_classname'];
|
$installed_modules[] = $cur_module['module_classname'];
|
||||||
// Create an array with the columns the module is in
|
// 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')
|
if ($action == 'move_up')
|
||||||
{
|
{
|
||||||
$this->move_module_up($module_id);
|
$this->modules_manager->move_module_up($module_id);
|
||||||
}
|
}
|
||||||
else if ($action == 'move_down')
|
else if ($action == 'move_down')
|
||||||
{
|
{
|
||||||
$this->move_module_down($module_id);
|
$this->modules_manager->move_module_down($module_id);
|
||||||
}
|
}
|
||||||
else if($action == 'move_right')
|
else if($action == 'move_right')
|
||||||
{
|
{
|
||||||
$this->move_module_right($module_id);
|
$this->modules_manager->move_module_right($module_id);
|
||||||
}
|
}
|
||||||
else if($action == 'move_left')
|
else if($action == 'move_left')
|
||||||
{
|
{
|
||||||
$this->move_module_left($module_id);
|
$this->modules_manager->move_module_left($module_id);
|
||||||
}
|
}
|
||||||
else if ($action == 'delete')
|
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('' => ''));
|
$add_list = $this->request->variable('add', array('' => ''));
|
||||||
@@ -477,7 +487,7 @@ class portal_module
|
|||||||
trigger_error($error_output . adm_back_link($this->u_action));
|
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));
|
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(
|
$this->template->assign_vars(array(
|
||||||
'S_AJAX_REQUEST' => true,
|
'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(
|
$this->template->set_filenames(array(
|
||||||
'body' => 'portal/acp_portal_modules.html')
|
'body' => 'portal/acp_portal_modules.html')
|
||||||
@@ -539,7 +549,7 @@ class portal_module
|
|||||||
'MESSAGE_TEXT' => $this->user->lang['ADD_MODULE'],
|
'MESSAGE_TEXT' => $this->user->lang['ADD_MODULE'],
|
||||||
|
|
||||||
'YES_VALUE' => $this->user->lang['SUBMIT'],
|
'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
|
'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
|
$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;
|
$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
|
$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;
|
$move_left = false;
|
||||||
}
|
}
|
||||||
@@ -627,8 +637,8 @@ class portal_module
|
|||||||
'MODULE_IMAGE' => ($row['module_image_src']) ? '<img src="' . $this->root_path . 'styles/' . $this->user->style['style_path'] . '/theme/images/portal/' . $row['module_image_src'] . '" alt="' . $row['module_name'] . '" />' : '',
|
'MODULE_IMAGE' => ($row['module_image_src']) ? '<img src="' . $this->root_path . 'styles/' . $this->user->style['style_path'] . '/theme/images/portal/' . $row['module_image_src'] . '" alt="' . $row['module_name'] . '" />' : '',
|
||||||
'MODULE_ENABLED' => ($row['module_status']) ? true : false,
|
'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_DELETE' => $this->modules_manager->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_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_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_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' : '',
|
'U_MOVE_RIGHT' => ($move_right) ? $this->u_action . '&module_id=' . $row['module_id'] . '&action=move_right' : '',
|
||||||
@@ -653,513 +663,4 @@ class portal_module
|
|||||||
break;
|
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace board3\portal\acp;
|
namespace board3\portal\portal\modules;
|
||||||
|
|
||||||
require_once(dirname(__FILE__) . '/../../../includes/functions.php');
|
require_once(dirname(__FILE__) . '/../../../includes/functions.php');
|
||||||
require_once(dirname(__FILE__) . '/../../../acp/portal_module.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 $error = false;
|
||||||
static public $override_trigger_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()
|
public function setUp()
|
||||||
{
|
{
|
||||||
parent::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\welcome($config, new \phpbb_mock_request, $this->db, $user, $phpbb_root_path, $phpEx),
|
||||||
new \board3\portal\modules\donation($config, $template, $user),
|
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->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.modules.table', $table_prefix . 'portal_modules');
|
||||||
$phpbb_container->setParameter('board3.portal.config.table', $table_prefix . 'portal_config');
|
$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' => 'UNABLE_TO_MOVE',
|
||||||
'UNABLE_TO_MOVE_ROW' => 'UNABLE_TO_MOVE_ROW',
|
'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->portal_module = new \board3\portal\acp\portal_module();
|
||||||
$this->update_portal_modules();
|
$this->update_portal_modules();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function 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();
|
$portal_modules = obtain_portal_modules();
|
||||||
foreach($portal_modules as $cur_module)
|
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()
|
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(
|
$this->assertEquals(array(
|
||||||
'module_order' => '1',
|
'module_order' => '1',
|
||||||
'module_column' => '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)
|
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()
|
public function test_move_module_up()
|
||||||
{
|
{
|
||||||
self::$redirected = false;
|
self::$redirected = false;
|
||||||
$this->portal_module->move_module_up(2);
|
$this->modules_manager->move_module_up(2);
|
||||||
$this->assertTrue(self::$redirected);
|
$this->assertTrue(self::$redirected);
|
||||||
|
|
||||||
$this->setExpectedTriggerError(E_USER_NOTICE, 'UNABLE_TO_MOVE_ROW');
|
$this->setExpectedTriggerError(E_USER_NOTICE, 'UNABLE_TO_MOVE_ROW');
|
||||||
self::$redirected = false;
|
self::$redirected = false;
|
||||||
$this->portal_module->move_module_up(2);
|
$this->modules_manager->move_module_up(2);
|
||||||
$this->assertFalse(self::$redirected);
|
$this->assertFalse(self::$redirected);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function test_move_module_down()
|
public function test_move_module_down()
|
||||||
{
|
{
|
||||||
self::$redirected = false;
|
self::$redirected = false;
|
||||||
$this->portal_module->move_module_down(3);
|
$this->modules_manager->move_module_down(3);
|
||||||
$this->assertTrue(self::$redirected);
|
$this->assertTrue(self::$redirected);
|
||||||
|
|
||||||
$this->setExpectedTriggerError(E_USER_NOTICE, 'UNABLE_TO_MOVE_ROW');
|
$this->setExpectedTriggerError(E_USER_NOTICE, 'UNABLE_TO_MOVE_ROW');
|
||||||
self::$redirected = false;
|
self::$redirected = false;
|
||||||
$this->portal_module->move_module_down(3);
|
$this->modules_manager->move_module_down(3);
|
||||||
$this->assertFalse(self::$redirected);
|
$this->assertFalse(self::$redirected);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -165,7 +174,7 @@ class phpbb_acp_move_module_test extends \board3\portal\tests\testframework\data
|
|||||||
self::$redirected = false;
|
self::$redirected = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->portal_module->handle_after_move($success, $is_row);
|
$this->modules_manager->handle_after_move($success, $is_row);
|
||||||
|
|
||||||
if (!$error)
|
if (!$error)
|
||||||
{
|
{
|
||||||
@@ -193,26 +202,26 @@ class phpbb_acp_move_module_test extends \board3\portal\tests\testframework\data
|
|||||||
if ($column_start > 3)
|
if ($column_start > 3)
|
||||||
{
|
{
|
||||||
$this->setExpectedTriggerError(E_USER_ERROR, 'CLASS_NOT_FOUND');
|
$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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($add_to_column)
|
if ($add_to_column)
|
||||||
{
|
{
|
||||||
$module_data = $this->portal_module->get_move_module_data($module_id);
|
$module_data = $this->modules_manager->get_move_module_data($module_id);
|
||||||
$this->portal_module->module_column[$module_data['module_classname']][] = $this->portal_columns->number_to_string($add_to_column);
|
$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++)
|
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->assertEquals($column_start, $data['module_column']);
|
||||||
$this->portal_module->move_module_right($module_id);
|
$this->modules_manager->move_module_right($module_id);
|
||||||
$column_start++;
|
$column_start++;
|
||||||
$this->update_portal_modules();
|
$this->update_portal_modules();
|
||||||
}
|
}
|
||||||
$this->setExpectedTriggerError(E_USER_NOTICE, 'UNABLE_TO_MOVE');
|
$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()
|
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)
|
if ($column_start > 3)
|
||||||
{
|
{
|
||||||
$this->setExpectedTriggerError(E_USER_ERROR, 'CLASS_NOT_FOUND');
|
$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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for ($i = 1; $i <= $move_right; $i++)
|
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->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();
|
$this->update_portal_modules();
|
||||||
$column_start++;
|
$column_start++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($add_to_column)
|
if ($add_to_column)
|
||||||
{
|
{
|
||||||
$module_data = $this->portal_module->get_move_module_data($module_id);
|
$module_data = $this->modules_manager->get_move_module_data($module_id);
|
||||||
$this->portal_module->module_column[$module_data['module_classname']][] = $this->portal_columns->number_to_string($add_to_column);
|
$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
|
// We always start in the right column = 3
|
||||||
$column_start = 3;
|
$column_start = 3;
|
||||||
for ($i = 1; $i <= $move_left; $i++)
|
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->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();
|
$this->update_portal_modules();
|
||||||
$column_start--;
|
$column_start--;
|
||||||
}
|
}
|
||||||
$this->setExpectedTriggerError(E_USER_NOTICE, 'UNABLE_TO_MOVE');
|
$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()
|
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)
|
public function test_can_move_module($expected, $target_column, $module_class)
|
||||||
{
|
{
|
||||||
$this->update_portal_modules();
|
$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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user