From 966f5cfa2d675be0d96789cd7af43b54372c2651 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Fri, 15 Feb 2013 10:41:20 +0100 Subject: [PATCH 01/10] Display correct day of the week with negative UTC offset A duplicate subtraction of the UTC offset and DST time caused the creation of an incorrect timestamp. In return this caused us to go back too far and therefore moved us back one day. Conflicts: root/portal/modules/portal_calendar.php --- root/portal/modules/portal_calendar.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/root/portal/modules/portal_calendar.php b/root/portal/modules/portal_calendar.php index fa61632e..f45fd61b 100644 --- a/root/portal/modules/portal_calendar.php +++ b/root/portal/modules/portal_calendar.php @@ -591,6 +591,11 @@ class portal_calendar_module **/ private function makeTimestamp($date) { +<<<<<<< HEAD +======= + global $user; + +>>>>>>> 36903cb... Display correct day of the week with negative UTC offset $this->stamp = strtotime($date); return ($this->stamp); } From 566762c5d23f58b29d12bf199b082e76ff8e01df Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Fri, 4 Oct 2013 16:32:10 +0200 Subject: [PATCH 02/10] =?UTF-8?q?[=C5=A7icket/223]=20Set=20correct=20permi?= =?UTF-8?q?ssions=20to=20uploaded=20files=20(644)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit phpbb_chmod() only sets the owner permissions. As we need to set the permissions for all users, it is not possible to use phpbb_chmod(). B3P-223 --- root/portal/includes/functions_upload.php | 30 +++++++++++------------ 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/root/portal/includes/functions_upload.php b/root/portal/includes/functions_upload.php index bc468a33..61d11bce 100755 --- a/root/portal/includes/functions_upload.php +++ b/root/portal/includes/functions_upload.php @@ -218,8 +218,8 @@ class portal_upload } else if (is_file($src . '/' . $src_entry) && !is_file($dest . '/' . $src_entry)) { - copy($src . '/' . $src_entry, $dest . '/' . $src_entry); - chmod($dest . '/' . $src_entry, 0644); + @copy($src . '/' . $src_entry, $dest . '/' . $src_entry); + @chmod($dest . '/' . $src_entry, 0644); } } } @@ -240,25 +240,25 @@ class portal_upload if (!is_dir($dir) && is_file($dir)) { - phpbb_chmod($dir, CHMOD_ALL); - return unlink($dir); + @chmod($dir, 0644); + return @unlink($dir); } - foreach (scandir($dir) as $item) + foreach (scandir($dir) as $item) { - if ($item == '.' || $item == '..') + if ($item == '.' || $item == '..') { continue; } - if (!$this->directory_delete($dir . "/" . $item)) + if (!$this->directory_delete($dir . "/" . $item)) { - phpbb_chmod($dir . "/" . $item, CHMOD_ALL); - if (!$this->directory_delete($dir . "/" . $item)) + @chmod($dir . "/" . $item, 0644); + if (!$this->directory_delete($dir . "/" . $item)) { return false; } - } - } + } + } return @rmdir($dir); } @@ -304,18 +304,18 @@ class portal_upload // remove old backup file first if(file_exists($to . '.bak')) { - phpbb_chmod($to . '.bak', CHMOD_ALL); + @chmod($to . '.bak', 0644); unlink($to . '.bak'); } @rename($to, $to . '.bak'); - phpbb_chmod($to, CHMOD_ALL); + @chmod($to, 0644); } if (!@copy($from, $to)) { return sprintf($user->lang['MODULE_COPY_FAILURE'], $to); } - phpbb_chmod($to, CHMOD_ALL); + @chmod($to, 0644); return true; } @@ -354,4 +354,4 @@ class portal_upload } return true; } -} \ No newline at end of file +} From 5c5f8b4845dd9fa5f690b29f0d2fcb2c43edaaa1 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Sat, 5 Oct 2013 11:00:33 +0200 Subject: [PATCH 03/10] [feature/clean-up] Remove duplicated code from portal modules B3P-CU Conflicts: root/portal/modules/portal_poll.php --- root/portal/modules/portal_attachments.php | 306 ++++------- root/portal/modules/portal_custom.php | 108 ++-- root/portal/modules/portal_poll.php | 560 ++++----------------- 3 files changed, 253 insertions(+), 721 deletions(-) diff --git a/root/portal/modules/portal_attachments.php b/root/portal/modules/portal_attachments.php index 620160f5..f10f468b 100644 --- a/root/portal/modules/portal_attachments.php +++ b/root/portal/modules/portal_attachments.php @@ -49,206 +49,12 @@ class portal_attachments_module public function get_template_center($module_id) { - global $config, $template, $db, $user, $auth, $phpEx, $phpbb_root_path; - - $attach_forums = false; - $where = ''; - $filetypes = array(); - - // Get filetypes and put them into an array - if(isset($config['board3_attachments_filetype_' . $module_id]) && strlen($config['board3_attachments_filetype_' . $module_id]) > 0) - { - $filetypes = explode(',', $config['board3_attachments_filetype_' . $module_id]); - } - - if($config['board3_attachments_forum_ids_' . $module_id] !== '') - { - $attach_forums_config = (strpos($config['board3_attachments_forum_ids_' . $module_id], ',') !== false) ? explode(',', $config['board3_attachments_forum_ids_' . $module_id]) : array($config['board3_attachments_forum_ids_' . $module_id]); - $forum_list = array_unique(array_keys($auth->acl_getf('f_read', true))); - - if($config['board3_attachments_forum_exclude_' . $module_id]) - { - $forum_list = array_unique(array_diff($forum_list, $attach_forums_config)); - } - else - { - $forum_list = array_unique(array_intersect($attach_forums_config, $forum_list)); - } - } - else - { - $forum_list = array_unique(array_keys($auth->acl_getf('f_read', true))); - } - - if(sizeof($forum_list)) - { - $attach_forums = true; - $where = 'AND ' . $db->sql_in_set('t.forum_id', $forum_list); - } - - if(sizeof($filetypes)) - { - if($config['board3_attachments_exclude_' . $module_id]) - { - $where .= ' AND ' . $db->sql_in_set('a.extension', $filetypes, true); - } - else - { - $where .= ' AND ' . $db->sql_in_set('a.extension', $filetypes); - } - } - - if($attach_forums === true) - { - // Just grab all attachment info from database - $sql = 'SELECT - a.*, - t.forum_id - FROM - ' . ATTACHMENTS_TABLE . ' a, - ' . TOPICS_TABLE . ' t - WHERE - a.topic_id <> 0 - AND a.topic_id = t.topic_id - ' . $where . ' - ORDER BY - filetime ' . ((!$config['display_order']) ? 'DESC' : 'ASC') . ', post_msg_id ASC'; - $result = $db->sql_query_limit($sql, $config['board3_attachments_number_' . $module_id]); - - while ($row = $db->sql_fetchrow($result)) - { - $size_lang = ($row['filesize'] >= 1048576) ? $user->lang['MIB'] : (($row['filesize'] >= 1024) ? $user->lang['KIB'] : $user->lang['BYTES']); - $row['filesize'] = ($row['filesize'] >= 1048576) ? round((round($row['filesize'] / 1048576 * 100) / 100), 2) : (($row['filesize'] >= 1024) ? round((round($row['filesize'] / 1024 * 100) / 100), 2) : $row['filesize']); - - $raw_filename = utf8_substr($row['real_filename'], 0, strrpos($row['real_filename'], '.')); - $replace = character_limit($raw_filename, $config['board3_attach_max_length_' . $module_id]); - - $template->assign_block_vars('attach_center', array( - 'FILESIZE' => $row['filesize'] . ' ' . $size_lang, - 'FILETIME' => $user->format_date($row['filetime']), - 'DOWNLOAD_COUNT' => (int) $row['download_count'], // grab downloads count - 'FILENAME' => $replace, - 'REAL_FILENAME' => $row['real_filename'], - 'PHYSICAL_FILENAME' => basename($row['physical_filename']), - 'ATTACH_ID' => $row['attach_id'], - 'POST_IDS' => (!empty($post_ids[$row['attach_id']])) ? $post_ids[$row['attach_id']] : '', - 'POST_MSG_ID' => $row['post_msg_id'], // grab post ID to redirect to post - 'U_FILE' => append_sid($phpbb_root_path . 'download/file.' . $phpEx, 'id=' . $row['attach_id']), - 'U_TOPIC' => append_sid($phpbb_root_path . 'viewtopic.'.$phpEx, 'p='.$row['post_msg_id'].'#p'.$row['post_msg_id']), - )); - } - $db->sql_freeresult($result); - - $template->assign_var('S_DISPLAY_ATTACHMENTS', true); - } - else - { - $template->assign_var('S_DISPLAY_ATTACHMENTS', false); - } - - return 'attachments_center.html'; + return $this->parse_template($module_id, 'center'); } public function get_template_side($module_id) { - global $config, $template, $db, $user, $auth, $phpEx, $phpbb_root_path; - - $attach_forums = false; - $where = ''; - $filetypes = array(); - - // Get filetypes and put them into an array - if(isset($config['board3_attachments_filetype_' . $module_id]) && strlen($config['board3_attachments_filetype_' . $module_id]) > 0) - { - $filetypes = explode(',', $config['board3_attachments_filetype_' . $module_id]); - } - - if($config['board3_attachments_forum_ids_' . $module_id] !== '') - { - $attach_forums_config = (strpos($config['board3_attachments_forum_ids_' . $module_id], ',') !== false) ? explode(',', $config['board3_attachments_forum_ids_' . $module_id]) : array($config['board3_attachments_forum_ids_' . $module_id]); - $forum_list = array_unique(array_keys($auth->acl_getf('f_read', true))); - - if($config['board3_attachments_forum_exclude_' . $module_id]) - { - $forum_list = array_unique(array_diff($forum_list, $attach_forums_config)); - } - else - { - $forum_list = array_unique(array_intersect($attach_forums_config, $forum_list)); - } - } - else - { - $forum_list = array_unique(array_keys($auth->acl_getf('f_read', true))); - } - - if(sizeof($forum_list)) - { - $attach_forums = true; - $where = 'AND ' . $db->sql_in_set('t.forum_id', $forum_list); - } - - if(sizeof($filetypes)) - { - if($config['board3_attachments_exclude_' . $module_id]) - { - $where .= ' AND ' . $db->sql_in_set('a.extension', $filetypes, true); - } - else - { - $where .= ' AND ' . $db->sql_in_set('a.extension', $filetypes); - } - } - - if($attach_forums === true) - { - // Just grab all attachment info from database - $sql = 'SELECT - a.*, - t.forum_id - FROM - ' . ATTACHMENTS_TABLE . ' a, - ' . TOPICS_TABLE . ' t - WHERE - a.topic_id <> 0 - AND a.topic_id = t.topic_id - ' . $where . ' - ORDER BY - filetime ' . ((!$config['display_order']) ? 'DESC' : 'ASC') . ', post_msg_id ASC'; - $result = $db->sql_query_limit($sql, $config['board3_attachments_number_' . $module_id]); - - while ($row = $db->sql_fetchrow($result)) - { - $size_lang = ($row['filesize'] >= 1048576) ? $user->lang['MIB'] : (($row['filesize'] >= 1024) ? $user->lang['KIB'] : $user->lang['BYTES']); - $row['filesize'] = ($row['filesize'] >= 1048576) ? round((round($row['filesize'] / 1048576 * 100) / 100), 2) : (($row['filesize'] >= 1024) ? round((round($row['filesize'] / 1024 * 100) / 100), 2) : $row['filesize']); - - $raw_filename = utf8_substr($row['real_filename'], 0, strrpos($row['real_filename'], '.')); - $replace = character_limit($raw_filename, $config['board3_attach_max_length_' . $module_id]); - - $template->assign_block_vars('attach_side', array( - 'FILESIZE' => $row['filesize'] . ' ' . $size_lang, - 'FILETIME' => $user->format_date($row['filetime']), - 'DOWNLOAD_COUNT' => (int) $row['download_count'], // grab downloads count - 'FILENAME' => $replace, - 'REAL_FILENAME' => $row['real_filename'], - 'PHYSICAL_FILENAME' => basename($row['physical_filename']), - 'ATTACH_ID' => $row['attach_id'], - 'POST_IDS' => (!empty($post_ids[$row['attach_id']])) ? $post_ids[$row['attach_id']] : '', - 'POST_MSG_ID' => $row['post_msg_id'], // grab post ID to redirect to post - 'U_FILE' => append_sid($phpbb_root_path . 'download/file.' . $phpEx, 'id=' . $row['attach_id']), - 'U_TOPIC' => append_sid($phpbb_root_path . 'viewtopic.'.$phpEx, 'p='.$row['post_msg_id'].'#p'.$row['post_msg_id']), - )); - } - $db->sql_freeresult($result); - - $template->assign_var('S_DISPLAY_ATTACHMENTS', true); - } - else - { - $template->assign_var('S_DISPLAY_ATTACHMENTS', false); - } - - return 'attachments_side.html'; + return $this->parse_template($module_id, 'side'); } public function get_template_acp($module_id) @@ -379,4 +185,112 @@ class portal_attachments_module $news = implode(',', $values); set_config($key, $news); } + + /** + * Parse template variables for module + * + * @param int $module_id Module ID + * @param string $type Module type (center or side) + */ + protected function parse_template($module_id, $type) + { + global $config, $template, $db, $user, $auth, $phpEx, $phpbb_root_path; + + $attach_forums = false; + $where = ''; + $filetypes = array(); + + // Get filetypes and put them into an array + if(isset($config['board3_attachments_filetype_' . $module_id]) && strlen($config['board3_attachments_filetype_' . $module_id]) > 0) + { + $filetypes = explode(',', $config['board3_attachments_filetype_' . $module_id]); + } + + if($config['board3_attachments_forum_ids_' . $module_id] !== '') + { + $attach_forums_config = (strpos($config['board3_attachments_forum_ids_' . $module_id], ',') !== false) ? explode(',', $config['board3_attachments_forum_ids_' . $module_id]) : array($config['board3_attachments_forum_ids_' . $module_id]); + $forum_list = array_unique(array_keys($auth->acl_getf('f_read', true))); + + if($config['board3_attachments_forum_exclude_' . $module_id]) + { + $forum_list = array_unique(array_diff($forum_list, $attach_forums_config)); + } + else + { + $forum_list = array_unique(array_intersect($attach_forums_config, $forum_list)); + } + } + else + { + $forum_list = array_unique(array_keys($auth->acl_getf('f_read', true))); + } + + if(sizeof($forum_list)) + { + $attach_forums = true; + $where = 'AND ' . $db->sql_in_set('t.forum_id', $forum_list); + } + + if(sizeof($filetypes)) + { + if($config['board3_attachments_exclude_' . $module_id]) + { + $where .= ' AND ' . $db->sql_in_set('a.extension', $filetypes, true); + } + else + { + $where .= ' AND ' . $db->sql_in_set('a.extension', $filetypes); + } + } + + if($attach_forums === true) + { + // Just grab all attachment info from database + $sql = 'SELECT + a.*, + t.forum_id + FROM + ' . ATTACHMENTS_TABLE . ' a, + ' . TOPICS_TABLE . ' t + WHERE + a.topic_id <> 0 + AND a.topic_id = t.topic_id + ' . $where . ' + ORDER BY + filetime ' . ((!$config['display_order']) ? 'DESC' : 'ASC') . ', post_msg_id ASC'; + $result = $db->sql_query_limit($sql, $config['board3_attachments_number_' . $module_id]); + + while ($row = $db->sql_fetchrow($result)) + { + $size_lang = ($row['filesize'] >= 1048576) ? $user->lang['MIB'] : (($row['filesize'] >= 1024) ? $user->lang['KIB'] : $user->lang['BYTES']); + $row['filesize'] = ($row['filesize'] >= 1048576) ? round((round($row['filesize'] / 1048576 * 100) / 100), 2) : (($row['filesize'] >= 1024) ? round((round($row['filesize'] / 1024 * 100) / 100), 2) : $row['filesize']); + + $raw_filename = utf8_substr($row['real_filename'], 0, strrpos($row['real_filename'], '.')); + $replace = character_limit($raw_filename, $config['board3_attach_max_length_' . $module_id]); + + $template->assign_block_vars('attach_' . $type, array( + 'FILESIZE' => $row['filesize'] . ' ' . $size_lang, + 'FILETIME' => $user->format_date($row['filetime']), + 'DOWNLOAD_COUNT' => (int) $row['download_count'], // grab downloads count + 'FILENAME' => $replace, + 'REAL_FILENAME' => $row['real_filename'], + 'PHYSICAL_FILENAME' => basename($row['physical_filename']), + 'ATTACH_ID' => $row['attach_id'], + 'POST_IDS' => (!empty($post_ids[$row['attach_id']])) ? $post_ids[$row['attach_id']] : '', + 'POST_MSG_ID' => $row['post_msg_id'], // grab post ID to redirect to post + 'U_FILE' => append_sid($phpbb_root_path . 'download/file.' . $phpEx, 'id=' . $row['attach_id']), + 'U_TOPIC' => append_sid($phpbb_root_path . 'viewtopic.'.$phpEx, 'p='.$row['post_msg_id'].'#p'.$row['post_msg_id']), + )); + } + $db->sql_freeresult($result); + + $template->assign_var('S_DISPLAY_ATTACHMENTS', true); + } + else + { + $template->assign_var('S_DISPLAY_ATTACHMENTS', false); + } + + return 'attachments_' . $type . '.html'; + } } diff --git a/root/portal/modules/portal_custom.php b/root/portal/modules/portal_custom.php index d49629f4..e4c69d38 100644 --- a/root/portal/modules/portal_custom.php +++ b/root/portal/modules/portal_custom.php @@ -55,72 +55,12 @@ class portal_custom_module public function get_template_center($module_id) { - global $config, $template, $portal_config, $user; - - /* - * Run generate_text_for_display if the user uses BBCode for designing his custom block - * HTML won't be parsed if the user chooses to use BBCodes in the ACP - * If BBCodes are turned off, the custom Block code will be directly assigned and HTML will be parsed - */ - if ($config['board3_custom_' . $module_id . '_bbcode']) - { - // Generate text for display and assign template vars - $uid = $config['board3_custom_' . $module_id . '_uid']; - $bitfield = $config['board3_custom_' . $module_id . '_bitfield']; - $bbcode_options = OPTION_FLAG_BBCODE + OPTION_FLAG_SMILIES + OPTION_FLAG_LINKS; - $assign_code = generate_text_for_display($portal_config['board3_custom_' . $module_id . '_code'], $uid, $bitfield, $bbcode_options); - } - else - { - $assign_code = htmlspecialchars_decode($portal_config['board3_custom_' . $module_id . '_code'], ENT_QUOTES); - } - - $title = (!empty($config['board3_custom_' . $module_id . '_title'])) ? ((isset($user->lang[$config['board3_custom_' . $module_id . '_title']])) ? $user->lang[$config['board3_custom_' . $module_id . '_title']] : $config['board3_custom_' . $module_id . '_title']) : $user->lang[$this->name]; - - if(!empty($assign_code)) - { - return array( - 'template' => 'custom_center.html', - 'title' => $title, - 'code' => $assign_code, - 'image_src' => '', // no image for center blocks - ); - } + return $this->parse_template($module_id); } public function get_template_side($module_id) { - global $config, $template, $portal_config, $user; - - /* - * Run generate_text_for_display if the user uses BBCode for designing his custom block - * HTML won't be parsed if the user chooses to use BBCodes in the ACP - * If BBCodes are turned off, the custom Block code will be directly assigned and HTML will be parsed - */ - if ($config['board3_custom_' . $module_id . '_bbcode']) - { - // Generate text for display and assign template vars - $uid = $config['board3_custom_' . $module_id . '_uid']; - $bitfield = $config['board3_custom_' . $module_id . '_bitfield']; - $bbcode_options = OPTION_FLAG_BBCODE + OPTION_FLAG_SMILIES + OPTION_FLAG_LINKS; - $assign_code = generate_text_for_display($portal_config['board3_custom_' . $module_id . '_code'], $uid, $bitfield, $bbcode_options); - } - else - { - $assign_code = htmlspecialchars_decode($portal_config['board3_custom_' . $module_id . '_code'], ENT_QUOTES); - } - - $title = (!empty($config['board3_custom_' . $module_id . '_title'])) ? ((isset($user->lang[$config['board3_custom_' . $module_id . '_title']])) ? $user->lang[$config['board3_custom_' . $module_id . '_title']] : $config['board3_custom_' . $module_id . '_title']) : $user->lang[$this->name]; - - if(!empty($assign_code)) - { - return array( - 'template' => 'custom_side.html', - 'title' => $title, - 'code' => $assign_code, - 'image_src' => (!empty($config['board3_custom_' . $module_id . '_image_src'])) ? $config['board3_custom_' . $module_id . '_image_src'] : $this->image_src, - ); - } + return $this->parse_template($module_id, 'side'); } public function get_template_acp($module_id) @@ -351,4 +291,48 @@ class portal_custom_module { $this->manage_custom('', $key, $module_id); } + + /** + * Parse template for custom blocks + * + * @param int $module_id Module ID of current module + * @param string $type Type of module (center or side), default to + * center to not show module image unless wanted + * @return array An array containing the custom module data + */ + protected function parse_template($module_id, $type = 'center') + { + global $config, $template, $portal_config, $user; + + /* + * Run generate_text_for_display if the user uses BBCode for designing his custom block + * HTML won't be parsed if the user chooses to use BBCodes in the ACP + * If BBCodes are turned off, the custom Block code will be directly assigned and HTML will be parsed + */ + if ($config['board3_custom_' . $module_id . '_bbcode']) + { + // Generate text for display and assign template vars + $uid = $config['board3_custom_' . $module_id . '_uid']; + $bitfield = $config['board3_custom_' . $module_id . '_bitfield']; + $bbcode_options = OPTION_FLAG_BBCODE + OPTION_FLAG_SMILIES + OPTION_FLAG_LINKS; + $assign_code = generate_text_for_display($portal_config['board3_custom_' . $module_id . '_code'], $uid, $bitfield, $bbcode_options); + } + else + { + $assign_code = htmlspecialchars_decode($portal_config['board3_custom_' . $module_id . '_code'], ENT_QUOTES); + } + + $title = (!empty($config['board3_custom_' . $module_id . '_title'])) ? ((isset($user->lang[$config['board3_custom_' . $module_id . '_title']])) ? $user->lang[$config['board3_custom_' . $module_id . '_title']] : $config['board3_custom_' . $module_id . '_title']) : $user->lang[$this->name]; + + if(!empty($assign_code)) + { + return array( + 'template' => 'custom_' . $type . '.html', + 'title' => $title, + 'code' => $assign_code, + // no image for center blocks + 'image_src' => ($type === 'center') ? '' : ((!empty($config['board3_custom_' . $module_id . '_image_src'])) ? $config['board3_custom_' . $module_id . '_image_src'] : $this->image_src), + ); + } + } } diff --git a/root/portal/modules/portal_poll.php b/root/portal/modules/portal_poll.php index 7137376c..db70d5ed 100644 --- a/root/portal/modules/portal_poll.php +++ b/root/portal/modules/portal_poll.php @@ -55,386 +55,102 @@ class portal_poll_module public function get_template_center($module_id) { - global $config, $template, $db, $user, $auth, $phpbb_root_path, $phpEx; - - $user->add_lang('viewtopic'); - - // check if we need to include the bbcode class - if(!class_exists('bbcode')) - { - include($phpbb_root_path . 'includes/bbcode.' . $phpEx); - } - - $view = request_var('view', ''); - $update = request_var('update', false); - $poll_view = request_var('polls', ''); - - $poll_view_ar = (strpos($poll_view, ',') !== FALSE) ? explode(',', $poll_view) : (($poll_view != '') ? array($poll_view) : array()); - - if ($update && $config['board3_poll_allow_vote_' . $module_id]) - { - $up_topic_id = request_var('t', 0); - $up_forum_id = request_var('f', 0); - $voted_id = request_var('vote_id', array('' => 0)); - - $cur_voted_id = array(); - if ($user->data['is_registered']) - { - $sql = 'SELECT poll_option_id - FROM ' . POLL_VOTES_TABLE . ' - WHERE topic_id = ' . $up_topic_id . ' - AND vote_user_id = ' . $user->data['user_id']; - $result = $db->sql_query($sql); - - while ($row = $db->sql_fetchrow($result)) - { - $cur_voted_id[] = $row['poll_option_id']; - } - $db->sql_freeresult($result); - } - else - { - // Cookie based guest tracking ... I don't like this but hum ho - // it's oft requested. This relies on "nice" users who don't feel - // the need to delete cookies to mess with results. - if (isset($_COOKIE[$config['cookie_name'] . '_poll_' . $up_topic_id])) - { - $cur_voted_id = explode(',', request_var($config['cookie_name'] . '_poll_' . $up_topic_id, 0, false, true)); - $cur_voted_id = array_map('intval', $cur_voted_id); - } - } - - $sql = 'SELECT t.poll_length, t.poll_start, t.poll_vote_change, t.topic_status, f.forum_status, t.poll_max_options - FROM ' . TOPICS_TABLE . ' t, ' . FORUMS_TABLE . " f - WHERE t.forum_id = f.forum_id AND t.topic_id = " . (int) $up_topic_id . " AND t.forum_id = " . (int) $up_forum_id; - $result = $db->sql_query_limit($sql, 1); - $topic_data = $db->sql_fetchrow($result); - $db->sql_freeresult($result); - - $s_can_up_vote = (((!sizeof($cur_voted_id) && $auth->acl_get('f_vote', $up_forum_id)) || - ($auth->acl_get('f_votechg', $up_forum_id) && $topic_data['poll_vote_change'])) && - (($topic_data['poll_length'] != 0 && $topic_data['poll_start'] + $topic_data['poll_length'] > time()) || $topic_data['poll_length'] == 0) && - $topic_data['topic_status'] != ITEM_LOCKED && - $topic_data['forum_status'] != ITEM_LOCKED) ? true : false; - - if($s_can_up_vote) - { - if (!sizeof($voted_id) || sizeof($voted_id) > $topic_data['poll_max_options'] || in_array(VOTE_CONVERTED, $cur_voted_id)) - { - $redirect_url = append_sid("{$phpbb_root_path}portal.$phpEx"); - - meta_refresh(5, $redirect_url); - if (!sizeof($voted_id)) - { - $message = 'NO_VOTE_OPTION'; - } - else if (sizeof($voted_id) > $topic_data['poll_max_options']) - { - $message = 'TOO_MANY_VOTE_OPTIONS'; - } - else - { - $message = 'VOTE_CONVERTED'; - } - - $message = $user->lang[$message] . '

' . sprintf($user->lang['RETURN_PORTAL'], '', ''); - trigger_error($message); - } - - foreach ($voted_id as $option) - { - if (in_array($option, $cur_voted_id)) - { - continue; - } - - $sql = 'UPDATE ' . POLL_OPTIONS_TABLE . ' - SET poll_option_total = poll_option_total + 1 - WHERE poll_option_id = ' . (int) $option . ' - AND topic_id = ' . (int) $up_topic_id; - $db->sql_query($sql); - - if ($user->data['is_registered']) - { - $sql_ary = array( - 'topic_id' => (int) $up_topic_id, - 'poll_option_id' => (int) $option, - 'vote_user_id' => (int) $user->data['user_id'], - 'vote_user_ip' => (string) $user->ip, - ); - - $sql = 'INSERT INTO ' . POLL_VOTES_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary); - $db->sql_query($sql); - } - } - - foreach ($cur_voted_id as $option) - { - if (!in_array($option, $voted_id)) - { - $sql = 'UPDATE ' . POLL_OPTIONS_TABLE . ' - SET poll_option_total = poll_option_total - 1 - WHERE poll_option_id = ' . (int) $option . ' - AND topic_id = ' . (int) $up_topic_id; - $db->sql_query($sql); - - if ($user->data['is_registered']) - { - $sql = 'DELETE FROM ' . POLL_VOTES_TABLE . ' - WHERE topic_id = ' . (int) $up_topic_id . ' - AND poll_option_id = ' . (int) $option . ' - AND vote_user_id = ' . (int) $user->data['user_id']; - $db->sql_query($sql); - } - } - } - - if ($user->data['user_id'] == ANONYMOUS && !$user->data['is_bot']) - { - $user->set_cookie('poll_' . $up_topic_id, implode(',', $voted_id), time() + 31536000); - } - - $sql = 'UPDATE ' . TOPICS_TABLE . ' - SET poll_last_vote = ' . time() . " - WHERE topic_id = $up_topic_id"; - //, topic_last_post_time = ' . time() . " -- for bumping topics with new votes, ignore for now - $db->sql_query($sql); - - $redirect_url = append_sid("{$phpbb_root_path}portal.$phpEx"); - - meta_refresh(5, $redirect_url); - trigger_error($user->lang['VOTE_SUBMITTED'] . '

' . sprintf($user->lang['RETURN_PORTAL'], '', '')); - } - } - - $where = ''; - $poll_forums = false; - - // Get readable forums - $forum_list = array(); - - $forum_list = array_unique(array_keys($auth->acl_getf('f_read', true))); - - if($config['board3_poll_topic_id_' . $module_id] !== '') - { - $poll_forums_config = explode(',' ,$config['board3_poll_topic_id_' . $module_id]); - - if($config['board3_poll_exclude_id_' . $module_id]) - { - $forum_list = array_unique(array_diff($forum_list, $poll_forums_config)); - } - else - { - $forum_list = array_unique(array_intersect($poll_forums_config, $forum_list)); - } - } - - $where = ''; - - if(sizeof($forum_list)) - { - $poll_forums = true; - $where = 'AND ' . $db->sql_in_set('t.forum_id', $forum_list); - } - - if ($config['board3_poll_hide_' . $module_id]) - { - $portal_poll_hide = "AND (t.poll_start + t.poll_length > ". time() ." OR t.poll_length = 0)"; - } - else - { - $portal_poll_hide = ''; - } - - if ($poll_forums === true) - { - - $sql = 'SELECT t.poll_title, t.poll_start, t.topic_id, t.topic_first_post_id, t.forum_id, t.poll_length, t.poll_vote_change, t.poll_max_options, t.topic_status, f.forum_status, p.bbcode_bitfield, p.bbcode_uid - FROM ' . TOPICS_TABLE . ' t, ' . POSTS_TABLE . ' p, ' . FORUMS_TABLE . " f - WHERE t.forum_id = f.forum_id AND t.topic_visibility = 1 AND t.poll_start > 0 - {$where} - AND t.topic_moved_id = 0 - AND p.post_id = t.topic_first_post_id - {$portal_poll_hide} - ORDER BY t.poll_start DESC"; - $limit = (isset($config['board3_poll_limit_' . $module_id])) ? $config['board3_poll_limit_' . $module_id] : 3; - $result = $db->sql_query_limit($sql, $limit); - $has_poll = false; - - if ($result) - { - while($data = $db->sql_fetchrow($result)) - { - $has_poll = true; - $poll_has_options = false; - - $topic_id = (int) $data['topic_id']; - $forum_id = (int) $data['forum_id']; - - $cur_voted_id = array(); - if($config['board3_poll_allow_vote_' . $module_id]) - { - if ($user->data['is_registered']) - { - $vote_sql = 'SELECT poll_option_id - FROM ' . POLL_VOTES_TABLE . ' - WHERE topic_id = ' . $topic_id . ' - AND vote_user_id = ' . $user->data['user_id']; - $vote_result = $db->sql_query($vote_sql); - - while ($row = $db->sql_fetchrow($vote_result)) - { - $cur_voted_id[] = $row['poll_option_id']; - } - $db->sql_freeresult($vote_result); - } - else - { - // Cookie based guest tracking ... I don't like this but hum ho - // it's oft requested. This relies on "nice" users who don't feel - // the need to delete cookies to mess with results. - if (isset($_COOKIE[$config['cookie_name'] . '_poll_' . $topic_id])) - { - $cur_voted_id = explode(',', request_var($config['cookie_name'] . '_poll_' . $topic_id, 0, false, true)); - $cur_voted_id = array_map('intval', $cur_voted_id); - } - } - - $s_can_vote = (((!sizeof($cur_voted_id) && $auth->acl_get('f_vote', $forum_id)) || - ($auth->acl_get('f_votechg', $forum_id) && $data['poll_vote_change'])) && - (($data['poll_length'] != 0 && $data['poll_start'] + $data['poll_length'] > time()) || $data['poll_length'] == 0) && - $data['topic_status'] != ITEM_LOCKED && - $data['forum_status'] != ITEM_LOCKED) ? true : false; - } - else - { - $s_can_vote = false; - } - - $s_display_results = (!$s_can_vote || ($s_can_vote && sizeof($cur_voted_id)) || ($view == 'viewpoll' && in_array($topic_id, $poll_view_ar))) ? true : false; - - $poll_sql = 'SELECT po.poll_option_id, po.poll_option_text, po.poll_option_total - FROM ' . POLL_OPTIONS_TABLE . " po - WHERE po.topic_id = {$topic_id} - ORDER BY po.poll_option_id"; - - $poll_result = $db->sql_query($poll_sql); - $poll_total_votes = 0; - $poll_data = array(); - - if ($poll_result) - { - while($polls_data = $db->sql_fetchrow($poll_result)) - { - $poll_has_options = true; - $poll_data[] = $polls_data; - $poll_total_votes += $polls_data['poll_option_total']; - } - } - $db->sql_freeresult($poll_result); - - $make_poll_view = array(); - - if(in_array($topic_id, $poll_view_ar) === FALSE) - { - $make_poll_view[] = $topic_id; - $make_poll_view = array_merge($poll_view_ar, $make_poll_view); - } - - $poll_view_str = urlencode(implode(',', $make_poll_view)); - $portalpoll_url= append_sid("{$phpbb_root_path}portal.$phpEx", "polls=$poll_view_str"); - $portalvote_url= append_sid("{$phpbb_root_path}portal.$phpEx", "f=$forum_id&t=$topic_id"); - $viewtopic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id"); - $poll_end = $data['poll_length'] + $data['poll_start']; - - // Parse BBCode title - if ($data['bbcode_bitfield']) - { - $poll_bbcode = new bbcode(); - } - else - { - $poll_bbcode = false; - } - - $data['poll_title'] = censor_text($data['poll_title']); - - if ($poll_bbcode !== false) - { - $poll_bbcode->bbcode_second_pass($data['poll_title'], $data['bbcode_uid'], $data['bbcode_bitfield']); - } - - $data['poll_title'] = bbcode_nl2br($data['poll_title']); - $data['poll_title'] = smiley_text($data['poll_title']); - unset($poll_bbcode); - - $template->assign_block_vars('poll', array( - 'S_POLL_HAS_OPTIONS' => $poll_has_options, - 'POLL_QUESTION' => $data['poll_title'], - 'U_POLL_TOPIC' => append_sid($phpbb_root_path . 'viewtopic.' . $phpEx . '?t=' . $topic_id . '&f=' . $forum_id), - 'POLL_LENGTH' => $data['poll_length'], - 'TOPIC_ID' => $topic_id, - 'TOTAL_VOTES' => $poll_total_votes, - 'L_MAX_VOTES' => ($data['poll_max_options'] == 1) ? $user->lang['MAX_OPTION_SELECT'] : sprintf($user->lang['MAX_OPTIONS_SELECT'], $data['poll_max_options']), - 'L_POLL_LENGTH' => ($data['poll_length']) ? sprintf($user->lang[($poll_end > time()) ? 'POLL_RUN_TILL' : 'POLL_ENDED_AT'], $user->format_date($poll_end)) : '', - 'S_CAN_VOTE' => $s_can_vote, - 'S_DISPLAY_RESULTS' => $s_display_results, - 'S_IS_MULTI_CHOICE' => ($data['poll_max_options'] > 1) ? true : false, - 'S_POLL_ACTION' => $portalvote_url, - 'U_VIEW_RESULTS' => $portalpoll_url . '&view=viewpoll#viewpoll', - 'U_VIEW_TOPIC' => $viewtopic_url, - )); - - foreach($poll_data as $pd) - { - $option_pct = ($poll_total_votes > 0) ? $pd['poll_option_total'] / $poll_total_votes : 0; - $option_pct_txt = sprintf("%.1d%%", round($option_pct * 100)); - - // Parse BBCode option text - if ($data['bbcode_bitfield']) - { - $poll_bbcode = new bbcode(); - } - else - { - $poll_bbcode = false; - } - - $pd['poll_option_text'] = censor_text($pd['poll_option_text']); - - if ($poll_bbcode !== false) - { - $poll_bbcode->bbcode_second_pass($pd['poll_option_text'], $data['bbcode_uid'], $data['bbcode_bitfield']); - } - - $pd['poll_option_text'] = bbcode_nl2br($pd['poll_option_text']); - $pd['poll_option_text'] = smiley_text($pd['poll_option_text']); - unset($poll_bbcode); - - $template->assign_block_vars('poll.poll_option', array( - 'POLL_OPTION_ID' => $pd['poll_option_id'], - 'POLL_OPTION_CAPTION' => $pd['poll_option_text'], - 'POLL_OPTION_RESULT' => $pd['poll_option_total'], - 'POLL_OPTION_PERCENT' => $option_pct_txt, - 'POLL_OPTION_PCT' => round($option_pct * 100), - 'POLL_OPTION_IMG' => $user->img('poll_center', $option_pct_txt, round($option_pct * 250)), - 'POLL_OPTION_VOTED' => (in_array($pd['poll_option_id'], $cur_voted_id)) ? true : false - )); - } - } - } - $db->sql_freeresult($result); - - $template->assign_vars(array( - 'S_HAS_POLL' => $has_poll, - 'POLL_LEFT_CAP_IMG' => $user->img('poll_left'), - 'POLL_RIGHT_CAP_IMG' => $user->img('poll_right'), - )); - } - return 'poll_center.html'; + return $this->parse_template($module_id); } public function get_template_side($module_id) + { + return $this->parse_template($module_id, 'side'); + } + + public function get_template_acp($module_id) + { + return array( + '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_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), + 'board3_poll_hide_' . $module_id => array('lang' => 'PORTAL_POLL_HIDE' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), + ) + ); + } + + /** + * API functions + */ + public function install($module_id) + { + set_config('board3_poll_allow_vote_' . $module_id, 1); + set_config('board3_poll_topic_id_' . $module_id, ''); + set_config('board3_poll_exclude_id_' . $module_id, 0); + set_config('board3_poll_hide_' . $module_id, 0); + set_config('board3_poll_limit_' . $module_id, 3); + return true; + } + + public function uninstall($module_id) + { + global $db; + + $del_config = array( + 'board3_poll_allow_vote_' . $module_id, + 'board3_poll_topic_id_' . $module_id, + 'board3_poll_exclude_id_' . $module_id, + 'board3_poll_hide_' . $module_id, + 'board3_poll_limit_' . $module_id, + ); + $sql = 'DELETE FROM ' . CONFIG_TABLE . ' + WHERE ' . $db->sql_in_set('config_name', $del_config); + return $db->sql_query($sql); + } + + // Create forum select box + public function select_forums($value, $key, $module_id) + { + global $user, $config; + + $forum_list = make_forum_select(false, false, true, true, true, false, true); + + $selected = array(); + if(isset($config[$key]) && strlen($config[$key]) > 0) + { + $selected = explode(',', $config[$key]); + } + // Build forum options + $s_forum_options = ''; + + return $s_forum_options; + } + + // Store selected forums + public function store_selected_forums($key, $module_id) + { + global $db, $cache; + + // Get selected forums + $values = request_var($key, array(0 => '')); + + $news = implode(',', $values); + + set_config($key, $news); + + } + + /** + * Parse template variables for module + * + * @param int $module_id Module ID + * @param string $type Module type (center or side) + */ + protected function parse_template($module_id, $type = '') { global $config, $template, $db, $user, $auth, $phpbb_root_path, $phpEx; @@ -621,7 +337,7 @@ class portal_poll_module if ($config['board3_poll_hide_' . $module_id]) { $portal_poll_hide = "AND (t.poll_start + t.poll_length > ". time() ." OR t.poll_length = 0)"; - } + } else { $portal_poll_hide = ''; @@ -749,7 +465,7 @@ class portal_poll_module $data['poll_title'] = smiley_text($data['poll_title']); unset($poll_bbcode); - $template->assign_block_vars('poll_side', array( + $template->assign_block_vars(($type !== '') ? 'poll_' . $type : 'poll', array( 'S_POLL_HAS_OPTIONS' => $poll_has_options, 'POLL_QUESTION' => $data['poll_title'], 'U_POLL_TOPIC' => append_sid($phpbb_root_path . 'viewtopic.' . $phpEx . '?t=' . $topic_id . '&f=' . $forum_id), @@ -792,7 +508,7 @@ class portal_poll_module $pd['poll_option_text'] = smiley_text($pd['poll_option_text']); unset($poll_bbcode); - $template->assign_block_vars('poll_side.poll_option', array( + $template->assign_block_vars((($type !== '') ? 'poll_' . $type : 'poll') . '.poll_option', array( 'POLL_OPTION_ID' => $pd['poll_option_id'], 'POLL_OPTION_CAPTION' => $pd['poll_option_text'], 'POLL_OPTION_RESULT' => $pd['poll_option_total'], @@ -812,88 +528,6 @@ class portal_poll_module 'POLL_RIGHT_CAP_IMG' => $user->img('poll_right'), )); } - return 'poll_side.html'; - } - - public function get_template_acp($module_id) - { - return array( - '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_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), - 'board3_poll_hide_' . $module_id => array('lang' => 'PORTAL_POLL_HIDE' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), - ) - ); - } - - /** - * API functions - */ - public function install($module_id) - { - set_config('board3_poll_allow_vote_' . $module_id, 1); - set_config('board3_poll_topic_id_' . $module_id, ''); - set_config('board3_poll_exclude_id_' . $module_id, 0); - set_config('board3_poll_hide_' . $module_id, 0); - set_config('board3_poll_limit_' . $module_id, 3); - return true; - } - - public function uninstall($module_id) - { - global $db; - - $del_config = array( - 'board3_poll_allow_vote_' . $module_id, - 'board3_poll_topic_id_' . $module_id, - 'board3_poll_exclude_id_' . $module_id, - 'board3_poll_hide_' . $module_id, - 'board3_poll_limit_' . $module_id, - ); - $sql = 'DELETE FROM ' . CONFIG_TABLE . ' - WHERE ' . $db->sql_in_set('config_name', $del_config); - return $db->sql_query($sql); - } - - // Create forum select box - public function select_forums($value, $key, $module_id) - { - global $user, $config; - - $forum_list = make_forum_select(false, false, true, true, true, false, true); - - $selected = array(); - if(isset($config[$key]) && strlen($config[$key]) > 0) - { - $selected = explode(',', $config[$key]); - } - // Build forum options - $s_forum_options = ''; - - return $s_forum_options; - - } - - // Store selected forums - public function store_selected_forums($key, $module_id) - { - global $db, $cache; - - // Get selected forums - $values = request_var($key, array(0 => '')); - - $news = implode(',', $values); - - set_config($key, $news); - + return (($type !== '') ? 'poll_' . $type : 'poll_center') . '.html'; } } From eee18cc4e5c696d5649c955374634840310cb5e4 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Sun, 6 Oct 2013 12:58:06 +0200 Subject: [PATCH 04/10] [update/2.0.2] Update files for 2.0.2 release This includes an update of MODx to 1.2.6 B3P-UPDATE-2.0.2 Conflicts: root/install/index.php --- contrib/de.xml | 13 +- contrib/modx.prosilver.en.xsl | 132 ++++++++++++++---- contrib/subsilver2.xml | 13 +- .../contrib/de.xml | 21 ++- .../contrib/modx.prosilver.en.xsl | 132 ++++++++++++++---- .../contrib/subsilver2.xml | 19 ++- .../modx.prosilver.en.xsl | 132 ++++++++++++++---- .../update.xml | 56 +++----- install.xml | 55 ++++++-- modx.prosilver.en.xsl | 132 ++++++++++++++---- 10 files changed, 520 insertions(+), 185 deletions(-) rename contrib/{update_200_to_201 => update_201_to_202}/contrib/de.xml (87%) rename contrib/{update_200_to_201 => update_201_to_202}/contrib/modx.prosilver.en.xsl (95%) rename contrib/{update_200_to_201 => update_201_to_202}/contrib/subsilver2.xml (91%) rename contrib/{update_200_to_201 => update_201_to_202}/modx.prosilver.en.xsl (95%) rename contrib/{update_200_to_201 => update_201_to_202}/update.xml (59%) diff --git a/contrib/de.xml b/contrib/de.xml index 037f34f5..6eebc226 100644 --- a/contrib/de.xml +++ b/contrib/de.xml @@ -1,8 +1,7 @@ - - +
http://opensource.org/licenses/gpl-license.php GNU General Public License v2 @@ -31,11 +30,11 @@ Weitere Sprachen kannst in unseren International Forum finden: http://www.board3 Ich hoffe ihr habt Spaß am Portal. Neuen Code, bzw neue Boxen und Fragen könnt ihr auf www.board3.de posten. - + https://github.com/board3/Board3-Portal Marc Alexander - marc1706 + Marc admin@m-a-styles.de http://www.m-a-styles.de @@ -86,12 +85,12 @@ Weitere Sprachen kannst in unseren International Forum finden: http://www.board3 - 2.0.1 + 2.0.2 easy - 3.0.11 + 3.0.12 @@ -107,4 +106,4 @@ Weitere Sprachen kannst in unseren International Forum finden: http://www.board3 See general install.xml file Siehe install.xml - \ No newline at end of file + diff --git a/contrib/modx.prosilver.en.xsl b/contrib/modx.prosilver.en.xsl index 6f602c63..a0d25dae 100644 --- a/contrib/modx.prosilver.en.xsl +++ b/contrib/modx.prosilver.en.xsl @@ -5,7 +5,7 @@ ]> - + @@ -23,7 +23,7 @@ /* phpBB 3.0 Admin Style Sheet ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– Original author: subBlue ( http://www.subblue.com/ ) - Copyright 2007 phpBB Group ( http://www.phpbb.com/ ) + Copyright 2007 phpBB Group ( https://www.phpbb.com/ ) ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– */ @@ -624,7 +624,7 @@ div.endMOD { padding:0 5px; } // The following line from http://www.ryancooper.com/resources/keycode.asp document.onkeydown = mod_do_keypress; -var host = "http://www.phpbb.com/mods/modx/i18n/"; +var host = "https://www.phpbb.com/mods/modx/i18n/"; var enStrings = "dir=ltr\n" + "h1=Installation instructions for\n" + @@ -646,6 +646,7 @@ var enStrings = "dir=ltr\n" + "a-e=Email:\n" + "a-n=Name:\n" + "a-h=WWW:\n" + +"a-git=Github:\n" + "a-c=Contributions:\n" + "a-c-f=From\n" + "a-c-t=to\n" + @@ -654,9 +655,9 @@ var enStrings = "dir=ltr\n" + "icf=Included files\n" + "icfn=No files have been included with this MOD.\n" + "dcl=Disclaimer\n" + -"dclt=For security purposes, please check: http://www.phpbb.com/mods/ for the latest version of this MOD. Downloading this MOD from other sites could cause malicious code to enter into your phpBB Forum. As such, phpBB will not offer support for MODs not offered in our MODs database, located at: http://www.phpbb.com/mods/\n" + +"dclt=For security purposes, please check: https://www.phpbb.com/mods/ for the latest version of this MOD. Downloading this MOD from other sites could cause malicious code to enter into your phpBB Forum. As such, phpBB will not offer support for MODs not offered in our MODs database, located at: https://www.phpbb.com/mods/\n" + "isp=and English support\n" + -"ispt=English support can be obtained at http://www.phpbb.com/mods/ for released MODs.\n" + +"ispt=English support can be obtained at https://www.phpbb.com/mods/ for released MODs.\n" + "ant=Author notes:\n" + "lic=License\n" + "lict=This MOD has been licensed under the following license:\n" + @@ -709,8 +710,8 @@ var enStrings = "dir=ltr\n" + "regex=This find contains an advanced feature known as regular expressions.\n" + "mhe-v=- Version\n" + "mh=MOD history\n" + -"addtl-modx=Additional MODX files\n" + -"imn=This MOD has no additional MODX files.\n" + +"addtl-modx=Additional file(s)\n" + +"imn=This MOD has no additional file(s).\n" + "link-c=Contrib\n" + "link-d=Dependency\n" + "link-l=Language\n" + @@ -722,7 +723,7 @@ var enStrings = "dir=ltr\n" + "installer-h2=PHP install file\n" + "installer-exp1=There is a PHP install file that needs to be run in order to complete the installation.\n" + "installer-exp2=To run it point your browser to, for example,\n" + -"ispt-int=Support in your language might be available at a international support site.\n" + +"ispt-int=Support in your language might be available at a international support site.\n" + "del-heads=Delete files\n" + "del-head=Delete file\n" + "del-file=Delete\n" + @@ -741,14 +742,14 @@ var arrClasCnt = [ ['cde-' , codes_ll ], ['edt-' , edits_ll ], ['fnd' , finds_ll ], - ['fnd' , removes_ll ], + ['rem' , removes_ll ], ['regex', regex_ll ], ['rplw' , replacewiths_ll ], ['aft' , addafters_ll ], ['bef' , addbefores_ll ], ['inc' , increments_ll ], ['ifnd' , ifinds_ll ], - ['ifnd' , iremoves_ll ], + ['irem' , iremoves_ll ], ['regex', iregex_ll ], ['irplw', ireplacewiths_ll ], ['iaft' , iaddafters_ll ], @@ -780,6 +781,8 @@ function changeLanguage(langCode) applyLanguage(enStrings.split("\n")); } xslLanguage(langCode); + + show_title(langCode); } function load_languages() @@ -808,6 +811,71 @@ function load_language() send('', host + currentLanguage + '.txt?rnd=' + cachernd); } +/** +* From http://stackoverflow.com/questions/1280903/javascript-ie-and-getelementsbyclassname-problems/8472488#8472488 +*/ +if (typeof document.getElementsByClassName != 'function') +{ + document.getElementsByClassName = function() + { + var elms = document.getElementsByTagName('*'); + var ei = new Array(); + for (i = 0; i < elms.length; i++) + { + if (elms[i].getAttribute('class')) + { + ecl = elms[i].getAttribute('class').split(' '); + for (j = 0; j < ecl.length; j++) + { + if (ecl[j].toLowerCase() == arguments[0].toLowerCase()) + { + ei.push(elms[i]); + } + } + } + else if (elms[i].className) + { + ecl = elms[i].className.split(' '); + for (j = 0; j < ecl.length; j++) + { + if (ecl[j].toLowerCase() == arguments[0].toLowerCase()) + { + ei.push(elms[i]); + } + } + } + } + return ei; + } +} + +function show_title(langCode) +{ + var sel_title = document.getElementById('title-' + langCode); + + if (sel_title == null) + { + // A title in English is required. + sel_title = document.getElementById('title-en') + + if (sel_title == null) + { + // No title in English or the selected language. + return; + } + } + + var hide_title = document.getElementsByClassName('hide-title'); + + for (var i = 0; i < hide_title.length; i++) + { + hide_title[i].style.display='none'; + } + + sel_title.style.display='inline'; + document.title = "phpBB MOD » " + sel_title.innerHTML; +} + /***************** * AJAX Functions * *****************/ @@ -1425,7 +1493,7 @@ function change_dbms($form) 'mssql', 'oracle', 'postgres', - 'sqllite' + 'sqlite' ]; $exists = 0; $tags = document.getElementsByTagName('dbms'); @@ -1440,7 +1508,7 @@ function change_dbms($form) { for ($i = 0; $i < $tags.length; $i++) { - if (!($dbms = $tags[$i].attributes['type'].nodeValue)) + if (!($dbms = $tags[$i].attributes['type'].value)) { continue; } @@ -1472,7 +1540,7 @@ function sql_display($value) // show the dbms of type we have selected, hide all others except for non dbms specific for ($i = 0; $i < $tags.length; $i++) { - if (!($dbms = $tags[$i].attributes['type'].nodeValue)) + if (!($dbms = $tags[$i].attributes['type'].value)) { continue; } @@ -1520,7 +1588,7 @@ function sql_dropdown() 'mssql', 'oracle', 'postgres', - 'sqllite' + 'sqlite' ]; $options = []; $ie_options = []; @@ -1530,7 +1598,7 @@ function sql_dropdown() // Show the dbms of type we have selected, hide all others except for non dbms specific for ($i = 0; $i < $tags.length; $i++) { - if (!($dbms = $tags[$i].attributes['type'].nodeValue)) + if (!($dbms = $tags[$i].attributes['type'].value)) { continue; } @@ -1628,7 +1696,14 @@ function toggle_edit(o)
@@ -1778,9 +1860,9 @@ function toggle_edit(o) -

Additional MODX files

+

Additional file(s)

-

This MOD has no additional MODX files.

+

This MOD has no additional file(s).