From c4026c9066018f1aedadb80756a53ceaf3c63f23 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Sat, 11 Aug 2012 17:28:41 +0200 Subject: [PATCH] Save module settings even if module image can't be found --- root/includes/acp/acp_portal.php | 18 +++++++++++--- root/language/de/mods/info_acp_portal.php | 1 + root/language/en/mods/info_acp_portal.php | 1 + root/portal/includes/functions.php | 29 +++++++++++++++++++--- root/portal/includes/functions_modules.php | 2 ++ 5 files changed, 44 insertions(+), 7 deletions(-) diff --git a/root/includes/acp/acp_portal.php b/root/includes/acp/acp_portal.php index 15894c0d..a3af8a0c 100644 --- a/root/includes/acp/acp_portal.php +++ b/root/includes/acp/acp_portal.php @@ -166,6 +166,7 @@ class acp_portal { if (confirm_box(true)) { + // @todo: handle possible error if selected module_id doesn't exist $sql_ary = array( 'module_name' => $c_class->name, 'module_image_src' => $c_class->image_src, @@ -244,6 +245,7 @@ class acp_portal { $module_permission = request_var('permission-setting', array(0 => '')); $groups_ary = array(); + $img_error = ''; // get groups and check if the selected groups actually exist $sql = 'SELECT group_id @@ -274,7 +276,7 @@ class acp_portal } // check if module image file actually exists - check_file_src($sql_ary['module_image_src'], '', $module_id); + $img_error = check_file_src($sql_ary['module_image_src'], '', $module_id, false); $sql = 'UPDATE ' . PORTAL_MODULES_TABLE . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' @@ -285,13 +287,13 @@ class acp_portal $cache->destroy('sql', CONFIG_TABLE); if(isset($module_name)) { - add_log('admin', 'LOG_PORTAL_CONFIG',$module_name); + add_log('admin', 'LOG_PORTAL_CONFIG', $module_name); } else { add_log('admin', 'LOG_PORTAL_CONFIG', $user->lang['ACP_PORTAL_' . strtoupper($mode) . '_INFO']); } - trigger_error($user->lang['CONFIG_UPDATED'] . adm_back_link(($module_id) ? append_sid("{$phpbb_root_path}adm/index.$phpEx", 'i=portal&mode=modules') : $this->u_action)); + trigger_error($user->lang['CONFIG_UPDATED'] . ((!empty($img_error) ? '

' . $user->lang['MODULE_IMAGE_ERROR'] . '
' . $img_error : '')) . adm_back_link(($module_id) ? append_sid("{$phpbb_root_path}adm/index.$phpEx", 'i=portal&mode=modules') : $this->u_action)); } // show custom HTML files on the settings page of the modules instead of the standard board3 portal one, if chosen by module @@ -488,6 +490,10 @@ class acp_portal { $move_action = 2; // we move 2 columns to the right } + else + { + // @todo: need an error handle here + } /** * moving only 1 column to the right means we will either end up in the right column @@ -590,6 +596,10 @@ class acp_portal { $move_action = 2; // we move 2 columns to the left } + else + { + // @todo: need an error handle here (i.e. trigger_error()) + } /** * moving only 1 column to the left means we will either end up in the left column @@ -816,7 +826,7 @@ class acp_portal $error_output = $cur_error . '
'; } } - else if($error != false) + else { $error_output = $error; } diff --git a/root/language/de/mods/info_acp_portal.php b/root/language/de/mods/info_acp_portal.php index 002190fb..67906d8c 100644 --- a/root/language/de/mods/info_acp_portal.php +++ b/root/language/de/mods/info_acp_portal.php @@ -73,6 +73,7 @@ $lang = array_merge($lang, array( 'MODULE_RESET_EXP' => 'Dies wird alle Einstellungen des Moduls auf die Standardeinstellungen zurücksetzen!', 'MODULE_STATUS' => 'Aktiviere Modul', 'MODULE_ADD_ONCE' => 'Diese Modul kann nur ein Mal hinzugefügt werden.', + 'MODULE_IMAGE_ERROR' => 'Während dem Prüfen des Modul Bildes sind ein oder mehrere Fehler aufgetreten:', // general 'ACP_PORTAL' => 'Portal', diff --git a/root/language/en/mods/info_acp_portal.php b/root/language/en/mods/info_acp_portal.php index addadf53..7ffcf694 100755 --- a/root/language/en/mods/info_acp_portal.php +++ b/root/language/en/mods/info_acp_portal.php @@ -72,6 +72,7 @@ $lang = array_merge($lang, array( 'MODULE_RESET_EXP' => 'This will reset all settings to the default!', 'MODULE_STATUS' => 'Enable module', 'MODULE_ADD_ONCE' => 'This module can only be added once.', + 'MODULE_IMAGE_ERROR' => 'There was an error while checking for the module image:', // general 'ACP_PORTAL' => 'Portal', diff --git a/root/portal/includes/functions.php b/root/portal/includes/functions.php index 72f6b597..716f17fb 100644 --- a/root/portal/includes/functions.php +++ b/root/portal/includes/functions.php @@ -100,7 +100,7 @@ function phpbb_fetch_posts($module_id, $forum_from, $permissions, $number_of_pos { global $db, $phpbb_root_path, $auth, $user, $bbcode_bitfield, $bbcode, $portal_config, $config; - $posts = array(); + $posts = $update_count = array(); $post_time = ($time == 0) ? '' : 'AND t.topic_time > ' . (time() - $time * 86400); $forum_from = (strpos($forum_from, ',') !== FALSE) ? explode(',', $forum_from) : (($forum_from != '') ? array($forum_from) : array()); $str_where = ''; @@ -174,6 +174,11 @@ function phpbb_fetch_posts($module_id, $forum_from, $permissions, $number_of_pos $post_link = ($config['board3_news_style_' . $module_id]) ? 't.topic_first_post_id = p.post_id' : (($config['board3_news_show_last_' . $module_id]) ? 't.topic_last_post_id = p.post_id' : 't.topic_first_post_id = p.post_id' ) ; $topic_order = ($config['board3_news_show_last_' . $module_id]) ? 't.topic_last_post_time DESC' : 't.topic_time DESC' ; break; + + default: + $topic_type = $str_where = $user_link = $post_link = ''; + $topic_order = 't.topic_time DESC'; + // maybe use trigger_error here, as this shouldn't happen } if ($type == 'announcements' && $global_f < 1) @@ -440,6 +445,11 @@ function generate_portal_pagination($base_url, $num_items, $per_page, $start_ite $pagination_type = 'np'; $anker = '#n'; break; + + default: + // this shouldn't happend @todo: use trigger_error() + $pagination_type = 'ap'; + $anker = '#a'; } // Make sure $per_page is a valid value @@ -631,11 +641,13 @@ function get_portal_tracking_info($fetch_news) } $db->sql_freeresult($result); + // @todo: do not use $current_forum here as this is already used by the outside foreach foreach($forum_ids as $current_forum) { $user_lastmark[$current_forum] = (isset($mark_time[$current_forum])) ? $mark_time[$current_forum] : $user->data['user_lastmark']; } + // @todo: also check if $user_lastmark has been defined for this specific forum_id foreach ($topic_ids as $topic_id) { $last_read[$topic_id] = (!isset($last_read[$topic_id]) || $user_lastmark[$rev_forum_ids[$topic_id]] > $last_read[$topic_id]) ? $user_lastmark[$rev_forum_ids[$topic_id]] : $last_read[$topic_id]; @@ -821,7 +833,7 @@ function board3_basic_install($mode = 'install', $purge_modules = true, $u_actio /** * check if the entered source file actually exists */ -function check_file_src($value, $key, $module_id) +function check_file_src($value, $key, $module_id, $force_error = true) { global $db, $phpbb_root_path, $phpEx, $user; @@ -846,6 +858,17 @@ function check_file_src($value, $key, $module_id) if (!empty($error)) { - trigger_error($error . adm_back_link(append_sid("{$phpbb_root_path}adm/index.$phpEx", 'i=portal&mode=config&module_id=' . $module_id)), E_USER_WARNING ); + if ($force_error) + { + trigger_error($error . adm_back_link(append_sid("{$phpbb_root_path}adm/index.$phpEx", 'i=portal&mode=config&module_id=' . $module_id)), E_USER_WARNING ); + } + else + { + return $error; + } + } + else + { + return false; } } diff --git a/root/portal/includes/functions_modules.php b/root/portal/includes/functions_modules.php index 2b992031..2ac1622f 100644 --- a/root/portal/includes/functions_modules.php +++ b/root/portal/includes/functions_modules.php @@ -26,6 +26,8 @@ function column_num_string($column) return 'top'; case 5: return 'bottom'; + default: + return 0; } }